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:
98
Inky-Calendar/modules/inkycal_calendar.py
Normal file
98
Inky-Calendar/modules/inkycal_calendar.py
Normal 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()
|
||||
"""
|
Reference in New Issue
Block a user