def __init__(self, util, show_authors, bgr=None, bounding_box=None): """ Initializer :param util: utility object :param show_authors: callback method :param bgr: menu background :param bounding_box: bounding box """ self.factory = Factory(util) self.util = util self.config = util.config self.current_ch = INITIAL_CHAR m = self.factory.create_cyrillic_menu_button Menu.__init__(self, util, bgr, bounding_box, CHAR_ROWS, CHAR_COLUMNS, create_item_method=m) self.config = util.config self.show_authors = show_authors self.chars = self.load_menu() self.set_items(self.chars, 0, self.abc_action, False) i = self.get_index_by_name(self.current_ch) self.select_by_index(i)
def __init__(self, title, util, listeners, voice_assistant): """ Initializer :param title: screen title :param util: utility object :param listener: screen menu event listener :param voice_assistant: voice assistant """ Screen.__init__(self, util, None, PERCENT_TOP_HEIGHT, voice_assistant) self.screen_title.set_text(title) self.factory = Factory(util) self.abc_menu = LatinAbcMenu(util, listeners[KEY_CALLBACK], (0, 0, 0, 0), self.layout.CENTER) self.abc_menu.add_listener(listeners[KEY_CALLBACK]) self.add_menu(self.abc_menu) layout = GridLayout(self.layout.BOTTOM) layout.set_pixel_constraints(1, 4, 1, 0) layout.current_constraints = 0 self.navigator = LatinKeyboardNavigator(util, layout, listeners) self.add_navigator(self.navigator) self.link_borders() self.link_borders_custom()
def __init__(self, util, bgr=None, bounding_box=None, font_size=None): """ Initializer :param util: utility object :param bgr: menu background :param bounding_box: bounding box """ self.util = util self.factory = Factory(util) self.config = util.config self.cdutil = CdUtil(util) self.bb = bounding_box self.horizontal_layout = True self.rows = None self.cols = None items = self.get_menu_items() cell_bb = items[2] m = self.create_home_menu_button label_area = (cell_bb.h / 100) * (100 - ICON_AREA) font_size = int((label_area / 100) * FONT_HEIGHT) Menu.__init__(self, util, bgr, bounding_box, None, None, create_item_method=m, font_size=font_size) self.set_modes(*items)
def __init__(self, util, listeners, bgr=None, bounding_box=None): """ Initializer :param util: utility object :param listeners: menu listeners :param bgr: menu background :param bounding_box: bounding box """ Container.__init__(self, util) self.factory = Factory(util) self.name = "collection.navigator" self.content = self.bounding_box = bounding_box self.content_x = bounding_box.x self.content_y = bounding_box.y self.menu_buttons = [] layout = GridLayout(bounding_box) layout.set_pixel_constraints(1, 3, 1, 0) layout.current_constraints = 0 constr = layout.get_next_constraints() self.home_button = self.factory.create_button(KEY_HOME, KEY_HOME, constr, listeners[KEY_HOME], bgr, IMAGE_SIZE) self.add_component(self.home_button) self.menu_buttons.append(self.home_button) constr = layout.get_next_constraints() self.back_button = self.factory.create_button(KEY_BACK, KEY_BACK, constr, listeners[KEY_BACK], bgr, IMAGE_SIZE) self.add_component(self.back_button) self.menu_buttons.append(self.back_button) constr = layout.get_next_constraints() self.player_button = self.factory.create_button(KEY_PLAYER, KEY_PLAY_PAUSE, constr, listeners[KEY_PLAYER], bgr, IMAGE_SIZE) self.add_component(self.player_button) self.menu_buttons.append(self.player_button)
def __init__(self, items, util, bgr, bounding_box, listener): """ Initializer :param util: utility object :param bounding_box: bounding box :param listeners: buttons listeners :param bgr: menu background """ self.factory = Factory(util) m = self.factory.create_cd_drive_menu_button Menu.__init__(self, util, bgr, bounding_box, None, None, create_item_method=m) self.name = "cd.drives.menu" self.content = bounding_box self.content_x = bounding_box.x self.content_y = bounding_box.y self.menu_buttons = [] id = str(util.config[CD_PLAYBACK][CD_DRIVE_ID]) if len(id) == 0: id = "0" self.select_by_index(int(id))
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)
def __init__(self, util, bb, callback, screen): """ Initializer :param util: utility object :param bb: bounding box :param callback: function to call on Enter :param screen: parent screen """ Container.__init__(self, util, bb, (0, 0, 0)) self.content = None self.screen = screen self.bb = bb self.util = util self.config = util.config self.callback = callback self.move_listeners = [] self.text_listeners = [] self.buttons = {} self.factory = Factory(util) self.caps = False self.text = "" self.controls = ["Caps", "Del", "abc", "ABC", "123", "#+=", "Enter"] self.keyboards = {} self.current_keyboard_type = None self.create_keyboard(KEYBOARD_abc, LAYOUT_1, TRANSITION_MAP_1)
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()
def __init__(self, util, next_page, previous_page, set_title, reset_title, go_to_page, play_track, bgr=None, bounding_box=None): """ Initializer :param util: utility object :param next_page: next page callback :param previous_page: previous page callback :param set_title: set title callback :param reset_title: reset title callback :param go_to_page: go to page callback :param play_track: play track callback :param bgr: menu background :param bounding_box: bounding box """ self.factory = Factory(util) self.util = util self.next_page = next_page self.previous_page = previous_page self.bb = bounding_box m = self.factory.create_track_menu_button MultiPageMenu.__init__(self, util, next_page, previous_page, set_title, reset_title, go_to_page, m, TRACK_ROWS, TRACK_COLUMNS, None, bgr, bounding_box) self.config = util.config self.play_track = play_track self.tracks = None
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
def __init__(self, util, bgr=None, bounding_box=None): """ Initializer :param util: utility object :param bgr: menu background :param bounding_box: bounding box """ self.util = util self.factory = Factory(util) m = self.create_language_menu_button Menu.__init__(self, util, bgr, bounding_box, None, None, create_item_method=m) self.config = self.util.config language = self.config[CURRENT][LANGUAGE] languages = self.config[KEY_LANGUAGES] layout = self.get_layout(languages) button_rect = layout.constraints[0] image_box = self.factory.get_icon_bounding_box(button_rect, ICON_LOCATION, ICON_AREA, ICON_SIZE, BUTTON_PADDING) self.languages = self.util.load_languages_menu(image_box) label_area = (button_rect.h / 100) * (100 - ICON_AREA) self.font_size = int((label_area / 100) * FONT_HEIGHT) self.set_items(self.languages, 0, self.change_language, False) self.current_language = self.languages[language] self.item_selected(self.current_language)
def __init__(self, util, bounding_box, listeners): """ Initializer :param util: utility object :param bounding_box: bounding box :param listeners: buttons listeners """ Container.__init__(self, util) self.factory = Factory(util) self.name = "collection.navigator" self.content = None self.content_x = bounding_box.x self.content_y = bounding_box.y self.listeners = listeners self.menu_buttons = [] self.config = util.config self.use_web = self.config[USAGE][USE_WEB] self.go_abc = listeners[KEY_ABC] self.go_keyboard = listeners[KEY_KEYBOARD_KEY] self.keyboard_callback = listeners[KEY_CALLBACK] self.bgr = util.config[BACKGROUND][FOOTER_BGR_COLOR] self.arrow_layout = BorderLayout(bounding_box) self.arrow_layout.set_percent_constraints(0, 0, PERCENT_ARROW_WIDTH, PERCENT_ARROW_WIDTH) self.collection_topic = None self.update_observer = None self.redraw_observer = None self.menu_button = None
def __init__(self, util, bgr=None, bb=None, rows=3, cols=3, create_item_method=None, menu_button_layout=None, font_size=None, align=ALIGN_CENTER, button_padding_x=None): """ Initializer :param util: utility object :param bgr: menu background :param bb: bounding box :param rows: number of rows in menu :param cols: number of columns in menu :param create_item_method: factory method for menu item creation :param menu_button_layout: menu buttons layout """ Container.__init__(self, util, bb, bgr) self.bb = bb self.rows = rows self.cols = cols self.util = util self.menu_button_layout = menu_button_layout self.start_listeners = [] self.move_listeners = [] self.menu_loaded_listeners = [] self.font_size = font_size self.button_padding_x = button_padding_x self.buttons = {} self.factory = Factory(util) self.create_item_method = create_item_method self.selected_index = None self.align = align
def __init__(self, title, util, listeners, voice_assistant): """ Initializer :param title: screen title :param util: utility object :param listener: screen menu event listener :param voice_assistant: voice assistant """ Screen.__init__(self, util, None, PERCENT_TOP_HEIGHT, voice_assistant) self.screen_title.set_text(title) self.factory = Factory(util) self.abc_menu = LatinAbcMenu(util, listeners[KEY_CALLBACK], (0, 0, 0, 0), self.layout.CENTER) self.abc_menu.add_listener(listeners[KEY_CALLBACK]) self.add_menu(self.abc_menu) layout = GridLayout(self.layout.BOTTOM) layout.set_pixel_constraints(1, 4, 1, 0) layout.current_constraints = 0 d = util.config[BACKGROUND][FOOTER_BGR_COLOR] self.navigator = Container(util) self.buttons = [] self.add_button(KEY_HOME, KEY_HOME, layout, listeners[KEY_HOME], d) self.add_button(KEY_BACK, KEY_BACK, layout, listeners[KEY_BACK], d) self.add_button(COLLECTION, KEY_PARENT, layout, listeners[COLLECTION], d) self.add_button(KEY_PLAYER, KEY_PLAY_PAUSE, layout, listeners[KEY_PLAYER], d) self.add_menu(self.navigator)
def __init__(self, util, callback, bgr=None, bounding_box=None): """ Initializer :param util: utility object :param callback: callback method :param bgr: menu background :param bounding_box: bounding box """ self.factory = Factory(util) self.util = util self.config = util.config self.current_ch = ABC[0] m = self.create_latin_abc_menu_button font_size = int(((bounding_box.h / ROWS) / 100) * FONT_HEIGHT) Menu.__init__(self, util, bgr, bounding_box, ROWS, COLUMNS, create_item_method=m, font_size=font_size) self.config = util.config self.callback = callback self.chars = self.load_menu() self.set_items(self.chars, 0, self.abc_action, False) self.make_blank("foo") self.make_blank("bar") self.select_by_index(0)
def __init__(self, util, bounding_box, listeners, bgr): """ Initializer :param util: utility object :param bounding_box: bounding box :param listeners: buttons listeners :param bgr: menu background """ Container.__init__(self, util) self.factory = Factory(util) self.name = "timer.navigator" self.content = bounding_box self.content_x = bounding_box.x self.content_y = bounding_box.y self.menu_buttons = [] self.bgr = bgr self.layout = GridLayout(bounding_box) self.layout.set_pixel_constraints(1, 3, 1, 0) self.layout.current_constraints = 0 self.image_size = 64 self.home_button = self.add_button(KEY_HOME, KEY_HOME, listeners[KEY_HOME]) self.sleep_now_button = self.add_button(SLEEP_NOW, KEY_MUTE, listeners[SLEEP_NOW]) self.player_button = self.add_button(KEY_PLAYER, KEY_PLAY_PAUSE, listeners[KEY_PLAYER])
def __init__(self, util, bgr=None, bounding_box=None): """ Initializer :param util: utility object :param bgr: menu background :param bounding_box: bounding box """ self.factory = Factory(util) m = self.factory.create_language_menu_button self.util = util Menu.__init__(self, util, bgr, bounding_box, None, None, create_item_method=m) self.config = self.util.config language = self.config[CURRENT][LANGUAGE] languages = self.config[KEY_LANGUAGES] layout = self.get_layout(languages) button_rect = layout.constraints[0] self.languages = self.util.load_languages_menu(button_rect) self.set_items(self.languages, 0, self.change_language, False) self.current_language = self.languages[language] self.item_selected(self.current_language)
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
def __init__(self, util, bounding_box, listeners, show_visibility=True): """ Initializer :param util: utility object :param bounding_box: bounding box :param listeners: buttons listeners """ Container.__init__(self, util) self.factory = Factory(util) self.name = "keyboard.navigator" self.content = bounding_box self.content_x = bounding_box.x self.content_y = bounding_box.y self.menu_buttons = [] if show_visibility: n = 5 else: n = 4 self.layout = GridLayout(bounding_box) self.layout.set_pixel_constraints(1, n, 1, 0) self.layout.current_constraints = 0 self.bgr = util.config[COLORS][COLOR_DARK_LIGHT] self.add_button(KEY_HOME, KEY_HOME, listeners[KEY_HOME]) self.add_button(KEY_BACK, KEY_BACK, listeners[KEY_BACK]) self.add_button(KEY_DELETE, KEY_PARENT, listeners[KEY_DELETE]) if n == 5: self.add_button(KEY_VIEW, KEY_SETUP, listeners[KEY_VIEW]) self.add_button(KEY_PLAYER, KEY_PLAY_PAUSE, listeners[KEY_PLAYER])
def __init__(self, util, bounding_box, listener): """ Initializer :param util: utility object :param bounding_box: bounding box :param listeners: buttons listeners """ self.factory = Factory(util) m = self.create_cd_drive_menu_button label_area = (bounding_box.h / 100) * (100 - ICON_AREA) font_size = int((label_area / 100) * FONT_HEIGHT) r = Rect(bounding_box.x, bounding_box.y, bounding_box.w, bounding_box.h + 1) Menu.__init__(self, util, None, r, None, None, create_item_method=m, font_size=font_size) self.name = "cd.drives.menu" self.content = bounding_box self.content_x = bounding_box.x self.content_y = bounding_box.y self.menu_buttons = [] id = str(util.config[CD_PLAYBACK][CD_DRIVE_ID]) if len(id) == 0: id = "0" self.select_by_index(int(id))
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
def __init__(self, util, bounding_box, listeners, bgr, pages): """ Initializer :param util: utility object :param bounding_box: bounding box :param listeners: buttons listeners :param bgr: menu background :param pages: number of episodes menu pages """ Container.__init__(self, util) self.factory = Factory(util) self.name = "podcasts.navigator" self.content = bounding_box self.content_x = bounding_box.x self.content_y = bounding_box.y self.menu_buttons = [] arrow_layout = BorderLayout(bounding_box) arrow_layout.set_percent_constraints(0, 0, PERCENT_ARROW_WIDTH, PERCENT_ARROW_WIDTH) if pages > 1: constr = arrow_layout.LEFT self.left_button = self.factory.create_page_down_button(constr, "0", 40, 100) self.left_button.add_release_listener(listeners[GO_LEFT_PAGE]) self.add_component(self.left_button) self.menu_buttons.append(self.left_button) constr = arrow_layout.RIGHT self.right_button = self.factory.create_page_up_button(constr, "0", 40, 100) self.right_button.add_release_listener(listeners[GO_RIGHT_PAGE]) self.add_component(self.right_button) self.menu_buttons.append(self.right_button) layout = GridLayout(arrow_layout.CENTER) else: layout = GridLayout(bounding_box) layout.set_pixel_constraints(1, 4, 1, 0) layout.current_constraints = 0 image_size = 64 constr = layout.get_next_constraints() self.home_button = self.factory.create_button(KEY_HOME, KEY_HOME, constr, listeners[KEY_HOME], bgr, image_size_percent=image_size) self.add_component(self.home_button) self.menu_buttons.append(self.home_button) constr = layout.get_next_constraints() self.back_button = self.factory.create_button(KEY_PODCASTS_MENU, KEY_PARENT, constr, listeners[PODCASTS], bgr, image_size_percent=image_size) self.add_component(self.back_button) self.menu_buttons.append(self.back_button) constr = layout.get_next_constraints() self.back_button = self.factory.create_button(KEY_BACK, KEY_BACK, constr, listeners[GO_BACK], bgr, image_size_percent=image_size) self.add_component(self.back_button) self.menu_buttons.append(self.back_button) constr = layout.get_next_constraints() self.player_button = self.factory.create_button(KEY_PLAYER, KEY_PLAY_PAUSE, constr, listeners[KEY_PLAYER], bgr, image_size_percent=image_size) self.add_component(self.player_button) self.menu_buttons.append(self.player_button)
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 = []
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()
def __init__(self, util, listeners, rows, columns, voice_assistant, d=None, turn_page=None, page_in_title=True, show_loading=False): """ Initializer :param util: utility object :param listeners: file browser listeners :param rows: menu rows :param d: dictionary with menu button flags :param turn_page: turn page callback :param util: utility object """ self.util = util self.config = util.config self.factory = Factory(util) self.bounding_box = util.screen_rect self.player = None self.turn_page = turn_page self.page_in_title = page_in_title self.show_loading = show_loading self.cache = Cache(self.util) self.layout = BorderLayout(self.bounding_box) self.layout.set_percent_constraints(PERCENT_TOP_HEIGHT, PERCENT_BOTTOM_HEIGHT, 0, 0) Screen.__init__(self, util, "", PERCENT_TOP_HEIGHT, voice_assistant, "menu_screen_screen_title", True, self.layout.TOP) color_dark_light = self.config[COLORS][COLOR_DARK_LIGHT] self.menu_layout = self.layout.CENTER if d: self.menu_button_layout = self.get_menu_button_layout(d) self.img_rect = self.menu_button_layout.image_rectangle listeners[GO_LEFT_PAGE] = self.previous_page listeners[GO_RIGHT_PAGE] = self.next_page try: self.navigator = BookNavigator(util, self.layout.BOTTOM, listeners, color_dark_light, d[4]) Container.add_component(self, None) Container.add_component(self, self.navigator) except: Container.add_component(self, None) self.total_pages = 0 self.current_page = 1 self.menu = None
def __init__(self, util, bounding_box, listeners): """ Initializer :param util: utility object :param bounding_box: bounding box :param listeners: buttons listeners """ Container.__init__(self, util) self.factory = Factory(util) self.name = "collection.navigator" self.content = bounding_box self.content_x = bounding_box.x self.content_y = bounding_box.y self.listeners = listeners self.menu_buttons = [] self.config = util.config self.use_web = self.config[USAGE][USE_WEB] self.arrow_layout = BorderLayout(bounding_box) self.arrow_layout.set_percent_constraints(0, 0, PERCENT_ARROW_WIDTH, PERCENT_ARROW_WIDTH) self.update_observer = None self.redraw_observer = None self.menu_buttons = [] constr = self.arrow_layout.LEFT self.left_button = self.factory.create_page_down_button( constr, "0", 40, 100) self.left_button.add_release_listener(self.listeners[GO_LEFT_PAGE]) self.add_component(self.left_button) self.menu_buttons.append(self.left_button) constr = self.arrow_layout.RIGHT self.right_button = self.factory.create_page_up_button( constr, "0", 40, 100) self.right_button.add_release_listener(self.listeners[GO_RIGHT_PAGE]) self.add_component(self.right_button) self.menu_buttons.append(self.right_button) layout = GridLayout(self.arrow_layout.CENTER) layout.set_pixel_constraints(1, 5, 1, 0) layout.current_constraints = 0 bgr = util.config[BACKGROUND][FOOTER_BGR_COLOR] self.add_button(KEY_HOME, KEY_HOME, layout, self.listeners[KEY_HOME], bgr) self.add_button(COLLECTION, KEY_PARENT, layout, self.listeners[COLLECTION], bgr) self.add_button(KEY_LIST, KEY_MENU, layout, self.listeners[COLLECTION_TOPIC], bgr) self.add_button(KEY_DETAIL, KEY_SETUP, layout, self.listeners[TOPIC_DETAIL], bgr) self.add_button(KEY_PLAYER, KEY_PLAY_PAUSE, layout, self.listeners[KEY_PLAYER], bgr) if self.use_web and self.update_observer != None: self.add_observers(self.update_observer, self.redraw_observer)
def __init__(self, util, listeners, voice_assistant): """ Initializer :param util: utility object :param listener: screen menu event listener """ self.util = util config = util.config screen_layout = BorderLayout(util.screen_rect) top = int((util.screen_rect.h * PERCENT_SAVERS) / 100) bottom = util.screen_rect.h - top screen_layout.set_pixel_constraints(top, bottom, 0, 0) layout = BorderLayout(screen_layout.TOP) layout.set_percent_constraints(PERCENT_TOP_HEIGHT, 0, 0, 0) Screen.__init__(self, util, "", PERCENT_TOP_HEIGHT, voice_assistant, "saver_title", title_layout=layout.TOP) factory = Factory(util) self.bounding_box = util.screen_rect self.saver_menu = SaverMenu(util, None, layout.CENTER) self.add_component(self.saver_menu) b = config[BACKGROUND][HEADER_BGR_COLOR] c = config[COLORS][COLOR_CONTRAST] font_size = (layout.TOP.h * PERCENT_TITLE_FONT) / 100.0 label = config[LABELS][SCREENSAVER] self.screen_title.set_text(label) layout = BorderLayout(screen_layout.BOTTOM) layout.set_percent_constraints(PERCENT_DELAY_TITLE, PERCENT_DELAY_TITLE, 0, 0) self.delay_menu = SaverDelayMenu(util, None, layout.CENTER) self.add_component(self.delay_menu) layout.TOP.y += 2 layout.TOP.h -= 2 self.saver_delay_title = factory.create_output_text( "saver_delay_title", layout.TOP, b, c, int(font_size)) label = config[LABELS][DELAY] self.saver_delay_title.set_text(label) self.add_component(self.saver_delay_title) b = self.config[BACKGROUND][FOOTER_BGR_COLOR] self.navigator = SaverNavigator(util, listeners, b, layout.BOTTOM) self.add_component(self.navigator) self.top_menu_enabled = True
def __init__(self, util, bgr=None, bb=None, rows=3, cols=3, create_item_method=None, menu_button_layout=None, font_size=None, align=ALIGN_CENTER, button_padding_x=None, bgr_component=None, horizontal_layout=True): """ Initializer :param util: utility object :param bgr: menu background :param bb: bounding box :param rows: number of rows in menu :param cols: number of columns in menu :param create_item_method: factory method for menu item creation :param menu_button_layout: menu buttons layout :param font_size: font size :param align: label alignment :param button_padding_x: padding X :param bgr_component: menu background component """ Container.__init__(self, util, bb, bgr) self.content = None self.bb = bb self.rows = rows self.cols = cols self.util = util self.menu_button_layout = menu_button_layout self.start_listeners = [] self.move_listeners = [] self.menu_loaded_listeners = [] self.font_size = font_size self.button_padding_x = button_padding_x self.horizontal_layout = horizontal_layout self.buttons = {} self.factory = Factory(util) self.create_item_method = create_item_method self.selected_index = None self.align = align self.update_observer = None self.redraw_observer = None self.press = False self.release = False if bgr_component: self.add_component(bgr_component)
def __init__(self, playlist, util, mode=STATION, bgr=None, bounding_box=None): """ Initializer :param playlist: playlist object :param util: utility object :param bgr: menu background :param bounding_box: bounding box """ self.factory = Factory(util) self.util = util self.config = self.util.config self.image_util = util.image_util self.favorites_util = FavoritesUtil(self.util) m = self.create_station_menu_button bb = bounding_box self.menu_mode = mode Menu.__init__(self, util, bgr, bb, playlist.rows, playlist.columns, create_item_method=m) self.bounding_box = bb self.playlist = playlist self.current_mode = self.STATION_MODE path = os.path.join(FOLDER_ICONS, IMAGE_SHADOW + EXT_PNG) self.original_shadow = self.image_util.load_image(path, bounding_box=(bb.w, bb.h)) h = self.bounding_box.h self.shadow = (self.original_shadow[0], self.image_util.scale_image(self.original_shadow[1], (h, h))) self.shadow_component = None path = os.path.join(FOLDER_ICONS, IMAGE_SELECTION + EXT_PNG) self.selection = self.image_util.load_image(path) self.station_button = None self.menu_click_listeners = [] self.mode_listeners = [] self.change_logo_listeners = [] self.page_turned = False self.genre = None self.current_logo_image = None self.current_logo_filename = None self.current_album_image = None
def __init__(self, util, listeners, voice_assistant): """ Initializer :param util: utility object :param listeners: file browser listeners """ self.util = util self.config = util.config self.cdutil = CdUtil(util) self.factory = Factory(util) self.bounding_box = util.screen_rect layout = BorderLayout(self.bounding_box) layout.set_percent_constraints(PERCENT_TOP_HEIGHT, PERCENT_BOTTOM_HEIGHT, 0, 0) Screen.__init__(self, util, "", PERCENT_TOP_HEIGHT, voice_assistant, "cd_drives_screen_title", True, layout.TOP) self.cd_drive_id = self.config[CD_PLAYBACK][CD_DRIVE_ID] self.cd_track = self.config[CD_PLAYBACK][CD_TRACK] self.cd_track_time = self.config[CD_PLAYBACK][CD_TRACK_TIME] self.screen_title.set_text(self.config[LABELS][KEY_CD_DRIVES]) self.cd_drives_menu = CdDrivesMenu(util, layout.CENTER, listeners[KEY_CD_TRACKS]) drives_info = self.cdutil.get_cd_drives_info() l = self.cd_drives_menu.get_layout(drives_info) bb = l.get_next_constraints() drives = self.cdutil.get_cd_drives(self.font_size, (bb.w, bb.h)) self.cd_drives_menu.set_items(drives, 0, listeners[KEY_CD_TRACKS]) for b in self.cd_drives_menu.buttons.values(): b.parent_screen = self Container.add_component(self, self.cd_drives_menu) factory = Factory(util) self.menu_buttons = factory.create_home_player_buttons( self, self.layout.BOTTOM, listeners) self.home_button = self.menu_buttons[0] self.player_button = self.menu_buttons[1]