コード例 #1
0
ファイル: menus.py プロジェクト: unkie/exaile
def __create_playlist_panel_playlist_menus():

    items = []

    items.append(menu.simple_separator('pp-top-sep', ['properties']))

    items.append(
        menuitems.RenamePlaylistMenuItem('rename-playlist',
                                         after=[items[-1].name]))
    items.append(
        menuitems.EditPlaylistMenuItem('edit-playlist',
                                       after=[items[-1].name]))
    items.append(
        menuitems.ExportPlaylistMenuItem('export-playlist',
                                         after=[items[-1].name]))
    items.append(
        menuitems.ExportPlaylistFilesMenuItem('export-files',
                                              after=[items[-1].name]))

    items.append(menu.simple_separator('pp-sep', after=[items[-1].name]))

    items.append(
        menuitems.DeletePlaylistMenuItem('delete-playlist',
                                         after=[items[-1].name]))

    for item in items:
        item.register('playlist-panel-context-menu')
コード例 #2
0
ファイル: menus.py プロジェクト: unkie/exaile
def __create_playlist_panel_menus():

    # w, n, o, c: window, name, parent, context

    menu.simple_menu_item(
        'new-playlist',
        [],
        _('_New Playlist'),
        'tab-new',
        lambda w, n, o, c: o.add_new_playlist(),
    ).register('playlist-panel-menu')

    menu.simple_menu_item(
        'new-smart-playlist',
        ['new-playlist'],
        _('New _Smart Playlist'),
        'tab-new',
        lambda w, n, o, c: o.add_smart_playlist(),
    ).register('playlist-panel-menu')

    menu.simple_menu_item(
        'import-playlist',
        ['new-smart-playlist'],
        _('_Import Playlist'),
        'document-open',
        lambda w, n, o, c: o.import_playlist(),
    ).register('playlist-panel-menu')

    menu.simple_separator('top-sep', after=['import-playlist'
                                            ]).register('playlist-panel-menu')
コード例 #3
0
ファイル: __init__.py プロジェクト: exaile/exaile
    def __init__(self, exaile):
        self.exaile = exaile
        self.do_shutdown = False

        # add menuitem to tools menu
        providers.register(
            'menubar-tools-menu',
            menu.simple_separator('plugin-sep', ['track-properties']),
        )

        item = menu.check_menu_item(
            'shutdown',
            ['plugin-sep'],
            _('Shutdown after Playback'),
            #   checked func                # callback func
            lambda *x: self.do_shutdown,
            lambda w, n, p, c: self.on_toggled(w),
        )
        providers.register('menubar-tools-menu', item)

        self.countdown = None
        self.counter = 10

        self.message = dialogs.MessageBar(
            parent=exaile.gui.builder.get_object('player_box'),
            buttons=Gtk.ButtonsType.CLOSE,
        )
        self.message.connect('response', self.on_response)
コード例 #4
0
ファイル: __init__.py プロジェクト: furas/exaile-plugins
    def create_menu(self):
        print 'SearchOnInternetPlugin : create menu'

        # list of registered items - to unregister on exit/teardown
        self._items = []

        # create separator (after 'properties')
        sep = menu.simple_separator(
            'soi-sep',     # unique name/ID in menu
            ['properties'] # put after (ie. [] or ['properties'])
        )
        # add separator to menu
        sep.register('playlist-context-menu')
        # add separtor to list
        self._items.append(sep)

        for n, (name, url) in enumerate(DATA):
            # create item (after separator 'soi-sep')
            item = menu.simple_menu_item(
                'soi-%i' % n, # unique name/ID in menu
                ['soi-sep'],  # put after (ie. [] or ['properties'])
                'Search on %s' % name, # displayed text
                'gtk-save',   # icon name (ie. 'document-properties', 'applications-internet', 'edit-find')
                self.webbrowser_cb, # callback function name
                callback_args=[url] # callback extra arguments
            )
            # add item to menu
            item.register('playlist-context-menu')
            # add item to list
            self._items.append(item)
コード例 #5
0
ファイル: __init__.py プロジェクト: swipswaps/exaile-plugins
    def create_menu(self):
        print 'SearchOnInternetPlugin : create menu'

        # list of registered items - to unregister on exit/teardown
        self._items = []

        # create separator (after 'properties')
        sep = menu.simple_separator(
            'soi-sep',  # unique name/ID in menu
            ['properties']  # put after (ie. [] or ['properties'])
        )
        # add separator to menu
        sep.register('playlist-context-menu')
        # add separtor to list
        self._items.append(sep)

        for n, (name, url) in enumerate(DATA):
            # create item (after separator 'soi-sep')
            item = menu.simple_menu_item(
                'soi-%i' % n,  # unique name/ID in menu
                ['soi-sep'],  # put after (ie. [] or ['properties'])
                'Search on %s' % name,  # displayed text
                'gtk-save',  # icon name (ie. 'document-properties', 'applications-internet', 'edit-find')
                self.webbrowser_cb,  # callback function name
                callback_args=[url]  # callback extra arguments
            )
            # add item to menu
            item.register('playlist-context-menu')
            # add item to list
            self._items.append(item)
コード例 #6
0
ファイル: __init__.py プロジェクト: thiblahute/exaile
    def __init__(self, exaile):
        self.exaile = exaile
        self.do_shutdown = False

        # add menuitem to tools menu
        providers.register(
            'menubar-tools-menu',
            menu.simple_separator('plugin-sep', ['track-properties']))

        item = menu.check_menu_item(
            'shutdown',
            ['plugin-sep'],
            _('Shutdown after Playback'),
            #   checked func                # callback func
            lambda *x: self.do_shutdown,
            lambda w, n, p, c: self.on_toggled(w))
        providers.register('menubar-tools-menu', item)

        self.countdown = None
        self.counter = 10

        self.message = dialogs.MessageBar(
            parent=exaile.gui.builder.get_object('player_box'),
            buttons=gtk.BUTTONS_CLOSE)
        self.message.connect('response', self.on_response)
コード例 #7
0
ファイル: menus.py プロジェクト: BlubberHarpoonist/exaile
def __create_playlist_panel_playlist_menus():
     
    items = []
    
    items.append(menu.simple_separator('pp-top-sep', ['properties']))
    
    items.append(menuitems.RenamePlaylistMenuItem('rename-playlist', after=[items[-1].name]))
    items.append(menuitems.EditPlaylistMenuItem('edit-playlist', after=[items[-1].name]))
    items.append(menuitems.ExportPlaylistMenuItem('export-playlist', after=[items[-1].name]))
    items.append(menuitems.ExportPlaylistFilesMenuItem('export-files', after=[items[-1].name]))
    
    items.append(menu.simple_separator('pp-sep', after=[items[-1].name]))
    
    items.append(menuitems.DeletePlaylistMenuItem('delete-playlist', after=[items[-1].name]))
    
    for item in items:
        item.register('playlist-panel-context-menu')
コード例 #8
0
ファイル: menus.py プロジェクト: BlubberHarpoonist/exaile
def __create_playlist_panel_menus():
    
    # w, n, o, c: window, name, parent, context

    menu.simple_menu_item('new-playlist', [], _('_New Playlist'), 'tab-new',
                          lambda w, n, o, c: o.add_new_playlist()) \
        .register('playlist-panel-menu')
        
    menu.simple_menu_item('new-smart-playlist', ['new-playlist'],
                          _('New _Smart Playlist'), 'tab-new',
                         lambda w, n, o, c: o.add_smart_playlist()) \
        .register('playlist-panel-menu')
        
    menu.simple_menu_item('import-playlist', ['new-smart-playlist'],
                          _('_Import Playlist'), 'document-open',
                         lambda w, n, o, c: o.import_playlist()) \
        .register('playlist-panel-menu')
        
    menu.simple_separator('top-sep', after=['import-playlist']) \
        .register('playlist-panel-menu')
コード例 #9
0
ファイル: menus.py プロジェクト: remcohaszing/exaile
def __create_collection_panel_context_menu():

    def collection_delete_tracks_func(panel, context, tracks):
        panel.collection.delete_tracks(tracks)

    items = []
    items.append(menu.simple_separator('cp-sep', after=['properties']))
    items.append(menuitems.OpenDirectoryMenuItem('open-directory', after=[items[-1].name]))
    items.append(menuitems.TrashMenuItem('trash-tracks', after=[items[-1].name], delete_tracks_func=collection_delete_tracks_func))

    for item in items:
        item.register('collection-panel-context-menu')
コード例 #10
0
ファイル: menus.py プロジェクト: BlubberHarpoonist/exaile
def __create_collection_panel_context_menu():
    
    def collection_delete_tracks_func(panel, context, tracks):
        panel.collection.delete_tracks(tracks)
   
    items = []
    items.append(menu.simple_separator('cp-sep', after=['properties']))
    items.append(menuitems.OpenDirectoryMenuItem('open-directory', after=[items[-1].name]))
    items.append(menuitems.TrashMenuItem('trash-tracks',after=[items[-1].name], delete_tracks_func=collection_delete_tracks_func))

    for item in items:
        item.register('collection-panel-context-menu')
コード例 #11
0
ファイル: __init__.py プロジェクト: furas/exaile-plugins
    def create_menu(self):

        sep = menu.simple_separator('furas-item-sep', ['properties'])
        #sep._pos = 'normal'
        self.provider_register(sep, 'playlist-context-menu')

        for n, (name, url) in enumerate(DATA):
            item = menu.simple_menu_item(
                'furas-item-%i' % n, # unique name
                ['furas-item-sep'], # after ie. [] or ['properties']
                name, # displayed text
                'gtk-save', # icon name # ie. 'document-properties'
                self.webbrowser_cb, # callback function
                callback_args=[url] # callback extra arguments
            )
            #print(dir(item))
            self.provider_register(item, 'playlist-context-menu')

        print '---------------------------------'
        print 'TESTING: register menu #1'
        
        ### submenu ###

        
        self.submenu = menu.Menu(self, inherit_context=True)
        
        for n, (name, url) in enumerate(DATA):
            self.submenu.add_item(menu.simple_menu_item(
                'furas-item-sub-%i' % n, # unique name
                [], # after ie. [] or ['properties']
                name, # displayed text
                'gtk-save', # icon name # ie. 'document-properties'
                self.webbrowser_cb, # callback function
                callback_args=[url] # callback extra arguments
            ))

        item = menu.simple_menu_item(
                'furas-item-sub', # unique name
                ['furas-item-sep'], # after ie. [] or ['properties']
                'Szukaj',
                submenu=self.submenu)
        
        self.provider_register(item, 'playlist-context-menu')
                
                
        print 'TESTING: self.submenu._items:'
        print self.submenu._items
        print '---------------------------------'
        print 'TESTING: register menu #2'

        for p in providers.get('playlist-context-menu'):
            print 'TESTING:  -> menu:', p.name, p._pos, p.after
        print '---------------------------------'
コード例 #12
0
ファイル: __init__.py プロジェクト: swipswaps/exaile-plugins
    def create_menu(self):

        sep = menu.simple_separator('furas-item-sep', ['properties'])
        #sep._pos = 'normal'
        self.provider_register(sep, 'playlist-context-menu')

        for n, (name, url) in enumerate(DATA):
            item = menu.simple_menu_item(
                'furas-item-%i' % n,  # unique name
                ['furas-item-sep'],  # after ie. [] or ['properties']
                name,  # displayed text
                'gtk-save',  # icon name # ie. 'document-properties'
                self.webbrowser_cb,  # callback function
                callback_args=[url]  # callback extra arguments
            )
            #print(dir(item))
            self.provider_register(item, 'playlist-context-menu')

        print '---------------------------------'
        print 'TESTING: register menu #1'

        ### submenu ###

        self.submenu = menu.Menu(self, inherit_context=True)

        for n, (name, url) in enumerate(DATA):
            self.submenu.add_item(
                menu.simple_menu_item(
                    'furas-item-sub-%i' % n,  # unique name
                    [],  # after ie. [] or ['properties']
                    name,  # displayed text
                    'gtk-save',  # icon name # ie. 'document-properties'
                    self.webbrowser_cb,  # callback function
                    callback_args=[url]  # callback extra arguments
                ))

        item = menu.simple_menu_item(
            'furas-item-sub',  # unique name
            ['furas-item-sep'],  # after ie. [] or ['properties']
            'Szukaj',
            submenu=self.submenu)

        self.provider_register(item, 'playlist-context-menu')

        print 'TESTING: self.submenu._items:'
        print self.submenu._items
        print '---------------------------------'
        print 'TESTING: register menu #2'

        for p in providers.get('playlist-context-menu'):
            print 'TESTING:  -> menu:', p.name, p._pos, p.after
        print '---------------------------------'
コード例 #13
0
ファイル: menus.py プロジェクト: BlubberHarpoonist/exaile
def __create_files_panel_context_menu():
    
    def trash_tracks_func(parent, context, tracks):
        menuitems.generic_trash_tracks_func(parent, context, tracks)
        parent.refresh(None)
    
    items = []
    items.append(menu.simple_separator('fp-sep', after=['properties']))
    items.append(menuitems.OpenDirectoryMenuItem('open-directory', after=[items[-1].name]))
    items.append(menuitems.TrashMenuItem('trash-tracks', after=[items[-1].name], trash_tracks_func=trash_tracks_func))
    
    for item in items:
        item.register('files-panel-context-menu')
コード例 #14
0
ファイル: menus.py プロジェクト: remcohaszing/exaile
def __create_files_panel_context_menu():

    def trash_tracks_func(parent, context, tracks):
        menuitems.generic_trash_tracks_func(parent, context, tracks)
        parent.refresh(None)

    items = []
    items.append(menu.simple_separator('fp-sep', after=['properties']))
    items.append(menuitems.OpenDirectoryMenuItem('open-directory', after=[items[-1].name]))
    items.append(menuitems.TrashMenuItem('trash-tracks', after=[items[-1].name], trash_tracks_func=trash_tracks_func))

    for item in items:
        item.register('files-panel-context-menu')
コード例 #15
0
ファイル: __init__.py プロジェクト: thiblahute/exaile
    def setup_menu(self):
        self.menu_agr = self.exaile.gui.main.accel_group

        providers.register("menubar-tools-menu", menu.simple_separator("plugin-sep", ["track-properties"]))

        def factory(menu_, parent, context):
            item = gtk.CheckMenuItem(_("Enable audioscrobbling"))
            item.set_active(self.submit)
            key, mods = gtk.accelerator_parse("<Control>B")
            item.add_accelerator("activate", menu.FAKEACCELGROUP, key, mods, gtk.ACCEL_VISIBLE)
            item.connect("toggled", self._menu_entry_toggled)
            return item

        item = menu.MenuItem("scrobbler", factory, ["plugin-sep"])
        providers.register("menubar-tools-menu", item)
コード例 #16
0
ファイル: menus.py プロジェクト: remcohaszing/exaile
def __create_track_panel_menus():

    items = []

    items.append(menuitems.EnqueueMenuItem('enqueue', after=['top-sep']))

    items.append(menuitems.AppendMenuItem('append', after=[items[-1].name]))
    items.append(menuitems.ReplaceCurrentMenuItem('replace', after=[items[-1].name]))
    items.append(menuitems.RatingMenuItem('rating', after=[items[-1].name]))

    items.append(menu.simple_separator('tp-sep', after=[items[-1].name]))

    items.append(menuitems.PropertiesMenuItem('properties', after=[items[-1].name]))

    for item in items:
        item.register('track-panel-menu')
コード例 #17
0
ファイル: menus.py プロジェクト: BlubberHarpoonist/exaile
def __create_track_panel_menus():
    
    items = []
    
    items.append(menuitems.EnqueueMenuItem('enqueue', after=['top-sep']))
    
    items.append(menuitems.AppendMenuItem('append', after=[items[-1].name]))
    items.append(menuitems.ReplaceCurrentMenuItem('replace', after=[items[-1].name]))
    items.append(menuitems.RatingMenuItem('rating', after=[items[-1].name]))
    
    items.append(menu.simple_separator('tp-sep', after=[items[-1].name]))
    
    items.append(menuitems.PropertiesMenuItem('properties', after=[items[-1].name]))
    
    for item in items:
        item.register('track-panel-menu')
コード例 #18
0
ファイル: __init__.py プロジェクト: mexicarne/exaile
    def setup_menu(self):
        self.menu_agr = self.exaile.gui.main.accel_group

        providers.register('menubar-tools-menu', 
            menu.simple_separator('plugin-sep', ['track-properties']))

        def factory(menu_, parent, context):
            item = Gtk.CheckMenuItem.new_with_label(_('Enable audioscrobbling'))
            item.set_active(self.submit)
            key, mods = Gtk.accelerator_parse('<Control>B')
            item.add_accelerator('activate', menu.FAKEACCELGROUP, key, mods,
                    Gtk.AccelFlags.VISIBLE)
            item.connect('toggled', self._menu_entry_toggled)
            return item

        item = menu.MenuItem('scrobbler', factory, ['plugin-sep'])
        providers.register('menubar-tools-menu', item)
コード例 #19
0
ファイル: __init__.py プロジェクト: dangmai/exaile
    def __init__(self, exaile):
        self.exaile = exaile
        self.do_shutdown = False

        # add menuitem to tools menu
        providers.register("menubar-tools-menu", menu.simple_separator("plugin-sep", ["track-properties"]))

        item = menu.check_menu_item(
            "shutdown",
            ["plugin-sep"],
            _("Shutdown after Playback"),
            #   checked func                # callback func
            lambda *x: self.do_shutdown,
            lambda w, n, p, c: self.on_toggled(w),
        )
        providers.register("menubar-tools-menu", item)

        self.countdown = None
        self.counter = 10

        self.message = dialogs.MessageBar(
            parent=exaile.gui.builder.get_object("player_box"), buttons=Gtk.ButtonsType.CLOSE
        )
        self.message.connect("response", self.on_response)
コード例 #20
0
    def __init__(self, manager_name, player, hotkey):
        SmartNotebook.__init__(self)

        self.tab_manager = PlaylistManager(manager_name)
        self.manager_name = manager_name
        self.player = player

        # For saving closed tab history
        self._moving_tab = False
        self.tab_history = []
        self.history_counter = 90000  # to get unique (reverse-ordered) item names

        # Build static menu entries
        item = menu.simple_separator('clear-sep', [])
        item.register('playlist-closed-tab-menu', self)

        item = menu.simple_menu_item(
            'clear-history',
            ['clear-sep'],
            _("_Clear Tab History"),
            'edit-clear-all',
            self.clear_closed_tabs,
        )
        item.register('playlist-closed-tab-menu', self)

        # Simple factory for 'Recently Closed Tabs' MenuItem
        submenu = menu.ProviderMenu('playlist-closed-tab-menu', self)

        def factory(menu_, parent, context):
            if self.page_num(parent) == -1:
                return None
            item = Gtk.MenuItem.new_with_mnemonic(_("Recently Closed _Tabs"))
            if len(self.tab_history) > 0:
                item.set_submenu(submenu)
            else:
                item.set_sensitive(False)
            return item

        # Add menu to tab context menu
        item = menu.MenuItem('%s-tab-history' % manager_name, factory, ['tab-close'])
        item.register('playlist-tab-context-menu')

        # Add menu to View menu
        # item = menu.MenuItem('tab-history', factory, ['clear-playlist'])
        # providers.register('menubar-view-menu', item)

        # setup notebook actions
        self.actions = NotebookActionService(self, 'playlist-notebook-actions')

        # Add hotkey
        self.accelerator = Accelerator(
            hotkey, _('Restore closed tab'), lambda *x: self.restore_closed_tab(0)
        )
        providers.register('mainwindow-accelerators', self.accelerator)

        # Load saved tabs
        self.load_saved_tabs()

        self.tab_placement_map = {
            'left': Gtk.PositionType.LEFT,
            'right': Gtk.PositionType.RIGHT,
            'top': Gtk.PositionType.TOP,
            'bottom': Gtk.PositionType.BOTTOM,
        }

        self.connect('page-added', self.on_page_added)
        self.connect('page-removed', self.on_page_removed)

        self.on_option_set('gui_option_set', settings, 'gui/show_tabbar')
        self.on_option_set('gui_option_set', settings, 'gui/tab_placement')
        event.add_ui_callback(self.on_option_set, 'gui_option_set')
コード例 #21
0
ファイル: playlist_columns.py プロジェクト: hayate891/exaile
def __register_playlist_columns_menuitems():
    """
        Registers standard menu items for playlist columns
    """
    def is_column_selected(name, parent, context):
        """
            Returns whether a menu item should be checked
        """
        return name in settings.get_option('gui/columns', DEFAULT_COLUMNS)

    def is_resizable(name, parent, context):
        """
            Returns whether manual or automatic sizing is requested
        """
        resizable = settings.get_option('gui/resizable_cols', False)

        if name == 'resizable':
            return resizable
        elif name == 'autosize':
            return not resizable

    def on_column_item_activate(menu_item, name, parent, context):
        """
            Updates columns setting
        """
        columns = settings.get_option('gui/columns', DEFAULT_COLUMNS)

        if name in columns:
            columns.remove(name)
        else:
            columns.append(name)

        settings.set_option('gui/columns', columns)

    def on_sizing_item_activate(menu_item, name, parent, context):
        """
            Updates column sizing setting
        """
        if name == 'resizable':
            settings.set_option('gui/resizable_cols', True)
        elif name == 'autosize':
            settings.set_option('gui/resizable_cols', False)

    columns = [
        'tracknumber', 'title', 'artist', 'album', '__length', 'genre',
        '__rating', 'date'
    ]

    for provider in providers.get('playlist-columns'):
        if provider.name not in columns:
            columns += [provider.name]

    menu_items = []
    after = []

    for name in columns:
        column = providers.get_provider('playlist-columns', name)
        menu_item = ColumnMenuItem(column, after)
        menu_items += [menu_item]
        after = [menu_item.name]

    separator_item = menu.simple_separator('columns_separator', after)
    menu_items += [separator_item]
    after = [separator_item.name]

    sizing_item = menu.radio_menu_item('resizable', after, _('_Resizable'),
                                       'column-sizing', is_resizable,
                                       on_sizing_item_activate)
    menu_items += [sizing_item]
    after = [sizing_item.name]

    sizing_item = menu.radio_menu_item('autosize', after, _('_Autosize'),
                                       'column-sizing', is_resizable,
                                       on_sizing_item_activate)
    menu_items += [sizing_item]

    for menu_item in menu_items:
        providers.register('playlist-columns-menu', menu_item)
コード例 #22
0
    def __init__(self, manager_name, player, hotkey):
        SmartNotebook.__init__(self)
        
        self.tab_manager = PlaylistManager(manager_name)
        self.manager_name = manager_name
        self.player = player
        
        # For saving closed tab history
        self._moving_tab = False
        self.tab_history = []
        self.history_counter = 90000 # to get unique (reverse-ordered) item names

        # Build static menu entries        
        item = menu.simple_separator('clear-sep',[])
        item.register('playlist-closed-tab-menu', self)
        
        item = menu.simple_menu_item('clear-history', ['clear-sep'], None, 'gtk-clear',
            self.clear_closed_tabs)
        item.register('playlist-closed-tab-menu', self)     
            
        # Simple factory for 'Recently Closed Tabs' MenuItem
        submenu = menu.ProviderMenu('playlist-closed-tab-menu',self)
        def factory(menu_, parent, context):
            if self.page_num(parent) == -1:
                return None
            item = gtk.MenuItem(_("Recently Closed Tabs"))
            if len(self.tab_history) > 0:
                item.set_submenu(submenu)
            else:
                item.set_sensitive(False)
            return item
                
        # Add menu to tab context menu
        item = menu.MenuItem('%s-tab-history' % manager_name, factory, ['tab-close'])
        item.register('playlist-tab-context-menu')

        # Add menu to View menu
        #item = menu.MenuItem('tab-history', factory, ['clear-playlist'])
        #providers.register('menubar-view-menu', item) 
        
        # setup notebook actions
        self.actions = NotebookActionService(self, 'playlist-notebook-actions')

        # Add hotkey
        self.accelerator = Accelerator(hotkey, lambda *x: self.restore_closed_tab(0))
        providers.register('mainwindow-accelerators',self.accelerator)

        # Load saved tabs
        self.load_saved_tabs()

        self.tab_placement_map = {
            'left': gtk.POS_LEFT,
            'right': gtk.POS_RIGHT,
            'top': gtk.POS_TOP,
            'bottom': gtk.POS_BOTTOM
        }

        self.connect('page-added', self.on_page_added)
        self.connect('page-removed', self.on_page_removed)

        self.on_option_set('gui_option_set', settings, 'gui/show_tabbar')
        self.on_option_set('gui_option_set', settings, 'gui/tab_placement')
        event.add_callback(self.on_option_set, 'gui_option_set')
コード例 #23
0
ファイル: playlist_columns.py プロジェクト: thiblahute/exaile
def __register_playlist_columns_menuitems():
    """
        Registers standard menu items for playlist columns
    """

    def is_column_selected(name, parent, context):
        """
            Returns whether a menu item should be checked
        """
        return name in settings.get_option("gui/columns", DEFAULT_COLUMNS)

    def is_resizable(name, parent, context):
        """
            Returns whether manual or automatic sizing is requested
        """
        resizable = settings.get_option("gui/resizable_cols", False)

        if name == "resizable":
            return resizable
        elif name == "autosize":
            return not resizable

    def on_column_item_activate(menu_item, name, parent, context):
        """
            Updates columns setting
        """
        columns = settings.get_option("gui/columns", DEFAULT_COLUMNS)

        if name in columns:
            columns.remove(name)
        else:
            columns.append(name)

        settings.set_option("gui/columns", columns)

    def on_sizing_item_activate(menu_item, name, parent, context):
        """
            Updates column sizing setting
        """
        if name == "resizable":
            settings.set_option("gui/resizable_cols", True)
        elif name == "autosize":
            settings.set_option("gui/resizable_cols", False)

    columns = ["tracknumber", "title", "artist", "album", "__length", "genre", "__rating", "date"]

    for provider in providers.get("playlist-columns"):
        if provider.name not in columns:
            columns += [provider.name]

    menu_items = []
    after = []

    for name in columns:
        column = providers.get_provider("playlist-columns", name)
        menu_item = ColumnMenuItem(column, after)
        menu_items += [menu_item]
        after = [menu_item.name]

    separator_item = menu.simple_separator("columns_separator", after)
    menu_items += [separator_item]
    after = [separator_item.name]

    sizing_item = menu.radio_menu_item(
        "resizable", after, _("_Resizable"), "column-sizing", is_resizable, on_sizing_item_activate
    )
    menu_items += [sizing_item]
    after = [sizing_item.name]

    sizing_item = menu.radio_menu_item(
        "autosize", after, _("_Autosize"), "column-sizing", is_resizable, on_sizing_item_activate
    )
    menu_items += [sizing_item]

    for menu_item in menu_items:
        providers.register("playlist-columns-menu", menu_item)
コード例 #24
0
def __register_playlist_columns_menuitems():
    """
        Registers standard menu items for playlist columns
    """

    def is_column_selected(name, parent, context):
        """
            Returns whether a menu item should be checked
        """
        return name in settings.get_option('gui/columns', DEFAULT_COLUMNS)

    def is_resizable(name, parent, context):
        """
            Returns whether manual or automatic sizing is requested
        """
        resizable = settings.get_option('gui/resizable_cols', False)

        if name == 'resizable':
            return resizable
        elif name == 'autosize':
            return not resizable

    def on_column_item_activate(menu_item, name, parent, context):
        """
            Updates columns setting
        """
        columns = settings.get_option('gui/columns', DEFAULT_COLUMNS)

        if name in columns:
            columns.remove(name)
        else:
            columns.append(name)

        settings.set_option('gui/columns', columns)

    def on_sizing_item_activate(menu_item, name, parent, context):
        """
            Updates column sizing setting
        """

        # Ignore the activation if the menu item is not actually active
        if not menu_item.get_active():
            return

        if name == 'resizable':
            settings.set_option('gui/resizable_cols', True)
        elif name == 'autosize':
            settings.set_option('gui/resizable_cols', False)

    columns = [
        'tracknumber',
        'title',
        'artist',
        'album',
        '__length',
        'genre',
        '__rating',
        'date',
    ]

    for provider in providers.get('playlist-columns'):
        if provider.name not in columns:
            columns += [provider.name]

    menu_items = []
    after = []

    for name in columns:
        column = providers.get_provider('playlist-columns', name)
        menu_item = ColumnMenuItem(column, after)
        menu_items += [menu_item]
        after = [menu_item.name]

    separator_item = menu.simple_separator('columns_separator', after)
    menu_items += [separator_item]
    after = [separator_item.name]

    sizing_item = menu.radio_menu_item(
        'resizable',
        after,
        _('_Resizable'),
        'column-sizing',
        is_resizable,
        on_sizing_item_activate,
    )
    menu_items += [sizing_item]
    after = [sizing_item.name]

    sizing_item = menu.radio_menu_item(
        'autosize',
        after,
        _('_Autosize'),
        'column-sizing',
        is_resizable,
        on_sizing_item_activate,
    )
    menu_items += [sizing_item]

    for menu_item in menu_items:
        providers.register('playlist-columns-menu', menu_item)