From 18729b8f002ac6630eb997ae2e6701450cafa887 Mon Sep 17 00:00:00 2001 From: jEzEk Date: Thu, 4 Aug 2016 23:23:09 +0200 Subject: [PATCH] ESC exits program, if keyboard control is enabled You can set keyboard control in config file. If enambed, you can exit video looper by pressing ESC key any time (except countdown). --- Adafruit_Video_Looper/video_looper.py | 21 +++++++++++++++++++-- video_looper.ini | 5 +++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Adafruit_Video_Looper/video_looper.py b/Adafruit_Video_Looper/video_looper.py index 6a40741..70dbdb0 100644 --- a/Adafruit_Video_Looper/video_looper.py +++ b/Adafruit_Video_Looper/video_looper.py @@ -54,6 +54,7 @@ class VideoLooper(object): # Load other configuration values. self._osd = self._config.getboolean('video_looper', 'osd') self._is_random = self._config.getboolean('video_looper', 'is_random') + self._keyboard_control = self._config.getboolean('video_looper', 'keyboard_control') # Parse string of 3 comma separated values like "255, 255, 255" into # list of ints for colors. self._bgcolor = map(int, self._config.get('video_looper', 'bgcolor') \ @@ -190,6 +191,11 @@ class VideoLooper(object): sw, sh = self._screen.get_size() self._screen.fill(self._bgcolor) self._screen.blit(label, (sw/2-lw/2, sh/2-lh/2)) + # If keyboard control is enabled, display message about it + if self._keyboard_control: + label2 = self._render_text('press ESC to quit') + l2w, l2h = label2.get_size() + self._screen.blit(label2, (sw/2-l2w/2, sh/2-l2h/2+lh)) pygame.display.update() def _prepare_to_run_playlist(self, playlist): @@ -224,16 +230,27 @@ class VideoLooper(object): # Rebuild playlist and show countdown again (if OSD enabled). playlist = self._build_playlist() self._prepare_to_run_playlist(playlist) + # Event handling for key press, if keyboard control is enabled + if self._keyboard_control: + for event in pygame.event.get(): + if event.type == pygame.KEYDOWN: + # If pressed key is ESC quit program + if event.key == pygame.K_ESCAPE: + self.quit() # Give the CPU some time to do other tasks. time.sleep(0.002) - def signal_quit(self, signal, frame): - """Shut down the program, meant to by called by signal handler.""" + def quit(self): + """Shut down the program""" self._running = False if self._player is not None: self._player.stop() pygame.quit() + def signal_quit(self, signal, frame): + """Shut down the program, meant to by called by signal handler.""" + self.quit() + # Main entry point. if __name__ == '__main__': diff --git a/video_looper.ini b/video_looper.ini index 1ce2588..fd87a21 100644 --- a/video_looper.ini +++ b/video_looper.ini @@ -36,6 +36,11 @@ osd = true # To play random playlist. is_random = false +# Control the program via keyboard +# If enabled, hit ESC key to quit the program anytime (except countdown). +keyboard_control = false +#keyboard_control = true + # Change the color of the background that is displayed behind movies (only works # with omxplayer). Provide 3 numeric values from 0 to 255 separated by a commma # for the red, green, and blue color value. Default is 0, 0, 0 or black.