Slideshow extended and reacts to 'q' now
This commit is contained in:
32
gui.py
32
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):
|
||||
|
||||
73
slideshow.py
73
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
|
||||
|
||||
Reference in New Issue
Block a user