+ self.connect(self.pageContent.propertyTable, SIGNAL("itemSelectionChanged()"), self._showPropertyDescription)
+
+ def _moduleSelectionChanged(self, index):
+ module = unicode(self.pageContent.moduleTable.item(index, 1).text())
+ if self._buttonGroup.button(index).isChecked():
+ self._moduleSelected(module)
+ else:
+ self._moduleUnselected(module)
+
+ def _moduleSelected(self, selectedModule):
+ modules = self._projectInfoRetrieve("MODULES")
+ modules[selectedModule]["enabled"] = True
+ self._projectInfoStore("MODULES", modules)
+ depends = self._projectInfoRetrieve("MODULES")[selectedModule]["depends"]
+ unsatisfied = []
+ for element in depends:
+ if not self._projectInfoRetrieve("MODULES")[element]["enabled"]:
+ unsatisfied.append(element)
+ if len(unsatisfied) > 0:
+ self._selectionDependencyFail(selectedModule, unsatisfied)
+
+ def _selectionDependencyFail(self, selectedModule, unsatisfiedModules):
+ messageString = "The module " + selectedModule + " need the following modules:\n" + \
+ ", ".join(unsatisfiedModules) + ".\nDo you want to resolve autmatically the prolem?"
+ messageBox = QMessageBox()
+ messageBox.setIcon(QMessageBox.Warning)
+ messageBox.setText(self.tr("Dependency fail"))
+ messageBox.setInformativeText(self.tr(messageString))
+ resolveButton = QPushButton("Resolve")
+ nothingButton = QPushButton("Do nothing")
+ messageBox.addButton(resolveButton, QMessageBox.YesRole)
+ messageBox.addButton(nothingButton, QMessageBox.NoRole)
+ messageBox.exec_()
+
+ def _moduleUnselected(self, unselectedModule):
+ modules = self._projectInfoRetrieve("MODULES")
+ modules[unselectedModule]["enabled"] = False
+ self._projectInfoStore("MODULES", modules)
+ unsatisfied = []
+ for module, infos in self._projectInfoRetrieve("MODULES").items():
+ if unselectedModule in infos["depends"] and infos["enabled"]:
+ unsatisfied.append(module)
+ if len(unsatisfied) > 0:
+ self._unselectionDependencyFail(unselectedModule, unsatisfied)
+
+ def _unselectionDependencyFail(self, unselectedModule, unsatisfiedModules):
+ messageString = "The module " + unselectedModule + " is needed by the following modules:\n" + \
+ ", ".join(unsatisfiedModules) + ".\nDo you want to resolve autmatically the prolem?"
+ messageBox = QMessageBox()
+ messageBox.setIcon(QMessageBox.Warning)
+ messageBox.setText(self.tr("Dependency fail"))
+ messageBox.setInformativeText(self.tr(messageString))
+ resolveButton = QPushButton("Resolve")
+ nothingButton = QPushButton("Do nothing")
+ messageBox.addButton(resolveButton, QMessageBox.YesRole)
+ messageBox.addButton(nothingButton, QMessageBox.NoRole)
+ messageBox.exec_()
\ No newline at end of file