beremiz

Adding support for updating or removing located variables by their address or leading address numbers when changing or removing VariableTree element
  • +27 -3
    LPCBeremiz.py
  • --- a/LPCBeremiz.py Tue Dec 01 10:59:17 2009 +0100
    +++ b/LPCBeremiz.py Tue Dec 01 11:00:02 2009 +0100
    @@ -381,6 +381,19 @@
    def SetProjectName(self, name):
    return self.Project.setname(name)
    + # Update a PLCOpenEditor Pou variable name
    + def UpdateProjectVariableName(self, old_name, new_name):
    + self.Project.updateElementName(old_name, new_name)
    + self.BufferProject()
    +
    + def RemoveProjectVariableByAddress(self, address):
    + self.Project.removeVariableByAddress(address)
    + self.BufferProject()
    +
    + def RemoveProjectVariableByFilter(self, leading):
    + self.Project.removeVariableByFilter(leading)
    + self.BufferProject()
    +
    def LoadProject(self, ProjectPath, BuildPath=None):
    """
    Load a project XML file
    @@ -737,6 +750,8 @@
    def Refresh(self):
    global frame
    if frame is not None:
    + wx.CallAfter(frame._Refresh, TITLE, INSTANCESTREE, FILEMENU, EDITMENU)
    + wx.CallAfter(frame.RefreshEditor)
    wx.CallAfter(frame.RefreshAll)
    def Close(self):
    @@ -785,6 +800,7 @@
    for child in self.PluginRoot.IterChilds():
    if child != bus and child.BaseParams.getIEC_Channel() == new_iec_channel:
    return "Error: A bus with IEC_channel %d already exists" % new_iec_channel
    + self.PluginRoot.UpdateProjectVariableLocation(str(old_iec_channel), str(new_iec_channel))
    bus.BaseParams.setIEC_Channel(new_iec_channel)
    self.RestartTimer()
    @@ -792,6 +808,7 @@
    bus = self.PluginRoot.GetChildByIECLocation((iec_channel,))
    if bus is None:
    return "Error: No bus found"
    + self.PluginRoot.RemoveProjectVariableByFilter(str(iec_channel))
    self.PluginRoot.PluggedChilds["LPCBus"].remove(bus)
    self.RestartTimer()
    @@ -836,6 +853,7 @@
    for child in _GetModuleChildren(parent):
    if child["IEC_Channel"] == new_iec_channel:
    return "Error: A module with IEC_channel %d already exists" % new_iec_channel
    + self.PluginRoot.UpdateProjectVariableLocation(".".join(map(str, old_iec_location)), ".".join(map(str, old_iec_location[:1] + (new_iec_channel,))))
    module["IEC_Channel"] = new_iec_channel
    self.RestartTimer()
    @@ -846,6 +864,7 @@
    child = _GetModuleBySomething(module, "IEC_Channel", (iec_channel,))
    if child is None:
    return "Error: No module found"
    + self.PluginRoot.RemoveProjectVariableByFilter(".".join(map(str, parent + (iec_channel,))))
    _RemoveModuleChild(module, child)
    self.RestartTimer()
    @@ -893,7 +912,9 @@
    return "Error: A variable named %s already exists" % new_name
    if variable is None:
    return "Error: No variable found"
    - variable["name"] = new_name
    + if variable["name"] != new_name:
    + self.PluginRoot.UpdateProjectVariableName(variable["name"], new_name)
    + variable["name"] = new_name
    variable["type"] = LOCATION_TYPES[new_direction]
    variable["IEC_type"] = new_type
    variable["declare"] = new_dcode
    @@ -910,6 +931,9 @@
    child = _GetModuleVariable(module, location)
    if child is None:
    return "Error: No variable found"
    + size = LOCATION_SIZES[self.PluginRoot.GetBaseType(child["IEC_type"])]
    + address = "%" + LOCATION_DIRS[child["type"]] + size + ".".join(map(str, parent + location))
    + self.PluginRoot.RemoveProjectVariableByAddress(address)
    _RemoveModuleChild(module, child)
    self.RestartTimer()
    @@ -978,8 +1002,8 @@
    "ChangeModuleIECChannel": ([location, int], 0),
    "RemoveModule": ([location, int], 0),
    "StartGroup": ([location, str, str], 1),
    - "AddVariable": ([location, location, str, str, str, str, str, str], 1),
    - "ChangeVariableParams": ([location, location, str, str, str, str, str, str, str, str], 1),
    + "AddVariable": ([location, location, str, str, str, str, str, str, str], 1),
    + "ChangeVariableParams": ([location, location, str, str, str, str, str, str, str], 1),
    "RemoveVariable": ([location, location], 0)}.iteritems():
    setattr(LPCBeremiz_Cmd, "do_%s" % function, GetCmdFunction(function, arg_types, opt))