+ 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 = self.selectDependencyCheck(selectedModule)
+ if len(unsatisfied) > 0:
+ self._selectionDependencyFail(selectedModule, unsatisfied)
+
+ def _moduleUnselected(self, unselectedModule):
+ modules = self._projectInfoRetrieve("MODULES")
+ modules[unselectedModule]["enabled"] = False
+ self._projectInfoStore("MODULES", modules)
+ unsatisfied = self.unselectDependencyCheck(unselectedModule)
+ if len(unsatisfied) > 0:
+ self._unselectionDependencyFail(unselectedModule, unsatisfied)
+
+ def _selectionDependencyFail(self, selectedModule, unsatisfiedModules):
+ messageString = "The module " + selectedModule + " needs 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))
+ messageBox.addButton(QMessageBox.Yes)
+ messageBox.addButton(QMessageBox.No)
+ messageBox.exec_()
+
+ 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))
+ messageBox.addButton(QMessageBox.Yes)
+ messageBox.addButton(QMessageBox.No)
+ messageBox.exec_()
+
+ def selectDependencyCheck(self, module):
+ unsatisfied = []
+ modules = self._projectInfoRetrieve("MODULES")
+ for dependency in modules[module]["depends"]:
+ if not modules[dependency]["enabled"]:
+ unsatisfied.append(dependency)
+ unsatisfied += self.selectDependencyCheck(dependency)
+ return unsatisfied
+
+ def unselectDependencyCheck(self, dependency):
+ unsatisfied = []
+ modules = self._projectInfoRetrieve("MODULES")
+ for module, informations in modules.items():
+ if dependency in informations["depends"] and informations["enabled"]:
+ unsatisfied.append(module)
+ unsatisfied += self.unselectDependencyCheck(module)
+ return unsatisfied
\ No newline at end of file