Fix default value for codelite files checkbox.
[bertos.git] / wizard / BModulePage.py
index ccaf621c4f53e12ecddce7b162165875c1f719a4..6e40c7f128d69831c1242fed721374b43ab708c3 100644 (file)
@@ -80,19 +80,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()
     
     ####
     
@@ -110,7 +112,7 @@ class BModulePage(BWizardPage):
         module = self.currentModule()
         if module:
             try:
-                supported = bertos_utils.isSupported(self.project(), module=module)
+                supported = bertos_utils.isSupported(self.project, module=module)
             except SupportedException, e:
                 self.exceptionOccurred(self.tr("Error evaluating \"%1\" for module %2").arg(e.support_string).arg(module))
                 supported = True
@@ -137,7 +139,7 @@ class BModulePage(BWizardPage):
                         # Doesn't show the hidden fields
                         continue
                     try:
-                        param_supported = bertos_utils.isSupported(self.project(), property_id=(configuration, property))
+                        param_supported = bertos_utils.isSupported(self.project, property_id=(configuration, property))
                     except SupportedException, e:
                         self.exceptionOccurred(self.tr("Error evaluating \"%1\" for parameter %2").arg(e.support_string).arg(property))
                         param_supported = True
@@ -147,6 +149,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,12 +223,13 @@ class BModulePage(BWizardPage):
         """
         Loads the module data.
         """
-        # Load the module data only if it isn't already loaded
-        if not self.projectInfo("MODULES") \
-                and not self.projectInfo("LISTS") \
-                and not self.projectInfo("CONFIGURATIONS"):
+        # 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()
+                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:
@@ -251,7 +256,7 @@ class BModulePage(BWizardPage):
                 enabled = modules[module]["enabled"]
                 module_item = QTreeWidgetItem(item, QStringList([module]))
                 try:
-                    supported = bertos_utils.isSupported(self.project(), module=module)
+                    supported = bertos_utils.isSupported(self.project, module=module)
                 except SupportedException, e:
                     self.exceptionOccurred(self.tr("Error evaluating \"%1\" for module %2").arg(e.support_string).arg(module))
                     supported = True
@@ -376,7 +381,12 @@ class BModulePage(BWizardPage):
         """
         Returns the configuration for the selected module.
         """
-        configuration = self.projectInfo("MODULES")[module]["configuration"]
+        configuration = []
+        if module:
+            # On linux platform it seems that the behaviour of the focus
+            # changing is a bit different from the mac one. So if module is
+            # None then no configurations should be returned.
+            configuration = self.projectInfo("MODULES")[module]["configuration"]
         if len(configuration) > 0:
             return self.projectInfo("CONFIGURATIONS")[configuration]
         else: