diff --git a/gui.py b/gui.py index 1d37d11..43b189b 100644 --- a/gui.py +++ b/gui.py @@ -137,7 +137,7 @@ class GUI_PyGame: # Store screen and size self.size = size - self.screen = pygame.display.set_mode(size, pygame.FULLSCREEN) + self.screen = pygame.display.set_mode(size) #, pygame.FULLSCREEN) # Clear screen self.clear() @@ -188,6 +188,25 @@ class GUI_PyGame: text.set_colorkey(bg) self.surface_list.append((text, rect.topleft)) + def convert_event(self, event): + if event.type == pygame.QUIT: + return True, Event(0, 0) + elif event.type == pygame.KEYDOWN: + return True, Event(1, event.key) + elif event.type == pygame.MOUSEBUTTONUP: + return True, Event(2, (event.button, event.pos)) + elif event.type >= pygame.USEREVENT: + return True, Event(3, event.channel) + else: + return False, '' + + def check_for_event(self): + for event in EventModule.get(): + r, e = self.convert_event(event) + if r: + return r, e + return False, '' + def wait_for_event(self): # Repeat until a relevant event happened while True: @@ -198,14 +217,9 @@ class GUI_PyGame: event = EventModule.wait() # Return Event-Object - if event.type == pygame.QUIT: - return Event(0, 0) - elif event.type == pygame.KEYDOWN: - return Event(1, event.key) - elif event.type == pygame.MOUSEBUTTONUP: - return Event(2, (event.button, event.pos)) - elif event.type >= pygame.USEREVENT: - return Event(3, event.channel) + r, e = self.convert_event(event) + if r: + return e def mainloop(self, filename, handle_keypress, handle_mousebutton, handle_gpio_event): diff --git a/slideshow.py b/slideshow.py index 6074c5c..14d608f 100755 --- a/slideshow.py +++ b/slideshow.py @@ -24,38 +24,55 @@ display_time = 3 ############### class Slideshow: - def __init__(self, display_size, display_time, directory, recursive=True): - self.directory = directory - self.recursive = recursive - self.filelist = [] - self.display = GuiModule("Slideshow", display_size) - self.display_time = display_time + def __init__(self, display_size, display_time, directory, recursive=True): + self.directory = directory + self.recursive = recursive + self.filelist = [] + self.display = GuiModule("Slideshow", display_size) + self.display_time = display_time - def scan(self): - filelist = [] + def scan(self): + filelist = [] - if self.recursive: - # Recursively walk all entries in the directory - for root, dirnames, filenames in os.walk(self.directory): - for filename in filenames: - filelist.append(os.path.join(root, filename)) - else: - # Add all entries in the directory - for item in os.listdir(self.directory): - filename = os.path.join(self.directory, item) - if os.path.isfile(filename): - filelist.append(filename) + if self.recursive: + # Recursively walk all entries in the directory + for root, dirnames, filenames in os.walk(self.directory): + for filename in filenames: + filelist.append(os.path.join(root, filename)) + else: + # Add all entries in the directory + for item in os.listdir(self.directory): + filename = os.path.join(self.directory, item) + if os.path.isfile(filename): + filelist.append(filename) - self.filelist = filelist + self.filelist = filelist - def run(self): - while True: - for filename in self.filelist: - self.display.clear() - self.display.show_picture(filename) - self.display.apply() - sleep(self.display_time) + def handle_event(self, event): + if event.type == 0: + self.teardown() + elif event.type == 1: + self.handle_keypress(event.value) + def handle_keypress(self, key): + # Exit the application + if key == ord('q'): + self.teardown() + + def run(self): + while True: + for filename in self.filelist: + self.display.clear() + self.display.show_picture(filename) + self.display.apply() + sleep(self.display_time) + r, e = self.display.check_for_event() + if r: + self.handle_event(e) + + def teardown(self): + self.display.teardown() + exit(0) ################# @@ -63,7 +80,7 @@ class Slideshow: ################# def main(): - slideshow = Slideshow(display_size, display_time, directory, False) + slideshow = Slideshow(display_size, display_time, directory, True) slideshow.scan() slideshow.run() return 0