Beispiel #1
0
    def __init__(self, widget_properties):
        Menu.__init__(self, widget_properties)
        l_next = _(u'next >>')
        l_prev = _(u'<< previous')

        self.prev_button = MenuButton(label=l_prev, \
            widget_properties=self.widget_properties)
        self.next_button = MenuButton(l_next, \
            widget_properties=self.widget_properties)
        self.add(self.prev_button, 'center')
        self.add(self.next_button, 'center')

        self.bc_top = self.nc_top + 10 + self.nc_height
        self.bc_left = 20
        self.bc_width = self.screen_res_x - 40
        self.bc_height = self.screen_res_y - self.bc_top - 25
        self.bc_right = 20
        self.bc_bottom = 30
        self.box_cont = pudding.container.Container( \
                self, left=self.bc_left, top=self.bc_top, \
                width=self.bc_width, height=self.bc_height, \
                right=self.bc_right)

        self.bg_box = pudding.control.Box(self.box_cont, \
                width=self.bc_width, \
                height=self.bc_height, \
                background_color=self.box_bg_color, \
                border_color=self.box_border_color, \
                z_index=-3)
        self.bg_box.anchors = pudding.ANCHOR_ALL

        self.directory_cont = pudding.container.HorizontalContainer( \
            self.box_cont, top=self.height * 0.02, \
            right=self.right, width=self.width, \
            height=self.height, left=0)

        pos_size = {}
        pos_size['top'] = 0
        pos_size['left'] = 0
        pos_size['height'] = self.height * 0.05
        pos_size['width'] = self.width * 0.3

        self.directory_cont.anchors = pudding.ANCHOR_ALL
        self.directory_cont.padding = 10

        self.directory_up_button = MenuButton("<<", \
            widget_properties = self.widget_properties, pos_size=pos_size)
        self.directory_cont.add_child(self.directory_up_button, \
                pudding.ALIGN_LEFT)

        pos_size = {}
        pos_size['top'] = 0
        pos_size['left'] = self.width * 0.9
        pos_size['height'] = self.height * 0.05
        pos_size['width'] = self.width * 0.3

        self.choose_base_button = MenuButton("", \
            widget_properties = self.widget_properties, pos_size=pos_size)
        self.directory_cont.add_child(self.choose_base_button, \
                pudding.ALIGN_RIGHT)
Beispiel #2
0
    def __init__(self, widget_properties):
        Menu.__init__(self, widget_properties)
        l_next = _(u'next >>')
        l_prev = _(u'<< previous')

        self.prev_button = MenuButton(label=l_prev, \
            widget_properties=self.widget_properties)
        self.next_button = MenuButton(l_next, \
            widget_properties=self.widget_properties)
        self.add(self.prev_button, 'center')
        self.add(self.next_button, 'center')

        self.bc_top = self.nc_top + 10 + self.nc_height
        self.bc_left = 20
        self.bc_width = self.screen_res_x - 40
        self.bc_height = self.screen_res_y - self.bc_top - 25
        self.bc_right = 20
        self.bc_bottom = 30
        self.box_cont = pudding.container.Container( \
                self, left=self.bc_left, top=self.bc_top, \
                width=self.bc_width, height=self.bc_height, \
                right=self.bc_right)

        self.bg_box = pudding.control.Box(self.box_cont, \
                width=self.bc_width, \
                height=self.bc_height, \
                background_color=self.box_bg_color, \
                border_color=self.box_border_color, \
                z_index=-3)
        self.bg_box.anchors = pudding.ANCHOR_ALL

        self.directory_cont = pudding.container.HorizontalContainer( \
            self.box_cont, top=self.height * 0.02, \
            right=self.right, width=self.width, \
            height=self.height, left=0)

        pos_size = {}
        pos_size['top'] = 0
        pos_size['left'] = 0
        pos_size['height'] = self.height * 0.05
        pos_size['width'] = self.width * 0.3

        self.directory_cont.anchors = pudding.ANCHOR_ALL
        self.directory_cont.padding = 10

        self.directory_up_button = MenuButton("<<", \
            widget_properties = self.widget_properties, pos_size=pos_size)
        self.directory_cont.add_child(self.directory_up_button, \
                pudding.ALIGN_LEFT)

        pos_size = {}
        pos_size['top'] = 0
        pos_size['left'] = self.width * 0.9
        pos_size['height'] = self.height * 0.05
        pos_size['width'] = self.width * 0.3

        self.choose_base_button = MenuButton("", \
            widget_properties = self.widget_properties, pos_size=pos_size)
        self.directory_cont.add_child(self.choose_base_button, \
                pudding.ALIGN_RIGHT)
Beispiel #3
0
 def __init__(self, app_dir, camera, theme_mgr, widget_properties, \
         menu_list, config, player=None):
     Menu.__init__(self, widget_properties)
     self.app_dir = app_dir
     self.camera = camera
     self.theme_mgr = theme_mgr
     self.player = player
     self.menu_list = menu_list
     self.menu_list['singscreen'] = self
     self.config = config
     self.widget_properties['theme_mgr'] = theme_mgr
Beispiel #4
0
 def __init__(self, app_dir, camera, theme_mgr, widget_properties, \
         menu_list, config, player=None):
     Menu.__init__(self, widget_properties)
     self.app_dir = app_dir
     self.camera = camera
     self.theme_mgr = theme_mgr
     self.player = player
     self.menu_list = menu_list
     self.menu_list['singscreen'] = self
     self.config = config
     self.widget_properties['theme_mgr'] = theme_mgr
Beispiel #5
0
    def __init__(self, widget_props, song_data=None, \
            player=None, keyboard_event=None, song=None, \
            song_event=None):
        Menu.__init__(self, widget_props)
        l_continue = _(u'continue singing')
        l_quit = _(u'quit song')

        self.song_data = song_data
        self.song = song
        self.player = player
        self.keyboard_event = keyboard_event
        self.song_event = song_event

        args = {}
        args['widgets'] = [self]
        self.add(MenuButton(label=l_quit, \
                function=self._end, args=args, \
                widget_properties=widget_props), 'horiz')
        self.add(MenuButton(label=l_continue, \
                function=self.continue_song, args=args, \
                widget_properties=widget_props), 'horiz')
Beispiel #6
0
    def __init__(self, app_dir, widget_properties, theme_mgr, main_menu, player):

        Menu.__init__(self, widget_properties)
        self.l_help_hint_0 = _(u'Press [h] for help...')
        self.l_help_hint_1 = _(u'Press [ESC] to go back...')
        self.l_help_hint = self.l_help_hint_0
        self.l_bpm = _(u'BPM: ')
        self.l_line_no = _(u'Line: ')
        self.separator = u' - '
        self.h_help = _(u'Help')
        self.help_file_path = os.path.join(app_dir, 'misc', 'HELP.txt')
        self.widget_properties = widget_properties
        self.app_dir = app_dir
        self.parent_widget = widget_properties['root_widget']
        self.theme_mgr = theme_mgr

        self.screen_res_x = self.widget_properties['config']['screen'].as_int('resolution_x')
        self.screen_res_y = self.widget_properties['config']['screen'].as_int('resolution_y')

        self.font_p = widget_properties['font']['p']['obj']
        self.color_p = widget_properties['font']['p']['color']

        self.font_h = widget_properties['font']['h1']['obj']
        self.color_h = widget_properties['font']['h1']['color']

        self.main_menu = main_menu
        self.help_hint_cont = pudding.container.VerticalContainer( \
                self, left=self.screen_res_x / 2.5, top=5)
        self.help_hint_cont.right = 10
        self.help_hint_cont.anchors = pudding.ANCHOR_ALL
        self.keyboard_event = KeyboardEvent(self.widget_properties, theme_mgr)

        self.txt_input = InputField(self.widget_properties, '')
        self.txt_input.label.visible = 0

        self.player = player
        self.__connect_keys__()
        self.msg = dict()
Beispiel #7
0
    def __init__(self, widget_properties, config, theme_mgr, camera, core=None):
        Menu.__init__(self, widget_properties)
        self.core = core
        self.config = config

        self.locale = self.config['misc']['locale']
        self.lm = LocaleManager(self.core.app_dir)
        valid_languages = self.lm.get_langs()
        self.lm.install(self.locale)


        self.theme_mgr = theme_mgr
        self.camera = camera
        # Button labels:
        l_start = _(u"Sing")#_(u'Party Mode')
        l_song_editor = _(u'Song Editor')
        l_about = _(u'About')
        l_quit2 = _(u'Quit')
        l_settings_main = _(u'Settings')
        l_back =  _(u'back')
        l_save =  _(u'save')
        l_save_quit =  _(u'save & restart')
        l_quit =  _(u'quit')

        # Menu headings:
        h1_main_menu =  _(u'Main Menu')
        h1_about =  _(u'About')
        h1_song_browser =  _(u'Choose a song...')


        # File paths:
        about_file = os.path.join('misc', 'ABOUT.txt')
        logo_path = 'logo.png'
        show_logo = False

        #self.menus['main'] = main_menu # obsolete?
        # About menu:
        about_menu = MenuText(self.widget_properties, top=self.screen_res_y / 3, \
                left=self.screen_res_x / 2)
        about_menu.set_heading(h1_about)
        about_back = MenuButton(l_back, widget_properties = self.widget_properties, \
            target = self)
        about_menu.add(about_back, 'horiz')
        about_quit = MenuButton(l_quit, function=self.quit, \
            pos_size=0, widget_properties = self.widget_properties)
        about_menu.add(about_quit, 'center')
        fd_license = open(os.path.join(self.core.app_dir, about_file), 'r')
        license = fd_license.read()
        about_menu.add_text(license)

        self.settings = Settings(self.config, self.widget_properties, self.lm, self, self.core)

        self.load_player()
        song_editor = SongEditor(self.core.app_dir, self.widget_properties, \
            self.theme_mgr, self, player=self.player)

        # Sing screen:
        sing_screen = SingScreen(app_dir=self.core.app_dir, main_menu=self, \
                    camera=self.camera, theme_mgr=self.theme_mgr, \
                    widget_properties=self.widget_properties, \
                    config=self.config, player=self.player)

        self.add_child(sing_screen)

        pos_size = {}
        pos_size['height'] = self.screen_res_y / 16
        pos_size['width'] = self.screen_res_x - 80
        pos_size['top'] = 10
        pos_size['left'] = 10

        # Song browser:
        entries = []
        entry_sing_screen = {}
        entry_sing_screen['song_start_text'] = 'Start'
        entry_sing_screen['start_screen'] = sing_screen
        entry_sing_screen['menu_text'] = _(u"Sing")
        entry_sing_screen['default_manager'] = 0
        entry_song_editor = {}
        entry_song_editor['song_start_text'] = 'Edit'
        entry_song_editor['start_screen'] = song_editor
        entry_song_editor['menu_text'] = _(u'Song Editor')
        entry_song_editor['default_manager'] = 1
        entries.append(entry_sing_screen)
        entries.append(entry_song_editor)

        browsers = []
        for entry in entries:
            browser = MenuBrowser(entry['default_manager'], self.widget_properties, \
                entry['start_screen'], self.config, player = self.player,\
                song_start_text=entry['song_start_text'])
            browser.set_heading(h1_song_browser)

            back_button = MenuButton(l_back, target=self, \
                widget_properties = self.widget_properties, \
                function=browser.stop_preview)
            quit_button = MenuButton(l_quit, function=self.quit, \
                pos_size=0, widget_properties = self.widget_properties)
            browser.add(back_button, 'center')
            browser.add(quit_button, 'center')
            browsers.append(browser)
            # Add buttons to main menu:
            args = {}
            args['selected'] = entry['start_screen']
            args['widgets'] = [self]
            self.add(MenuButton(entry['menu_text'], target=browser, function=browser.start_song,\
                widget_properties=self.widget_properties, pos_size=pos_size), 'center')

#        self.settings.init_menus(main_menu, pos_size)
        self.add(MenuButton(l_settings_main, target=self.settings, \
            widget_properties=self.widget_properties, pos_size=pos_size), 'center')
        self.add(MenuButton(l_about, target=about_menu, \
            widget_properties=self.widget_properties, pos_size=pos_size), 'center')
        self.add(MenuButton(l_quit2, function=self.quit, args=0, \
            widget_properties=self.widget_properties, pos_size=pos_size), 'center')


        use_pil = int(self.config['screen'].as_bool('pil'))
        # logo:
        if use_pil and show_logo:
            try:
                logo = pudding.control.Logo(self.parent, logo_path, z_index=4)
            except:
                pass
Beispiel #8
0
    def __init__(self, config, widget_properties, locale_manager, main_menu, core=None):
        Menu.__init__(self, widget_properties)
        self.core = core
        self.main_menu = main_menu
        self.widget_properties = widget_properties
        self.config = config
        self.disp = DisplayProperties()

        pos_size = {}
        pos_size['height'] = self.screen_res_y / 16
        pos_size['width'] = self.screen_res_x - 80
        pos_size['top'] = 10
        pos_size['left'] = 10

        # Button labels:
        l_back =  _(u'back')
        l_save =  _(u'save')
        l_save_quit =  _(u'save & restart')
        l_quit =  _(u'quit')

        # Menu headings:
        h1_settings_main =  _(u'Settings')

        # Settings:
        on_off_toggle = [('off'), ('on')]

       # Options parent menu:
        self.options_menu_main = self
        self.options_menu_main.set_heading(h1_settings_main)

        # Add buttons to options parent menu:
        self.options_menu_main.add(MenuButton(l_back, target=self.main_menu, \
            widget_properties=self.widget_properties, pos_size=pos_size), 'horiz')
        #self.options_menu_main.add(MenuButton(l_save, function=self.save, \
        #    widget_properties = self.widget_properties, pos_size=pos_size), 'horiz')
        #self.options_menu_main.add(MenuButton(l_save_quit, function=self.save, \
        #    args='quit', widget_properties=self.widget_properties, pos_size=pos_size), 'horiz')

        # Options sub menus:
        for k, v in self.config.iteritems():
            # Options sub menus:
            menu = MenuGroup(self.widget_properties, key=k)
            menu.set_heading(_(k[0].upper() + k[1:]) + ' ' + _('Settings'))

            self.options_menu_main.add(
                MenuButton(_(k[0].upper() + k[1:]), target=menu, \
                widget_properties=self.widget_properties, \
                pos_size=pos_size), 'center')
            back_from_screen = MenuButton(l_back, \
                target=self.options_menu_main, \
                widget_properties=self.widget_properties)

            save_button = MenuButton(l_save, function=self.save, \
                args=[menu, 'go_on'], widget_properties=self.widget_properties)
            save_quit_button = MenuButton(l_save_quit, function=self.save, \
                args=[menu, 'quit'], widget_properties=self.widget_properties)

            # Add items to settings menus:
            menu.add(back_from_screen, 'center')
            menu.add(save_button, 'center')
            menu.add(save_quit_button, 'center')

            x_items = []
            for key, value in v.iteritems():
                item_spec = v.configspec[key]
                if item_spec.startswith('boolean'):
                    if value == True:
                        toggle='on'
                    else:
                        toggle='off'
                    x_items.append({'info' : _(key),
                        'button_type' : 'toggle',
                        'toggle_items' : on_off_toggle,
                        'selected_item' : toggle})
                elif item_spec.startswith('option'):
                    options = item_spec.strip('option(').strip(')').split(',')
                    choices = []
                    for option in options:
                        option = option.strip().replace("'", '')
                        if option.startswith('default='):
                            default_value = option.split('=')[1]
                        else:
                            choices.append(option.strip())
                    try:
                        selected_index = choices.index(value)
                    except ValueError:
                        selected_index = choices.index(default_value)

                    x_items.append({'info' : key,
                        'button_type' : 'toggle',
                        'toggle_items' : choices,
                        'selected_item' : selected_index})
            if len(x_items) > 0:
                item_group = {'heading' : k, 'items' : x_items}
                menu.add_group(item_group)
        '''