+ ## Slots ##
+
+ def fillPropertyTable(self):
+ """
+ Slot called when the user selects a module from the module tree.
+ Fills the property table using the configuration parameters defined in
+ the source tree.
+ """
+ module = self.currentModule()
+ if module is not None:
+ self._control_group.clear()
+ configuration = self.projectInfo("MODULES")[module]["configuration"]
+ module_description = self.projectInfo("MODULES")[module]["description"]
+ self.pageContent.moduleLabel.setText(module_description)
+ self.pageContent.moduleLabel.setVisible(True)
+ self.pageContent.propertyTable.clear()
+ self.pageContent.propertyTable.setRowCount(0)
+ if configuration != "":
+ configurations = self.projectInfo("CONFIGURATIONS")[configuration]
+ param_list = sorted(configurations["paramlist"])
+ index = 0
+ for i, property in param_list:
+ if "type" in configurations[property]["informations"] and configurations[property]["informations"]["type"] == "autoenabled":
+ ## Doesn't show the hidden fields
+ pass
+ else:
+ ## Set the row count to the current index + 1
+ self.pageContent.propertyTable.setRowCount(index + 1)
+ item = QTableWidgetItem(configurations[property]["brief"])
+ item.setData(Qt.UserRole, qvariant_converter.convertString(property))
+ self.pageContent.propertyTable.setItem(index, 0, item)
+ if "type" in configurations[property]["informations"].keys() and configurations[property]["informations"]["type"] == "boolean":
+ self.insertCheckBox(index, configurations[property]["value"])
+ elif "type" in configurations[property]["informations"].keys() and configurations[property]["informations"]["type"] == "enum":
+ self.insertComboBox(index, configurations[property]["value"], configurations[property]["informations"]["value_list"])
+ elif "type" in configurations[property]["informations"] and configurations[property]["informations"]["type"] == "int":
+ self.insertSpinBox(index, configurations[property]["value"], configurations[property]["informations"])
+ else:
+ # Not defined type, rendered as a text field
+ self.pageContent.propertyTable.setItem(index, 1, QTableWidgetItem(configurations[property]["value"]))
+ index += 1
+ if self.pageContent.propertyTable.rowCount() == 0:
+ module_label = self.pageContent.moduleLabel.text()
+ module_label += "\n\nNo configuration needed."
+ self.pageContent.moduleLabel.setText(module_label)
+
+ def dependencyCheck(self, item):
+ """
+ Checks the dependencies of the module associated with the given item.
+ """
+ checked = False
+ module = unicode(item.text(0))
+ if item.checkState(0) == Qt.Checked:
+ self.moduleSelected(module)
+ else:
+ self.moduleUnselected(module)
+ self.removeFileDependencies(module)
+
+ def showPropertyDescription(self):
+ """
+ Slot called when the property selection changes. Shows the description
+ of the selected property.
+ """
+ self.resetPropertyDescription()
+ configurations = self.currentModuleConfigurations()
+ if self.currentProperty() in configurations.keys():
+ description = configurations[self.currentProperty()]["brief"]
+ name = self.currentProperty()
+ self.currentPropertyItem().setText(description + "\n" + name)
+
+ def saveValue(self, index):
+ """
+ Slot called when the user modifies one of the configuration parameters.
+ It stores the new value."""
+ property = qvariant_converter.getString(self.pageContent.propertyTable.item(index, 0).data(Qt.UserRole))
+ configuration = self.projectInfo("MODULES")[self.currentModule()]["configuration"]
+ configurations = self.projectInfo("CONFIGURATIONS")
+ if "type" not in configurations[configuration][property]["informations"].keys() or configurations[configuration][property]["informations"]["type"] == "int":
+ configurations[configuration][property]["value"] = str(int(self.pageContent.propertyTable.cellWidget(index, 1).value()))
+ elif configurations[configuration][property]["informations"]["type"] == "enum":
+ configurations[configuration][property]["value"] = unicode(self.pageContent.propertyTable.cellWidget(index, 1).currentText())
+ elif configurations[configuration][property]["informations"]["type"] == "boolean":
+ if self.pageContent.propertyTable.cellWidget(index, 1).isChecked():
+ configurations[configuration][property]["value"] = "1"
+ else:
+ configurations[configuration][property]["value"] = "0"
+ self.setProjectInfo("CONFIGURATIONS", configurations)
+
+ ####
+
+ def loadModuleData(self):
+ """
+ Loads the module data.
+ """
+ ## Load the module data only if it isn't already loaded
+ if self.projectInfo("MODULES") == None \
+ and self.projectInfo("LISTS") == None \
+ and self.projectInfo("CONFIGURATIONS") == None:
+ try:
+ bertos_utils.loadModuleData(self.project())
+ except ModuleDefineException, e:
+ self.exceptionOccurred(self.tr("Error parsing line '%2' in file %1").arg(e.path).arg(e.line))
+ except EnumDefineException, e:
+ self.exceptionOccurred(self.tr("Error parsing line '%2' in file %1").arg(e.path).arg(e.line))
+ except ConfigurationDefineException, e:
+ self.exceptionOccurred(self.tr("Error parsing line '%2' in file %1").arg(e.path).arg(e.line))