Work in progress for release v1.7/1.8

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!
This commit is contained in:
Ace
2019-10-21 07:54:19 +02:00
committed by GitHub
parent 93426b3dea
commit e3a4997fdb
28 changed files with 1118 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
#!/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()
"""