Inkycal/Inky-Calendar/modules/inkycal_calendar.py

99 lines
2.4 KiB
Python
Raw Normal View History

#!/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()
"""