X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBModulePage.py;h=d3b10172d2062f4d66843ad0062abff48206bac2;hb=94b837d82ecd3893d9f0ab401674cf7607148eca;hp=d42cbb61bcec49bf954f0567fbf48495afeea1ba;hpb=5945a0313c8774a741a8bf77b82b96467ad8da3c;p=bertos.git diff --git a/wizard/BModulePage.py b/wizard/BModulePage.py index d42cbb61..d3b10172 100644 --- a/wizard/BModulePage.py +++ b/wizard/BModulePage.py @@ -28,7 +28,6 @@ # # Copyright 2008 Develer S.r.l. (http://www.develer.com/) # -# $Id$ # # Author: Lorenzo Berni # @@ -80,19 +79,21 @@ class BModulePage(BWizardPage): self.connect(self.pageContent.moduleTree, SIGNAL("itemPressed(QTreeWidgetItem*, int)"), self.fillPropertyTable) self.connect(self.pageContent.moduleTree, SIGNAL("itemPressed(QTreeWidgetItem*, int)"), self.moduleClicked) self.connect(self.pageContent.moduleTree, SIGNAL("itemChanged(QTreeWidgetItem*, int)"), self.dependencyCheck) - self.connect(self.pageContent.propertyTable, SIGNAL("itemSelectionChanged()"), self.showPropertyDescription) - def reloadData(self): + def reloadData(self, previous_id=None): """ Overload of the BWizardPage reloadData method. """ - try: - QApplication.instance().setOverrideCursor(Qt.WaitCursor) - self.setupUi() - self.loadModuleData() - self.fillModuleTree() - finally: - QApplication.instance().restoreOverrideCursor() + # Check if the user are approaching this page from the previous or the + # next one. + if previous_id is None or previous_id < self.wizard().currentId(): + try: + QApplication.instance().setOverrideCursor(Qt.WaitCursor) + self.setupUi() + self.loadModuleData() + self.fillModuleTree() + finally: + QApplication.instance().restoreOverrideCursor() #### @@ -147,6 +148,8 @@ class BModulePage(BWizardPage): # Set the row count to the current index + 1 self.pageContent.propertyTable.setRowCount(index + 1) item = QTableWidgetItem(configurations[property]["brief"]) + item.setFlags(item.flags() & ~Qt.ItemIsSelectable) + item.setToolTip(property) item.setData(Qt.UserRole, qvariant_converter.convertString(property)) self.pageContent.propertyTable.setItem(index, 0, item) if "type" in configurations[property]["informations"] and configurations[property]["informations"]["type"] == "boolean": @@ -219,16 +222,19 @@ class BModulePage(BWizardPage): """ Loads the module data. """ - # Load the module data every time so that if the user changed the cpu - # the right configurations are picked up. - try: - self.project.loadModuleData() - 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)) + # Do not load the module data again when the Wizard is in editing mode + # or when it's working on a preset. + if not self.project.edit and not self.project.from_preset: + # Load the module data every time so that if the user changed the cpu + # the right configurations are picked up. + try: + self.project.loadModuleData() + 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)) def fillModuleTree(self): """ @@ -403,6 +409,9 @@ class BModulePage(BWizardPage): item.setFont(0, font) self.pageContent.moduleTree.blockSignals(False) + def isBold(self, item): + return item.font(0).bold() + def moduleSelected(self, selectedModule): """ Resolves the selection dependencies. @@ -466,9 +475,14 @@ class BModulePage(BWizardPage): modules[module]["enabled"] = False for category in range(self.pageContent.moduleTree.topLevelItemCount()): item = self.pageContent.moduleTree.topLevelItem(category) + self.setBold(item, False) for child in range(item.childCount()): if unicode(item.child(child).text(0)) in unsatisfied: + self.setBold(item.child(child), False) item.child(child).setCheckState(0, Qt.Unchecked) + else: + if self.isBold(item.child(child)): + self.setBold(item, True) for module, param in unsatisfied_params: configuration_file = self.projectInfo("MODULES")[module]["configuration"] configurations = self.projectInfo("CONFIGURATIONS")