diff -r f0e8e7f58a5a -r 203c4acdaf27 PLCControler.py --- a/PLCControler.py Wed Jan 23 18:25:57 2008 +0100 +++ b/PLCControler.py Wed Jan 23 18:26:49 2008 +0100 @@ -1427,7 +1427,7 @@ infos["connector"] = {} infos["connector"]["position"] = instance.connectionPointOut.getrelPositionXY() elif isinstance(instance, plcopen.commonObjects_connector): - infos["name"] = instance.getName() + infos["name"] = instance.getname() infos["type"] = "connection" infos["connector"] = {} infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY() @@ -1667,6 +1667,12 @@ pou = self.Project.getpou(words[1]) pou.changepouVar(old_type, old_name, new_type, new_name) + def RemoveEditedElementPouVar(self, tagname, type, name): + words = tagname.split("::") + if words[0] in ['P', 'T', 'A']: + pou = self.Project.getpou(words[1]) + pou.removepouVar(type, name) + def AddEditedElementBlock(self, tagname, id, blocktype, blockname = None): element = self.GetEditedElement(tagname) if element is not None: @@ -1684,15 +1690,19 @@ element = self.GetEditedElement(tagname) if element is not None: block = element.getinstance(id) - blocktype = infos.get("type", block.gettypeName()) - blocktype_infos = GetBlockType(blocktype) - if blocktype_infos["type"] != "function": - if "name" in infos or "type" in infos: - old_name = block.getinstanceName() - old_type = block.gettypeName() - new_name = infos.get("name", old_name) - new_type = infos.get("type", old_type) - self.ChangeEditedElementPouVar(tagname, old_type, old_name, new_type, new_name) + old_name = block.getinstanceName() + old_type = block.gettypeName() + new_name = infos.get("name", old_name) + new_type = infos.get("type", old_type) + old_typeinfos = GetBlockType(old_type) + new_typeinfos = GetBlockType(new_type) + if new_typeinfos["type"] != old_typeinfos["type"]: + if new_typeinfos["type"] == "function": + self.RemoveEditedElementPouVar(tagname, old_type, old_name) + else: + self.AddEditedElementPouVar(tagname, new_type, new_name) + elif new_typeinfos["type"] != "function" and old_name != new_name: + self.ChangeEditedElementPouVar(tagname, old_type, old_name, new_type, new_name) for param, value in infos.items(): if param == "name": block.setinstanceName(value) @@ -2212,8 +2222,7 @@ if element is not None: instance = element.getinstance(id) if isinstance(instance, plcopen.fbdObjects_block): - blocktype = instance.gettypeName() - element.removepouVar(blocktype, instance.getinstanceName()) + self.RemoveEditedElementPouVar(tagname, instance.gettypeName(), instance.getinstanceName()) element.removeinstance(id) self.RefreshPouUsingTree()