class TVApp: def __init__(self, config_path): self._logger = getLogger("raspberry") self._logger.setLevel(INFO) formatter = Formatter( '%(asctime)s [%(name)s] %(levelname)s : %(message)s') stream_handler = StreamHandler() stream_handler.setLevel(INFO) stream_handler.setFormatter(formatter) self._logger.addHandler(stream_handler) signal.signal(signal.SIGINT, self.exit_gracefully) signal.signal(signal.SIGTERM, self.exit_gracefully) self._logger.info("Initializing...") self.preference_checker = Preferences(config_path) self.video_player = VideoPlayer() self.tv_controller = TVController() self._logger.info("Ready") def run(self): self._logger.info( "Waiting 1 min if you want to stop me before I go full screen...") time.sleep(60) self._logger.info("Starting all components now...") self.tv_controller.start(self.preference_checker.time_on_off) self.video_player.start(self.preference_checker.video_list) self.preference_checker.start() while True: time.sleep(120) def exit_gracefully(self, signum, frame): self._logger.info("Key pressed, exiting") self.tv_controller.stop() self.video_player.stop() self.preference_checker.stop() self._logger.info("End")
class PopUpMenu(object): def __init__(self, photolist, photoframe): self.gui = Gtk.Builder() self.gui.add_from_file( os.path.join(constants.SHARED_DATA_DIR, 'menu.ui')) self.photoimage = photoframe.photoimage self.photolist = photolist self.preferences = Preferences(photolist) self.about = AboutDialog() self.is_show = False def start(self, widget, event): self.set_recent_menu() if SETTINGS.get_boolean('window-fix'): self.gui.get_object('menuitem6').set_active(True) photo = self.photoimage.photo accessible = photo.can_open() if photo else False self.set_open_menu_sensitive(accessible) is_fullscreen = SETTINGS.get_boolean('fullscreen') self.gui.get_object('menuitem8').set_active(is_fullscreen) self.gui.connect_signals(self) menu = self.gui.get_object('menu') menu.popup(None, None, None, None, event.button, event.time) self.is_show = True def set_recent_menu(self): RecentMenu(self.gui, self.photolist) def set_open_menu_sensitive(self, state): self.gui.get_object('menuitem5').set_sensitive(state) def on_menuitem5_activate(self, *args): "open_photo" self.photoimage.photo.open() def on_next_photo(self, *args): self.photolist.next_photo(*args) def on_menuitem8_toggled(self, widget, *args): "_full_screen_cb" SETTINGS.set_boolean('fullscreen', widget.get_active()) def on_menuitem6_toggled(self, widget): "_fix_window_cb" SETTINGS.set_boolean('window-fix', widget.get_active()) def on_prefs(self, *args): self.preferences.start(*args) def on_help(self, widget): Gtk.show_uri(None, 'ghelp:gphotoframe', Gdk.CURRENT_TIME) def on_about(self, *args): self.about.start() def on_quit(self, *args): self.photolist.queue.clear_cache() reactor.stop() def on_menu_hide(self, *args): self.is_show = False
class PopUpMenu(object): def __init__(self, photolist, photoframe): self.gui = Gtk.Builder() self.gui.add_from_file(os.path.join(constants.SHARED_DATA_DIR, 'menu.ui')) self.photoimage = photoframe.photoimage self.photolist = photolist self.preferences = Preferences(photolist) self.about = AboutDialog() self.is_show = False def start(self, widget, event): self.set_recent_menu() if SETTINGS.get_boolean('window-fix'): self.gui.get_object('menuitem6').set_active(True) photo = self.photoimage.photo accessible = photo.can_open() if photo else False self.set_open_menu_sensitive(accessible) is_fullscreen = SETTINGS.get_boolean('fullscreen') self.gui.get_object('menuitem8').set_active(is_fullscreen) self.gui.connect_signals(self) menu = self.gui.get_object('menu') menu.popup(None, None, None, None, event.button, event.time) self.is_show = True def set_recent_menu(self): RecentMenu(self.gui, self.photolist) def set_open_menu_sensitive(self, state): self.gui.get_object('menuitem5').set_sensitive(state) def on_menuitem5_activate(self, *args): "open_photo" self.photoimage.photo.open() def on_next_photo(self, *args): self.photolist.next_photo(*args) def on_menuitem8_toggled(self, widget, *args): "_full_screen_cb" SETTINGS.set_boolean('fullscreen', widget.get_active()) def on_menuitem6_toggled(self, widget): "_fix_window_cb" SETTINGS.set_boolean('window-fix', widget.get_active()) def on_prefs(self, *args): self.preferences.start(*args) def on_help(self, widget): Gtk.show_uri(None, 'ghelp:gphotoframe', Gdk.CURRENT_TIME) def on_about(self, *args): self.about.start() def on_quit(self, *args): self.photolist.queue.clear_cache() reactor.stop() def on_menu_hide(self, *args): self.is_show = False