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
|
# Store screen and size
|
||||||
self.size = size
|
self.size = size
|
||||||
self.screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
|
self.screen = pygame.display.set_mode(size) #, pygame.FULLSCREEN)
|
||||||
|
|
||||||
# Clear screen
|
# Clear screen
|
||||||
self.clear()
|
self.clear()
|
||||||
@@ -188,6 +188,25 @@ class GUI_PyGame:
|
|||||||
text.set_colorkey(bg)
|
text.set_colorkey(bg)
|
||||||
self.surface_list.append((text, rect.topleft))
|
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):
|
def wait_for_event(self):
|
||||||
# Repeat until a relevant event happened
|
# Repeat until a relevant event happened
|
||||||
while True:
|
while True:
|
||||||
@@ -198,14 +217,9 @@ class GUI_PyGame:
|
|||||||
event = EventModule.wait()
|
event = EventModule.wait()
|
||||||
|
|
||||||
# Return Event-Object
|
# Return Event-Object
|
||||||
if event.type == pygame.QUIT:
|
r, e = self.convert_event(event)
|
||||||
return Event(0, 0)
|
if r:
|
||||||
elif event.type == pygame.KEYDOWN:
|
return e
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
def mainloop(self, filename, handle_keypress, handle_mousebutton, handle_gpio_event):
|
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:
|
class Slideshow:
|
||||||
def __init__(self, display_size, display_time, directory, recursive=True):
|
def __init__(self, display_size, display_time, directory, recursive=True):
|
||||||
self.directory = directory
|
self.directory = directory
|
||||||
self.recursive = recursive
|
self.recursive = recursive
|
||||||
self.filelist = []
|
self.filelist = []
|
||||||
self.display = GuiModule("Slideshow", display_size)
|
self.display = GuiModule("Slideshow", display_size)
|
||||||
self.display_time = display_time
|
self.display_time = display_time
|
||||||
|
|
||||||
def scan(self):
|
def scan(self):
|
||||||
filelist = []
|
filelist = []
|
||||||
|
|
||||||
if self.recursive:
|
if self.recursive:
|
||||||
# Recursively walk all entries in the directory
|
# Recursively walk all entries in the directory
|
||||||
for root, dirnames, filenames in os.walk(self.directory):
|
for root, dirnames, filenames in os.walk(self.directory):
|
||||||
for filename in filenames:
|
for filename in filenames:
|
||||||
filelist.append(os.path.join(root, filename))
|
filelist.append(os.path.join(root, filename))
|
||||||
else:
|
else:
|
||||||
# Add all entries in the directory
|
# Add all entries in the directory
|
||||||
for item in os.listdir(self.directory):
|
for item in os.listdir(self.directory):
|
||||||
filename = os.path.join(self.directory, item)
|
filename = os.path.join(self.directory, item)
|
||||||
if os.path.isfile(filename):
|
if os.path.isfile(filename):
|
||||||
filelist.append(filename)
|
filelist.append(filename)
|
||||||
|
|
||||||
self.filelist = filelist
|
self.filelist = filelist
|
||||||
|
|
||||||
def run(self):
|
def handle_event(self, event):
|
||||||
while True:
|
if event.type == 0:
|
||||||
for filename in self.filelist:
|
self.teardown()
|
||||||
self.display.clear()
|
elif event.type == 1:
|
||||||
self.display.show_picture(filename)
|
self.handle_keypress(event.value)
|
||||||
self.display.apply()
|
|
||||||
sleep(self.display_time)
|
|
||||||
|
|
||||||
|
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():
|
def main():
|
||||||
slideshow = Slideshow(display_size, display_time, directory, False)
|
slideshow = Slideshow(display_size, display_time, directory, True)
|
||||||
slideshow.scan()
|
slideshow.scan()
|
||||||
slideshow.run()
|
slideshow.run()
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
Reference in New Issue
Block a user