+ 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:
+ QMessageBox.warning(self, self.tr("Dependency error"),
+ self.tr("The module %1 needs the following modules:\n%2.\n\nDo you want to resolve automatically the problem?").arg(selectedModule).arg(", ".join(unsatisfied)),
+ QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
+
+ def _moduleUnselected(self, unselectedModule):
+ modules = self._projectInfoRetrieve("MODULES")
+ modules[unselectedModule]["enabled"] = False
+ self._projectInfoStore("MODULES", modules)
+ unsatisfied = self.unselectDependencyCheck(unselectedModule)
+ if len(unsatisfied) > 0:
+ QMessageBox.warning(self, self.tr("Dependency error"),
+ self.tr("The module %1 is needed by the following modules:\n%2.\n\nDo you want to resolve automatically the problem?").arg(unselectedModule).arg(", ".join(unsatisfied)),
+ QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
+
+ 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