From c47cdad1fc45c0cf34b49fe404be8a42106c7fe9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 7 Oct 2010 12:57:33 -0600 Subject: [PATCH] Sigh --- src/calibre/gui2/actions/choose_library.py | 14 ++++++++++---- src/calibre/gui2/layout.py | 18 ++++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py index 39f7159989..044cbcdf85 100644 --- a/src/calibre/gui2/actions/choose_library.py +++ b/src/calibre/gui2/actions/choose_library.py @@ -147,26 +147,32 @@ class ChooseLibraryAction(InterfaceAction): self.qs_locations = [i[1] for i in locations] self.rename_menu.clear() self.delete_menu.clear() - quick_actions = [] + quick_actions, rename_actions, delete_actions = [], [], [] for name, loc in locations: ac = self.quick_menu.addAction(name, Dispatcher(partial(self.switch_requested, loc))) quick_actions.append(ac) - self.rename_menu.addAction(name, Dispatcher(partial(self.rename_requested, + ac = self.rename_menu.addAction(name, Dispatcher(partial(self.rename_requested, name, loc))) - self.delete_menu.addAction(name, Dispatcher(partial(self.delete_requested, + rename_actions.append(ac) + ac = self.delete_menu.addAction(name, Dispatcher(partial(self.delete_requested, name, loc))) + delete_actions.append(ac) + qs_actions = [] for i, x in enumerate(locations[:len(self.switch_actions)]): name, loc = x ac = self.switch_actions[i] ac.setText(name) ac.setVisible(True) + qs_actions.append(ac) self.quick_menu_action.setVisible(bool(locations)) self.rename_menu_action.setVisible(bool(locations)) self.delete_menu_action.setVisible(bool(locations)) - self.gui.location_manager.set_switch_actions(quick_actions) + self.gui.location_manager.set_switch_actions(quick_actions, + rename_actions, delete_actions, qs_actions, + self.action_choose) def location_selected(self, loc): diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index 0cd93f388c..89d763ef4c 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -24,7 +24,6 @@ class LocationManager(QObject): # {{{ locations_changed = pyqtSignal() unmount_device = pyqtSignal() location_selected = pyqtSignal(object) - switch_actions_set = pyqtSignal(object) def __init__(self, parent=None): QObject.__init__(self, parent) @@ -70,12 +69,23 @@ class LocationManager(QObject): # {{{ ac('cardb', _('Card B'), 'sd.png', _('Show books in storage card B')) - def set_switch_actions(self, actions): + def set_switch_actions(self, quick_actions, rename_actions, delete_actions, + switch_actions, choose_action): self.switch_menu = QMenu() - for ac in actions: + self.switch_menu.addAction(choose_action) + self.cs_menus = [] + for t, acs in [(_('Quick switch'), quick_actions), + (_('Rename library'), rename_actions), + (_('Delete library'), delete_actions)]: + if acs: + self.cs_menus.append(QMenu(t)) + for ac in acs: + self.cs_menus[-1].addAction(ac) + self.switch_menu.addMenu(self.cs_menus[-1]) + self.switch_menu.addSeparator() + for ac in switch_actions: self.switch_menu.addAction(ac) self.library_action.setMenu(self.switch_menu) - self.switch_actions_set.emit(bool(actions)) def _location_selected(self, location, *args): if location != self.current_location and hasattr(self,