2098 instance_copy.filterConnections(wires) |
2098 instance_copy.filterConnections(wires) |
2099 name = instance_copy.__class__.__name__ |
2099 name = instance_copy.__class__.__name__ |
2100 text += instance_copy.generateXMLText(name.split("_")[-1], 0) |
2100 text += instance_copy.generateXMLText(name.split("_")[-1], 0) |
2101 return text |
2101 return text |
2102 |
2102 |
2103 def GenerateNewName(self, tagname, name, format, exclude={}, debug=False): |
2103 def GenerateNewName(self, tagname, name, format, start_idx=0, exclude={}, debug=False): |
2104 names = exclude.copy() |
2104 names = exclude.copy() |
2105 if tagname is not None: |
2105 if tagname is not None: |
2106 names.update(dict([(varname.upper(), True) for varname in self.GetEditedElementVariables(tagname, debug)])) |
2106 names.update(dict([(varname.upper(), True) |
|
2107 for varname in self.GetEditedElementVariables(tagname, debug)])) |
2107 element = self.GetEditedElement(tagname, debug) |
2108 element = self.GetEditedElement(tagname, debug) |
2108 if element is not None: |
2109 if element is not None and element.getbodyType() not in ["ST", "IL"]: |
2109 for instance in element.getinstances(): |
2110 for instance in element.getinstances(): |
2110 if isinstance(instance, (plcopen.sfcObjects_step, plcopen.commonObjects_connector, plcopen.commonObjects_continuation)): |
2111 if isinstance(instance, (plcopen.sfcObjects_step, |
|
2112 plcopen.commonObjects_connector, |
|
2113 plcopen.commonObjects_continuation)): |
2111 names[instance.getname().upper()] = True |
2114 names[instance.getname().upper()] = True |
2112 else: |
2115 else: |
2113 project = self.GetProject(debug) |
2116 project = self.GetProject(debug) |
2114 if project is not None: |
2117 if project is not None: |
2115 for datatype in project.getdataTypes(): |
2118 for datatype in project.getdataTypes(): |
2125 for config in project.getconfigurations(): |
2128 for config in project.getconfigurations(): |
2126 names[config.getname().upper()] = True |
2129 names[config.getname().upper()] = True |
2127 for resource in config.getresource(): |
2130 for resource in config.getresource(): |
2128 names[resource.getname().upper()] = True |
2131 names[resource.getname().upper()] = True |
2129 |
2132 |
2130 i = 0 |
2133 i = start_idx |
2131 while name is None or names.get(name.upper(), False): |
2134 while name is None or names.get(name.upper(), False): |
2132 name = (format%i) |
2135 name = (format%i) |
2133 i += 1 |
2136 i += 1 |
2134 return name |
2137 return name |
2135 |
2138 |
2181 blockname = instance.getinstanceName() |
2184 blockname = instance.getinstanceName() |
2182 if blockname is not None: |
2185 if blockname is not None: |
2183 blocktype = instance.gettypeName() |
2186 blocktype = instance.gettypeName() |
2184 if element_type == "function": |
2187 if element_type == "function": |
2185 return _("FunctionBlock \"%s\" can't be pasted in a Function!!!")%blocktype |
2188 return _("FunctionBlock \"%s\" can't be pasted in a Function!!!")%blocktype |
2186 blockname = self.GenerateNewName(tagname, blockname, "%s%%d"%blocktype, debug=debug) |
2189 blockname = self.GenerateNewName(tagname, |
|
2190 blockname, |
|
2191 "%s%%d"%blocktype, |
|
2192 debug=debug) |
2187 exclude[blockname] = True |
2193 exclude[blockname] = True |
2188 instance.setinstanceName(blockname) |
2194 instance.setinstanceName(blockname) |
2189 self.AddEditedElementPouVar(tagname, blocktype, blockname) |
2195 self.AddEditedElementPouVar(tagname, blocktype, blockname) |
2190 elif child.nodeName == "step": |
2196 elif child.nodeName == "step": |
2191 stepname = self.GenerateNewName(tagname, instance.getname(), "Step%d", exclude, debug) |
2197 stepname = self.GenerateNewName(tagname, |
|
2198 instance.getname(), |
|
2199 "Step%d", |
|
2200 exclude=exclude, |
|
2201 debug=debug) |
2192 exclude[stepname] = True |
2202 exclude[stepname] = True |
2193 instance.setname(stepname) |
2203 instance.setname(stepname) |
2194 localid = instance.getlocalId() |
2204 localid = instance.getlocalId() |
2195 if not used_id.has_key(localid): |
2205 if not used_id.has_key(localid): |
2196 new_id[localid] = True |
2206 new_id[localid] = True |