plcopen/plcopen.py
changeset 1298 f034fb2b1aab
parent 1294 f02ba5b83811
child 1299 9ffc49bfdf9d
equal deleted inserted replaced
1297:cd639725fba5 1298:f034fb2b1aab
  2323         infos = _getelementinfos(self)
  2323         infos = _getelementinfos(self)
  2324         infos["type"] = "step"
  2324         infos["type"] = "step"
  2325         specific_values = infos["specific_values"]
  2325         specific_values = infos["specific_values"]
  2326         specific_values["name"] = self.getname()
  2326         specific_values["name"] = self.getname()
  2327         specific_values["initial"] = self.getinitialStep()
  2327         specific_values["initial"] = self.getinitialStep()
  2328         if self.connectionPointIn:
  2328         if self.connectionPointIn is not None:
  2329             infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True))
  2329             infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True))
  2330         if self.connectionPointOut:
  2330         if self.connectionPointOut is not None:
  2331             infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut))
  2331             infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut))
  2332         if self.connectionPointOutAction:
  2332         if self.connectionPointOutAction is not None:
  2333             specific_values["action"] = _getconnectioninfos(self, self.connectionPointOutAction)
  2333             specific_values["action"] = _getconnectioninfos(self, self.connectionPointOutAction)
  2334         return infos
  2334         return infos
  2335     setattr(cls, "getinfos", getinfos)
  2335     setattr(cls, "getinfos", getinfos)
  2336 
  2336 
  2337     def Search(self, criteria, parent_infos=[]):
  2337     def Search(self, criteria, parent_infos=[]):
  2366             priority = 0
  2366             priority = 0
  2367         specific_values["priority"] = priority
  2367         specific_values["priority"] = priority
  2368         condition = self.getconditionContent()
  2368         condition = self.getconditionContent()
  2369         specific_values["condition_type"] = condition["type"]
  2369         specific_values["condition_type"] = condition["type"]
  2370         if specific_values["condition_type"] == "connection":
  2370         if specific_values["condition_type"] == "connection":
  2371             specific_values["connection"] = _getconnectioninfos(self, condition, True)
  2371             specific_values["connection"] = _getconnectioninfos(self, condition["value"], True)
  2372         else:
  2372         else:
  2373             specific_values["condition"] = condition
  2373             specific_values["condition"] = condition["value"]
  2374         infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True))
  2374         infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True))
  2375         infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut))
  2375         infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut))
  2376         return infos
  2376         return infos
  2377     setattr(cls, "getinfos", getinfos)
  2377     setattr(cls, "getinfos", getinfos)
  2378 
  2378 
  2379     def setconditionContent(self, condition_type, value):
  2379     def setconditionContent(self, condition_type, value):
  2380         if not self.condition:
  2380         if self.condition is None:
  2381             self.addcondition()
  2381             self.addcondition()
  2382         if condition_type == "connection":
  2382         if condition_type == "connection":
  2383             condition = PLCOpenParser.CreateElement("connectionPointIn", "condition")
  2383             condition = PLCOpenParser.CreateElement("connectionPointIn", "condition")
  2384         else:
  2384         else:
  2385             condition = PLCOpenParser.CreateElement(condition_type, "condition")
  2385             condition = PLCOpenParser.CreateElement(condition_type, "condition")
  2390             condition.setcontent(PLCOpenParser.CreateElement("ST", "inline"))
  2390             condition.setcontent(PLCOpenParser.CreateElement("ST", "inline"))
  2391             condition.settext(value)
  2391             condition.settext(value)
  2392     setattr(cls, "setconditionContent", setconditionContent)
  2392     setattr(cls, "setconditionContent", setconditionContent)
  2393         
  2393         
  2394     def getconditionContent(self):
  2394     def getconditionContent(self):
  2395         if self.condition:
  2395         if self.condition is not None:
  2396             content = self.condition.getcontent()
  2396             content = self.condition.getcontent()
  2397             values = {"type" : content.getLocalTag()}
  2397             values = {"type" : content.getLocalTag()}
  2398             if values["type"] == "reference":
  2398             if values["type"] == "reference":
  2399                 values["value"] = content.getname()
  2399                 values["value"] = content.getname()
  2400             elif values["type"] == "inline":
  2400             elif values["type"] == "inline":
  2405             return values
  2405             return values
  2406         return ""
  2406         return ""
  2407     setattr(cls, "getconditionContent", getconditionContent)
  2407     setattr(cls, "getconditionContent", getconditionContent)
  2408 
  2408 
  2409     def getconditionConnection(self):
  2409     def getconditionConnection(self):
  2410         if self.condition:
  2410         if self.condition is not None:
  2411             content = self.condition.getcontent()
  2411             content = self.condition.getcontent()
  2412             if content.getLocalTag() == "connection":
  2412             if content.getLocalTag() == "connection":
  2413                 return content
  2413                 return content
  2414         return None
  2414         return None
  2415     setattr(cls, "getconditionConnection", getconditionConnection)
  2415     setattr(cls, "getconditionConnection", getconditionConnection)
  2528             NodeSetAttr(node, "y", "0")
  2528             NodeSetAttr(node, "y", "0")
  2529             tree.childNodes.insert(0, node)
  2529             tree.childNodes.insert(0, node)
  2530     setattr(cls, "compatibility", compatibility)
  2530     setattr(cls, "compatibility", compatibility)
  2531     
  2531     
  2532     def setreferenceName(self, name):
  2532     def setreferenceName(self, name):
  2533         if self.reference:
  2533         if self.reference is not None:
  2534             self.reference.setname(name)
  2534             self.reference.setname(name)
  2535     setattr(cls, "setreferenceName", setreferenceName)
  2535     setattr(cls, "setreferenceName", setreferenceName)
  2536     
  2536     
  2537     def getreferenceName(self):
  2537     def getreferenceName(self):
  2538         if self.reference:
  2538         if self.reference is not None:
  2539             return self.reference.getname()
  2539             return self.reference.getname()
  2540         return None
  2540         return None
  2541     setattr(cls, "getreferenceName", getreferenceName)
  2541     setattr(cls, "getreferenceName", getreferenceName)
  2542 
  2542 
  2543     def setinlineContent(self, content):
  2543     def setinlineContent(self, content):
  2544         if self.inline:
  2544         if self.inline is not None:
  2545             self.inline.setcontent(PLCOpenParser.CreateElement("ST", "action"))
  2545             self.inline.setcontent(PLCOpenParser.CreateElement("ST", "inline"))
  2546             self.inline.setanyText(content)
  2546             self.inline.settext(content)
  2547     setattr(cls, "setinlineContent", setinlineContent)
  2547     setattr(cls, "setinlineContent", setinlineContent)
  2548     
  2548     
  2549     def getinlineContent(self):
  2549     def getinlineContent(self):
  2550         if self.inline:
  2550         if self.inline is not None:
  2551             return self.inline.getanyText()
  2551             return self.inline.gettext()
  2552         return None
  2552         return None
  2553     setattr(cls, "getinlineContent", getinlineContent)
  2553     setattr(cls, "getinlineContent", getinlineContent)
  2554 
  2554 
  2555     def updateElementName(self, old_name, new_name):
  2555     def updateElementName(self, old_name, new_name):
  2556         if self.reference and self.reference.getname() == old_name:
  2556         if self.reference is not None and self.reference.getname() == old_name:
  2557             self.reference.setname(new_name)
  2557             self.reference.setname(new_name)
  2558         if self.inline:
  2558         if self.inline is not None:
  2559             self.inline.updateElementName(old_name, new_name)
  2559             self.inline.updateElementName(old_name, new_name)
  2560     setattr(cls, "updateElementName", updateElementName)
  2560     setattr(cls, "updateElementName", updateElementName)
  2561 
  2561 
  2562     def updateElementAddress(self, address_model, new_leading):
  2562     def updateElementAddress(self, address_model, new_leading):
  2563         if self.reference:
  2563         if self.reference is not None:
  2564             self.reference.setname(update_address(self.reference.getname(), address_model, new_leading))
  2564             self.reference.setname(update_address(self.reference.getname(), address_model, new_leading))
  2565         if self.inline:
  2565         if self.inline is not None:
  2566             self.inline.updateElementAddress(address_model, new_leading)
  2566             self.inline.updateElementAddress(address_model, new_leading)
  2567     setattr(cls, "updateElementAddress", updateElementAddress)
  2567     setattr(cls, "updateElementAddress", updateElementAddress)
  2568 
  2568 
  2569     def Search(self, criteria, parent_infos=[]):
  2569     def Search(self, criteria, parent_infos=[]):
  2570         qualifier = self.getqualifier()
  2570         qualifier = self.getqualifier()
  2595     setattr(cls, "getinfos", getinfos)
  2595     setattr(cls, "getinfos", getinfos)
  2596     
  2596     
  2597     def setactions(self, actions):
  2597     def setactions(self, actions):
  2598         self.action = []
  2598         self.action = []
  2599         for params in actions:
  2599         for params in actions:
  2600             action = PLCOpenParser.GetElementClass("action", "actionBlock")()
  2600             action = PLCOpenParser.CreateElement("action", "actionBlock")
       
  2601             self.appendaction(action)
  2601             action.setqualifier(params["qualifier"])
  2602             action.setqualifier(params["qualifier"])
  2602             if params["type"] == "reference":
  2603             if params["type"] == "reference":
  2603                 action.addreference()
  2604                 action.addreference()
  2604                 action.setreferenceName(params["value"])
  2605                 action.setreferenceName(params["value"])
  2605             else:
  2606             else:
  2607                 action.setinlineContent(params["value"])
  2608                 action.setinlineContent(params["value"])
  2608             if params.has_key("duration"):
  2609             if params.has_key("duration"):
  2609                 action.setduration(params["duration"])
  2610                 action.setduration(params["duration"])
  2610             if params.has_key("indicator"):
  2611             if params.has_key("indicator"):
  2611                 action.setindicator(params["indicator"])
  2612                 action.setindicator(params["indicator"])
  2612             self.action.append(action)
       
  2613     setattr(cls, "setactions", setactions)
  2613     setattr(cls, "setactions", setactions)
  2614 
  2614 
  2615     def getactions(self):
  2615     def getactions(self):
  2616         actions = []
  2616         actions = []
  2617         for action in self.action:
  2617         for action in self.action:
  2618             params = {}
  2618             params = {}
  2619             params["qualifier"] = action.getqualifier()
  2619             params["qualifier"] = action.getqualifier()
  2620             if params["qualifier"] is None:
  2620             if params["qualifier"] is None:
  2621                 params["qualifier"] = "N"
  2621                 params["qualifier"] = "N"
  2622             if action.getreference():
  2622             if action.getreference() is not None:
  2623                 params["type"] = "reference"
  2623                 params["type"] = "reference"
  2624                 params["value"] = action.getreferenceName()
  2624                 params["value"] = action.getreferenceName()
  2625             elif action.getinline():
  2625             elif action.getinline() is not None:
  2626                 params["type"] = "inline"
  2626                 params["type"] = "inline"
  2627                 params["value"] = action.getinlineContent()
  2627                 params["value"] = action.getinlineContent()
  2628             duration = action.getduration()
  2628             duration = action.getduration()
  2629             if duration:
  2629             if duration:
  2630                 params["duration"] = duration
  2630                 params["duration"] = duration
  2631             indicator = action.getindicator()
  2631             indicator = action.getindicator()
  2632             if indicator:
  2632             if indicator is not None:
  2633                 params["indicator"] = indicator
  2633                 params["indicator"] = indicator
  2634             actions.append(params)
  2634             actions.append(params)
  2635         return actions
  2635         return actions
  2636     setattr(cls, "getactions", getactions)
  2636     setattr(cls, "getactions", getactions)
  2637 
  2637