X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBProject.py;h=866d5be977f15650e86e7fdff941002cd6d2a394;hb=a9104748fe30c5efd63962c1bb8e8f1d2a8001d6;hp=1cbaf1643b69ab878336e1a975f1e83922f19b18;hpb=3cd73c355f9d5bd07eaee38425661f5f4310f020;p=bertos.git diff --git a/wizard/BProject.py b/wizard/BProject.py index 1cbaf164..866d5be9 100644 --- a/wizard/BProject.py +++ b/wizard/BProject.py @@ -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,12 @@ class BProject(object): self.loadModuleData(True) setEnabledModules(self, project_data["ENABLED_MODULES"]) + def loadProjectPresets(self, preset_directory): + # This method will save: + # "CPU_NAME" + # ... + pass + def loadModuleData(self, edit=False): module_info_dict = {} list_info_dict = {} @@ -174,7 +183,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 +191,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 +215,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 +225,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):