--- a/PLCControler.py Fri May 10 15:17:33 2013 +0200
+++ b/PLCControler.py Sun May 12 23:30:00 2013 +0200
@@ -2100,14 +2100,17 @@
text += instance_copy.generateXMLText(name.split("_")[-1], 0)
- def GenerateNewName(self, tagname, name, format, exclude={}, debug=False):
+ def GenerateNewName(self, tagname, name, format, start_idx=0, exclude={}, debug=False): - names.update(dict([(varname.upper(), True) for varname in self.GetEditedElementVariables(tagname, debug)]))
+ names.update(dict([(varname.upper(), True) + for varname in self.GetEditedElementVariables(tagname, debug)])) element = self.GetEditedElement(tagname, debug)
- if element is not None:
+ if element is not None and element.getbodyType() not in ["ST", "IL"]: for instance in element.getinstances():
- if isinstance(instance, (plcopen.sfcObjects_step, plcopen.commonObjects_connector, plcopen.commonObjects_continuation)):
+ if isinstance(instance, (plcopen.sfcObjects_step, + plcopen.commonObjects_connector, + plcopen.commonObjects_continuation)): names[instance.getname().upper()] = True
project = self.GetProject(debug)
@@ -2127,7 +2130,7 @@
for resource in config.getresource():
names[resource.getname().upper()] = True
while name is None or names.get(name.upper(), False):
@@ -2183,12 +2186,19 @@
blocktype = instance.gettypeName()
if element_type == "function":
return _("FunctionBlock \"%s\" can't be pasted in a Function!!!")%blocktype
- blockname = self.GenerateNewName(tagname, blockname, "%s%%d"%blocktype, debug=debug)
+ blockname = self.GenerateNewName(tagname, exclude[blockname] = True
instance.setinstanceName(blockname)
self.AddEditedElementPouVar(tagname, blocktype, blockname)
elif child.nodeName == "step":
- stepname = self.GenerateNewName(tagname, instance.getname(), "Step%d", exclude, debug)
+ stepname = self.GenerateNewName(tagname, instance.setname(stepname)
localid = instance.getlocalId()
--- a/controls/VariablePanel.py Fri May 10 15:17:33 2013 +0200
+++ b/controls/VariablePanel.py Sun May 12 23:30:00 2013 +0200
@@ -89,6 +89,7 @@
LOCATION_MODEL = re.compile("((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$")
+VARIABLE_NAME_SUFFIX_MODEL = re.compile("([0-9]*)$") #-------------------------------------------------------------------------------
@@ -490,11 +491,27 @@
def _AddVariable(new_row):
if not self.PouIsUsed or self.Filter not in ["Interface", "Input", "Output", "InOut"]:
- row_content = self.DefaultValue.copy()
- if self.Filter in self.DefaultTypes:
- row_content["Class"] = self.DefaultTypes[self.Filter]
+ row_content = self.Values[new_row - 1].copy() + result = VARIABLE_NAME_SUFFIX_MODEL.search(row_content["Name"]) + name = row_content["Name"][:result.start(1)] + suffix = result.group(1) + start_idx = int(suffix) + name = row_content["Name"] + row_content["Name"] = self.Controler.GenerateNewName( + self.TagName, None, name + "%d", start_idx) - row_content["Class"] = self.Filter
+ row_content = self.DefaultValue.copy() + if self.Filter in self.DefaultTypes: + row_content["Class"] = self.DefaultTypes[self.Filter] + row_content["Class"] = self.Filter if self.Filter == "All" and len(self.Values) > 0:
self.Values.insert(new_row, row_content)
--- a/editors/Viewer.py Fri May 10 15:17:33 2013 +0200
+++ b/editors/Viewer.py Sun May 12 23:30:00 2013 +0200
@@ -3085,7 +3085,11 @@
format = "%s%%d" % blocktype
- return self.Controler.GenerateNewName(self.TagName, None, format, exclude, self.Debug)
+ return self.Controler.GenerateNewName(self.TagName, def IsNamedElement(self, element):
return isinstance(element, FBD_Block) and element.GetName() != "" or isinstance(element, SFC_Step)