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() |