python 3.11 & code quality improvements
This commit is contained in:
		| @@ -110,7 +110,8 @@ class Calendar(inkycal_module): | ||||
|  | ||||
|         # Allocate space for month-names, weekdays etc. | ||||
|         month_name_height = int(im_height * 0.10) | ||||
|         weekdays_height = int(self.font.getsize('hg')[1] * 1.25) | ||||
|         text_bbox_height = self.font.getbbox("hg") | ||||
|         weekdays_height = int((text_bbox_height[3] - text_bbox_height[1])* 1.25) | ||||
|         logger.debug(f"month_name_height: {month_name_height}") | ||||
|         logger.debug(f"weekdays_height: {weekdays_height}") | ||||
|  | ||||
| @@ -182,15 +183,15 @@ class Calendar(inkycal_module): | ||||
|         ] | ||||
|         logger.debug(f'weekday names: {weekday_names}') | ||||
|  | ||||
|         for idx, weekday in enumerate(weekday_pos): | ||||
|         for index, weekday in enumerate(weekday_pos): | ||||
|             write( | ||||
|                 im_black, | ||||
|                 weekday, | ||||
|                 (icon_width, weekdays_height), | ||||
|                 weekday_names[idx], | ||||
|                 weekday_names[index], | ||||
|                 font=self.font, | ||||
|                 autofit=True, | ||||
|                 fill_height=1.0, | ||||
|                 fill_height=0.9, | ||||
|             ) | ||||
|  | ||||
|         # Create a calendar template and flatten (remove nestings) | ||||
| @@ -207,6 +208,10 @@ class Calendar(inkycal_module): | ||||
|         # remove zeros from calendar since they are not required | ||||
|         calendar_flat = [num for num in calendar_flat if num != 0] | ||||
|  | ||||
|         # ensure all numbers have the same size | ||||
|         fontsize_numbers = int(min(icon_width, icon_height) * 0.5) | ||||
|         number_font = ImageFont.truetype(self.font.path, fontsize_numbers) | ||||
|  | ||||
|         # Add the numbers on the correct positions | ||||
|         for number in calendar_flat: | ||||
|             if number != int(now.day): | ||||
| @@ -215,9 +220,7 @@ class Calendar(inkycal_module): | ||||
|                     grid[number], | ||||
|                     (icon_width, icon_height), | ||||
|                     str(number), | ||||
|                     font=self.num_font, | ||||
|                     fill_height=0.5, | ||||
|                     fill_width=0.5, | ||||
|                     font=number_font, | ||||
|                 ) | ||||
|  | ||||
|         # Draw a red/black circle with the current day of month in white | ||||
| @@ -262,10 +265,10 @@ class Calendar(inkycal_module): | ||||
|             from inkycal.modules.ical_parser import iCalendar | ||||
|  | ||||
|             # find out how many lines can fit at max in the event section | ||||
|             line_spacing = 0 | ||||
|             max_event_lines = events_height // ( | ||||
|                 self.font.getsize('hg')[1] + line_spacing | ||||
|             ) | ||||
|             line_spacing = 2 | ||||
|             text_bbox_height = self.font.getbbox("hg") | ||||
|             line_height = text_bbox_height[3] - text_bbox_height[1] + line_spacing | ||||
|             max_event_lines = events_height // (line_height + line_spacing) | ||||
|  | ||||
|             # generate list of coordinates for each line | ||||
|             events_offset = im_height - events_height | ||||
| @@ -329,31 +332,18 @@ class Calendar(inkycal_module): | ||||
|                 # Find out how much space (width) the date format requires | ||||
|                 lang = self.language | ||||
|  | ||||
|                 date_width = int( | ||||
|                     max( | ||||
|                         ( | ||||
|                             self.font.getsize( | ||||
|                                 events['begin'].format(self.date_format, locale=lang) | ||||
|                             )[0] | ||||
|                             for events in upcoming_events | ||||
|                         ) | ||||
|                     ) | ||||
|                     * 1.1 | ||||
|                 date_width = int(max(( | ||||
|                     self.font.getlength(events['begin'].format(self.date_format, locale=lang)) | ||||
|                     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 | ||||
|                 time_width = int(max(( | ||||
|                     self.font.getlength(events['begin'].format(self.time_format, locale=lang)) | ||||
|                     for events in upcoming_events))* 1.1 | ||||
|                 ) | ||||
|  | ||||
|                 line_height = self.font.getsize('hg')[1] + line_spacing | ||||
|                 text_bbox_height = self.font.getbbox("hg") | ||||
|                 line_height = text_bbox_height[3] - text_bbox_height[1] + line_spacing | ||||
|  | ||||
|                 event_width_s = im_width - date_width - time_width | ||||
|                 event_width_l = im_width - date_width | ||||
| @@ -411,12 +401,13 @@ class Calendar(inkycal_module): | ||||
|                             cursor += 1 | ||||
|             else: | ||||
|                 symbol = '- ' | ||||
|                 while self.font.getsize(symbol)[0] < im_width * 0.9: | ||||
|  | ||||
|                 while self.font.getlength(symbol) < im_width * 0.9: | ||||
|                     symbol += ' -' | ||||
|                 write( | ||||
|                     im_black, | ||||
|                     event_lines[0], | ||||
|                     (im_width, self.font.getsize(symbol)[1]), | ||||
|                     (im_width, line_height), | ||||
|                     symbol, | ||||
|                     font=self.font, | ||||
|                 ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user