can enable/disable backends, and support choices fields (refs #348)
This commit is contained in:
parent
074a1b871d
commit
ffd75dc2b5
1 changed files with 40 additions and 3 deletions
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
from PyQt4.QtGui import QDialog, QTreeWidgetItem, QLabel, QLineEdit, QCheckBox, \
|
from PyQt4.QtGui import QDialog, QTreeWidgetItem, QLabel, QLineEdit, QCheckBox, \
|
||||||
QMessageBox, QPixmap, QImage, QIcon, QHeaderView, \
|
QMessageBox, QPixmap, QImage, QIcon, QHeaderView, \
|
||||||
QListWidgetItem, QTextDocument
|
QListWidgetItem, QTextDocument, QComboBox
|
||||||
from PyQt4.QtCore import SIGNAL, Qt, QVariant, QUrl
|
from PyQt4.QtCore import SIGNAL, Qt, QVariant, QUrl
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
@ -56,6 +56,7 @@ class BackendCfg(QDialog):
|
||||||
self.loadConfiguredBackendsList()
|
self.loadConfiguredBackendsList()
|
||||||
|
|
||||||
self.connect(self.ui.configuredBackendsList, SIGNAL('itemClicked(QTreeWidgetItem *, int)'), self.configuredBackendClicked)
|
self.connect(self.ui.configuredBackendsList, SIGNAL('itemClicked(QTreeWidgetItem *, int)'), self.configuredBackendClicked)
|
||||||
|
self.connect(self.ui.configuredBackendsList, SIGNAL('itemChanged(QTreeWidgetItem *, int)'), self.configuredBackendEnabled)
|
||||||
self.connect(self.ui.backendsList, SIGNAL('itemSelectionChanged()'), self.backendSelectionChanged)
|
self.connect(self.ui.backendsList, SIGNAL('itemSelectionChanged()'), self.backendSelectionChanged)
|
||||||
self.connect(self.ui.proxyBox, SIGNAL('toggled(bool)'), self.proxyEditEnabled)
|
self.connect(self.ui.proxyBox, SIGNAL('toggled(bool)'), self.proxyEditEnabled)
|
||||||
self.connect(self.ui.addButton, SIGNAL('clicked()'), self.addEvent)
|
self.connect(self.ui.addButton, SIGNAL('clicked()'), self.addEvent)
|
||||||
|
|
@ -73,6 +74,7 @@ class BackendCfg(QDialog):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
item = QTreeWidgetItem(None, [instance_name, name])
|
item = QTreeWidgetItem(None, [instance_name, name])
|
||||||
|
item.setCheckState(0, Qt.Checked if params.get('_enabled', '1').lower() in ('1', 'y', 'true') else Qt.Unchecked)
|
||||||
|
|
||||||
if backend.icon_path:
|
if backend.icon_path:
|
||||||
img = QImage(backend.icon_path)
|
img = QImage(backend.icon_path)
|
||||||
|
|
@ -80,6 +82,22 @@ class BackendCfg(QDialog):
|
||||||
|
|
||||||
self.ui.configuredBackendsList.addTopLevelItem(item)
|
self.ui.configuredBackendsList.addTopLevelItem(item)
|
||||||
|
|
||||||
|
def configuredBackendEnabled(self, item, col):
|
||||||
|
instname = unicode(item.text(0))
|
||||||
|
bname = unicode(item.text(1))
|
||||||
|
if item.checkState(0) == Qt.Checked:
|
||||||
|
self.to_load.add(instname)
|
||||||
|
enabled = '1'
|
||||||
|
else:
|
||||||
|
self.to_unload.add(instname)
|
||||||
|
try:
|
||||||
|
self.to_load.remove(instname)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
enabled = '0'
|
||||||
|
|
||||||
|
self.weboob.backends_config.edit_backend(instname, bname, {'_enabled': enabled})
|
||||||
|
|
||||||
def configuredBackendClicked(self, item, col):
|
def configuredBackendClicked(self, item, col):
|
||||||
bname = unicode(item.text(0))
|
bname = unicode(item.text(0))
|
||||||
|
|
||||||
|
|
@ -103,6 +121,10 @@ class BackendCfg(QDialog):
|
||||||
|
|
||||||
self.weboob.backends_config.remove_backend(bname)
|
self.weboob.backends_config.remove_backend(bname)
|
||||||
self.to_unload.add(bname)
|
self.to_unload.add(bname)
|
||||||
|
try:
|
||||||
|
self.to_load.remove(bname)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
self.ui.configFrame.hide()
|
self.ui.configFrame.hide()
|
||||||
self.loadConfiguredBackendsList()
|
self.loadConfiguredBackendsList()
|
||||||
|
|
||||||
|
|
@ -114,7 +136,7 @@ class BackendCfg(QDialog):
|
||||||
|
|
||||||
items = self.ui.backendsList.findItems(mname, Qt.MatchFixedString)
|
items = self.ui.backendsList.findItems(mname, Qt.MatchFixedString)
|
||||||
if not items:
|
if not items:
|
||||||
print 'Backend not found'
|
warning('Backend not found')
|
||||||
else:
|
else:
|
||||||
self.ui.backendsList.setCurrentItem(items[0])
|
self.ui.backendsList.setCurrentItem(items[0])
|
||||||
self.ui.backendsList.setEnabled(False)
|
self.ui.backendsList.setEnabled(False)
|
||||||
|
|
@ -128,12 +150,19 @@ class BackendCfg(QDialog):
|
||||||
self.ui.proxyBox.setChecked(False)
|
self.ui.proxyBox.setChecked(False)
|
||||||
self.ui.proxyEdit.clear()
|
self.ui.proxyEdit.clear()
|
||||||
|
|
||||||
|
params.pop('_enabled', None)
|
||||||
|
|
||||||
for key, value in params.iteritems():
|
for key, value in params.iteritems():
|
||||||
l, widget = self.config_widgets[key]
|
l, widget = self.config_widgets[key]
|
||||||
if isinstance(widget, QLineEdit):
|
if isinstance(widget, QLineEdit):
|
||||||
widget.setText(unicode(value))
|
widget.setText(unicode(value))
|
||||||
elif isinstance(widget, QCheckBox):
|
elif isinstance(widget, QCheckBox):
|
||||||
widget.setChecked(value.lower() in ('1', 'true', 'yes', 'on'))
|
widget.setChecked(value.lower() in ('1', 'true', 'yes', 'on'))
|
||||||
|
elif isinstance(widget, QComboBox):
|
||||||
|
for i in xrange(widget.count()):
|
||||||
|
if unicode(widget.itemData(i).toString()) == value:
|
||||||
|
widget.setCurrentIndex(i)
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
warning('Unknown type field "%s": %s', key, widget)
|
warning('Unknown type field "%s": %s', key, widget)
|
||||||
else:
|
else:
|
||||||
|
|
@ -173,6 +202,8 @@ class BackendCfg(QDialog):
|
||||||
params[key] = unicode(value.text())
|
params[key] = unicode(value.text())
|
||||||
elif isinstance(value, QCheckBox):
|
elif isinstance(value, QCheckBox):
|
||||||
params[key] = '1' if value.isChecked() else '0'
|
params[key] = '1' if value.isChecked() else '0'
|
||||||
|
elif isinstance(value, QComboBox):
|
||||||
|
params[key] = unicode(value.itemData(value.currentIndex()).toString())
|
||||||
else:
|
else:
|
||||||
warning('Unknown type field "%s": %s', key, value)
|
warning('Unknown type field "%s": %s', key, value)
|
||||||
|
|
||||||
|
|
@ -208,7 +239,9 @@ class BackendCfg(QDialog):
|
||||||
value.hide()
|
value.hide()
|
||||||
self.ui.configLayout.removeWidget(label)
|
self.ui.configLayout.removeWidget(label)
|
||||||
self.ui.configLayout.removeWidget(value)
|
self.ui.configLayout.removeWidget(value)
|
||||||
self.config_widgets.clear()
|
label.deleteLater()
|
||||||
|
value.deleteLater()
|
||||||
|
self.config_widgets = {}
|
||||||
self.ui.backendInfo.clear()
|
self.ui.backendInfo.clear()
|
||||||
|
|
||||||
selection = self.ui.backendsList.selectedItems()
|
selection = self.ui.backendsList.selectedItems()
|
||||||
|
|
@ -242,6 +275,10 @@ class BackendCfg(QDialog):
|
||||||
value = QCheckBox()
|
value = QCheckBox()
|
||||||
if field.default:
|
if field.default:
|
||||||
value.setChecked(True)
|
value.setChecked(True)
|
||||||
|
elif field.choices:
|
||||||
|
value = QComboBox()
|
||||||
|
for k, l in (field.choices.iteritems() if isinstance(field.choices, dict) else ((k,k) for k in field.choices)):
|
||||||
|
value.addItem(l, QVariant(k))
|
||||||
else:
|
else:
|
||||||
value = QLineEdit()
|
value = QLineEdit()
|
||||||
if field.default is not None:
|
if field.default is not None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue