From e1d40f36036ad1aac1c0785bba979e8b6a92d47f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 1 Jan 2013 20:50:22 +0530 Subject: [PATCH] Show disabled device plugins in Preferences->Ignored Devices --- .../gui2/preferences/ignored_devices.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/calibre/gui2/preferences/ignored_devices.py b/src/calibre/gui2/preferences/ignored_devices.py index 99fa350f73..f4215c49ad 100644 --- a/src/calibre/gui2/preferences/ignored_devices.py +++ b/src/calibre/gui2/preferences/ignored_devices.py @@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en' from PyQt4.Qt import (QLabel, QVBoxLayout, QListWidget, QListWidgetItem, Qt) +from calibre.customize.ui import enable_plugin from calibre.gui2.preferences import ConfigWidgetBase, test_widget class ConfigWidget(ConfigWidgetBase): @@ -31,6 +32,18 @@ class ConfigWidget(ConfigWidgetBase): f.itemChanged.connect(self.changed_signal) f.itemDoubleClicked.connect(self.toggle_item) + self.la2 = la = QLabel(_( + 'The list of device plugins you have disabled. Uncheck an entry ' + 'to enable the plugin. calibre cannot detect devices that are ' + 'managed by disabled plugins.')) + la.setWordWrap(True) + l.addWidget(la) + + self.device_plugins = f = QListWidget(f) + l.addWidget(f) + f.itemChanged.connect(self.changed_signal) + f.itemDoubleClicked.connect(self.toggle_item) + def toggle_item(self, item): item.setCheckState(Qt.Checked if item.checkState() == Qt.Unchecked else Qt.Unchecked) @@ -46,6 +59,16 @@ class ConfigWidget(ConfigWidgetBase): item.setCheckState(Qt.Checked) self.devices.blockSignals(False) + self.device_plugins.blockSignals(True) + for dev in self.gui.device_manager.disabled_device_plugins: + n = dev.get_gui_name() + item = QListWidgetItem(n, self.device_plugins) + item.setData(Qt.UserRole, dev) + item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsUserCheckable|Qt.ItemIsSelectable) + item.setCheckState(Qt.Checked) + self.device_plugins.sortItems() + self.device_plugins.blockSignals(False) + def restore_defaults(self): if self.devices.count() > 0: self.devices.clear() @@ -63,6 +86,12 @@ class ConfigWidget(ConfigWidgetBase): for dev, bl in devs.iteritems(): dev.set_user_blacklisted_devices(bl) + for i in xrange(self.device_plugins.count()): + e = self.device_plugins.item(i) + dev = e.data(Qt.UserRole).toPyObject() + if e.checkState() == Qt.Unchecked: + enable_plugin(dev) + return True # Restart required if __name__ == '__main__':