This is a refactoring of the entire Inky-Calendar software and is work in progress. The reason for uploading is to test if everything works fine. Please do not attempt to use/install this software as it can potentially break your system. If you have any improvement ideas, you're most welcome to mention them in the Issues section. Thanks!
99 lines
2.4 KiB
Python
99 lines
2.4 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Calendar module for Inky-Calendar Project
|
|
|
|
Copyright by aceisace
|
|
"""
|
|
from __future__ import print_function
|
|
import calendar
|
|
from configuration import *
|
|
from settings import *
|
|
import datetime
|
|
from PIL import Image, ImageDraw
|
|
|
|
"""Define some parameters for the grid"""
|
|
grid_width, grid_height = display_width, 324
|
|
grid_rows = 6
|
|
grid_coloums = 7
|
|
|
|
padding_left = int((display_width % grid_coloums) / 2)
|
|
padding_up = int((grid_height % grid_rows) / 2)
|
|
icon_width = grid_width // grid_coloums
|
|
icon_height = grid_height // grid_rows
|
|
|
|
weekdays_height = 22
|
|
#def main():
|
|
this = datetime.datetime.now()
|
|
|
|
"""Add grid-coordinates in the grid dictionary for a later lookup"""
|
|
grid = {}
|
|
|
|
counter = 0
|
|
for row in range(grid_rows):
|
|
y = middle_section_offset - grid_height + row*icon_height
|
|
for col in range(grid_coloums):
|
|
x = padding_left + col*icon_width
|
|
counter += 1
|
|
grid['pos'+str(counter)] = (x,y)
|
|
|
|
|
|
"""Set the Calendar to start on the day specified by the settings file """
|
|
if week_starts_on is "" or "Monday":
|
|
calendar.setfirstweekday(calendar.MONDAY)
|
|
else:
|
|
calendar.setfirstweekday(calendar.SUNDAY)
|
|
|
|
"""Create a scrolling calendar"""
|
|
cal = calendar.monthcalendar(this.year, this.month)
|
|
current_row = [cal.index(i) for i in cal if this.day in i][0]
|
|
|
|
if current_row > 1:
|
|
del cal[:current_row-1]
|
|
|
|
if len(cal) < grid_rows:
|
|
next_month = this + datetime.timedelta(days=30)
|
|
cal_next_month = calendar.monthcalendar(next_month.year, next_month.month)
|
|
cal.extend(cal_next_month[:grid_rows - len(cal)]
|
|
|
|
"""
|
|
flatten = lambda z: [x for y in z for x in y]
|
|
cal = flatten(cal)
|
|
cal_next_month = flatten(cal_next_month)
|
|
|
|
cal.extend(cal_next_month)
|
|
|
|
num_font= ImageFont.truetype(NotoSansCJK+'Light.otf', 30)
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#draw = ImageDraw.Draw(image) #
|
|
|
|
|
|
|
|
"""
|
|
counter = 0
|
|
for i in range(len(cal)):
|
|
counter += 1
|
|
if cal[i] != 0 and counter <= grid_rows*grid_coloums:
|
|
write_text(icon_width, icon_height, str(cal[i]), grid['pos'+str(counter)],
|
|
font = num_font)
|
|
##if this.day == cal[i]:
|
|
##pos = grid['pos'+str(counter)]
|
|
#x = pos[0] + int(icon_width/2)
|
|
#y = pos[1] + int(icon_height/2)
|
|
#r = int(icon_width * 0.75#coords = (x-r, y-r, x+r, y+r)
|
|
#draw.ellipse(coords, fill= 0, outline='black',
|
|
#width=3)
|
|
|
|
image.crop((0, top_section_height, display_width,
|
|
display_height-bottom_section_height)).save('cal.png')
|
|
|
|
#if __name__ == '__main__':
|
|
# main()
|
|
"""
|