controls/VariablePanel.py
changeset 1668 cd9db17c7ab5
parent 1658 ba6a6d6e989c
child 1675 5f4e53508e4e
equal deleted inserted replaced
1667:cefc9219bb48 1668:cd9db17c7ab5
   779                 wx.CallAfter(self.ParentWindow.RefreshView, False)
   779                 wx.CallAfter(self.ParentWindow.RefreshView, False)
   780                 self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
   780                 self.ParentWindow._Refresh(TITLE, FILEMENU, EDITMENU, PAGETITLES, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
   781         else:
   781         else:
   782             self.SaveValues()
   782             self.SaveValues()
   783             if colname == "Class":
   783             if colname == "Class":
   784                 wx.CallAfter(self.ParentWindow.RefreshView, False)
   784                 self.ClearLocation(row, col, value)
       
   785                 wx.CallAfter(self.ParentWindow.RefreshView)
   785             elif colname == "Location":
   786             elif colname == "Location":
   786                 wx.CallAfter(self.ParentWindow.RefreshView)
   787                 wx.CallAfter(self.ParentWindow.RefreshView)
   787 
   788 
   788         if message is not None:
   789         if message is not None:
   789             wx.CallAfter(self.ShowErrorMessage, message)
   790             wx.CallAfter(self.ShowErrorMessage, message)
   790             event.Veto()            
   791             event.Veto()            
   791         else:
   792         else:
   792             event.Skip()
   793             event.Skip()
       
   794 
       
   795     def ClearLocation(self, row, col, value):
       
   796         if self.Values[row].Location != '':
       
   797             if self.Table.GetColLabelValue(col, False) == 'Class' and value not in ["Local", "Global"] or \
       
   798                self.Table.GetColLabelValue(col, False) == 'Type' and not self.Parent.Controler.IsLocatableType(value):
       
   799                 self.Values[row].Location = ''
       
   800             self.RefreshValues()
   793 
   801 
   794     def BuildStdIECTypesMenu(self,type_menu):
   802     def BuildStdIECTypesMenu(self,type_menu):
   795             # build a submenu containing standard IEC types
   803             # build a submenu containing standard IEC types
   796             base_menu = wx.Menu(title='')
   804             base_menu = wx.Menu(title='')
   797             for base_type in self.Controler.GetBaseTypes():
   805             for base_type in self.Controler.GetBaseTypes():
   847     def OnVariablesGridEditorShown(self, event):
   855     def OnVariablesGridEditorShown(self, event):
   848         row, col = event.GetRow(), event.GetCol()
   856         row, col = event.GetRow(), event.GetCol()
   849 
   857 
   850         label_value = self.Table.GetColLabelValue(col, False)
   858         label_value = self.Table.GetColLabelValue(col, False)
   851         if label_value == "Type":
   859         if label_value == "Type":
       
   860             old_value = self.Values[row].Type
   852             classtype = self.Table.GetValueByName(row, "Class")
   861             classtype = self.Table.GetValueByName(row, "Class")
   853             type_menu = wx.Menu(title='')   # the root menu
   862             type_menu = wx.Menu(title='')   # the root menu
   854 
   863 
   855             self.BuildStdIECTypesMenu(type_menu)
   864             self.BuildStdIECTypesMenu(type_menu)
   856 
   865 
   868 
   877 
   869             # pop up this new menu
   878             # pop up this new menu
   870             self.VariablesGrid.PopupMenuXY(type_menu, corner_x, corner_y)
   879             self.VariablesGrid.PopupMenuXY(type_menu, corner_x, corner_y)
   871             type_menu.Destroy()
   880             type_menu.Destroy()
   872             event.Veto()
   881             event.Veto()
       
   882             value = self.Values[row].Type
       
   883             if old_value != value:
       
   884                 self.ClearLocation(row, col, value)
   873         else:
   885         else:
   874             event.Skip()
   886             event.Skip()
   875 
   887 
   876     def GetVariableTypeFunction(self, base_type):
   888     def GetVariableTypeFunction(self, base_type):
   877         def VariableTypeFunction(event):
   889         def VariableTypeFunction(event):