def __init__(self, parent_app): self.parent_app = parent_app self.window_surface = pylogilcd.surface() self.button_0_delay = None self.button_1_delay = None self.button_2_delay = None self.button_3_delay = None
def splitsurfacetowidth(surface, width): first = surface.split(width, surface.getheight(), 0, 0) second = surface.split(width, surface.getheight(), width, 0) newsurface = pylogilcd.surface(0, max(first.getwidth(), second.getwidth()), first.getheight() + second.getheight()) newsurface.blitz(first, 0, 0) newsurface.blitz(second, 0, first.getheight()) return newsurface
def getdatetimesurface(): datetimeobj = datetime.datetime.now() timestring = datetimeobj.strftime('%H:%M:%S') timesurface = font.getstringsurface(timestring) datestring = datetimeobj.strftime('%A, %d %b %Y') datesurface = font.getstringsurface(datestring) dtw = max(datesurface.getwidth(), timesurface.getwidth()) dth = datesurface.getheight() + timesurface.getheight() datetimesurface = pylogilcd.surface(0, dtw, dth) datetimesurface.blitz(datesurface, datetimesurface.getwidth() - datesurface.getwidth(), 0) datetimesurface.blitz(timesurface, datetimesurface.getwidth() - timesurface.getwidth(), datetimesurface.getheight() - timesurface.getheight()) return datetimesurface
def get_push_surface(self, push=None): push_to_draw = self.push if push: push_to_draw = push title_surface = font.getstringsurface(push_to_draw.data.title) title_surface = title_surface.split(110, title_surface.getheight(), 0, 0) body_surface = font.getstringsurface(push_to_draw.data.body) body_surface = splitsurfacetowidth(body_surface, 120) msg_surface = pylogilcd.surface(0, max(title_surface.getwidth(), body_surface.getwidth()), title_surface.getheight() + body_surface.getheight()) msg_surface.blitz(title_surface, 0, 0) msg_surface.blitz(body_surface, 0, title_surface.getheight()) return msg_surface
def mainloop(self): if self.running: surface = pylogilcd.surface() if self.currentWindow: self.currentWindow.tick() surface = self.currentWindow.get_window_surface() if self.get_button(0, self.currentWindow.button_0_delay): self.currentWindow.on_button_0() if self.get_button(1, self.currentWindow.button_1_delay): self.currentWindow.on_button_1() if self.get_button(2, self.currentWindow.button_2_delay): self.currentWindow.on_button_2() if self.get_button(3, self.currentWindow.button_3_delay): self.currentWindow.on_button_3() self.app.update(surface) self.register(Event(self.mainloop))
def tick(self): self.window_surface = pylogilcd.surface()
newsurface.blitz(second, 0, first.getheight()) return newsurface # initialize app and font settings charref = ' !"#$%&\'()*+,=./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}-' font = pylogilcd.bitmapfont('images\\fontsmall.bmp', 4, 7, 32, charref) icon_up = pylogilcd.surfacefrombmp('images\\up.bmp', 10, 10) icon_down = pylogilcd.surfacefrombmp('images\\down.bmp', 10, 10) icon_confirm = pylogilcd.surfacefrombmp('images\\confirm.bmp', 10, 10) icon_options = pylogilcd.surfacefrombmp('images\\options.bmp', 10, 10) icon_back = pylogilcd.surfacefrombmp('images\\back.bmp', 10, 10) icon_dismiss = pylogilcd.surfacefrombmp('images\\dismiss.bmp', 10, 10) icon_select = pylogilcd.surface(255, 5, 5) icon_select.setpixel(2, 0, 0) icon_select.setpixel(3, 0, 0) icon_select.setpixel(4, 0, 0) icon_select.setpixel(4, 1, 0) icon_select.setpixel(2, 4, 0) icon_select.setpixel(3, 4, 0) icon_select.setpixel(4, 4, 0) icon_select.setpixel(4, 3, 0) class LcdWindow(object): def __init__(self, parent_app): self.parent_app = parent_app self.window_surface = pylogilcd.surface()