wizard: fix typo.
[bertos.git] / wizard / BProject.py
index 1cbaf1643b69ab878336e1a975f1e83922f19b18..5ecf7f22aefc60c6fafb7f3c6f124402eadfa4b8 100644 (file)
@@ -39,6 +39,9 @@ import copy
 import pickle
 
 import DefineException
+
+from LoadException import VersionException, ToolchainException
+
 import const
 
 from bertos_utils import (
@@ -46,7 +49,7 @@ from bertos_utils import (
                             isBertosDir, getTagSet, setEnabledModules, getInfos,
                             loadConfigurationInfos, loadDefineLists, loadModuleDefinition,
                             getCommentList, updateConfigurationValues,
-                            
+
                             # Custom exceptions
                             ParseError, SupportedException
                         )
@@ -55,7 +58,7 @@ class BProject(object):
     """
     Simple class for store and retrieve project informations.
     """
-    
+
     def __init__(self, project_file="", info_dict={}):
         self.infos = {}
         self._cached_queries = {}
@@ -113,6 +116,10 @@ class BProject(object):
         self.loadModuleData(True)
         setEnabledModules(self, project_data["ENABLED_MODULES"])
 
+    def loadProjectPresets(self, preset_directory):
+        preset_prj_file = os.path.join(preset_directory, 'project.bertos')
+        preset_data = pickle.loads(open(preset_prj_file, "r").read())
+
     def loadModuleData(self, edit=False):
         module_info_dict = {}
         list_info_dict = {}
@@ -174,7 +181,7 @@ class BProject(object):
 
     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
 
     def setInfo(self, key, value):
@@ -182,7 +189,7 @@ class BProject(object):
         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 +213,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 +223,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):