From 5e36442774e8f4414b4374803689d3d2508eb6bd Mon Sep 17 00:00:00 2001 From: duplo Date: Wed, 31 Mar 2010 15:20:28 +0000 Subject: [PATCH] Fix CPU reloading data bug when the user change the BeRTOS version. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3363 38d2e660-2303-0410-9eaa-f027e97ec537 --- wizard/BEditingDialog.py | 2 +- wizard/BProject.py | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/wizard/BEditingDialog.py b/wizard/BEditingDialog.py index c8f6e706..075a7394 100644 --- a/wizard/BEditingDialog.py +++ b/wizard/BEditingDialog.py @@ -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 = {} diff --git a/wizard/BProject.py b/wizard/BProject.py index 1cbaf164..d7671e22 100644 --- a/wizard/BProject.py +++ b/wizard/BProject.py @@ -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): -- 2.25.1