Minor improvements to event handling
This commit is contained in:
		| @@ -37,7 +37,8 @@ class calendar: | ||||
|  | ||||
|     self.weekstart = 'Monday' | ||||
|     self.show_events = True | ||||
|     self.event_format = "D MMM HH:mm" | ||||
|     self.date_format = 'D MMM' # used for dates  | ||||
|     self.time_format = "HH:mm" # used for timings | ||||
|     self.language = 'en' # Grab from settings file? | ||||
|      | ||||
|     self.timezone = get_system_tz() | ||||
| @@ -108,8 +109,8 @@ class calendar: | ||||
|     icon_height = calendar_height // calendar_rows | ||||
|  | ||||
|     # Calculate spacings for calendar area | ||||
|     x_spacing_calendar = int((self.width % icon_width) / 2) | ||||
|     y_spacing_calendar = int((self.height % calendar_rows) / 2) | ||||
|     x_spacing_calendar = int((im_width % icon_width) / 2) | ||||
|     y_spacing_calendar = int((im_height % calendar_rows) / 2) | ||||
|  | ||||
|     # Calculate positions for days of month | ||||
|     grid_start_y = (month_name_height + weekdays_height + y_spacing_calendar) | ||||
| @@ -261,37 +262,56 @@ class calendar: | ||||
|       if upcoming_events: | ||||
|  | ||||
|         # Find out how much space (width) the date format requires | ||||
|         fmt = self.event_format | ||||
|         lang = self.language | ||||
|  | ||||
|         date_width = int(max([self.font.getsize( | ||||
|           events['begin'].format(fmt,locale=lang))[0] | ||||
|           for events in upcoming_events]) * 1.05) | ||||
|           events['begin'].format(self.date_format,locale=lang))[0] | ||||
|           for events in upcoming_events]) * 1.1) | ||||
|          | ||||
|         time_width = int(max([self.font.getsize( | ||||
|           events['begin'].format(self.time_format, locale=lang))[0] | ||||
|           for events in upcoming_events]) * 1.1) | ||||
|  | ||||
|         line_height = self.font.getsize('hg')[1] + line_spacing | ||||
|         event_width = im_width - date_width | ||||
|          | ||||
|         event_width_s = im_width - date_width - time_width | ||||
|         event_width_l = im_width - date_width | ||||
|  | ||||
|         # Display upcoming events below calendar | ||||
|         tomorrow = now.shift(days=1).floor('day') | ||||
|         in_two_days = now.shift(days=2).floor('day') | ||||
|  | ||||
|         # Write events and dates below calendar | ||||
|         # TODO: check if events all-day and then don't display time | ||||
|  | ||||
|         cursor = 0 | ||||
|         for event in upcoming_events: | ||||
|           name, date = event['title'], event['begin'].format(fmt, locale=lang) | ||||
|           print(date) | ||||
|           name = event['title'] | ||||
|           date = event['begin'].format(self.date_format, locale=lang) | ||||
|           time = event['begin'].format(self.time_format, locale=lang) | ||||
|  | ||||
|           if now < event['end']: | ||||
|             write(im_colour, event_lines[cursor], (date_width, line_height), | ||||
|                   date, font=self.font, alignment = 'left') | ||||
|             write(im_black, (date_width,event_lines[cursor][1]), | ||||
|                   (event_width, line_height), name, font=self.font, | ||||
|  | ||||
|             # Check if event is all day | ||||
|             if parser.all_day(event) == True: | ||||
|               write(im_black, (date_width, event_lines[cursor][1]), | ||||
|                   (event_width_l, line_height), name, font=self.font, | ||||
|                   alignment = 'left') | ||||
|             else: | ||||
|               write(im_black, (time_width, event_lines[cursor][1]), | ||||
|                   (event_width, line_height), time, font=self.font, | ||||
|                   alignment = 'left') | ||||
|  | ||||
|               write(im_black, (date_width+time_width,event_lines[cursor][1]), | ||||
|                   (event_width_s, line_height), name, font=self.font, | ||||
|                   alignment = 'left') | ||||
|             cursor += 1 | ||||
|       else: | ||||
|         #leave section empty? or display ----- (dotted line) | ||||
|         pass | ||||
|         symbol = '- ' | ||||
|         while self.font.getsize(symbol)[0] < im_width*0.9: | ||||
|           symbol += ' -' | ||||
|         write(im_black, event_lines[0], | ||||
|               (im_width, self.font.getsize(symbol)[1]), symbol, | ||||
|               font = self.font) | ||||
|  | ||||
|  | ||||
| ################################################################### | ||||
|   | ||||
		Reference in New Issue
	
	Block a user