From 66837ea038a429a7b9e55b4ed0a811adba4506bf Mon Sep 17 00:00:00 2001 From: Richard Osborne Date: Sun, 16 Feb 2025 20:54:03 +0000 Subject: [PATCH] Better calendar size calculations --- building.py | 58 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/building.py b/building.py index 16342a1..a3529fa 100644 --- a/building.py +++ b/building.py @@ -125,33 +125,45 @@ def draw_image(): return startDate itemStart = 70 - try: - for key, group in groupby(events, get_start_date): - if key == datetime.today().date(): - dateStr = "Today" - elif key == (datetime.today() + timedelta(days=1)).date(): - dateStr = "Tomorrow" - else: - dateStr = key.strftime("%d %b") + for key, group in groupby(events, get_start_date): + dayStart = itemStart + # Calculate + if key == datetime.today().date(): + dateStr = "Today" + elif key == (datetime.today() + timedelta(days=1)).date(): + dateStr = "Tomorrow" + else: + dateStr = key.strftime("%d %b") - draw.text((215, itemStart), dateStr, black, fontLargeBold) + w, h = getsize(fontLarge, "Today") + dayStart += h + (ep) + + dayTasks = list(group) + + for thing in dayTasks: + reflowedItem = reflow_quote(thing["summary"], 170, fontSmall) w, h = getsize(fontLarge, "Today") - itemStart += h + (ep) + h *= reflowedItem.count("\n") + 1 + dayStart += h + (ep) - for thing in list(group): - reflowedItem = reflow_quote(thing["summary"], 170, fontSmall) - w, h = getsize(fontLarge, "Today") - h *= reflowedItem.count("\n") + 1 - # print(f'After {reflowedItem}, {itemStart + h}') - if itemStart + h > 270: - raise Space - draw.text((230, itemStart), reflowedItem, black, fontSmall) - itemStart += h + (ep) + dayStart + ep - if itemStart > 250: - raise Space - except Space: - pass + if dayStart > 280: + print() + break + + # Commit if possible + draw.text((215, itemStart), dateStr, black, fontLargeBold) + w, h = getsize(fontLargeBold, dateStr) + itemStart += h + ep + for thing in dayTasks: + reflowedItem = reflow_quote(thing["summary"], 170, fontSmall) + w, h = getsize(fontSmall, thing["summary"]) + h *= reflowedItem.count("\n") + 1 + draw.text((230, itemStart), reflowedItem, black, fontSmall) + itemStart += h + ep + + itemStart += ep return image