Show disabled device plugins in Preferences->Ignored Devices

This commit is contained in:
Kovid Goyal 2013-01-01 20:50:22 +05:30
parent f368250f1d
commit e1d40f3603

View File

@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en'
from PyQt4.Qt import (QLabel, QVBoxLayout, QListWidget, QListWidgetItem, Qt) from PyQt4.Qt import (QLabel, QVBoxLayout, QListWidget, QListWidgetItem, Qt)
from calibre.customize.ui import enable_plugin
from calibre.gui2.preferences import ConfigWidgetBase, test_widget from calibre.gui2.preferences import ConfigWidgetBase, test_widget
class ConfigWidget(ConfigWidgetBase): class ConfigWidget(ConfigWidgetBase):
@ -31,6 +32,18 @@ class ConfigWidget(ConfigWidgetBase):
f.itemChanged.connect(self.changed_signal) f.itemChanged.connect(self.changed_signal)
f.itemDoubleClicked.connect(self.toggle_item) 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): def toggle_item(self, item):
item.setCheckState(Qt.Checked if item.checkState() == Qt.Unchecked else item.setCheckState(Qt.Checked if item.checkState() == Qt.Unchecked else
Qt.Unchecked) Qt.Unchecked)
@ -46,6 +59,16 @@ class ConfigWidget(ConfigWidgetBase):
item.setCheckState(Qt.Checked) item.setCheckState(Qt.Checked)
self.devices.blockSignals(False) 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): def restore_defaults(self):
if self.devices.count() > 0: if self.devices.count() > 0:
self.devices.clear() self.devices.clear()
@ -63,6 +86,12 @@ class ConfigWidget(ConfigWidgetBase):
for dev, bl in devs.iteritems(): for dev, bl in devs.iteritems():
dev.set_user_blacklisted_devices(bl) 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 return True # Restart required
if __name__ == '__main__': if __name__ == '__main__':