PLCControler.py
changeset 1122 84de51ab40d2
parent 1096 c9ace6a881c9
child 1127 5315f26642e0
equal deleted inserted replaced
1121:d3838e8f1b90 1122:84de51ab40d2
  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