diff -r 204ef2daa33c -r c1e6c712cc35 plcopen/plcopen.py --- a/plcopen/plcopen.py Tue Oct 01 09:24:02 2013 +0200 +++ b/plcopen/plcopen.py Wed Oct 02 01:21:35 2013 +0200 @@ -1874,145 +1874,8 @@ setattr(cls, "Search", _SearchInElement) return cls -def _getexecutionOrder(instance, specific_values): - executionOrder = instance.getexecutionOrderId() - if executionOrder is None: - executionOrder = 0 - specific_values["executionOrder"] = executionOrder - -def _getdefaultmodifiers(instance, infos): - infos["negated"] = instance.getnegated() - infos["edge"] = instance.getedge() - -def _getinputmodifiers(instance, infos): - infos["negated"] = instance.getnegatedIn() - infos["edge"] = instance.getedgeIn() - -def _getoutputmodifiers(instance, infos): - infos["negated"] = instance.getnegatedOut() - infos["edge"] = instance.getedgeOut() - -MODIFIERS_FUNCTIONS = {"default": _getdefaultmodifiers, - "input": _getinputmodifiers, - "output": _getoutputmodifiers} - -def _getconnectioninfos(instance, connection, links=False, modifiers=None, parameter=False): - infos = {"position": connection.getrelPositionXY()} - if parameter: - infos["name"] = instance.getformalParameter() - MODIFIERS_FUNCTIONS.get(modifiers, lambda x, y: None)(instance, infos) - if links: - infos["links"] = [] - connections = connection.getconnections() - if connections is not None: - for link in connections: - dic = {"refLocalId": link.getrefLocalId(), - "points": link.getpoints(), - "formalParameter": link.getformalParameter()} - infos["links"].append(dic) - return infos - -def _getelementinfos(instance): - return {"id": instance.getlocalId(), - "x": instance.getx(), - "y": instance.gety(), - "height": instance.getheight(), - "width": instance.getwidth(), - "specific_values": {}, - "inputs": [], - "outputs": []} - -def _getvariableinfosFunction(type, input, output): - def getvariableinfos(self): - infos = _getelementinfos(self) - infos["type"] = type - specific_values = infos["specific_values"] - specific_values["name"] = self.getexpression() - _getexecutionOrder(self, specific_values) - if input and output: - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True, "input")) - infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut, False, "output")) - elif input: - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True, "default")) - elif output: - infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut, False, "default")) - return infos - return getvariableinfos - -def _getconnectorinfosFunction(type): - def getconnectorinfos(self): - infos = _getelementinfos(self) - infos["type"] = type - infos["specific_values"]["name"] = self.getname() - if type == "connector": - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True)) - elif type == "continuation": - infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut)) - return infos - return getconnectorinfos - -def _getpowerrailinfosFunction(type): - def getpowerrailinfos(self): - infos = _getelementinfos(self) - infos["type"] = type - if type == "rightPowerRail": - for connectionPointIn in self.getconnectionPointIn(): - infos["inputs"].append(_getconnectioninfos(self, connectionPointIn, True)) - infos["specific_values"]["connectors"] = len(infos["inputs"]) - elif type == "leftPowerRail": - for connectionPointOut in self.getconnectionPointOut(): - infos["outputs"].append(_getconnectioninfos(self, connectionPointOut)) - infos["specific_values"]["connectors"] = len(infos["outputs"]) - return infos - return getpowerrailinfos - -def _getldelementinfosFunction(ld_element_type): - def getldelementinfos(self): - infos = _getelementinfos(self) - infos["type"] = ld_element_type - specific_values = infos["specific_values"] - specific_values["name"] = self.getvariable() - _getexecutionOrder(self, specific_values) - specific_values["negated"] = self.getnegated() - specific_values["edge"] = self.getedge() - if ld_element_type == "coil": - specific_values["storage"] = self.getstorage() - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True)) - infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut)) - return infos - return getldelementinfos - -DIVERGENCE_TYPES = {(True, True): "simultaneousDivergence", - (True, False): "selectionDivergence", - (False, True): "simultaneousConvergence", - (False, False): "selectionConvergence"} - -def _getdivergenceinfosFunction(divergence, simultaneous): - def getdivergenceinfos(self): - infos = _getelementinfos(self) - infos["type"] = DIVERGENCE_TYPES[(divergence, simultaneous)] - if divergence: - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True)) - for connectionPointOut in self.getconnectionPointOut(): - infos["outputs"].append(_getconnectioninfos(self, connectionPointOut)) - infos["specific_values"]["connectors"] = len(infos["outputs"]) - else: - for connectionPointIn in self.getconnectionPointIn(): - infos["inputs"].append(_getconnectioninfos(self, connectionPointIn, True)) - infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut)) - infos["specific_values"]["connectors"] = len(infos["inputs"]) - return infos - return getdivergenceinfos - cls = _initElementClass("comment", "commonObjects") if cls: - def getinfos(self): - infos = _getelementinfos(self) - infos["type"] = "comment" - infos["specific_values"]["content"] = self.getcontentText() - return infos - setattr(cls, "getinfos", getinfos) - def setcontentText(self, text): self.content.setanyText(text) setattr(cls, "setcontentText", setcontentText) @@ -2042,19 +1905,6 @@ return bbox setattr(cls, "getBoundingBox", getBoundingBox) - def getinfos(self): - infos = _getelementinfos(self) - infos["type"] = self.gettypeName() - specific_values = infos["specific_values"] - specific_values["name"] = self.getinstanceName() - _getexecutionOrder(self, specific_values) - for variable in self.inputVariables.getvariable(): - infos["inputs"].append(_getconnectioninfos(variable, variable.connectionPointIn, True, "default", True)) - for variable in self.outputVariables.getvariable(): - infos["outputs"].append(_getconnectioninfos(variable, variable.connectionPointOut, False, "default", True)) - return infos - setattr(cls, "getinfos", getinfos) - def updateElementName(self, old_name, new_name): if self.typeName == old_name: self.typeName = new_name @@ -2092,14 +1942,6 @@ return search_result setattr(cls, "Search", Search) -cls = _initElementClass("leftPowerRail", "ldObjects") -if cls: - setattr(cls, "getinfos", _getpowerrailinfosFunction("leftPowerRail")) - -cls = _initElementClass("rightPowerRail", "ldObjects", "multiple") -if cls: - setattr(cls, "getinfos", _getpowerrailinfosFunction("rightPowerRail")) - def _UpdateLDElementName(self, old_name, new_name): if self.variable == old_name: self.variable = new_name @@ -2114,60 +1956,24 @@ cls = _initElementClass("contact", "ldObjects", "single") if cls: - setattr(cls, "getinfos", _getldelementinfosFunction("contact")) setattr(cls, "updateElementName", _UpdateLDElementName) setattr(cls, "updateElementAddress", _UpdateLDElementAddress) setattr(cls, "Search", _getSearchInLDElement("contact")) cls = _initElementClass("coil", "ldObjects", "single") if cls: - setattr(cls, "getinfos", _getldelementinfosFunction("coil")) setattr(cls, "updateElementName", _UpdateLDElementName) setattr(cls, "updateElementAddress", _UpdateLDElementAddress) setattr(cls, "Search", _getSearchInLDElement("coil")) cls = _initElementClass("step", "sfcObjects", "single") if cls: - def getinfos(self): - infos = _getelementinfos(self) - infos["type"] = "step" - specific_values = infos["specific_values"] - specific_values["name"] = self.getname() - specific_values["initial"] = self.getinitialStep() - if self.connectionPointIn is not None: - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True)) - if self.connectionPointOut is not None: - infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut)) - if self.connectionPointOutAction is not None: - specific_values["action"] = _getconnectioninfos(self, self.connectionPointOutAction) - return infos - setattr(cls, "getinfos", getinfos) - def Search(self, criteria, parent_infos=[]): return _Search([("name", self.getname())], criteria, parent_infos + ["step", self.getlocalId()]) setattr(cls, "Search", Search) cls = _initElementClass("transition", "sfcObjects") if cls: - def getinfos(self): - infos = _getelementinfos(self) - infos["type"] = "transition" - specific_values = infos["specific_values"] - priority = self.getpriority() - if priority is None: - priority = 0 - specific_values["priority"] = priority - condition = self.getconditionContent() - specific_values["condition_type"] = condition["type"] - if specific_values["condition_type"] == "connection": - specific_values["connection"] = _getconnectioninfos(self, condition["value"], True) - else: - specific_values["condition"] = condition["value"] - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True)) - infos["outputs"].append(_getconnectioninfos(self, self.connectionPointOut)) - return infos - setattr(cls, "getinfos", getinfos) - def setconditionContent(self, condition_type, value): if self.condition is None: self.addcondition() @@ -2278,32 +2084,8 @@ return search_result setattr(cls, "Search", Search) -cls = _initElementClass("selectionDivergence", "sfcObjects", "single") -if cls: - setattr(cls, "getinfos", _getdivergenceinfosFunction(True, False)) - -cls = _initElementClass("selectionConvergence", "sfcObjects", "multiple") -if cls: - setattr(cls, "getinfos", _getdivergenceinfosFunction(False, False)) - -cls = _initElementClass("simultaneousDivergence", "sfcObjects", "single") -if cls: - setattr(cls, "getinfos", _getdivergenceinfosFunction(True, True)) - -cls = _initElementClass("simultaneousConvergence", "sfcObjects", "multiple") -if cls: - setattr(cls, "getinfos", _getdivergenceinfosFunction(False, True)) - cls = _initElementClass("jumpStep", "sfcObjects", "single") if cls: - def getinfos(self): - infos = _getelementinfos(self) - infos["type"] = "jump" - infos["specific_values"]["target"] = self.gettargetName() - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True)) - return infos - setattr(cls, "getinfos", getinfos) - def Search(self, criteria, parent_infos): return _Search([("target", self.gettargetName())], criteria, parent_infos + ["jump", self.getlocalId()]) setattr(cls, "Search", Search) @@ -2361,14 +2143,6 @@ cls = _initElementClass("actionBlock", "commonObjects", "single") if cls: - def getinfos(self): - infos = _getelementinfos(self) - infos["type"] = "actionBlock" - infos["specific_values"]["actions"] = self.getactions() - infos["inputs"].append(_getconnectioninfos(self, self.connectionPointIn, True)) - return infos - setattr(cls, "getinfos", getinfos) - def setactions(self, actions): self.action = [] for params in actions: @@ -2440,21 +2214,18 @@ cls = _initElementClass("inVariable", "fbdObjects") if cls: - setattr(cls, "getinfos", _getvariableinfosFunction("input", False, True)) setattr(cls, "updateElementName", _UpdateIOElementName) setattr(cls, "updateElementAddress", _UpdateIOElementAddress) setattr(cls, "Search", _SearchInIOVariable) cls = _initElementClass("outVariable", "fbdObjects", "single") if cls: - setattr(cls, "getinfos", _getvariableinfosFunction("output", True, False)) setattr(cls, "updateElementName", _UpdateIOElementName) setattr(cls, "updateElementAddress", _UpdateIOElementAddress) setattr(cls, "Search", _SearchInIOVariable) cls = _initElementClass("inOutVariable", "fbdObjects", "single") if cls: - setattr(cls, "getinfos", _getvariableinfosFunction("inout", True, True)) setattr(cls, "updateElementName", _UpdateIOElementName) setattr(cls, "updateElementAddress", _UpdateIOElementAddress) setattr(cls, "Search", _SearchInIOVariable) @@ -2465,7 +2236,6 @@ cls = _initElementClass("continuation", "commonObjects") if cls: - setattr(cls, "getinfos", _getconnectorinfosFunction("continuation")) setattr(cls, "Search", _SearchInConnector) def updateElementName(self, old_name, new_name): @@ -2475,7 +2245,6 @@ cls = _initElementClass("connector", "commonObjects", "single") if cls: - setattr(cls, "getinfos", _getconnectorinfosFunction("connector")) setattr(cls, "Search", _SearchInConnector) def updateElementName(self, old_name, new_name):