plugger.py
changeset 510 8038c08b9874
parent 506 24629d4fc805
child 511 518c30f2a507
equal deleted inserted replaced
509:aa5645a25d64 510:8038c08b9874
   841         childs = []
   841         childs = []
   842         for child in self.IterChilds():
   842         for child in self.IterChilds():
   843             childs.append(child.GetPlugInfos())
   843             childs.append(child.GetPlugInfos())
   844         return {"name" : "PLC (%s)"%self.GetProjectName(), "type" : None, "values" : childs}
   844         return {"name" : "PLC (%s)"%self.GetProjectName(), "type" : None, "values" : childs}
   845 
   845 
   846     def GetDefaultTarget(self):
   846     def GetDefaultTargetName(self):
   847         target = self.Classes["BeremizRoot_TargetType"]()
       
   848         if wx.Platform == '__WXMSW__':
   847         if wx.Platform == '__WXMSW__':
   849             target.setcontent({"name": "Win32", "value": self.Classes["TargetType_Win32"]()})
   848             return "Win32"
   850         else:
   849         else:
   851             target.setcontent({"name": "Linux", "value": self.Classes["TargetType_Linux"]()})
   850             return "Linux"
       
   851 
       
   852     def GetTarget(self):
       
   853         target = self.BeremizRoot.getTargetType()
       
   854         if target.getcontent() is None:
       
   855             target = self.Classes["BeremizRoot_TargetType"]()
       
   856             target_name = self.GetDefaultTargetName()
       
   857             target.setcontent({"name": target_name, "value": self.Classes["TargetType_%s"%target_name]()})
   852         return target
   858         return target
   853     
   859     
   854     def GetParamsAttributes(self, path = None):
   860     def GetParamsAttributes(self, path = None):
   855         params = PlugTemplate.GetParamsAttributes(self, path)
   861         params = PlugTemplate.GetParamsAttributes(self, path)
   856         if params[0]["name"] == "BeremizRoot":
   862         if params[0]["name"] == "BeremizRoot":
   857             for child in params[0]["children"]:
   863             for child in params[0]["children"]:
   858                 if child["name"] == "TargetType" and child["value"] == '':
   864                 if child["name"] == "TargetType" and child["value"] == '':
   859                     child.update(self.GetDefaultTarget().getElementInfos("TargetType")) 
   865                     child.update(self.GetTarget().getElementInfos("TargetType")) 
   860         return params
   866         return params
   861         
   867         
   862     def SetParamsAttribute(self, path, value):
   868     def SetParamsAttribute(self, path, value):
   863         if path.startswith("BeremizRoot.TargetType.") and self.BeremizRoot.getTargetType().getcontent() is None:
   869         if path.startswith("BeremizRoot.TargetType.") and self.BeremizRoot.getTargetType().getcontent() is None:
   864             self.BeremizRoot.setTargetType(self.GetDefaultTarget())
   870             self.BeremizRoot.setTargetType(self.GetDefaultTarget())
  1194     def GetBuilder(self):
  1200     def GetBuilder(self):
  1195         """
  1201         """
  1196         Return a Builder (compile C code into machine code)
  1202         Return a Builder (compile C code into machine code)
  1197         """
  1203         """
  1198         # Get target, module and class name
  1204         # Get target, module and class name
  1199         target = self.BeremizRoot.getTargetType()
  1205         targetname = self.GetTarget().getcontent()["name"]
  1200         if target.getcontent() is None:
       
  1201             target = self.GetDefaultTarget()
       
  1202         targetname = target.getcontent()["name"]
       
  1203         modulename = "targets." + targetname
  1206         modulename = "targets." + targetname
  1204         classname = targetname + "_target"
  1207         classname = targetname + "_target"
  1205 
  1208 
  1206         # Get module reference
  1209         # Get module reference
  1207         try :
  1210         try :
  1388                 "retrieve_calls":"\n",
  1391                 "retrieve_calls":"\n",
  1389                 "publish_calls":"\n",
  1392                 "publish_calls":"\n",
  1390                 "init_calls":"\n",
  1393                 "init_calls":"\n",
  1391                 "cleanup_calls":"\n"
  1394                 "cleanup_calls":"\n"
  1392                 }
  1395                 }
  1393         
  1396         plc_main_code += targets.targetcode(self.GetTarget().getcontent()["name"])
  1394         target = self.BeremizRoot.getTargetType()
       
  1395         if target.getcontent() is None:
       
  1396             target = self.GetDefaultTarget()
       
  1397         target_name = target.getcontent()["name"]
       
  1398         plc_main_code += targets.targetcode(target_name)
       
  1399         return plc_main_code
  1397         return plc_main_code
  1400 
  1398 
  1401         
  1399         
  1402     def _build(self):
  1400     def _build(self):
  1403         """
  1401         """
  1452         for fname,fobject in ExtraFiles:
  1450         for fname,fobject in ExtraFiles:
  1453             fpath = os.path.join(extrafilespath,fname)
  1451             fpath = os.path.join(extrafilespath,fname)
  1454             open(fpath, "wb").write(fobject.read())
  1452             open(fpath, "wb").write(fobject.read())
  1455         # Now we can forget ExtraFiles (will close files object)
  1453         # Now we can forget ExtraFiles (will close files object)
  1456         del ExtraFiles
  1454         del ExtraFiles
  1457 
  1455         
  1458         # Template based part of C code generation
  1456         # Template based part of C code generation
  1459         # files are stacked at the beginning, as files of plugin tree root
  1457         # files are stacked at the beginning, as files of plugin tree root
  1460         for generator, filename, name in [
  1458         for generator, filename, name in [
  1461            # debugger code
  1459            # debugger code
  1462            (self.Generate_plc_debugger, "plc_debugger.c", "Debugger"),
  1460            (self.Generate_plc_debugger, "plc_debugger.c", "Debugger"),