plugger.py
changeset 510 8038c08b9874
parent 506 24629d4fc805
child 511 518c30f2a507
--- a/plugger.py	Sat Dec 12 20:49:07 2009 +0100
+++ b/plugger.py	Sat Dec 12 20:51:56 2009 +0100
@@ -843,12 +843,18 @@
             childs.append(child.GetPlugInfos())
         return {"name" : "PLC (%s)"%self.GetProjectName(), "type" : None, "values" : childs}
 
-    def GetDefaultTarget(self):
-        target = self.Classes["BeremizRoot_TargetType"]()
+    def GetDefaultTargetName(self):
         if wx.Platform == '__WXMSW__':
-            target.setcontent({"name": "Win32", "value": self.Classes["TargetType_Win32"]()})
+            return "Win32"
         else:
-            target.setcontent({"name": "Linux", "value": self.Classes["TargetType_Linux"]()})
+            return "Linux"
+
+    def GetTarget(self):
+        target = self.BeremizRoot.getTargetType()
+        if target.getcontent() is None:
+            target = self.Classes["BeremizRoot_TargetType"]()
+            target_name = self.GetDefaultTargetName()
+            target.setcontent({"name": target_name, "value": self.Classes["TargetType_%s"%target_name]()})
         return target
     
     def GetParamsAttributes(self, path = None):
@@ -856,7 +862,7 @@
         if params[0]["name"] == "BeremizRoot":
             for child in params[0]["children"]:
                 if child["name"] == "TargetType" and child["value"] == '':
-                    child.update(self.GetDefaultTarget().getElementInfos("TargetType")) 
+                    child.update(self.GetTarget().getElementInfos("TargetType")) 
         return params
         
     def SetParamsAttribute(self, path, value):
@@ -1196,10 +1202,7 @@
         Return a Builder (compile C code into machine code)
         """
         # Get target, module and class name
-        target = self.BeremizRoot.getTargetType()
-        if target.getcontent() is None:
-            target = self.GetDefaultTarget()
-        targetname = target.getcontent()["name"]
+        targetname = self.GetTarget().getcontent()["name"]
         modulename = "targets." + targetname
         classname = targetname + "_target"
 
@@ -1390,12 +1393,7 @@
                 "init_calls":"\n",
                 "cleanup_calls":"\n"
                 }
-        
-        target = self.BeremizRoot.getTargetType()
-        if target.getcontent() is None:
-            target = self.GetDefaultTarget()
-        target_name = target.getcontent()["name"]
-        plc_main_code += targets.targetcode(target_name)
+        plc_main_code += targets.targetcode(self.GetTarget().getcontent()["name"])
         return plc_main_code
 
         
@@ -1454,7 +1452,7 @@
             open(fpath, "wb").write(fobject.read())
         # Now we can forget ExtraFiles (will close files object)
         del ExtraFiles
-
+        
         # Template based part of C code generation
         # files are stacked at the beginning, as files of plugin tree root
         for generator, filename, name in [