Remove svn id tags.
[bertos.git] / wizard / BModulePage.py
index d42cbb61bcec49bf954f0567fbf48495afeea1ba..d3b10172d2062f4d66843ad0062abff48206bac2 100644 (file)
@@ -28,7 +28,6 @@
 #
 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
 #
-# $Id$
 #
 # Author: Lorenzo Berni <duplo@develer.com>
 #
@@ -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")