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()
|
||
|
"""
|