Ejemplo n.º 1
0
    def __init__(self, util, listeners, go_authors, voice_assistant, d):
        """ Initializer
        
        :param util: utility object
        :param listeners: screen listeners
        :param go_authors: callback
        :param d: dictionary with menu button flags 
        """
        MenuScreen.__init__(self, util, listeners, CHAR_ROWS, CHAR_COLUMNS,
                            voice_assistant, d)

        self.navigator = BookNavigator(util, self.layout.BOTTOM, listeners,
                                       d[4])
        self.left_button = self.navigator.get_button_by_name(KEY_PAGE_DOWN)
        self.right_button = self.navigator.get_button_by_name(KEY_PAGE_UP)
        self.left_button.change_label(str(0))
        self.right_button.change_label(str(0))
        self.add_navigator(self.navigator)

        self.abc_menu = BookCyrillicMenu(self.util, go_authors, (0, 0, 0, 0),
                                         self.menu_layout)
        self.screen_title.set_text(self.config[LABELS][KEY_CHOOSE_AUTHOR])
        self.set_menu(self.abc_menu)

        self.link_borders()
Ejemplo n.º 2
0
 def __init__(self, util, listeners, go_book_by_genre, genres, base_url,
              voice_assistant, d):
     self.util = util
     self.go_book_by_genre = go_book_by_genre
     self.config = util.config
     self.genres_list = genres
     self.base_url = base_url
     self.factory = Factory(util)
     MenuScreen.__init__(self, util, listeners, MENU_ROWS, MENU_COLUMNS,
                         voice_assistant, d, self.turn_page)
     self.total_pages = math.ceil(len(genres) / PAGE_SIZE)
     self.title = self.config[LABELS][KEY_CHOOSE_GENRE]
     m = self.create_book_genre_menu_button
     font_size = int(((self.menu_layout.h / MENU_ROWS) / 100) *
                     self.config[FONT_HEIGHT_PERCENT])
     self.genre_menu = MultiPageMenu(util,
                                     self.next_page,
                                     self.previous_page,
                                     self.set_title,
                                     self.reset_title,
                                     self.go_to_page,
                                     m,
                                     MENU_ROWS,
                                     MENU_COLUMNS,
                                     None, (0, 0, 0, 0),
                                     self.menu_layout,
                                     font_size=font_size)
     self.set_menu(self.genre_menu)
     self.navigator = BookNavigator(util, self.layout.BOTTOM, listeners,
                                    d[4])
     self.add_component(self.navigator)
     self.turn_page()
Ejemplo n.º 3
0
    def __init__(self, util, listeners, site_select_track, voice_assistant, d):
        """ Initializer
        
        :param util: utility object
        :param listeners: screen listeners
        :param site_select_track: callback
        :param d: dictionary with menu button flags 
        """ 
        self.util = util
        MenuScreen.__init__(self, util, listeners, TRACK_ROWS, TRACK_COLUMNS, voice_assistant, d, self.turn_page)
        self.title = self.config[LABELS][KEY_CHOOSE_TRACK]
        self.screen_title.set_text(self.title)
        self.site_select_track = site_select_track
        
        self.navigator = BookNavigator(util, self.layout.BOTTOM, listeners, d[4])
        self.back_button = self.navigator.get_button_by_name(KEY_BACK)
        self.left_button = self.navigator.get_button_by_name(KEY_PAGE_DOWN)
        self.right_button = self.navigator.get_button_by_name(KEY_PAGE_UP)
        self.add_navigator(self.navigator)
        self.left_button.change_label(str(0))
        self.right_button.change_label(str(self.total_pages))

        self.track_menu = BookTrackMenu(util, self.next_page, self.previous_page, self.set_title, self.reset_title, self.go_to_page, site_select_track, None, self.menu_layout)
        self.set_menu(self.track_menu)
        self.current_playlist = []
        self.total_pages = math.ceil(len(self.current_playlist) / PAGE_SIZE)        
Ejemplo n.º 4
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.listeners[KEY_LIST] = self.set_list
        self.factory = Factory(util)
        dbutil = util.get_db_util()
        self.selector = Selector(dbutil)

        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        MenuScreen.__init__(self,
                            util,
                            listeners,
                            ROWS,
                            COLUMNS,
                            voice_assistant, [ROWS, COLUMNS],
                            self.turn_page,
                            page_in_title=False,
                            show_loading=False)

        m = self.factory.create_collection_menu_button
        self.topic_menu = MultiPageMenu(util,
                                        self.next_page,
                                        self.previous_page,
                                        self.set_title,
                                        self.reset_title,
                                        self.go_to_page,
                                        m,
                                        ROWS,
                                        COLUMNS,
                                        None, (0, 0, 0),
                                        self.menu_layout,
                                        align=ALIGN_LEFT)
        self.set_menu(self.topic_menu)

        self.navigator = TopicNavigator(self.util, self.layout.BOTTOM,
                                        listeners)
        self.components.append(self.navigator)

        self.current_topic = None
        self.current_item = None
        self.current_page_items = None
        self.first_item = None
        self.last_item = None
        self.collection_topic = None
        self.previous_page = 1
        self.search_string = None
        self.source = None
        self.mode = KEY_LIST
        self.animated_title = True
Ejemplo n.º 5
0
 def __init__(self, util, listeners, title, screen_type, go_site_playback,
              get_books, site_parser, voice_assistant, d):
     """ Initializer
     
     :param util: utility object
     :param listeners: screen listeners
     :param title: screen title
     :param screen_type: screen name
     :param go_site_playback: playback callback
     :param get_books: get books callback
     :param site_parser: site parser
     :param d: dictionary with menu button flags 
     """
     self.util = util
     self.config = util.config
     self.screen_type = screen_type
     self.go_site_playback = go_site_playback
     self.parser = site_parser
     self.get_books = get_books
     self.rows = d[0]
     self.columns = d[1]
     self.show_author = d[2]
     self.show_genre = d[3]
     self.language_url = d[4]
     self.title = title
     MenuScreen.__init__(self, util, listeners, self.rows, self.columns,
                         voice_assistant, d, self.turn_page)
     self.book_menu = BookMenu(util, self.next_page, self.previous_page,
                               self.set_title, self.reset_title,
                               self.go_to_page, go_site_playback, self.rows,
                               self.columns, self.menu_button_layout,
                               (0, 0, 0), self.menu_layout)
     self.set_menu(self.book_menu)
Ejemplo n.º 6
0
    def __init__(self, util, listeners, ch, f, go_author, parser, base_url,
                 voice_assistant, d):
        """ Initializer
        
        :param util: utility object
        :param listeners: screen listeners
        :param ch: selected character
        :param f: selected filter
        :param go_authors: callback
        :param parser: authors parser
        :param base_url: url
        :param d: dictionary with menu button flags 
        """
        self.util = util
        self.factory = Factory(util)
        self.base_url = base_url
        self.config = util.config

        self.parser = parser
        self.current_author_char = ch
        self.current_author_filter = f
        self.go_author = go_author
        self.author_cache = {}
        self.title = self.config[LABELS][KEY_AUTHORS]

        MenuScreen.__init__(self, util, listeners, MENU_ROWS, MENU_COLUMNS,
                            voice_assistant, d, self.turn_page)
        m = self.factory.create_book_author_menu_button

        self.authors_menu = MultiPageMenu(util, self.next_page,
                                          self.previous_page, self.set_title,
                                          self.reset_title, self.go_to_page, m,
                                          MENU_ROWS, MENU_COLUMNS, None,
                                          (0, 0, 0), self.menu_layout)
        self.set_menu(self.authors_menu)
Ejemplo n.º 7
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer
        
        :param util: utility object
        :param listeners: screen listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        MenuScreen.__init__(self, util, listeners, TRACK_ROWS, TRACK_COLUMNS,
                            voice_assistant, [TRACK_ROWS, TRACK_COLUMNS],
                            self.turn_page)

        self.track_menu = CollectionTrackMenu(util, self.next_page,
                                              self.previous_page,
                                              self.set_title, self.reset_title,
                                              self.go_to_page,
                                              listeners[KEY_PLAY_COLLECTION],
                                              (0, 0, 0), self.menu_layout)
        self.set_menu(self.track_menu)
        self.current_playlist = []
        self.total_pages = 0
        self.current_folder = None

        self.navigator = CollectionBrowserNavigator(util, self.layout.BOTTOM,
                                                    listeners)
        self.navigator.left_button.change_label(str(0))
        self.navigator.right_button.change_label(str(self.total_pages))
        self.components.append(self.navigator)
        self.animated_title = True
Ejemplo n.º 8
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.factory = Factory(util)
        self.go_home = listeners[KEY_HOME]
        self.go_file_playback = listeners[KEY_PLAY_COLLECTION]

        dbutil = util.get_db_util()
        self.selector = Selector(dbutil)

        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        MenuScreen.__init__(self,
                            util,
                            listeners,
                            ROWS,
                            COLUMNS,
                            voice_assistant, [ROWS, COLUMNS],
                            self.turn_page,
                            page_in_title=False,
                            show_loading=False)

        m = self.factory.create_collection_menu_button
        font_size = int(((self.menu_layout.h / ROWS) / 100) * FONT_HEIGHT)
        self.collection_list_menu = MultiPageMenu(util,
                                                  self.next_page,
                                                  self.previous_page,
                                                  self.set_title,
                                                  self.reset_title,
                                                  self.go_to_page,
                                                  m,
                                                  ROWS,
                                                  COLUMNS,
                                                  None, (0, 0, 0, 0),
                                                  self.menu_layout,
                                                  align=ALIGN_LEFT,
                                                  font_size=font_size)
        self.set_menu(self.collection_list_menu)

        self.navigator = TopicDetailNavigator(self.util, self.layout.BOTTOM,
                                              listeners)
        self.add_component(self.navigator)
        self.current_item = None
        self.current_page_items = None
        self.first_item = None
        self.last_item = None
        self.collection_topic = None
        self.selection = None
        self.prev_page = 1
        self.animated_title = True
Ejemplo n.º 9
0
    def __init__(self, util, listeners, voice_assistant, state):
        """ Initializer
        
        :param util: utility object
        :param listeners: file browser listeners
        :param voice_assistant: voice assistant
        :param state: button state
        """
        self.util = util
        self.config = util.config
        self.podcasts_util = util.get_podcasts_util()
        self.listeners = listeners
        self.factory = Factory(util)
        self.bounding_box = util.screen_rect
        self.layout = BorderLayout(self.bounding_box)
        self.layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                            PERCENT_BOTTOM_HEIGHT, 0, 0)

        d = [MENU_ROWS_EPISODES, MENU_COLUMNS_EPISODES]
        MenuScreen.__init__(self,
                            util,
                            listeners,
                            MENU_ROWS_EPISODES,
                            MENU_COLUMNS_EPISODES,
                            voice_assistant,
                            d,
                            self.turn_page,
                            page_in_title=False)

        if hasattr(state, "podcast_url"):
            podcast_url = state.podcast_url
            self.title = self.podcasts_util.summary_cache[podcast_url].name
        else:
            self.title = state.name

        m = self.factory.create_episode_menu_button
        self.episodes_menu = MultiPageMenu(util,
                                           self.next_page,
                                           self.previous_page,
                                           self.set_title,
                                           self.reset_title,
                                           self.go_to_page,
                                           m,
                                           MENU_ROWS_EPISODES,
                                           MENU_COLUMNS_EPISODES,
                                           None, (0, 0, 0),
                                           self.menu_layout,
                                           align=ALIGN_MIDDLE)
        self.set_menu(self.episodes_menu)

        self.total_pages = PAGE_SIZE_EPISODES * 2
        self.episodes = []
        self.navigator = EpisodeNavigator(
            self.util, self.layout.BOTTOM, listeners,
            self.config[COLORS][COLOR_DARK_LIGHT], self.total_pages)
        self.components.append(self.navigator)
        self.current_page = 1

        self.save_episode_listeners = []
Ejemplo n.º 10
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer
        
        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.factory = Factory(util)

        self.podcasts_util = util.get_podcasts_util()
        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        d = [MENU_ROWS_PODCASTS, MENU_COLUMNS_PODCASTS]
        MenuScreen.__init__(self,
                            util,
                            listeners,
                            MENU_ROWS_PODCASTS,
                            MENU_COLUMNS_PODCASTS,
                            voice_assistant,
                            d,
                            self.turn_page,
                            page_in_title=False,
                            show_loading=True)
        self.title = self.config[LABELS][PODCASTS]

        m = self.factory.create_podcast_menu_button
        self.podcasts_menu = MultiPageMenu(util,
                                           self.next_page,
                                           self.previous_page,
                                           self.set_title,
                                           self.reset_title,
                                           self.go_to_page,
                                           m,
                                           MENU_ROWS_PODCASTS,
                                           MENU_COLUMNS_PODCASTS,
                                           None, (0, 0, 0),
                                           self.menu_layout,
                                           align=ALIGN_CENTER)
        self.set_menu(self.podcasts_menu)

        self.navigator = PodcastNavigator(
            self.util, self.layout.BOTTOM, listeners,
            self.config[COLORS][COLOR_DARK_LIGHT], PAGE_SIZE_PODCASTS + 1)
        self.components.append(self.navigator)

        url = self.config[PODCASTS][PODCAST_URL]
        if url and len(url) > 0:
            self.current_page = self.podcasts_util.get_podcast_page(
                url, PAGE_SIZE_PODCASTS)
        else:
            self.current_page = 1

        self.animated_title = True
Ejemplo n.º 11
0
    def __init__(self, util, listeners, voice_assistant):
        self.util = util
        self.config = util.config
        self.groups_list = self.util.get_stations_folders()
        self.factory = Factory(util)
        d = [MENU_ROWS, MENU_COLUMNS]
        MenuScreen.__init__(self,
                            util,
                            listeners,
                            MENU_ROWS,
                            MENU_COLUMNS,
                            voice_assistant,
                            d,
                            self.turn_page,
                            page_in_title=False)
        self.total_pages = math.ceil(len(self.groups_list) / PAGE_SIZE)
        self.title = util.get_stations_top_folder()
        m = self.create_genre_menu_button
        label_area = (
            (self.menu_layout.h / MENU_ROWS) / 100) * (100 - ICON_AREA)
        font_size = int((label_area / 100) * FONT_HEIGHT)

        self.navigator = RadioGroupNavigator(self.util, self.layout.BOTTOM,
                                             listeners, self.total_pages)
        self.add_navigator(self.navigator)
        self.player_button = self.navigator.get_button_by_name(KEY_PLAYER)
        if self.total_pages > 1:
            self.left_button = self.navigator.get_button_by_name(KEY_PAGE_DOWN)
            self.right_button = self.navigator.get_button_by_name(KEY_PAGE_UP)

        self.groups_menu = MultiPageMenu(util,
                                         self.next_page,
                                         self.previous_page,
                                         self.set_title,
                                         self.reset_title,
                                         self.go_to_page,
                                         m,
                                         MENU_ROWS,
                                         MENU_COLUMNS,
                                         None, (0, 0, 0, 0),
                                         self.menu_layout,
                                         align=ALIGN_CENTER,
                                         font_size=font_size)
        self.groups_menu.add_listener(listeners[KEY_GENRE])
        self.set_menu(self.groups_menu)

        current_name = self.get_current_group_name()

        if current_name == None:
            self.current_page = 1
        else:
            try:
                current_group_index = self.groups_list.index(current_name)
                self.current_page = int(current_group_index / PAGE_SIZE) + 1
            except:
                current_group_index = 0

        self.turn_page()
Ejemplo n.º 12
0
    def add_screen_observers(self, update_observer, redraw_observer):
        """ Add screen observers

        :param update_observer: observer for updating the screen
        :param redraw_observer: observer to redraw the whole screen
        """
        MenuScreen.add_screen_observers(self, update_observer, redraw_observer)
        self.update_observer = update_observer
        self.redraw_observer = redraw_observer
        self.keyboard.add_menu_observers(update_observer, redraw_observer)
        self.navigator.add_observers(update_observer, redraw_observer)
Ejemplo n.º 13
0
    def add_screen_observers(self, update_observer, redraw_observer):
        """ Add screen observers

        :param update_observer: observer for updating the screen
        :param redraw_observer: observer to redraw the whole screen
        """
        MenuScreen.add_screen_observers(self, update_observer, redraw_observer)
        self.update_observer = update_observer
        self.redraw_observer = redraw_observer
        self.add_loading_listener(redraw_observer)
        self.navigator.add_observers(update_observer, redraw_observer)
Ejemplo n.º 14
0
    def __init__(self,
                 title,
                 util,
                 listeners,
                 voice_assistant,
                 show_visibility=True):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.listeners = listeners
        layout = BorderLayout(util.screen_rect)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        MenuScreen.__init__(self, util, listeners, 1, 1, voice_assistant)
        self.screen_title.set_text(title)

        k_layout = BorderLayout(self.layout.CENTER)
        k_layout.set_percent_constraints(20, 0, 0, 0)

        font_size = int((k_layout.TOP.h * 50) / 100)
        fgr = util.config[COLORS][COLOR_BRIGHT]
        bgr = (0, 0, 0)
        bb = k_layout.TOP
        s = int(font_size / 2)
        self.input_text = self.factory.create_output_text("kbd.text",
                                                          bb,
                                                          bgr,
                                                          fgr,
                                                          font_size,
                                                          H_ALIGN_LEFT,
                                                          shift_x=s)
        self.input_text.obfuscate_flag = show_visibility
        self.add_component(self.input_text)

        keyboard_layout = k_layout.CENTER
        self.keyboard = Keyboard(util, keyboard_layout,
                                 listeners[KEY_CALLBACK], self)
        self.set_menu(self.keyboard)
        self.keyboard.add_text_listener(self.input_text.set_text)

        listeners[KEY_DELETE] = self.keyboard.delete
        listeners[KEY_VIEW] = self.input_text.obfuscate
        self.navigator = KeyboardNavigator(self.util, self.layout.BOTTOM,
                                           listeners, show_visibility)
        self.add_navigator(self.navigator)

        self.link_borders()
Ejemplo n.º 15
0
    def __init__(self, util, listeners, voice_assistant):
        self.util = util
        self.config = util.config
        self.groups_list = self.util.get_stations_folders()
        self.factory = Factory(util)
        d = [MENU_ROWS, MENU_COLUMNS]
        MenuScreen.__init__(self,
                            util,
                            listeners,
                            MENU_ROWS,
                            MENU_COLUMNS,
                            voice_assistant,
                            d,
                            self.turn_page,
                            page_in_title=False)
        self.total_pages = math.ceil(len(self.groups_list) / PAGE_SIZE)
        self.title = util.get_stations_top_folder()
        m = self.factory.create_genre_menu_button

        self.groups_menu = MultiPageMenu(util,
                                         self.next_page,
                                         self.previous_page,
                                         self.set_title,
                                         self.reset_title,
                                         self.go_to_page,
                                         m,
                                         MENU_ROWS,
                                         MENU_COLUMNS,
                                         None, (0, 0, 0),
                                         self.menu_layout,
                                         align=ALIGN_CENTER)
        self.groups_menu.add_listener(listeners[KEY_GENRE])
        self.set_menu(self.groups_menu)

        color_dark_light = self.config[COLORS][COLOR_DARK_LIGHT]
        self.navigator = RadioGroupNavigator(self.util, self.layout.BOTTOM,
                                             listeners, color_dark_light,
                                             self.total_pages)
        self.components.append(self.navigator)

        current_name = self.get_current_group_name()

        if current_name == None:
            self.current_page = 1
        else:
            try:
                current_group_index = self.groups_list.index(current_name)
                self.current_page = int(current_group_index / PAGE_SIZE) + 1
            except:
                current_group_index = 0

        self.turn_page()
Ejemplo n.º 16
0
    def __init__(self, util, listeners, ch, f, go_author, parser, base_url,
                 voice_assistant, d):
        """ Initializer
        
        :param util: utility object
        :param listeners: screen listeners
        :param ch: selected character
        :param f: selected filter
        :param go_authors: callback
        :param parser: authors parser
        :param base_url: url
        :param d: dictionary with menu button flags 
        """
        self.util = util
        self.factory = Factory(util)
        self.base_url = base_url
        self.config = util.config

        self.parser = parser
        self.current_author_char = ch
        self.current_author_filter = f
        self.go_author = go_author
        self.author_cache = {}
        self.title = self.config[LABELS][KEY_AUTHORS]

        MenuScreen.__init__(self, util, listeners, MENU_ROWS, MENU_COLUMNS,
                            voice_assistant, d, self.turn_page)
        m = self.create_book_author_menu_button

        self.navigator = BookNavigator(util, self.layout.BOTTOM, listeners,
                                       d[4])
        self.back_button = self.navigator.get_button_by_name(KEY_BACK)
        self.left_button = self.navigator.get_button_by_name(KEY_PAGE_DOWN)
        self.right_button = self.navigator.get_button_by_name(KEY_PAGE_UP)
        self.add_navigator(self.navigator)

        font_size = int(((self.menu_layout.h / MENU_ROWS) / 100) *
                        self.config[FONT_HEIGHT_PERCENT])
        self.authors_menu = MultiPageMenu(util,
                                          self.next_page,
                                          self.previous_page,
                                          self.set_title,
                                          self.reset_title,
                                          self.go_to_page,
                                          m,
                                          MENU_ROWS,
                                          MENU_COLUMNS,
                                          None, (0, 0, 0),
                                          self.menu_layout,
                                          font_size=font_size)
        self.set_menu(self.authors_menu)
Ejemplo n.º 17
0
 def __init__(self, util, listeners, go_authors, voice_assistant, d):
     """ Initializer
     
     :param util: utility object
     :param listeners: screen listeners
     :param go_authors: callback
     :param d: dictionary with menu button flags 
     """ 
     MenuScreen.__init__(self, util, listeners, CHAR_ROWS, CHAR_COLUMNS, voice_assistant, d)
     self.abc_menu = CyrillicMenu(self.util, go_authors, (0, 0, 0), self.menu_layout)            
     self.screen_title.set_text(self.config[LABELS][KEY_CHOOSE_AUTHOR])
     self.set_menu(self.abc_menu)
     self.navigator.left_button.change_label(str(0))
     self.navigator.right_button.change_label(str(0))
Ejemplo n.º 18
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.listeners[KEY_LIST] = self.set_list
        self.factory = Factory(util)
        dbutil = util.get_db_util()
        self.selector = Selector(dbutil)

        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT, PERCENT_BOTTOM_HEIGHT, 0, 0)

        MenuScreen.__init__(self, util, listeners, ROWS, COLUMNS, voice_assistant, [ROWS, COLUMNS],
                            self.turn_page, page_in_title=False, show_loading=False)        

        m = self.factory.create_collection_menu_button
        font_size = int(((self.menu_layout.h / ROWS) / 100) * FONT_HEIGHT)

        h = self.config[HORIZONTAL_LAYOUT]
        bgr = self.config[BACKGROUND][MENU_BGR_COLOR]
        self.topic_menu = Menu(util, bgr, self.menu_layout, ROWS, COLUMNS, create_item_method=m, align=ALIGN_LEFT, horizontal_layout=h, font_size=font_size)
        self.set_menu(self.topic_menu)

        self.navigator = TopicNavigator(self.util, self.layout.BOTTOM, listeners)
        self.add_navigator(self.navigator)

        self.current_topic = None
        self.current_item = None
        self.current_page_items = None
        self.first_item = None
        self.last_item = None
        self.collection_topic = None
        self.previous_page = 1
        self.search_string = None
        self.source = None
        self.mode = KEY_LIST
        self.animated_title = True
Ejemplo n.º 19
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.factory = Factory(util)
        self.go_home = listeners[KEY_HOME]
        self.go_keyboard = listeners[KEY_KEYBOARD_KEY]
        self.keyboard_callback = listeners[KEY_CALLBACK]

        self.wifi_selection_listeners = []

        self.wifi_util = WiFiUtil(util)
        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT, PERCENT_BOTTOM_HEIGHT, 0, 0)

        d = [MENU_ROWS_WIFI, MENU_COLUMNS_WIFI]
        MenuScreen.__init__(self, util, listeners, MENU_ROWS_WIFI, MENU_COLUMNS_WIFI, voice_assistant, d,
                            self.turn_page, page_in_title=False, show_loading=False)
        self.title = self.config[LABELS]["select.wifi"]
        self.set_title(1)

        m = self.factory.create_wifi_menu_button
        self.wifi_menu = MultiPageMenu(util, self.next_page, self.previous_page, self.set_title, self.reset_title,
                                           self.go_to_page, m, MENU_ROWS_WIFI, MENU_COLUMNS_WIFI, None,
                                           (0, 0, 0), self.menu_layout, align=ALIGN_MIDDLE)
        self.set_menu(self.wifi_menu)

        listeners[KEY_REFRESH] = self.set_current
        listeners[KEY_SORT] = self.sort_abc
        self.navigator = WiFiNavigator(self.util, self.layout.BOTTOM, listeners, PAGE_SIZE_WIFI + 1)
        self.components.append(self.navigator)
        self.original_networks = None
        self.networks = None
        self.sort_direction = False
        self.current_network = None
Ejemplo n.º 20
0
 def __init__(self, util, listeners, go_book_by_genre, genres, base_url,
              voice_assistant, d):
     self.util = util
     self.go_book_by_genre = go_book_by_genre
     self.config = util.config
     self.genres_list = genres
     self.base_url = base_url
     self.factory = Factory(util)
     MenuScreen.__init__(self, util, listeners, MENU_ROWS, MENU_COLUMNS,
                         voice_assistant, d, self.turn_page)
     self.total_pages = math.ceil(len(genres) / PAGE_SIZE)
     self.title = self.config[LABELS][KEY_CHOOSE_GENRE]
     m = self.factory.create_book_genre_menu_button
     self.genre_menu = MultiPageMenu(util, self.next_page,
                                     self.previous_page, self.set_title,
                                     self.reset_title, self.go_to_page, m,
                                     MENU_ROWS, MENU_COLUMNS, None,
                                     (0, 0, 0), self.menu_layout)
     self.set_menu(self.genre_menu)
     self.turn_page()
Ejemplo n.º 21
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer
        
        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.factory = Factory(util)
        
        self.podcasts_util = util.get_podcasts_util()        
        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT, PERCENT_BOTTOM_HEIGHT, 0, 0)
        
        d = [MENU_ROWS_PODCASTS, MENU_COLUMNS_PODCASTS]
        MenuScreen.__init__(self, util, listeners, MENU_ROWS_PODCASTS, MENU_COLUMNS_PODCASTS, voice_assistant, d, self.turn_page, 
            page_in_title=False, show_loading=True)        
        self.title = self.config[LABELS][PODCASTS]
        self.current_item = self.config[PODCASTS][PODCAST_URL]
        
        self.navigator = PodcastNavigator(self.util, self.layout.BOTTOM, listeners, PAGE_SIZE_PODCASTS + 1)
        self.add_navigator(self.navigator)

        m = self.create_podcast_menu_button
        font_size = int(((self.menu_layout.h / MENU_ROWS_PODCASTS) / 100) * FONT_HEIGHT)
        h = self.config[HORIZONTAL_LAYOUT]
        bgr = self.config[BACKGROUND][MENU_BGR_COLOR]
        self.podcasts_menu = Menu(util, bgr, self.menu_layout, MENU_ROWS_PODCASTS, MENU_COLUMNS_PODCASTS, create_item_method=m, align=ALIGN_CENTER, horizontal_layout=h, font_size=font_size)
        self.set_menu(self.podcasts_menu)
        
        url = self.config[PODCASTS][PODCAST_URL]
        if url and len(url) > 0:
            self.current_page = self.podcasts_util.get_podcast_page(url, PAGE_SIZE_PODCASTS)
        else:
            self.current_page = 1

        self.animated_title = True
Ejemplo n.º 22
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer
        
        :param util: utility object
        :param listeners: screen event listeners
        :param voice_assistant: the voice assistant
        """
        self.util = util
        self.config = util.config
        self.groups_list = self.util.get_stations_folders()
        self.factory = Factory(util)
        self.favorites_util = FavoritesUtil(self.util)
        rows = self.config[FILE_BROWSER_ROWS]
        columns = self.config[FILE_BROWSER_COLUMNS]
        d = [rows, columns]
        self.page_size = rows * columns

        MenuScreen.__init__(self,
                            util,
                            listeners,
                            rows,
                            columns,
                            voice_assistant,
                            d,
                            self.turn_page,
                            page_in_title=False)
        self.total_pages = 0
        self.title = ""
        m = self.create_radio_browser_menu_button
        button_height = (self.menu_layout.h / rows) - (self.config[PADDING] *
                                                       2)
        bgr = self.config[BACKGROUND][MENU_BGR_COLOR]

        if self.config[ALIGN_BUTTON_CONTENT_X] == 'center':
            font_size = int(((100 - STATION_IMAGE_AREA) / 100) *
                            self.config[FONT_HEIGHT_PERCENT])
        else:
            font_size = int(
                (button_height / 100) * self.config[FONT_HEIGHT_PERCENT])

        self.navigator = RadioNavigator(self.util, self.layout.BOTTOM,
                                        listeners)
        self.add_navigator(self.navigator)
        self.left_button = self.navigator.get_button_by_name(KEY_PAGE_DOWN)
        self.right_button = self.navigator.get_button_by_name(KEY_PAGE_UP)
        self.player_button = self.navigator.get_button_by_name(KEY_PLAYER)

        h = self.config[HORIZONTAL_LAYOUT]
        self.stations_menu = Menu(util,
                                  bgr,
                                  self.menu_layout,
                                  rows,
                                  columns,
                                  create_item_method=m,
                                  align=ALIGN_CENTER,
                                  horizontal_layout=h,
                                  font_size=font_size)
        self.set_menu(self.stations_menu)

        self.current_page = None
        self.current_language = self.config[CURRENT][LANGUAGE]
        self.current_genre = self.util.get_current_genre()
        self.turn_page()

        self.animated_title = True
Ejemplo n.º 23
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.factory = Factory(util)
        self.go_home = listeners[KEY_HOME]
        self.go_network = listeners[KEY_NETWORK]
        self.go_player = listeners[KEY_PLAYER]

        self.wifi_selection_listeners = []

        self.bluetooth_util = self.util.get_bluetooth_util()
        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        d = [MENU_ROWS_BLUETOOTH, MENU_COLUMNS_BLUETOOTH]
        MenuScreen.__init__(self,
                            util,
                            listeners,
                            MENU_ROWS_BLUETOOTH,
                            MENU_COLUMNS_BLUETOOTH,
                            voice_assistant,
                            d,
                            self.turn_page,
                            page_in_title=False,
                            show_loading=False)
        self.title = self.config[LABELS]["select.bluetooth.device"]
        self.set_title(1)

        m = self.factory.create_wifi_menu_button
        self.bluetooth_menu = MultiPageMenu(util,
                                            self.next_page,
                                            self.previous_page,
                                            self.set_title,
                                            self.reset_title,
                                            self.go_to_page,
                                            m,
                                            MENU_ROWS_BLUETOOTH,
                                            MENU_COLUMNS_BLUETOOTH,
                                            None, (0, 0, 0),
                                            self.menu_layout,
                                            align=ALIGN_LEFT)
        self.set_menu(self.bluetooth_menu)

        listeners[KEY_HOME] = self.before_home
        listeners[KEY_NETWORK] = self.before_network
        listeners[KEY_PLAYER] = self.before_player
        listeners[KEY_REFRESH] = self.set_current

        self.navigator = BluetoothNavigator(self.util, self.layout.BOTTOM,
                                            listeners, PAGE_SIZE_BLUETOOTH + 1)
        self.components.append(self.navigator)
        self.devices = None
        self.networks = None
        self.sort_direction = False
        self.current_device = None
Ejemplo n.º 24
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.factory = Factory(util)
        self.check_internet_connectivity = listeners[KEY_CHECK_INTERNET]
        self.go_home = listeners[KEY_HOME]
        self.set_modes = listeners[KEY_SET_MODES]
        self.linux = self.config[LINUX_PLATFORM]

        self.wifi_util = WiFiUtil(util)
        self.bluetooth_util = self.util.get_bluetooth_util()

        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        rows = 7
        if self.linux and self.config[USAGE][USE_BLUETOOTH]:
            rows = 7
        else:
            rows = 6

        columns = 1
        d = [rows, columns]
        MenuScreen.__init__(self,
                            util,
                            listeners,
                            rows,
                            columns,
                            voice_assistant,
                            d,
                            None,
                            page_in_title=False,
                            show_loading=False)
        self.title = self.config[LABELS]["network"]
        self.set_title(1)

        center_layout = BorderLayout(self.menu_layout)
        center_layout.set_percent_constraints(0, 0, 47, 0)

        left_layout = center_layout.LEFT
        right_layout = center_layout.CENTER

        label_layout = GridLayout(left_layout)
        label_layout.set_pixel_constraints(rows, columns)
        label_layout.get_next_constraints()

        value_layout = GridLayout(right_layout)
        value_layout.set_pixel_constraints(rows, columns)
        value_layout.get_next_constraints()

        self.network_panel = Container(util, self.menu_layout)

        rect = pygame.Rect(self.menu_layout.x, self.menu_layout.y + 1,
                           self.menu_layout.w, self.menu_layout.h - 1)
        b = util.config[BACKGROUND][MENU_BGR_COLOR]
        bgr = Component(util, rect, 0, 0, self.menu_layout, bgr=b)
        bgr.name = "network.panel.bgr"
        self.network_panel.add_component(bgr)

        self.internet_label = self.add_label(label_layout, self.network_panel,
                                             1)
        self.ethernet_label = self.add_label(label_layout, self.network_panel,
                                             2)
        self.wifi_network_label = self.add_label(label_layout,
                                                 self.network_panel, 3)
        self.wifi_ip_label = self.add_label(label_layout, self.network_panel,
                                            4)
        if self.linux and self.config[USAGE][USE_BLUETOOTH]:
            self.bluetooth_label = self.add_label(label_layout,
                                                  self.network_panel, 5)

        self.internet = self.add_value(value_layout, self.network_panel, 1)
        self.ethernet_ip = self.add_value(value_layout, self.network_panel, 2)
        self.wifi_network = self.add_value(value_layout, self.network_panel, 3)
        self.wifi_ip = self.add_value(value_layout, self.network_panel, 4)
        if self.linux and self.config[USAGE][USE_BLUETOOTH]:
            self.bluetooth = self.add_value(value_layout, self.network_panel,
                                            5)

        self.add_component(self.network_panel)

        listeners[KEY_REFRESH] = self.set_current
        listeners[KEY_DISCONNECT] = self.disconnect_wifi
        listeners[KEY_BLUETOOTH_REMOVE] = self.remove_bluetooth_devices

        self.navigator = NetworkNavigator(self.util, self.layout.BOTTOM,
                                          listeners)
        self.navigator.components[0].set_selected(True)
        self.add_navigator(self.navigator)
        self.original_networks = None
        self.networks = None
        self.current_network = None
        self.current_wifi_network = None
        self.clicked = False
        Screen.link_borders(self, False)
Ejemplo n.º 25
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.listeners = listeners
        self.factory = Factory(util)
        self.go_home = listeners[KEY_HOME]
        self.go_file_playback = listeners[KEY_PLAY_COLLECTION]

        dbutil = util.get_db_util()
        self.selector = Selector(dbutil)

        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        MenuScreen.__init__(self,
                            util,
                            listeners,
                            ROWS,
                            COLUMNS,
                            voice_assistant, [ROWS, COLUMNS],
                            self.turn_page,
                            page_in_title=False,
                            show_loading=False)

        self.navigator = TopicDetailNavigator(self.util, self.layout.BOTTOM,
                                              listeners)
        self.add_navigator(self.navigator)
        self.left_button = self.navigator.get_button_by_name(KEY_PAGE_DOWN)
        self.right_button = self.navigator.get_button_by_name(KEY_PAGE_UP)
        self.player_button = self.navigator.get_button_by_name(KEY_PLAYER)

        m = self.factory.create_collection_menu_button
        font_size = int(((self.menu_layout.h / ROWS) / 100) * FONT_HEIGHT)
        h = self.config[HORIZONTAL_LAYOUT]
        bgr = self.config[BACKGROUND][MENU_BGR_COLOR]
        self.collection_list_menu = Menu(util,
                                         bgr,
                                         self.menu_layout,
                                         ROWS,
                                         COLUMNS,
                                         create_item_method=m,
                                         align=ALIGN_LEFT,
                                         horizontal_layout=h,
                                         font_size=font_size)
        self.set_menu(self.collection_list_menu)

        self.current_item = None
        self.current_page_items = None
        self.first_item = None
        self.last_item = None
        self.collection_topic = None
        self.selection = None
        self.prev_page = 1
        self.animated_title = True
Ejemplo n.º 26
0
    def handle_event(self, event):
        """ Handle screen event

        :param event: the event to handle
        """
        MenuScreen.handle_event_common(self, event)
Ejemplo n.º 27
0
    def __init__(self, util, listeners, voice_assistant):
        """ Initializer

        :param util: utility object
        :param listeners: listeners
        :param voice_assistant: voice assistant
        """
        self.util = util
        self.config = util.config
        self.factory = Factory(util)
        self.check_internet_connectivity = listeners[KEY_CHECK_INTERNET]
        self.go_home = listeners[KEY_HOME]
        self.set_modes = listeners[KEY_SET_MODES]

        self.wifi_util = WiFiUtil(util)
        self.bounding_box = util.screen_rect
        layout = BorderLayout(self.bounding_box)
        layout.set_percent_constraints(PERCENT_TOP_HEIGHT,
                                       PERCENT_BOTTOM_HEIGHT, 0, 0)

        d = [6, 1]
        MenuScreen.__init__(self,
                            util,
                            listeners,
                            6,
                            1,
                            voice_assistant,
                            d,
                            None,
                            page_in_title=False,
                            show_loading=False)
        self.title = self.config[LABELS]["network"]
        self.set_title(1)

        center_layout = BorderLayout(self.menu_layout)
        center_layout.set_percent_constraints(0, 0, 47, 0)

        left_layout = center_layout.LEFT
        right_layout = center_layout.CENTER

        label_layout = GridLayout(left_layout)
        label_layout.set_pixel_constraints(6, 1)
        label_layout.get_next_constraints()

        value_layout = GridLayout(right_layout)
        value_layout.set_pixel_constraints(6, 1)
        value_layout.get_next_constraints()

        self.network_panel = Container(util, self.menu_layout, (100, 0, 0))

        rect = pygame.Rect(self.menu_layout.x, self.menu_layout.y + 1,
                           self.menu_layout.w, self.menu_layout.h - 1)
        bgr = Component(util, rect, 0, 0, self.menu_layout, (0, 0, 0),
                        self.util.config[COLORS][COLOR_DARK])
        bgr.name = "network.panel.bgr"
        self.network_panel.add_component(bgr)

        self.internet_label = self.add_label(label_layout, self.network_panel,
                                             1)
        self.ethernet_label = self.add_label(label_layout, self.network_panel,
                                             2)
        self.wifi_network_label = self.add_label(label_layout,
                                                 self.network_panel, 3)
        self.wifi_ip_label = self.add_label(label_layout, self.network_panel,
                                            4)

        self.internet = self.add_value(value_layout, self.network_panel, 1)
        self.ethernet_ip = self.add_value(value_layout, self.network_panel, 2)
        self.wifi_network = self.add_value(value_layout, self.network_panel, 3)
        self.wifi_ip = self.add_value(value_layout, self.network_panel, 4)

        self.set_menu(self.network_panel)

        listeners[KEY_REFRESH] = self.set_current
        listeners[KEY_DISCONNECT] = self.disconnect_wifi

        self.navigator = NetworkNavigator(self.util, self.layout.BOTTOM,
                                          listeners)
        self.components.append(self.navigator)
        self.original_networks = None
        self.networks = None
        self.current_network = None
        self.current_wifi_network = None
        self.clicked = False