controls/VariablePanel.py
changeset 2578 eed31489c909
parent 2574 48a486000e84
child 2579 8fb5c6eddc72
--- 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":