display modules icons in backends list, modules list and module description
This commit is contained in:
parent
9dd56c9e14
commit
d7301438cb
3 changed files with 82 additions and 23 deletions
|
|
@ -64,6 +64,9 @@ class Module:
|
|||
def get_config(self):
|
||||
return self.klass.CONFIG
|
||||
|
||||
def get_icon_path(self):
|
||||
return self.klass.ICON
|
||||
|
||||
def iter_caps(self):
|
||||
for cap in self.klass.__bases__:
|
||||
if issubclass(cap, ICap) and cap != ICap:
|
||||
|
|
|
|||
|
|
@ -15,8 +15,10 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
from PyQt4.QtGui import QDialog, QTableWidgetItem, QLabel, QLineEdit, QCheckBox, QMessageBox
|
||||
from PyQt4.QtCore import SIGNAL, Qt
|
||||
from PyQt4.QtGui import QDialog, QTreeWidgetItem, QLabel, QLineEdit, QCheckBox, \
|
||||
QMessageBox, QPixmap, QImage, QIcon, QHeaderView, \
|
||||
QListWidgetItem, QTextDocument
|
||||
from PyQt4.QtCore import SIGNAL, Qt, QVariant, QUrl
|
||||
|
||||
import re
|
||||
from logging import warning
|
||||
|
|
@ -35,15 +37,22 @@ class BackendCfg(QDialog):
|
|||
|
||||
self.weboob.modules_loader.load()
|
||||
|
||||
self.ui.backendsList.header().setResizeMode(QHeaderView.ResizeToContents)
|
||||
self.ui.configFrame.hide()
|
||||
|
||||
for name, module in self.weboob.modules_loader.modules.iteritems():
|
||||
if not self.caps or module.has_caps(*self.caps):
|
||||
self.ui.modulesList.addItem(name.capitalize())
|
||||
item = QListWidgetItem(name.capitalize())
|
||||
|
||||
if module.get_icon_path():
|
||||
img = QImage(module.get_icon_path())
|
||||
item.setIcon(QIcon(QPixmap.fromImage(img)))
|
||||
|
||||
self.ui.modulesList.addItem(item)
|
||||
|
||||
self.loadBackendsList()
|
||||
|
||||
self.connect(self.ui.backendsList, SIGNAL('cellClicked(int, int)'), self.backendClicked)
|
||||
self.connect(self.ui.backendsList, SIGNAL('itemClicked(QTreeWidgetItem *, int)'), self.backendClicked)
|
||||
self.connect(self.ui.modulesList, SIGNAL('itemSelectionChanged()'), self.modulesSelectionChanged)
|
||||
self.connect(self.ui.proxyBox, SIGNAL('toggled(bool)'), self.proxyEditEnabled)
|
||||
self.connect(self.ui.addButton, SIGNAL('clicked()'), self.addEvent)
|
||||
|
|
@ -52,20 +61,25 @@ class BackendCfg(QDialog):
|
|||
self.connect(self.ui.configButtonBox, SIGNAL('rejected()'), self.rejectBackend)
|
||||
|
||||
def loadBackendsList(self):
|
||||
self.ui.backendsList.clearContents()
|
||||
self.ui.backendsList.clear()
|
||||
for instance_name, name, params in self.weboob.backends_config.iter_backends():
|
||||
if self.caps and not self.weboob.modules_loader.modules[name].has_caps(*self.caps):
|
||||
module = self.weboob.modules_loader.modules[name]
|
||||
if self.caps and not module.has_caps(*self.caps):
|
||||
continue
|
||||
|
||||
self.ui.backendsList.insertRow(0)
|
||||
self.ui.backendsList.setItem(0, 0, QTableWidgetItem(instance_name))
|
||||
self.ui.backendsList.setItem(0, 1, QTableWidgetItem(name))
|
||||
item = QTreeWidgetItem(None, [instance_name, name])
|
||||
|
||||
if module.get_icon_path():
|
||||
img = QImage(module.get_icon_path())
|
||||
item.setIcon(0, QIcon(QPixmap.fromImage(img)))
|
||||
|
||||
self.ui.backendsList.addTopLevelItem(item)
|
||||
|
||||
def closeEvent(self, event):
|
||||
event.accept()
|
||||
|
||||
def backendClicked(self, row, col):
|
||||
bname = unicode(self.ui.backendsList.item(row, 0).text())
|
||||
def backendClicked(self, item, col):
|
||||
bname = unicode(item.text(0))
|
||||
|
||||
self.editBackend(bname)
|
||||
|
||||
|
|
@ -77,7 +91,7 @@ class BackendCfg(QDialog):
|
|||
if not item:
|
||||
return
|
||||
|
||||
bname = unicode(self.ui.backendsList.item(item.row(), 0).text())
|
||||
bname = unicode(item.text(0))
|
||||
reply = QMessageBox.question(self, self.tr('Remove a backend'),
|
||||
unicode(self.tr("Are you sure you want to remove the backend '%s'?")) % bname,
|
||||
QMessageBox.Yes|QMessageBox.No)
|
||||
|
|
@ -197,14 +211,20 @@ class BackendCfg(QDialog):
|
|||
return
|
||||
|
||||
module = self.weboob.modules_loader.modules[unicode(selection[0].text()).lower()]
|
||||
|
||||
if module.get_icon_path():
|
||||
img = QImage(module.get_icon_path())
|
||||
self.ui.moduleInfo.document().addResource(QTextDocument.ImageResource, QUrl('mydata://logo.png'), QVariant(img))
|
||||
|
||||
self.ui.moduleInfo.setText(unicode(self.tr(
|
||||
'<h1>Module %s</h1>'
|
||||
'<h1>%s Module %s</h1>'
|
||||
'<b>Version</b>: %s<br />'
|
||||
'<b>Maintainer</b>: %s<br />'
|
||||
'<b>License</b>: %s<br />'
|
||||
'<b>Description</b>: %s<br />'
|
||||
'<b>Capabilities</b>: %s<br />'))
|
||||
% (module.get_name().capitalize(),
|
||||
% ('<img src="mydata://logo.png" />' if module.get_icon_path() else '',
|
||||
module.get_name().capitalize(),
|
||||
module.get_version(),
|
||||
module.get_maintainer().replace('&', '&').replace('<', '<').replace('>', '>'),
|
||||
module.get_license(),
|
||||
|
|
|
|||
|
|
@ -22,25 +22,49 @@
|
|||
<widget class="QWidget" name="horizontalLayoutWidget">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QTableWidget" name="backendsList">
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
<widget class="QTreeWidget" name="backendsList">
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<property name="horizontalScrollMode">
|
||||
<enum>QAbstractItemView::ScrollPerPixel</enum>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>48</width>
|
||||
<height>48</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="showGrid">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="cornerButtonEnabled">
|
||||
<property name="uniformRowHeights">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<property name="itemsExpandable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="animated">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="expandsOnDoubleClick">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="headerCascadingSectionResizes">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<attribute name="headerHighlightSections">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="headerCascadingSectionResizes">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="headerHighlightSections">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Name</string>
|
||||
|
|
@ -114,6 +138,18 @@
|
|||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="sizePolicy">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue