chutney/time_display.py

75 lines
2.0 KiB
Python
Raw Normal View History

2022-12-24 10:59:04 -05:00
import colors
from datetime import datetime
class TimeDisplay:
2022-12-23 14:57:33 -05:00
def __init__(self, characterDisplay, topRow):
self.characterDisplay = characterDisplay
self.topRow = topRow
2022-12-23 16:15:35 -05:00
self.currentHour = [-1, -1]
self.currentMinute = [-1, -1]
2022-12-24 10:59:04 -05:00
self.currentColor = colors.BLACK
self.color = colors.PINK
2022-12-23 14:57:33 -05:00
self.hourStartColumn = -1
self.timeDotsColumn = 7
self.minuteStartColumn = 9
2022-12-23 16:15:35 -05:00
self.characterDisplay.displayTimeDots(
x=self.timeDotsColumn,
y=self.topRow,
color=self.color
)
def showTime(self):
2022-12-23 14:57:33 -05:00
self.showHour(self.getHourDigits())
self.showMinute(self.getMinuteDigits())
2022-12-23 14:57:33 -05:00
def showHour(self, hour):
if hour[0] != self.currentHour[0]:
self.currentHour[0] = hour[0]
2022-12-23 14:57:33 -05:00
if hour[0] == 0:
2022-12-23 18:15:43 -05:00
self.hideDigit(self.hourStartColumn)
else:
2022-12-23 18:15:43 -05:00
self.showDigit(self.hourStartColumn, hour[0])
2022-12-23 14:57:33 -05:00
if hour[1] != self.currentHour[1]:
self.currentHour[1] = hour[1]
2022-12-23 18:15:43 -05:00
self.showDigit(self.hourStartColumn + 4, hour[1])
2022-12-23 14:57:33 -05:00
def showMinute(self, minute):
if minute[0] != self.currentMinute[0]:
self.currentMinute[0] = minute[0]
2022-12-23 18:15:43 -05:00
self.showDigit(self.minuteStartColumn, minute[0])
2022-12-23 14:57:33 -05:00
if minute[1] != self.currentMinute[1]:
self.currentMinute[1] = minute[1]
2022-12-23 18:15:43 -05:00
self.showDigit(self.minuteStartColumn + 4, minute[1])
def showDigit(self, x, digit):
self.characterDisplay.displayDigit(
x=x,
y=self.topRow,
digit=digit,
color=self.color
)
def hideDigit(self, x):
self.characterDisplay.clearDigit(
x=x,
y=self.topRow
)
2022-12-23 14:57:33 -05:00
def getHourDigits(self):
return self.getTimeDigits('%l')
2022-12-23 14:57:33 -05:00
def getMinuteDigits(self):
return self.getTimeDigits('%M')
def getTimeDigits(self, format):
digits = datetime.now().strftime(format).strip().rjust(2, '0')
return [int(x) for x in digits]