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')
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')
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)
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)
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)
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')
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')
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')
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')
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 '---------------------------------'
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 '---------------------------------'
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')
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)
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')
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)
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)
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')
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)
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')
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)
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)