4 # Copyright 2009 Develer S.r.l. (http://www.develer.com/)
9 # Author: Lorenzo Berni <duplo@develer.com>
14 from PyQt4.QtGui import *
15 from BWizardPage import *
19 class BModulePage(BWizardPage):
22 BWizardPage.__init__(self, "module_select.ui")
23 self.setTitle(self.tr("Configure the modules"))
25 self._connectSignals()
28 self._fillModuleList()
31 self.pageContent.moduleList.setSortingEnabled(True)
32 self.pageContent.propertyTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
33 self.pageContent.propertyTable.horizontalHeader().setVisible(False)
34 self.pageContent.propertyTable.verticalHeader().setVisible(False)
35 self.pageContent.propertyTable.setColumnCount(2)
36 self.pageContent.propertyTable.setRowCount(0)
38 def _connectSignals(self):
39 self.connect(self.pageContent.moduleList, SIGNAL("currentRowChanged(int)"), self.moduleItemClicked)
41 def _fillModuleList(self):
42 moduleInfos = bertos_utils.loadModuleInfos(self._projectInfoRetrieve("SOURCES_PATH"))
43 self._projectInfoStore("MODULE_INFO", moduleInfos)
44 for key, value in moduleInfos.items():
45 self.pageContent.moduleList.addItem(QListWidgetItem(key))
47 def _fillParameterTable(self, parameters):
48 self.pageContent.propertyTable.clear()
49 self.pageContent.propertyTable.setRowCount(len(parameters))
50 for index, key in enumerate(parameters):
51 self.pageContent.propertyTable.setItem(index, 0, QTableWidgetItem(key))
52 if "type" in parameters[key]["informations"].keys():
53 if parameters[key]["informations"]["type"] == "boolean":
54 checkBox = QCheckBox()
55 self.pageContent.propertyTable.setCellWidget(index, 1, checkBox)
56 checkBox.setChecked(parameters[key]["value"] == "1")
57 if parameters[key]["informations"]["type"] == "int":
59 if "max" in parameters[key]["informations"].keys():
60 spinBox.setMaximum(int(parameters[key]["informations"]["max"]))
61 if "min" in parameters[key]["informations"].keys():
62 spinBox.setMinimum(int(parameters[key]["informations"]["min"]))
63 if "long" in parameters[key]["informations"].keys():
64 if bool(parameters[key]["informations"]["long"]):
65 spinBox.setSuffix("L")
66 self.pageContent.propertyTable.setCellWidget(index, 1, spinBox)
67 spinBox.setValue(int(parameters[key]["value"]))
69 self.pageContent.propertyTable.setItem(index, 1, QTableWidgetItem(parameters[key]["value"]))
71 def moduleItemClicked(self):
72 module = unicode(self.pageContent.moduleList.currentItem().text())
73 self._fillParameterTable(self._projectInfoRetrieve("MODULE_INFO")[module])