# HG changeset patch # User Surkov Sergey # Date 1490689865 -10800 # Node ID cd9db17c7ab53e4277afc9ab7dcd18fe3a5c2bbc # Parent cefc9219bb486d6ea1463853891769a4b4c94459 clear variable location cell in variable panel, if variable class or type changed if variable class is not local or global, or variable type is not locatable, variable location cell would be empty and read-only diff -r cefc9219bb48 -r cd9db17c7ab5 controls/VariablePanel.py --- a/controls/VariablePanel.py Mon Mar 27 18:03:26 2017 +0300 +++ b/controls/VariablePanel.py Tue Mar 28 11:31:05 2017 +0300 @@ -781,7 +781,8 @@ else: self.SaveValues() if colname == "Class": - wx.CallAfter(self.ParentWindow.RefreshView, False) + self.ClearLocation(row, col, value) + wx.CallAfter(self.ParentWindow.RefreshView) elif colname == "Location": wx.CallAfter(self.ParentWindow.RefreshView) @@ -791,6 +792,13 @@ else: event.Skip() + def ClearLocation(self, row, col, value): + if self.Values[row].Location != '': + if self.Table.GetColLabelValue(col, False) == 'Class' and value not in ["Local", "Global"] or \ + self.Table.GetColLabelValue(col, False) == 'Type' and not self.Parent.Controler.IsLocatableType(value): + self.Values[row].Location = '' + self.RefreshValues() + def BuildStdIECTypesMenu(self,type_menu): # build a submenu containing standard IEC types base_menu = wx.Menu(title='') @@ -849,6 +857,7 @@ label_value = self.Table.GetColLabelValue(col, False) if label_value == "Type": + old_value = self.Values[row].Type classtype = self.Table.GetValueByName(row, "Class") type_menu = wx.Menu(title='') # the root menu @@ -870,6 +879,9 @@ self.VariablesGrid.PopupMenuXY(type_menu, corner_x, corner_y) type_menu.Destroy() event.Veto() + value = self.Values[row].Type + if old_value != value: + self.ClearLocation(row, col, value) else: event.Skip()