diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py index 9aa78298dc..deb03021c5 100644 --- a/src/calibre/gui2/actions/add.py +++ b/src/calibre/gui2/actions/add.py @@ -43,6 +43,10 @@ class AddAction(InterfaceAction): self.qaction.setMenu(self.add_menu) self.qaction.triggered.connect(self.add_books) + def location_selected(self, loc): + enabled = loc == 'library' + for action in list(self.add_menu.actions())[1:]: + action.setEnabled(enabled) def add_recursive(self, single): root = choose_dir(self.gui, 'recursive book import root dir dialog', diff --git a/src/calibre/gui2/actions/annotate.py b/src/calibre/gui2/actions/annotate.py index d8b7b829b2..5356d63e98 100644 --- a/src/calibre/gui2/actions/annotate.py +++ b/src/calibre/gui2/actions/annotate.py @@ -91,7 +91,7 @@ class FetchAnnotationsAction(InterfaceAction): self.am = annotation_map self.done_callback = done_callback - self.pd.canceled.connect(self.canceled) + self.pd.canceled_signal.connect(self.canceled) self.pd.setModal(True) self.pd.show() self.update_progress.connect(self.pd.set_value, diff --git a/src/calibre/gui2/actions/save_to_disk.py b/src/calibre/gui2/actions/save_to_disk.py index 4cfcc4d692..fcd7c4e332 100644 --- a/src/calibre/gui2/actions/save_to_disk.py +++ b/src/calibre/gui2/actions/save_to_disk.py @@ -58,6 +58,11 @@ class SaveToDiskAction(InterfaceAction): self.save_sub_menu.save_fmt.connect(self.save_specific_format_disk) self.qaction.setMenu(self.save_menu) + def location_selected(self, loc): + enabled = loc == 'library' + for action in list(self.save_menu.actions())[1:]: + action.setEnabled(enabled) + def reread_prefs(self): self.save_menu.actions()[2].setText( _('Save only %s format to disk')% @@ -88,8 +93,9 @@ class SaveToDiskAction(InterfaceAction): _('Choose destination directory')) if not path: return - dpath = os.path.abspath(path).replace('/', os.sep) - lpath = self.gui.library_view.model().db.library_path.replace('/', os.sep) + dpath = os.path.abspath(path).replace('/', os.sep)+os.sep + lpath = self.gui.library_view.model().db.library_path.replace('/', + os.sep)+os.sep if dpath.startswith(lpath): return error_dialog(self.gui, _('Not allowed'), _('You are trying to save files into the calibre ' diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index b646d4ac79..04d60525f1 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -443,7 +443,7 @@ class Saver(QObject): from calibre.ebooks.metadata.worker import SaveWorker self.worker = SaveWorker(self.rq, db, self.ids, path, self.opts, spare_server=self.spare_server) - self.pd.canceled.connect(self.canceled) + self.pd.canceled_signal.connect(self.canceled) self.timer = QTimer(self) self.connect(self.timer, SIGNAL('timeout()'), self.update) self.timer.start(200) diff --git a/src/calibre/gui2/dialogs/progress.py b/src/calibre/gui2/dialogs/progress.py index 2369575e90..40404050ec 100644 --- a/src/calibre/gui2/dialogs/progress.py +++ b/src/calibre/gui2/dialogs/progress.py @@ -11,7 +11,7 @@ from calibre.gui2.dialogs.progress_ui import Ui_Dialog class ProgressDialog(QDialog, Ui_Dialog): - canceled = pyqtSignal() + canceled_signal = pyqtSignal() def __init__(self, title, msg='', min=0, max=99, parent=None): QDialog.__init__(self, parent) @@ -52,7 +52,7 @@ class ProgressDialog(QDialog, Ui_Dialog): self.canceled = True self.button_box.setDisabled(True) self.title.setText(_('Aborting...')) - self.canceled.emit() + self.canceled_signal.emit() def keyPressEvent(self, ev): if ev.key() == Qt.Key_Escape: diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index 1af8f28063..73de77b13b 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -50,9 +50,10 @@ class LibraryViewMixin(object): # {{{ populate_menu(lm, LIBRARY_CONTEXT_MENU) dm = QMenu(self) populate_menu(dm, DEVICE_CONTEXT_MENU) - self.library_view.set_context_menu(lm) + ec = self.iactions['Edit Collections'].qaction + self.library_view.set_context_menu(lm, ec) for v in (self.memory_view, self.card_a_view, self.card_b_view): - v.set_context_menu(dm) + v.set_context_menu(dm, ec) self.library_view.files_dropped.connect(self.iactions['Add Books'].files_dropped, type=Qt.QueuedConnection) for func, args in [ diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index 027e0e4706..389208fdcd 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -389,9 +389,10 @@ class BooksView(QTableView): # {{{ #}}} # Context Menu {{{ - def set_context_menu(self, menu): + def set_context_menu(self, menu, edit_collections_action): self.setContextMenuPolicy(Qt.DefaultContextMenu) self.context_menu = menu + self.edit_collections_action = edit_collections_action def contextMenuEvent(self, event): self.context_menu.popup(event.globalPos()) @@ -500,10 +501,11 @@ class DeviceBooksView(BooksView): # {{{ self.setAcceptDrops(False) def contextMenuEvent(self, event): - self.edit_collections_menu.setVisible( - callable(getattr(self._model.db, 'supports_collections', None)) and \ + edit_collections = callable(getattr(self._model.db, 'supports_collections', None)) and \ self._model.db.supports_collections() and \ - prefs['manage_device_metadata'] == 'manual') + prefs['manage_device_metadata'] == 'manual' + + self.edit_collections_action.setVisible(edit_collections) self.context_menu.popup(event.globalPos()) event.accept()