Change the loadBertosProject function to be a BProject method (and call it from the...
authorduplo <duplo@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 31 Mar 2010 10:49:51 +0000 (10:49 +0000)
committerduplo <duplo@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 31 Mar 2010 10:49:51 +0000 (10:49 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3342 38d2e660-2303-0410-9eaa-f027e97ec537

wizard/BEditingDialog.py
wizard/BProject.py
wizard/bertos.py
wizard/bertos_utils.py

index cc8a80aa38a9d33d2201203432d20a51e5274aa5..1ae0fd864c693236955f5498e6341fc3955c1911 100644 (file)
@@ -42,6 +42,9 @@ from PyQt4.QtGui import *
 from bertos_utils import loadBertosProject, bertosVersion, getToolchainName, createBertosProject
 from BToolchainPage import BToolchainPage
 from BVersionPage import BVersionPage
+
+from BProject import BProject
+
 import qvariant_converter
 import BModulePage
 import bertos_utils
@@ -235,7 +238,7 @@ def main():
         print "Invalid usage: use <command> project_file"
         sys.exit()
     app = QApplication([])
-    app.project = loadBertosProject(project_file)
+    app.project = BProject(project_file)
     app.settings = QSettings("Develer", "Bertos Configurator")
     dialog = BEditingDialog()
     dialog.show()
index eaff6d62612c6609cbbe2fe9a7de3f5cfb5d6bda..697355e8ddb859db43bb2c4cc41fd60e27b731b8 100644 (file)
@@ -37,15 +37,70 @@ import os
 import fnmatch
 import copy
 
+from bertos_utils import *
+
 class BProject(object):
     """
     Simple class for store and retrieve project informations.
     """
     
-    def __init__(self):
+    def __init__(self, project_file="", info_dict={}):
         self.infos = {}
         self._cached_queries = {}
-    
+        if project_file:
+            self.loadBertosProject(project_file, info_dict)
+
+    def loadBertosProject(self, project_file, info_dict):
+        project_dir = os.path.dirname(project_file)
+        project_data = pickle.loads(open(project_file, "r").read())
+        # If PROJECT_NAME is not defined it use the directory name as PROJECT_NAME
+        # NOTE: this can throw an Exception if the user has changed the directory containing the project
+        self.infos["PROJECT_NAME"] = project_data.get("PROJECT_NAME", os.path.basename(project_dir))
+        self.infos["PROJECT_PATH"] = os.path.dirname(project_file)
+        # Check for the Wizard version
+        wizard_version = project_data.get("WIZARD_VERSION", 0)
+        # Ignore the SOURCES_PATH inside the project file
+        project_data["SOURCES_PATH"] = project_dir
+        if "SOURCES_PATH" in info_dict:
+            project_data["SOURCES_PATH"] = info_dict["SOURCES_PATH"]
+        if os.path.exists(project_data["SOURCES_PATH"]):
+            self.infos["SOURCES_PATH"] = project_data["SOURCES_PATH"]
+        else:
+            raise VersionException(self)
+        if not isBertosDir(project_dir):
+            version_file = open(os.path.join(const.DATA_DIR, "vtemplates/VERSION"), "r").read()
+            open(os.path.join(project_dir, "VERSION"), "w").write(version_file.replace("$version", "").strip())
+        self.loadSourceTree()
+        cpu_name = project_data["CPU_NAME"]
+        self.infos["CPU_NAME"] = cpu_name
+        cpu_info = loadCpuInfos(self)
+        for cpu in cpu_info:
+            if cpu["CPU_NAME"] == cpu_name:
+                self.infos["CPU_INFOS"] = cpu
+                break
+        tag_list = getTagSet(cpu_info)
+        # Create, fill and store the dict with the tags
+        tag_dict = {}
+        for element in tag_list:
+            tag_dict[element] = False
+        infos = self.info("CPU_INFOS")
+        for tag in tag_dict:
+            if tag in infos["CPU_TAGS"] + [infos["CPU_NAME"], infos["TOOLCHAIN"]]:
+                tag_dict[tag] = True
+            else:
+                tag_dict[tag] = False
+        self.infos["ALL_CPU_TAGS"] = tag_dict
+        if "TOOLCHAIN" in info_dict:
+            project_data["TOOLCHAIN"] = info_dict["TOOLCHAIN"]
+        if os.path.exists(project_data["TOOLCHAIN"]["path"]):
+            self.infos["TOOLCHAIN"] = project_data["TOOLCHAIN"]
+        else:
+            raise ToolchainException(self)
+        self.infos["SELECTED_FREQ"] = project_data["SELECTED_FREQ"]
+        self.infos["OUTPUT"] = project_data["OUTPUT"]
+        loadModuleData(self, True)
+        setEnabledModules(self, project_data["ENABLED_MODULES"])
+
     def setInfo(self, key, value):
         """
         Store the given value with the name key.
@@ -68,7 +123,7 @@ class BProject(object):
             for element in os.walk(bertos_sources_dir):
                 for f in element[2]:
                     file_dict[f] = file_dict.get(f, []) + [element[0]]
-        self.setInfo("FILE_DICT", file_dict)
+        self.infos["FILE_DICT"] = file_dict
 
     def searchFiles(self, filename):
         file_dict = self.infos["FILE_DICT"]
index 2d4b523df58e4eb9362cde40f3aada3ec7449666..91646b7487983b0fdaa1c83df673c8a47f2f62d6 100755 (executable)
@@ -86,7 +86,7 @@ def editProject(project_file):
     info_dict = {}
     while(True):
         try:
-            QApplication.instance().project = bertos_utils.loadBertosProject(project_file, info_dict)
+            QApplication.instance().project = BProject.BProject(project_file, info_dict)
         except VersionException:
             QMessageBox.critical(
                 None,
index e291f56bd3b554f0d049f190605f27b0a05419fa..84a88257f284b0f9ed40aa0dbde5f7a29f236685 100644 (file)
@@ -57,59 +57,6 @@ def isBertosDir(directory):
 def bertosVersion(directory):
    return open(directory + "/VERSION").readline().strip()
 
-def loadBertosProject(project_file, info_dict):
-    project_dir = os.path.dirname(project_file)
-    project_data = pickle.loads(open(project_file, "r").read())
-    project_info = BProject.BProject()
-    # If PROJECT_NAME is not defined it use the directory name as PROJECT_NAME
-    # NOTE: this can throw an Exception if the user has changed the directory containing the project
-    project_info.setInfo("PROJECT_NAME", project_data.get("PROJECT_NAME", os.path.basename(project_dir)))
-    project_info.setInfo("PROJECT_PATH", os.path.dirname(project_file))
-    # Check for the Wizard version
-    wizard_version = project_data.get("WIZARD_VERSION", 0)
-    # Ignore the SOURCES_PATH inside the project file
-    project_data["SOURCES_PATH"] = project_dir
-    if "SOURCES_PATH" in info_dict:
-        project_data["SOURCES_PATH"] = info_dict["SOURCES_PATH"]
-    if os.path.exists(project_data["SOURCES_PATH"]):
-        project_info.setInfo("SOURCES_PATH", project_data["SOURCES_PATH"])
-    else:
-        raise VersionException(project_info)
-    if not isBertosDir(project_dir):
-        version_file = open(os.path.join(const.DATA_DIR, "vtemplates/VERSION"), "r").read()
-        open(os.path.join(project_dir, "VERSION"), "w").write(version_file.replace("$version", "").strip())
-    project_info.loadSourceTree()
-    cpu_name = project_data["CPU_NAME"]
-    project_info.setInfo("CPU_NAME", cpu_name)
-    cpu_info = loadCpuInfos(project_info)
-    for cpu in cpu_info:
-        if cpu["CPU_NAME"] == cpu_name:
-            project_info.setInfo("CPU_INFOS", cpu)
-            break
-    tag_list = getTagSet(cpu_info)
-    # Create, fill and store the dict with the tags
-    tag_dict = {}
-    for element in tag_list:
-        tag_dict[element] = False
-    infos = project_info.info("CPU_INFOS")
-    for tag in tag_dict:
-        if tag in infos["CPU_TAGS"] + [infos["CPU_NAME"], infos["TOOLCHAIN"]]:
-            tag_dict[tag] = True
-        else:
-            tag_dict[tag] = False
-    project_info.setInfo("ALL_CPU_TAGS", tag_dict)
-    if "TOOLCHAIN" in info_dict:
-        project_data["TOOLCHAIN"] = info_dict["TOOLCHAIN"]
-    if os.path.exists(project_data["TOOLCHAIN"]["path"]):
-        project_info.setInfo("TOOLCHAIN", project_data["TOOLCHAIN"])
-    else:
-        raise ToolchainException(project_info)
-    project_info.setInfo("SELECTED_FREQ", project_data["SELECTED_FREQ"])
-    project_info.setInfo("OUTPUT", project_data["OUTPUT"])
-    loadModuleData(project_info, True)
-    setEnabledModules(project_info, project_data["ENABLED_MODULES"])
-    return project_info
-
 def setEnabledModules(project_info, enabled_modules):
     modules = project_info.info("MODULES")
     files = {}