Fix CPU reloading data bug when the user change the BeRTOS version.
authorduplo <duplo@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 31 Mar 2010 15:20:28 +0000 (15:20 +0000)
committerduplo <duplo@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 31 Mar 2010 15:20:28 +0000 (15:20 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3363 38d2e660-2303-0410-9eaa-f027e97ec537

wizard/BEditingDialog.py
wizard/BProject.py

index c8f6e7069bfd3959e96c57f893b4dcbf2a8ab93d..075a739450653cee43375fb056d6ac4bccb86200 100644 (file)
@@ -132,10 +132,10 @@ class BEditingDialog(QDialog):
                     qApp.setOverrideCursor(QCursor(Qt.WaitCursor))
                     dialog.version_page.setProjectInfo("SOURCES_PATH", version)
                     dialog.version_page.setProjectInfo("OLD_SOURCES_PATH", current_version)
-                    QApplication.instance().project.reloadCpuInfo()
                     enabled_modules = bertos_utils.enabledModules(dialog.version_page.project())
                     old_configuration = dialog.version_page.projectInfo("CONFIGURATIONS")
                     dialog.version_page.project().loadSourceTree()
+                    QApplication.instance().project.reloadCpuInfo()
                     QApplication.instance().project.loadModuleData()
                     new_configuration = dialog.version_page.projectInfo("CONFIGURATIONS")
                     merged_configuration = {}
index 1cbaf1643b69ab878336e1a975f1e83922f19b18..d7671e2213722718b9a85d89f7220f1a0a97ef97 100644 (file)
@@ -46,7 +46,7 @@ from bertos_utils import (
                             isBertosDir, getTagSet, setEnabledModules, getInfos,
                             loadConfigurationInfos, loadDefineLists, loadModuleDefinition,
                             getCommentList, updateConfigurationValues,
-                            
+
                             # Custom exceptions
                             ParseError, SupportedException
                         )
@@ -55,7 +55,7 @@ class BProject(object):
     """
     Simple class for store and retrieve project informations.
     """
-    
+
     def __init__(self, project_file="", info_dict={}):
         self.infos = {}
         self._cached_queries = {}
@@ -169,20 +169,22 @@ class BProject(object):
     def loadCpuInfos(self):
         cpuInfos = []
         for definition in self.findDefinitions(const.CPU_DEFINITION):
+            print definition
             cpuInfos.append(getInfos(definition))
         return cpuInfos
 
     def reloadCpuInfo(self):
         for cpu_info in self.loadCpuInfos():
-            if cpu_info["CPU_NAME"]:
+            if cpu_info["CPU_NAME"] == self.infos["CPU_NAME"]:
                 self.infos["CPU_INFOS"] = cpu_info
+                print cpu_info
 
     def setInfo(self, key, value):
         """
         Store the given value with the name key.
         """
         self.infos[key] = value
-    
+
     def info(self, key, default=None):
         """
         Retrieve the value associated with the name key.
@@ -206,7 +208,9 @@ class BProject(object):
         return [(filename, dirname) for dirname in file_dict.get(filename, [])]
 
     def findDefinitions(self, ftype):
-        definitions = self._cached_queries.get(ftype, None)
+        # Maintain a cache for every scanned SOURCES_PATH
+        definitions_dict = self._cached_queries.get(self.infos["SOURCES_PATH"], {})
+        definitions = definitions_dict.get(ftype, None)
         if definitions is not None:
             return definitions
         file_dict = self.infos["FILE_DICT"]
@@ -214,7 +218,12 @@ class BProject(object):
         for filename in file_dict:
             if fnmatch.fnmatch(filename, ftype):
                 definitions += [(filename, dirname) for dirname in file_dict.get(filename, [])]
-        self._cached_queries[ftype] = definitions
+
+        # If no cache for the current SOURCES_PATH create an empty one
+        if not definitions_dict:
+            self._cached_queries[self.infos["SOURCES_PATH"]] = {}
+        # Fill the empty cache with the result
+        self._cached_queries[self.infos["SOURCES_PATH"]][ftype] = definitions
         return definitions
 
     def __repr__(self):