Change the name of the module
[bertos.git] / wizard / bertos_utils.py
index 4fbc1b9c600d13a257444a14ff6c924cc436b033..191aad32f3643ef722ca67c4e044d49c0511bf0f 100644 (file)
@@ -19,7 +19,7 @@ import copytree
 import pickle
 
 import const
-from plugins import codelite_project
+from plugins import codelite
 import DefineException
 
 def isBertosDir(directory):
@@ -79,9 +79,9 @@ def createBertosProject(project_info):
         for start, parameter in information["paramlist"]:
             infos = information[parameter]
             value = infos["value"]
-            if "unsigned" in infos["informations"].keys() and infos["informations"]["unsigned"]:
+            if "unsigned" in infos["informations"] and infos["informations"]["unsigned"]:
                 value += "U"
-            if "long" in infos["informations"].keys() and infos["informations"]["long"]:
+            if "long" in infos["informations"] and infos["informations"]["long"]:
                 value += "L"
             string = sub(string, parameter, value)
         f = open(cfgdir + "/" + os.path.basename(configuration), "w")
@@ -96,7 +96,7 @@ def createBertosProject(project_info):
     open(prjdir + "/main.c", "w").write(main)
     # Codelite project files
     if "codelite" in project_info.info("OUTPUT"):
-        codelite_project.createProject(project_info)
+        codelite.createProject(project_info)
 
 def mkGenerator(project_info, makefile):
     """
@@ -115,8 +115,8 @@ def mkGenerator(project_info, makefile):
     mk_data["$asflags"] = " ".join(project_info.info("CPU_INFOS")["AS_FLAGS"])
     mk_data["$arflags"] = " ".join(project_info.info("CPU_INFOS")["AR_FLAGS"])
     mk_data["$csrc"], mk_data["$pcsrc"], mk_data["$cppasrc"], mk_data["$cxxsrc"], mk_data["$asrc"], mk_data["$constants"] = csrcGenerator(project_info)
-    mk_data["$prefix"] = project_info.info("TOOLCHAIN")["path"].split("gcc")[0]
-    mk_data["$suffix"] = project_info.info("TOOLCHAIN")["path"].split("gcc")[1]
+    mk_data["$prefix"] = replaceSeparators(project_info.info("TOOLCHAIN")["path"].split("gcc")[0])
+    mk_data["$suffix"] = replaceSeparators(project_info.info("TOOLCHAIN")["path"].split("gcc")[1])
     mk_data["$main"] = os.path.basename(project_info.info("PROJECT_PATH")) + "/main.c"
     for key in mk_data:
         while makefile.find(key) != -1:
@@ -206,8 +206,7 @@ def findModuleFiles(module, project_info):
     for filename, path in findDefinitions(module + ".c", project_info) + \
             findDefinitions(module + "_" + project_info.info("CPU_INFOS")["TOOLCHAIN"] + ".c", project_info):
         path = path.replace(project_info.info("SOURCES_PATH") + os.sep, "")
-        if os.sep != "/":
-            path = replaceSeparators(path)
+        path = replaceSeparators(path)
         cfiles.append(path + "/" + filename)
     # .s files related to the module and the cpu architecture
     for filename, path in findDefinitions(module + ".s", project_info) + \
@@ -215,8 +214,7 @@ def findModuleFiles(module, project_info):
             findDefinitions(module + ".S", project_info) + \
             findDefinitions(module + "_" + project_info.info("CPU_INFOS")["TOOLCHAIN"] + ".S", project_info):
         path = path.replace(project_info.info("SOURCES_PATH") + os.sep, "")
-        if os.sep != "/":
-            path = replaceSeparators(path)
+        path = replaceSeparators(path)
         sfiles.append(path + "/" + filename)
     # .c and .s files related to the module and the cpu tags
     for tag in project_info.info("CPU_INFOS")["CPU_TAGS"]:
@@ -228,8 +226,7 @@ def findModuleFiles(module, project_info):
         for filename, path in findDefinitions(module + "_" + tag + ".s", project_info) + \
                 findDefinitions(module + "_" + tag + ".S", project_info):
             path = path.replace(project_info.info("SOURCES_PATH") + os.sep, "")
-            if os.sep != "/":
-                path = replaceSeparators(path)
+            path = replaceSeparators(path)
             sfiles.append(path + "/" + filename)
     return cfiles, sfiles
 
@@ -237,8 +234,9 @@ def replaceSeparators(path):
     """
     Replace the separators in the given path with unix standard separator.
     """
-    while path.find(os.sep) != -1:
-        path = path.replace(os.sep, "/")
+    if os.sep != "/":
+        while path.find(os.sep) != -1:
+            path = path.replace(os.sep, "/")
     return path
 
 def getSystemPath():
@@ -342,11 +340,11 @@ def loadModuleDefinition(first_comment):
         elif line.find("\\brief") != -1:
             module_definition["module_description"] = line[line.find("\\brief") + len("\\brief "):]
     module_dict = {}
-    if "module_name" in module_definition.keys():
+    if "module_name" in module_definition:
         module_name = module_definition[const.MODULE_DEFINITION["module_name"]]
         del module_definition[const.MODULE_DEFINITION["module_name"]]
         module_dict[module_name] = {}
-        if const.MODULE_DEFINITION["module_depends"] in module_definition.keys():
+        if const.MODULE_DEFINITION["module_depends"] in module_definition:
             depends = module_definition[const.MODULE_DEFINITION["module_depends"]]
             del module_definition[const.MODULE_DEFINITION["module_depends"]]
             if type(depends) == str:
@@ -354,20 +352,20 @@ def loadModuleDefinition(first_comment):
             module_dict[module_name]["depends"] = depends
         else:
             module_dict[module_name]["depends"] = ()
-        if const.MODULE_DEFINITION["module_configuration"] in module_definition.keys():
+        if const.MODULE_DEFINITION["module_configuration"] in module_definition:
             module_dict[module_name]["configuration"] = module_definition[const.MODULE_DEFINITION["module_configuration"]]
             del module_definition[const.MODULE_DEFINITION["module_configuration"]]
         else:
             module_dict[module_name]["configuration"] = ""
-        if "module_description" in module_definition.keys():
+        if "module_description" in module_definition:
             module_dict[module_name]["description"] = module_definition["module_description"]
             del module_definition["module_description"]
-        if const.MODULE_DEFINITION["module_harvard"] in module_definition.keys():
+        if const.MODULE_DEFINITION["module_harvard"] in module_definition:
             harvard = module_definition[const.MODULE_DEFINITION["module_harvard"]]
             if harvard == "both" or harvard == "pgm_memory":
                 module_dict[module_name]["harvard"] = harvard
             del module_definition[const.MODULE_DEFINITION["module_harvard"]]
-        if const.MODULE_DEFINITION["module_hw"] in module_definition.keys():
+        if const.MODULE_DEFINITION["module_hw"] in module_definition:
             hw = module_definition[const.MODULE_DEFINITION["module_hw"]]
             del module_definition[const.MODULE_DEFINITION["module_hw"]]
             if type(hw) == str:
@@ -375,7 +373,7 @@ def loadModuleDefinition(first_comment):
             module_dict[module_name]["hw"] = hw
         else:
             module_dict[module_name]["hw"] = ()
-        if const.MODULE_DEFINITION["module_supports"] in module_definition.keys():
+        if const.MODULE_DEFINITION["module_supports"] in module_definition:
             supports = module_definition[const.MODULE_DEFINITION["module_supports"]]
             del module_definition[const.MODULE_DEFINITION["module_supports"]]
             module_dict[module_name]["supports"] = supports
@@ -383,23 +381,22 @@ def loadModuleDefinition(first_comment):
         module_dict[module_name]["enabled"] = False
     return to_be_parsed, module_dict
 
-def isSupported(module, project):
+def isSupported(project, module=None, property_id=None):
+    if not module and property_id:
+        item = project.info("CONFIGURATIONS")[property_id[0]][property_id[1]]["informations"]
+    else:
+        item = project.info("MODULES")[module]
     tag_dict = project.info("ALL_CPU_TAGS")
-    module = project.info("MODULES")[module]
-    if "supports" in module:
-        support_string = module["supports"]
-        for tag, value in tag_dict.items():
-            while support_string.find(tag) != -1:
-                support_string = support_string.replace(tag, value)
+    if "supports" in item:
+        support_string = item["supports"]
         supported = {}
         try:
-            exec "supported = " + support_string in {}, supported
+            exec "supported = " + support_string in tag_dict, supported
         except:
             raise SupportedException(support_string)
         return supported["supported"]
     else:
         return True
-            
 
 def loadDefineLists(comment_list):
     define_list = {}
@@ -486,7 +483,7 @@ def loadModuleData(project):
                     information["depends"] = ()
                 information["depends"] += (filename.split(".")[0],)
                 information["category"] = os.path.basename(path)
-                if "configuration" in information.keys() and len(information["configuration"]):
+                if "configuration" in information and len(information["configuration"]):
                     configuration = module_dict[module]["configuration"]
                     try:
                         configuration_info[configuration] = loadConfigurationInfos(project.info("SOURCES_PATH") + "/" + configuration)
@@ -545,12 +542,12 @@ def loadConfigurationInfos(path):
         configuration_infos[name]["informations"] = informations
         if not "type" in configuration_infos[name]["informations"]:
             configuration_infos[name]["informations"]["type"] = findParameterType(configuration_infos[name])
-        if ("type" in configuration_infos[name]["informations"].keys() and
+        if ("type" in configuration_infos[name]["informations"] and
                 configuration_infos[name]["informations"]["type"] == "int" and
                 configuration_infos[name]["value"].find("L") != -1):
             configuration_infos[name]["informations"]["long"] = True
             configuration_infos[name]["value"] = configuration_infos[name]["value"].replace("L", "")
-        if ("type" in configuration_infos[name]["informations"].keys() and
+        if ("type" in configuration_infos[name]["informations"] and
                 configuration_infos[name]["informations"]["type"] == "int" and
                 configuration_infos[name]["value"].find("U") != -1):
             configuration_infos[name]["informations"]["unsigned"] = True
@@ -575,7 +572,7 @@ def isInt(informations):
     """
     Return True if the value is a simple int.
     """
-    if ("long" not in informatios.keys() or not informations["long"]) and ("unsigned" not in informations.keys() or informations["unsigned"]):
+    if ("long" not in informatios or not informations["long"]) and ("unsigned" not in informations or informations["unsigned"]):
         return True
     else:
         return False
@@ -584,7 +581,7 @@ def isLong(informations):
     """
     Return True if the value is a long.
     """
-    if "long" in informations.keys() and informations["long"] and "unsigned" not in informations.keys():
+    if "long" in informations and informations["long"] and "unsigned" not in informations:
         return True
     else:
         return False
@@ -593,7 +590,7 @@ def isUnsigned(informations):
     """
     Return True if the value is an unsigned.
     """
-    if "unsigned" in informations.keys() and informations["unsigned"] and "long" not in informations.keys():
+    if "unsigned" in informations and informations["unsigned"] and "long" not in informations:
         return True
     else:
         return False
@@ -602,7 +599,7 @@ def isUnsignedLong(informations):
     """
     Return True if the value is an unsigned long.
     """
-    if "unsigned" in informations.keys() and "long" in informations.keys() and informations["unsigned"] and informations["long"]:
+    if "unsigned" in informations and "long" in informations and informations["unsigned"] and informations["long"]:
         return True
     else:
         return False