--- a/controls/VariablePanel.py Wed Apr 03 06:31:34 2019 +0000
+++ b/controls/VariablePanel.py Sun Apr 07 16:23:49 2019 +0200
@@ -34,6 +34,7 @@
from six import string_types
from six.moves import xrange
+
from plcopen.structures import LOCATIONDATATYPES, TestIdentifier, IEC_KEYWORDS, DefaultType
from plcopen.VariableInfoCollector import _VariableInfos
from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD, ERROR_HIGHLIGHT
@@ -150,6 +151,7 @@
return value
def SetValue(self, row, col, value):
+ print("SetValue",row, col, value)
if col < len(self.colnames):
colname = self.GetColLabelValue(col, False)
if colname == "Name":
@@ -788,6 +790,27 @@
dialog.ShowModal()
dialog.Destroy()
+ def OnVariableNameChange(self, old_name, new_name):
+ """ propagate renaming of variable to the rest of the project """
+ if old_name != "":
+ self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_name, new_name)
+ self.Controler.BufferProject()
+ wx.CallAfter(self.ParentWindow.RefreshView, False)
+ self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
+
+ def CheckVariableName(self, value, row):
+ if not TestIdentifier(value):
+ message = _("\"%s\" is not a valid identifier!") % value
+ elif value.upper() in IEC_KEYWORDS:
+ message = _("\"%s\" is a keyword. It can't be used!") % value
+ elif value.upper() in self.PouNames:
+ message = _("A POU named \"%s\" already exists!") % value
+ elif value.upper() in [var.Name.upper() for var in self.Values if var != self.Table.data[row]]:
+ message = _("A variable with \"%s\" as name already exists in this pou!") % value
+ else:
+ return None
+ return message
+
def OnVariablesGridCellChange(self, event):
row, col = event.GetRow(), event.GetCol()
colname = self.Table.GetColLabelValue(col, False)
@@ -795,22 +818,11 @@
message = None
if colname == "Name" and value != "":
- if not TestIdentifier(value):
- message = _("\"%s\" is not a valid identifier!") % value
- elif value.upper() in IEC_KEYWORDS:
- message = _("\"%s\" is a keyword. It can't be used!") % value
- elif value.upper() in self.PouNames:
- message = _("A POU named \"%s\" already exists!") % value
- elif value.upper() in [var.Name.upper() for var in self.Values if var != self.Table.data[row]]:
- message = _("A variable with \"%s\" as name already exists in this pou!") % value
- else:
+ message = self.CheckVariableName(value, row)
+ if message is None:
self.SaveValues(False)
old_value = self.Table.GetOldValue()
- if old_value != "":
- self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_value, value)
- self.Controler.BufferProject()
- wx.CallAfter(self.ParentWindow.RefreshView, False)
- self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
+ self.OnVariableNameChange(old_value, value)
else:
self.SaveValues()
if colname == "Class":