chutney/time_display.py

72 lines
2.1 KiB
Python

from datetime import datetime
class TimeDisplay:
def __init__(self, characterDisplay, topRow):
self.currentHour = [-1, -1]
self.currentMinute = [-1, -1]
self.characterDisplay = characterDisplay
self.topRow = topRow
self.hourStartColumn = -1
self.timeDotsColumn = 7
self.minuteStartColumn = 9
self.characterDisplay.displayTimeDots(self.timeDotsColumn, self.topRow)
def showTime(self):
self.showHour(self.getHourDigits())
self.showMinute(self.getMinuteDigits())
def showHour(self, hour):
if hour[0] != self.currentHour[0]:
self.currentHour[0] = hour[0]
if hour[0] == 0:
self.characterDisplay.clearNumberPixels(
self.hourStartColumn,
self.topRow
)
else:
self.characterDisplay.displayNumber(
self.hourStartColumn,
self.topRow,
hour[0]
)
if hour[1] != self.currentHour[1]:
self.currentHour[1] = hour[1]
self.characterDisplay.displayNumber(
self.hourStartColumn + 4,
self.topRow,
hour[1]
)
def showMinute(self, minute):
if minute[0] != self.currentMinute[0]:
self.currentMinute[0] = minute[0]
self.characterDisplay.displayNumber(
self.minuteStartColumn,
self.topRow,
minute[0]
)
if minute[1] != self.currentMinute[1]:
self.currentMinute[1] = minute[1]
self.characterDisplay.displayNumber(
self.minuteStartColumn + 4,
self.topRow,
minute[1]
)
def getHourDigits(self):
return self.getTimeDigits('%l')
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]