controls/VariablePanel.py
branchrename_on_location_change
changeset 2574 48a486000e84
parent 2573 071d10c7ab8f
child 2579 8fb5c6eddc72
equal deleted inserted replaced
2573:071d10c7ab8f 2574:48a486000e84
    31 import wx
    31 import wx
    32 import wx.grid
    32 import wx.grid
    33 import wx.lib.buttons
    33 import wx.lib.buttons
    34 from six import string_types
    34 from six import string_types
    35 from six.moves import xrange
    35 from six.moves import xrange
       
    36 
    36 
    37 
    37 from plcopen.structures import LOCATIONDATATYPES, TestIdentifier, IEC_KEYWORDS, DefaultType
    38 from plcopen.structures import LOCATIONDATATYPES, TestIdentifier, IEC_KEYWORDS, DefaultType
    38 from plcopen.VariableInfoCollector import _VariableInfos
    39 from plcopen.VariableInfoCollector import _VariableInfos
    39 from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD, ERROR_HIGHLIGHT
    40 from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD, ERROR_HIGHLIGHT
    40 from dialogs.ArrayTypeDialog import ArrayTypeDialog
    41 from dialogs.ArrayTypeDialog import ArrayTypeDialog
   795             self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_name, new_name)
   796             self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_name, new_name)
   796         self.Controler.BufferProject()
   797         self.Controler.BufferProject()
   797         wx.CallAfter(self.ParentWindow.RefreshView, False)
   798         wx.CallAfter(self.ParentWindow.RefreshView, False)
   798         self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
   799         self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
   799 
   800 
       
   801     def CheckVariableName(self, value, row):
       
   802         if not TestIdentifier(value):
       
   803             message = _("\"%s\" is not a valid identifier!") % value
       
   804         elif value.upper() in IEC_KEYWORDS:
       
   805             message = _("\"%s\" is a keyword. It can't be used!") % value
       
   806         elif value.upper() in self.PouNames:
       
   807             message = _("A POU named \"%s\" already exists!") % value
       
   808         elif value.upper() in [var.Name.upper() for var in self.Values if var != self.Table.data[row]]:
       
   809             message = _("A variable with \"%s\" as name already exists in this pou!") % value
       
   810         else:
       
   811             return None
       
   812         return message
       
   813 
   800     def OnVariablesGridCellChange(self, event):
   814     def OnVariablesGridCellChange(self, event):
   801         row, col = event.GetRow(), event.GetCol()
   815         row, col = event.GetRow(), event.GetCol()
   802         colname = self.Table.GetColLabelValue(col, False)
   816         colname = self.Table.GetColLabelValue(col, False)
   803         value = self.Table.GetValue(row, col)
   817         value = self.Table.GetValue(row, col)
   804         message = None
   818         message = None
   805 
   819 
   806         if colname == "Name" and value != "":
   820         if colname == "Name" and value != "":
   807             if not TestIdentifier(value):
   821             message = self.CheckVariableName(value, row)
   808                 message = _("\"%s\" is not a valid identifier!") % value
   822             if message is None:
   809             elif value.upper() in IEC_KEYWORDS:
       
   810                 message = _("\"%s\" is a keyword. It can't be used!") % value
       
   811             elif value.upper() in self.PouNames:
       
   812                 message = _("A POU named \"%s\" already exists!") % value
       
   813             elif value.upper() in [var.Name.upper() for var in self.Values if var != self.Table.data[row]]:
       
   814                 message = _("A variable with \"%s\" as name already exists in this pou!") % value
       
   815             else:
       
   816                 self.SaveValues(False)
   823                 self.SaveValues(False)
   817                 old_value = self.Table.GetOldValue()
   824                 old_value = self.Table.GetOldValue()
   818                 self.OnVariableNameChange(old_value, value)
   825                 self.OnVariableNameChange(old_value, value)
   819         else:
   826         else:
   820             self.SaveValues()
   827             self.SaveValues()