diff -r 42a9b03bba82 -r 25ffba02b6a8 PLCControler.py --- a/PLCControler.py Fri Jul 24 09:55:11 2009 +0200 +++ b/PLCControler.py Fri Jul 24 10:47:35 2009 +0200 @@ -1592,282 +1592,10 @@ else: instance = element.getrandomInstance(exclude) if instance is not None: - if id is not None: - infos["id"] = id - else: - infos["id"] = instance.getlocalId() - infos["x"] = instance.getx() - infos["y"] = instance.gety() - infos["height"] = instance.getheight() - infos["width"] = instance.getwidth() - if isinstance(instance, plcopen.fbdObjects_block): - infos["name"] = instance.getinstanceName() - infos["type"] = instance.gettypeName() - executionOrder = instance.getexecutionOrderId() - if executionOrder is not None: - infos["executionOrder"] = executionOrder - else: - infos["executionOrder"] = 0 - infos["connectors"] = {"inputs":[],"outputs":[]} - for variable in instance.inputVariables.getvariable(): - connector = {} - connector["name"] = variable.getformalParameter() - connector["position"] = variable.connectionPointIn.getrelPositionXY() - connector["negated"] = variable.getnegated() - connector["edge"] = variable.getedge() - connector["links"] = [] - connections = variable.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - connector["links"].append(dic) - infos["connectors"]["inputs"].append(connector) - for variable in instance.outputVariables.getvariable(): - connector = {} - connector["name"] = variable.getformalParameter() - connector["position"] = variable.connectionPointOut.getrelPositionXY() - connector["negated"] = variable.getnegated() - connector["edge"] = variable.getedge() - infos["connectors"]["outputs"].append(connector) - elif isinstance(instance, plcopen.fbdObjects_inVariable): - infos["name"] = instance.getexpression() - infos["value_type"] = self.GetEditedElementVarValueType(tagname, infos["name"], debug) - infos["type"] = "input" - executionOrder = instance.getexecutionOrderId() - if executionOrder is not None: - infos["executionOrder"] = executionOrder - else: - infos["executionOrder"] = 0 - infos["connector"] = {} - infos["connector"]["position"] = instance.connectionPointOut.getrelPositionXY() - infos["connector"]["negated"] = instance.getnegated() - infos["connector"]["edge"] = instance.getedge() - elif isinstance(instance, plcopen.fbdObjects_outVariable): - infos["name"] = instance.getexpression() - infos["value_type"] = self.GetEditedElementVarValueType(tagname, infos["name"], debug) - infos["type"] = "output" - executionOrder = instance.getexecutionOrderId() - if executionOrder is not None: - infos["executionOrder"] = executionOrder - else: - infos["executionOrder"] = 0 - infos["connector"] = {} - infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connector"]["negated"] = instance.getnegated() - infos["connector"]["edge"] = instance.getedge() - infos["connector"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connector"]["links"].append(dic) - elif isinstance(instance, plcopen.fbdObjects_inOutVariable): - infos["name"] = instance.getexpression() - infos["value_type"] = self.GetEditedElementVarValueType(tagname, infos["name"], debug) - infos["type"] = "inout" - executionOrder = instance.getexecutionOrderId() - if executionOrder is not None: - infos["executionOrder"] = executionOrder - else: - infos["executionOrder"] = 0 - infos["connectors"] = {"input":{},"output":{}} - infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY() - infos["connectors"]["output"]["negated"] = instance.getnegatedOut() - infos["connectors"]["output"]["edge"] = instance.getedgeOut() - infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connectors"]["input"]["negated"] = instance.getnegatedIn() - infos["connectors"]["input"]["edge"] = instance.getedgeIn() - infos["connectors"]["input"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connectors"]["input"]["links"].append(dic) - elif isinstance(instance, plcopen.commonObjects_continuation): - infos["name"] = instance.getname() - infos["type"] = "continuation" - infos["connector"] = {} - infos["connector"]["position"] = instance.connectionPointOut.getrelPositionXY() - elif isinstance(instance, plcopen.commonObjects_connector): - infos["name"] = instance.getname() - infos["type"] = "connection" - infos["connector"] = {} - infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connector"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connector"]["links"].append(dic) - elif isinstance(instance, plcopen.commonObjects_comment): - infos["type"] = "comment" - infos["content"] = instance.getcontentText() - elif isinstance(instance, plcopen.ldObjects_leftPowerRail): - infos["type"] = "leftPowerRail" - infos["connectors"] = [] - for connection in instance.getconnectionPointOut(): - connector = {} - connector["position"] = connection.getrelPositionXY() - infos["connectors"].append(connector) - elif isinstance(instance, plcopen.ldObjects_rightPowerRail): - infos["type"] = "rightPowerRail" - infos["connectors"] = [] - for connection in instance.getconnectionPointIn(): - connector = {} - connector["position"] = connection.getrelPositionXY() - connector["links"] = [] - connections = connection.getconnections() - if connections: - for link in connection.getconnections(): - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - connector["links"].append(dic) - infos["connectors"].append(connector) - elif isinstance(instance, plcopen.ldObjects_contact): - infos["name"] = instance.getvariable() - infos["type"] = "contact" - executionOrder = instance.getexecutionOrderId() - if executionOrder is not None: - infos["executionOrder"] = executionOrder - else: - infos["executionOrder"] = 0 - infos["negated"] = instance.getnegated() - infos["edge"] = instance.getedge() - infos["connectors"] = {"input":{},"output":{}} - infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connectors"]["input"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connectors"]["input"]["links"].append(dic) - infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY() - elif isinstance(instance, plcopen.ldObjects_coil): - infos["name"] = instance.getvariable() - infos["type"] = "coil" - executionOrder = instance.getexecutionOrderId() - if executionOrder is not None: - infos["executionOrder"] = executionOrder - else: - infos["executionOrder"] = 0 - infos["negated"] = instance.getnegated() - infos["edge"] = instance.getedge() - infos["storage"] = instance.getstorage() - infos["connectors"] = {"input":{},"output":{}} - infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connectors"]["input"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connectors"]["input"]["links"].append(dic) - infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY() - elif isinstance(instance, plcopen.sfcObjects_step): - infos["name"] = instance.getname() - infos["type"] = "step" - infos["initial"] = instance.getinitialStep() - infos["connectors"] = {} - if instance.connectionPointIn: - infos["connectors"]["input"] = {} - infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connectors"]["input"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connectors"]["input"]["links"].append(dic) - if instance.connectionPointOut: - infos["connectors"]["output"] = {"position" : instance.connectionPointOut.getrelPositionXY()} - if instance.connectionPointOutAction: - infos["connectors"]["action"] = {"position" : instance.connectionPointOutAction.getrelPositionXY()} - elif isinstance(instance, plcopen.sfcObjects_transition): - infos["type"] = "transition" - condition = instance.getconditionContent() - priority = instance.getpriority() - if priority == None: - infos["priority"] = 0 - else: - infos["priority"] = priority - infos["condition_type"] = condition["type"] - infos["connectors"] = {"input":{},"output":{}} - infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connectors"]["input"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connectors"]["input"]["links"].append(dic) - infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY() - if infos["condition_type"] == "connection": - infos["connectors"]["connection"] = {} - infos["connectors"]["connection"]["links"] = [] - connections = instance.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connectors"]["connection"]["links"].append(dic) - infos["condition"] = None - else: - infos["condition"] = condition["value"] - elif isinstance(instance, (plcopen.sfcObjects_selectionDivergence, plcopen.sfcObjects_simultaneousDivergence)): - if isinstance(instance, plcopen.sfcObjects_selectionDivergence): - infos["type"] = "selectionDivergence" - else: - infos["type"] = "simultaneousDivergence" - infos["connectors"] = {"inputs":[],"outputs":[]} - connector = {} - connector["position"] = instance.connectionPointIn.getrelPositionXY() - connector["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - connector["links"].append(dic) - infos["connectors"]["inputs"].append(connector) - for sequence in instance.getconnectionPointOut(): - connector = {} - connector["position"] = sequence.getrelPositionXY() - infos["connectors"]["outputs"].append(connector) - elif isinstance(instance, (plcopen.sfcObjects_selectionConvergence, plcopen.sfcObjects_simultaneousConvergence)): - if isinstance(instance, plcopen.sfcObjects_selectionConvergence): - infos["type"] = "selectionConvergence" - else: - infos["type"] = "simultaneousConvergence" - infos["connectors"] = {"inputs":[],"outputs":[]} - for sequence in instance.getconnectionPointIn(): - connector = {} - connector["position"] = sequence.getrelPositionXY() - connector["links"] = [] - connections = sequence.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - connector["links"].append(dic) - infos["connectors"]["inputs"].append(connector) - connector = {} - connector["position"] = instance.connectionPointOut.getrelPositionXY() - infos["connectors"]["outputs"].append(connector) - elif isinstance(instance, plcopen.sfcObjects_jumpStep): - infos["type"] = "jump" - infos["target"] = instance.gettargetName() - infos["connector"] = {} - infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connector"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connector"]["links"].append(dic) - elif isinstance(instance, plcopen.commonObjects_actionBlock): - infos["type"] = "actionBlock" - infos["actions"] = instance.getactions() - infos["connector"] = {} - infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY() - infos["connector"]["links"] = [] - connections = instance.connectionPointIn.getconnections() - if connections: - for link in connections: - dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()} - infos["connector"]["links"].append(dic) + infos = instance.getinfos() + if infos["type"] in ["input", "output", "inout"]: + var_type = self.GetEditedElementVarValueType(tagname, infos["specific_values"]["name"], debug) + infos["specific_values"]["value_type"] = var_type return infos return None @@ -2067,39 +1795,29 @@ elif param == "y": variable.sety(value) elif param == "connectors": - if isinstance(variable, plcopen.fbdObjects_inVariable): - if value["output"].IsNegated(): - variable.setnegated(True) - if value["output"].GetEdge() != "none": - variable.setedge(value["output"].GetEdge()) - position = value["output"].GetRelPosition() + if len(value["outputs"]) > 0: + output = value["outputs"][0] + if len(value["inputs"]) > 0: + variable.setnegatedOut(output.IsNegated()) + variable.setedgeOut(output.GetEdge()) + else: + variable.setnegated(output.IsNegated()) + variable.setedge(output.GetEdge()) + position = output.GetRelPosition() variable.addconnectionPointOut() variable.connectionPointOut.setrelPositionXY(position.x, position.y) - elif isinstance(variable, plcopen.fbdObjects_outVariable): - if value["input"].IsNegated(): - variable.setnegated(True) - if value["input"].GetEdge() != "none": - variable.setedge(value["input"].GetEdge()) - position = value["input"].GetRelPosition() + if len(value["inputs"]) > 0: + input = value["inputs"][0] + if len(value["outputs"]) > 0: + variable.setnegatedIn(input.IsNegated()) + variable.setedgeIn(input.GetEdge()) + else: + variable.setnegated(input.IsNegated()) + variable.setedge(input.GetEdge()) + position = input.GetRelPosition() variable.addconnectionPointIn() variable.connectionPointIn.setrelPositionXY(position.x, position.y) - self.SetConnectionWires(variable.connectionPointIn, value["input"]) - elif isinstance(variable, plcopen.fbdObjects_inOutVariable): - if value["input"].IsNegated(): - variable.setnegatedIn(True) - if value["input"].GetEdge() != "none": - variable.setedgeIn(value["input"].GetEdge()) - if value["output"].IsNegated(): - variable.setnegatedOut(True) - if value["output"].GetEdge() != "none": - variable.setedgeOut(value["output"].GetEdge()) - position = value["output"].GetRelPosition() - variable.addconnectionPointOut() - variable.connectionPointOut.setrelPositionXY(position.x, position.y) - position = value["input"].GetRelPosition() - variable.addconnectionPointIn() - variable.connectionPointIn.setrelPositionXY(position.x, position.y) - self.SetConnectionWires(variable.connectionPointIn, value["input"]) + self.SetConnectionWires(variable.connectionPointIn, input) def AddEditedElementConnection(self, tagname, id, type): element = self.GetEditedElement(tagname) @@ -2193,14 +1911,14 @@ elif param == "connectors": if isinstance(powerrail, plcopen.ldObjects_leftPowerRail): powerrail.setconnectionPointOut([]) - for connector in value: + for connector in value["outputs"]: position = connector.GetRelPosition() connection = plcopen.leftPowerRail_connectionPointOut() connection.setrelPositionXY(position.x, position.y) powerrail.connectionPointOut.append(connection) elif isinstance(powerrail, plcopen.ldObjects_rightPowerRail): powerrail.setconnectionPointIn([]) - for connector in value: + for connector in value["inputs"]: position = connector.GetRelPosition() connection = plcopen.connectionPointIn() connection.setrelPositionXY(position.x, position.y) @@ -2245,12 +1963,12 @@ elif param == "y": contact.sety(value) elif param == "connectors": - input_connector = value["input"] + input_connector = value["inputs"][0] position = input_connector.GetRelPosition() contact.addconnectionPointIn() contact.connectionPointIn.setrelPositionXY(position.x, position.y) self.SetConnectionWires(contact.connectionPointIn, input_connector) - output_connector = value["output"] + output_connector = value["outputs"][0] position = output_connector.GetRelPosition() contact.addconnectionPointOut() contact.connectionPointOut.setrelPositionXY(position.x, position.y) @@ -2305,12 +2023,12 @@ elif param == "y": coil.sety(value) elif param == "connectors": - input_connector = value["input"] + input_connector = value["inputs"][0] position = input_connector.GetRelPosition() coil.addconnectionPointIn() coil.connectionPointIn.setrelPositionXY(position.x, position.y) self.SetConnectionWires(coil.connectionPointIn, input_connector) - output_connector = value["output"] + output_connector = value["outputs"][0] position = output_connector.GetRelPosition() coil.addconnectionPointOut() coil.connectionPointOut.setrelPositionXY(position.x, position.y) @@ -2342,24 +2060,24 @@ elif param == "y": step.sety(value) elif param == "connectors": - input_connector = value["input"] - if input_connector: + if len(value["inputs"]) > 0: + input_connector = value["inputs"][0] position = input_connector.GetRelPosition() step.addconnectionPointIn() step.connectionPointIn.setrelPositionXY(position.x, position.y) self.SetConnectionWires(step.connectionPointIn, input_connector) else: step.deleteconnectionPointIn() - output_connector = value["output"] - if output_connector: + if len(value["outputs"]) > 0: + output_connector = value["outputs"][0] position = output_connector.GetRelPosition() step.addconnectionPointOut() step.connectionPointOut.setrelPositionXY(position.x, position.y) else: step.deleteconnectionPointOut() - action_connector = value["action"] - if action_connector: - position = action_connector.GetRelPosition() + elif param == "action": + if value: + position = value.GetRelPosition() step.addconnectionPointOutAction() step.connectionPointOutAction.setrelPositionXY(position.x, position.y) else: @@ -2395,19 +2113,18 @@ else: transition.setpriority(None) elif param == "connectors": - input_connector = value["input"] + input_connector = value["inputs"][0] position = input_connector.GetRelPosition() transition.addconnectionPointIn() transition.connectionPointIn.setrelPositionXY(position.x, position.y) self.SetConnectionWires(transition.connectionPointIn, input_connector) - output_connector = value["output"] + output_connector = value["outputs"][0] position = output_connector.GetRelPosition() transition.addconnectionPointOut() transition.connectionPointOut.setrelPositionXY(position.x, position.y) - if infos.get("type", None) == "connection": - transition.setconditionContent("connection", None) - connection_connector = value["connection"] - self.SetConnectionWires(transition, connection_connector) + elif infos.get("type", None) == "connection" and param == "connection" and value: + transition.setconditionContent("connection", None) + self.SetConnectionWires(transition, value) def AddEditedElementDivergence(self, tagname, id, type): element = self.GetEditedElement(tagname)