PLCOpenEditor.py
changeset 102 85875dcb7754
parent 98 ec5d7af033d8
child 107 255eada20688
equal deleted inserted replaced
101:3f06a178b960 102:85875dcb7754
   284         self._init_coll_EditMenu_Items(self.EditMenu)
   284         self._init_coll_EditMenu_Items(self.EditMenu)
   285         self._init_coll_HelpMenu_Items(self.HelpMenu)
   285         self._init_coll_HelpMenu_Items(self.HelpMenu)
   286         self._init_coll_SFCMenu_Items(self.SFCMenu)
   286         self._init_coll_SFCMenu_Items(self.SFCMenu)
   287         self._init_coll_ConfigMenu_Items(self.ConfigMenu)
   287         self._init_coll_ConfigMenu_Items(self.ConfigMenu)
   288 
   288 
   289     def _init_coll_EditorGridSizer_Items(self, parent):
       
   290         parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW)
       
   291         parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW)
       
   292 
       
   293     def _init_coll_EditorGridSizer_Growables(self, parent):
       
   294         parent.AddGrowableCol(0)
       
   295         parent.AddGrowableRow(1)
       
   296 
       
   297     def _init_sizers(self):
       
   298         if wx.Platform != '__WXMSW__':
       
   299             self.EditorGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
       
   300         
       
   301             self._init_coll_EditorGridSizer_Growables(self.EditorGridSizer)
       
   302             self._init_coll_EditorGridSizer_Items(self.EditorGridSizer)
       
   303         
       
   304             self.EditorPanel.SetSizer(self.EditorGridSizer)
       
   305 
       
   306     def _init_ctrls(self, prnt):
   289     def _init_ctrls(self, prnt):
   307         wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name=u'PLCOpenEditor',
   290         wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name=u'PLCOpenEditor',
   308               parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600),
   291               parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600),
   309               style=wx.DEFAULT_FRAME_STYLE, title=u'PLCOpenEditor')
   292               style=wx.DEFAULT_FRAME_STYLE, title=u'PLCOpenEditor')
   310         self._init_utils()
   293         self._init_utils()
   337         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated,
   320         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated,
   338               id=ID_PLCOPENEDITORPROJECTTREE)
   321               id=ID_PLCOPENEDITORPROJECTTREE)
   339         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected,
   322         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected,
   340               id=ID_PLCOPENEDITORPROJECTTREE)
   323               id=ID_PLCOPENEDITORPROJECTTREE)
   341         
   324         
   342         if wx.Platform == '__WXMSW__':
   325         self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, 
   343             self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, 
   326               ID_PLCOPENEDITORTOOLBAR, 'ToolBar')
   344                   ID_PLCOPENEDITORTOOLBAR, 'ToolBar')
   327         self.ToolBar.SetToolBitmapSize(wx.Size(25, 25))
   345             self.ToolBar.SetToolBitmapSize(wx.Size(25, 25))
   328         self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, 
   346             self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, 
   329               wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
   347                   wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
   330         self.ToolBar.Realize()
   348             self.ToolBar.Realize()
   331         self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
   349             self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
   332               id=ID_PLCOPENEDITORTOOLBARSELECTION)
   350                   id=ID_PLCOPENEDITORTOOLBARSELECTION)
   333     
   351         
   334         self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   352             self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   335               name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
   353                   name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
   336               0), size=wx.Size(0, 0), style=0)
   354                   0), size=wx.Size(0, 0), style=0)
   337         self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
   355             self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
   338               self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
   356                   self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
   339     
   357         
   340         self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200)
   358             self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200)
   341         
   359         
       
   360         else:
       
   361             self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, 
       
   362                   name='TabPanel', parent=self.MainSplitter, pos=wx.Point(0, 0),
       
   363                   size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
       
   364         
       
   365             self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar',
       
   366                   parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40),
       
   367                   style=wx.TB_HORIZONTAL|wx.NO_BORDER)
       
   368             self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, 
       
   369                   wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
       
   370             self.ToolBar.Realize()
       
   371             self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
       
   372                   id=ID_PLCOPENEDITORTOOLBARSELECTION)
       
   373         
       
   374             self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
       
   375                   name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0,
       
   376                   0), size=wx.Size(0, 0), style=0)
       
   377             self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
       
   378                   self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
       
   379         
       
   380             self.MainSplitter.SplitVertically(self.ProjectTree, self.EditorPanel, 200)
       
   381         
       
   382         self._init_sizers()
       
   383 
       
   384     def __init__(self, parent, controler = None, fileOpen = None):
   342     def __init__(self, parent, controler = None, fileOpen = None):
   385         self.ModeSolo = controler == None
   343         self.ModeSolo = controler == None
   386         self._init_ctrls(parent)
   344         self._init_ctrls(parent)
   387         
   345         
   388         if wx.Platform != '__WXMSW__':
   346         if wx.Platform != '__WXMSW__':
   559             self.RefreshEditMenu()
   517             self.RefreshEditMenu()
   560             self.RefreshToolBar()
   518             self.RefreshToolBar()
   561         event.Skip()
   519         event.Skip()
   562     
   520     
   563     def OnCloseProjectMenu(self, event):
   521     def OnCloseProjectMenu(self, event):
   564         self.Controler.Reset()
       
   565         self.TabsOpened.DeleteAllPages()
   522         self.TabsOpened.DeleteAllPages()
   566         self.ProjectTree.DeleteAllItems()
   523         self.ProjectTree.DeleteAllItems()
       
   524         self.Controler.Reset()
   567         self.RefreshTitle()
   525         self.RefreshTitle()
   568         self.RefreshFileMenu()
   526         self.RefreshFileMenu()
   569         self.RefreshEditMenu()
   527         self.RefreshEditMenu()
   570         self.RefreshToolBar()
   528         self.RefreshToolBar()
   571         event.Skip()
   529         event.Skip()
   896             self.ProjectTree.Expand(selected)
   854             self.ProjectTree.Expand(selected)
   897         name = self.ProjectTree.GetItemText(selected)
   855         name = self.ProjectTree.GetItemText(selected)
   898         data = self.ProjectTree.GetPyData(selected)
   856         data = self.ProjectTree.GetPyData(selected)
   899         if name == "Properties":
   857         if name == "Properties":
   900             self.ShowProperties()
   858             self.ShowProperties()
   901         elif data in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE, ITEM_CONFIGURATION]:
   859         if data in [ITEM_POU, ITEM_CONFIGURATION]:
   902             idx = None
   860             self.EditProjectElement(data, name)
   903             if data == ITEM_CONFIGURATION:
   861         elif data == ITEM_RESOURCE:
   904                 idx = self.Controler.OpenConfigurationEditing(name)
   862             item = self.ProjectTree.GetItemParent(selected)
       
   863             item_type = self.ProjectTree.GetPyData(item)
       
   864             while item_type != ITEM_CONFIGURATION:
       
   865                 item = self.ProjectTree.GetItemParent(item)
       
   866                 item_type = self.ProjectTree.GetPyData(item)
       
   867             config_name = self.ProjectTree.GetItemText(item)
       
   868             self.EditProjectElement(data, "%s::%s"%(config_name, name))
       
   869         elif data in [ITEM_TRANSITION, ITEM_ACTION]:
       
   870             item = self.ProjectTree.GetItemParent(selected)
       
   871             item_type = self.ProjectTree.GetPyData(item)
       
   872             while item_type != ITEM_POU:
       
   873                 item = self.ProjectTree.GetItemParent(item)
       
   874                 item_type = self.ProjectTree.GetPyData(item)
       
   875             pou_name = self.ProjectTree.GetItemText(item)
       
   876             self.EditProjectElement(data, "%s::%s"%(pou_name, name))
       
   877     
       
   878     def OnProjectTreeItemSelected(self, event):
       
   879         selected = event.GetItem()
       
   880         name = self.ProjectTree.GetItemText(selected)
       
   881         data = self.ProjectTree.GetPyData(selected)
       
   882         if data in [ITEM_POU, ITEM_CONFIGURATION]:
       
   883             self.EditProjectElement(data, name, True)
       
   884         elif data == ITEM_RESOURCE:
       
   885             item = self.ProjectTree.GetItemParent(selected)
       
   886             item_type = self.ProjectTree.GetPyData(item)
       
   887             while item_type != ITEM_CONFIGURATION:
       
   888                 item = self.ProjectTree.GetItemParent(item)
       
   889                 item_type = self.ProjectTree.GetPyData(item)
       
   890             config_name = self.ProjectTree.GetItemText(item)
       
   891             self.EditProjectElement(data, "%s::%s"%(config_name, name), True)
       
   892         elif data in [ITEM_TRANSITION, ITEM_ACTION]:
       
   893             item = self.ProjectTree.GetItemParent(selected)
       
   894             item_type = self.ProjectTree.GetPyData(item)
       
   895             while item_type != ITEM_POU:
       
   896                 item = self.ProjectTree.GetItemParent(item)
       
   897                 item_type = self.ProjectTree.GetPyData(item)
       
   898             pou_name = self.ProjectTree.GetItemText(item)
       
   899             self.EditProjectElement(data, "%s::%s"%(pou_name, name), True)
       
   900         event.Skip()
       
   901     
       
   902     def EditProjectElement(self, elementtype, elementname, onlyopened = False):
       
   903         idx = None
       
   904         names = elementname.split("::")
       
   905         if elementtype == ITEM_CONFIGURATION and len(names) == 1:
       
   906             if not onlyopened:
       
   907                 idx = self.Controler.OpenConfigurationEditing(*names)
       
   908                 if idx is not None:
       
   909                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "config", config_name = names[0])
       
   910                     self.TabsOpened.AddPage(new_window, "")
       
   911             if idx is None:
       
   912                 idx = self.Controler.ChangeConfigurationEditing(*names)
       
   913         elif elementtype == ITEM_RESOURCE and len(names) == 2:
       
   914             if not onlyopened:
       
   915                 idx = self.Controler.OpenConfigurationResourceEditing(*names)
       
   916                 if idx is not None:
       
   917                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "resource", config_name = names[0], resource_name = names[1])
       
   918                     self.TabsOpened.AddPage(new_window, "")
       
   919             if idx is None:
       
   920                 idx = self.Controler.ChangeConfigurationResourceEditing(*names)
       
   921         elif elementtype == ITEM_POU and len(names) == 1:
       
   922             if not onlyopened:
       
   923                 idx = self.Controler.OpenPouEditing(*names)
   905                 if idx != None:
   924                 if idx != None:
   906                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "config", config_name = name)
   925                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, self.Controler.GetPouType(names[0]), pou_name = names[0])
   907                     self.TabsOpened.AddPage(new_window, "")
   926                     self.TabsOpened.AddPage(new_window, "")
   908                 else:
   927             if idx is None:
   909                     idx = self.Controler.ChangeConfigurationEditing(name)
   928                 idx = self.Controler.ChangePouEditing(*names)
   910             elif data == ITEM_RESOURCE:
   929         elif elementtype == ITEM_TRANSITION and len(names) == 2:
   911                 item = self.ProjectTree.GetItemParent(selected)
   930             if not onlyopened:
   912                 item_type = self.ProjectTree.GetPyData(item)
   931                 idx = self.Controler.OpenPouTransitionEditing(*names)
   913                 while item_type != ITEM_CONFIGURATION:
   932                 if idx is not None:
   914                     item = self.ProjectTree.GetItemParent(item)
   933                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "transition", pou_name = names[0], transition_name = names[1])
   915                     item_type = self.ProjectTree.GetPyData(item)
       
   916                 config_name = self.ProjectTree.GetItemText(item)
       
   917                 idx = self.Controler.OpenConfigurationResourceEditing(config_name, name)
       
   918                 if idx != None:
       
   919                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "resource", config_name = config_name, resource_name = name)
       
   920                     self.TabsOpened.AddPage(new_window, "")
   934                     self.TabsOpened.AddPage(new_window, "")
   921                 else:
   935             if idx is None:
   922                     idx = self.Controler.ChangeConfigurationResourceEditing(config_name, name)
   936                 idx = self.Controler.ChangePouTransitionEditing(*names)
   923             elif data == ITEM_POU:
   937         elif elementtype == ITEM_ACTION and len(names) == 2:
   924                 idx = self.Controler.OpenPouEditing(name)
   938             if not onlyopened:
   925                 if idx != None:
   939                 idx = self.Controler.OpenPouActionEditing(*names)
   926                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, self.Controler.GetPouType(name), pou_name = name)
   940                 if idx is not None:
       
   941                     new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = names[0], action_name = names[1])
   927                     self.TabsOpened.AddPage(new_window, "")
   942                     self.TabsOpened.AddPage(new_window, "")
   928                 else:
   943             if idx is None:
   929                     idx = self.Controler.ChangePouEditing(name)
   944                 idx = self.Controler.ChangePouActionEditing(*names)
   930             else:
   945         if idx != None:
   931                 item = self.ProjectTree.GetItemParent(selected)
   946             old_selected = self.TabsOpened.GetSelection()
   932                 item_type = self.ProjectTree.GetPyData(item)
   947             if old_selected >= 0:
   933                 while item_type != ITEM_POU:
   948                 self.TabsOpened.GetPage(old_selected).ResetBuffer()
   934                     item = self.ProjectTree.GetItemParent(item)
   949             self.TabsOpened.SetSelection(idx)
   935                     item_type = self.ProjectTree.GetPyData(item)
   950             window = self.TabsOpened.GetPage(idx)
   936                 pou_name = self.ProjectTree.GetItemText(item)
   951             window.RefreshView()
   937                 if data == ITEM_TRANSITION:
   952             self.RefreshTabsOpenedTitles()
   938                     idx = self.Controler.OpenPouTransitionEditing(pou_name, name)
   953             self.RefreshFileMenu()
   939                     if idx != None:
   954             self.RefreshEditMenu()
   940                         new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "transition", pou_name = pou_name, transition_name = name)
   955             self.RefreshToolBar()
   941                         self.TabsOpened.AddPage(new_window, "")
       
   942                     else:
       
   943                         idx = self.Controler.ChangePouTransitionEditing(pou_name, name)
       
   944                 elif data == ITEM_ACTION:
       
   945                     idx = self.Controler.OpenPouActionEditing(pou_name, name)
       
   946                     if idx != None:
       
   947                         new_window = PouEditorPanel(self.TabsOpened, self, self.Controler, "action", pou_name = pou_name, action_name = name)
       
   948                         self.TabsOpened.AddPage(new_window, "")
       
   949                     else:
       
   950                         idx = self.Controler.ChangePouActionEditing(pou_name, name)
       
   951             if idx != None:
       
   952                 old_selected = self.TabsOpened.GetSelection()
       
   953                 if old_selected >= 0:
       
   954                     self.TabsOpened.GetPage(old_selected).ResetBuffer()
       
   955                 self.TabsOpened.SetSelection(idx)
       
   956                 window = self.TabsOpened.GetPage(idx)
       
   957                 window.RefreshView()
       
   958                 self.RefreshTabsOpenedTitles()
       
   959                 self.RefreshFileMenu()
       
   960                 self.RefreshEditMenu()
       
   961                 self.RefreshToolBar()
       
   962     
   956     
   963     def OnProjectTreeRightUp(self, event):
   957     def OnProjectTreeRightUp(self, event):
   964         selected = self.ProjectTree.GetSelection()
   958         selected = self.ProjectTree.GetSelection()
   965         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
   959         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
   966             name = self.ProjectTree.GetItemText(selected)
   960             name = self.ProjectTree.GetItemText(selected)
   967             if self.Controler.GetPouBodyType(name) == "SFC":
   961             if self.Controler.GetPouBodyType(name) == "SFC":
   968                 self.PopupMenu(self.SFCMenu)
   962                 self.PopupMenu(self.SFCMenu)
   969         elif self.ProjectTree.GetPyData(selected) == ITEM_CONFIGURATION:
   963         elif self.ProjectTree.GetPyData(selected) == ITEM_CONFIGURATION:
   970             self.PopupMenu(self.ConfigMenu)
   964             self.PopupMenu(self.ConfigMenu)
   971         event.Skip()
       
   972     
       
   973     def OnProjectTreeItemSelected(self, event):
       
   974         selected = event.GetItem()
       
   975         name = self.ProjectTree.GetItemText(selected)
       
   976         data = self.ProjectTree.GetPyData(selected)
       
   977         if data in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE, ITEM_CONFIGURATION]:
       
   978             idx = None
       
   979             if data == ITEM_CONFIGURATION:
       
   980                 if self.Controler.IsConfigurationEditing(name):
       
   981                     idx = self.Controler.ChangeConfigurationEditing(name)
       
   982             elif data == ITEM_RESOURCE:
       
   983                 item = self.ProjectTree.GetItemParent(selected)
       
   984                 item_type = self.ProjectTree.GetPyData(item)
       
   985                 while item_type != ITEM_CONFIGURATION:
       
   986                     item = self.ProjectTree.GetItemParent(item)
       
   987                     item_type = self.ProjectTree.GetPyData(item)
       
   988                 config_name = self.ProjectTree.GetItemText(item)
       
   989                 if self.Controler.IsConfigurationResourceEditing(config_name, name):
       
   990                     idx = self.Controler.ChangeConfigurationResourceEditing(config_name, name)
       
   991             elif data == ITEM_POU:
       
   992                 if self.Controler.IsPouEditing(name):
       
   993                     idx = self.Controler.ChangePouEditing(name)
       
   994             else:
       
   995                 item = self.ProjectTree.GetItemParent(selected)
       
   996                 item_type = self.ProjectTree.GetPyData(item)
       
   997                 while item_type != ITEM_POU:
       
   998                     item = self.ProjectTree.GetItemParent(item)
       
   999                     item_type = self.ProjectTree.GetPyData(item)
       
  1000                 pou_name = self.ProjectTree.GetItemText(item)
       
  1001                 if data == ITEM_TRANSITION:
       
  1002                     if self.Controler.IsPouTransitionEditing(pou_name, name):
       
  1003                         idx = self.Controler.ChangePouTransitionEditing(pou_name, name)
       
  1004                 elif data == ITEM_ACTION:
       
  1005                     if self.Controler.IsPouActionEditing(pou_name, name):
       
  1006                         idx = self.Controler.ChangePouActionEditing(pou_name, name)
       
  1007             if idx != None:
       
  1008                 old_selected = self.TabsOpened.GetSelection()
       
  1009                 if old_selected >= 0:
       
  1010                     self.TabsOpened.GetPage(old_selected).ResetBuffer()
       
  1011                 self.TabsOpened.SetSelection(idx)
       
  1012                 window = self.TabsOpened.GetPage(idx)
       
  1013                 window.RefreshView()
       
  1014                 self.RefreshTabsOpenedTitles()
       
  1015                 self.RefreshFileMenu()
       
  1016                 self.RefreshEditMenu()
       
  1017                 self.RefreshToolBar()
       
  1018         event.Skip()
   965         event.Skip()
  1019 
   966 
  1020     def RefreshProjectTree(self):
   967     def RefreshProjectTree(self):
  1021         infos = self.Controler.GetProjectInfos()
   968         infos = self.Controler.GetProjectInfos()
  1022         root = self.ProjectTree.GetRootItem()
   969         root = self.ProjectTree.GetRootItem()
  1033             self.ProjectTree.SetItemImage(root, LANGUAGES.index(self.Controler.GetPouBodyType(infos["name"])))
   980             self.ProjectTree.SetItemImage(root, LANGUAGES.index(self.Controler.GetPouBodyType(infos["name"])))
  1034         item, root_cookie = self.ProjectTree.GetFirstChild(root)
   981         item, root_cookie = self.ProjectTree.GetFirstChild(root)
  1035         for values in infos["values"]:
   982         for values in infos["values"]:
  1036             if not item.IsOk():
   983             if not item.IsOk():
  1037                 item = self.ProjectTree.AppendItem(root, "")
   984                 item = self.ProjectTree.AppendItem(root, "")
  1038                 if wx.VERSION < (2, 7, 0):
   985                 if wx.Platform != '__WXMSW__':
  1039                     item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
   986                     item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
  1040             self.GenerateTreeBranch(item, values)
   987             self.GenerateTreeBranch(item, values)
  1041             item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
   988             item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
  1042         while item.IsOk():
   989         while item.IsOk():
  1043             to_delete.append(item)
   990             to_delete.append(item)
  2524             self.ClassList = ["Local","Temp"]
  2471             self.ClassList = ["Local","Temp"]
  2525         else:
  2472         else:
  2526             self.ClassList = [self.Filter]
  2473             self.ClassList = [self.Filter]
  2527 
  2474 
  2528     def RefreshButtons(self):
  2475     def RefreshButtons(self):
  2529         if self.Table:
  2476         if getattr(self, "Table", None):
  2530             table_length = len(self.Table.data)
  2477             table_length = len(self.Table.data)
  2531             row_class = None
  2478             row_class = None
  2532             if table_length and self.PouIsUsed:
  2479             if table_length and self.PouIsUsed:
  2533                 row = self.VariablesGrid.GetGridCursorRow()
  2480                 row = self.VariablesGrid.GetGridCursorRow()
  2534                 row_class = self.Table.GetValueByName(row, "Class")
  2481                 row_class = self.Table.GetValueByName(row, "Class")