PLCOpenEditor.py
changeset 586 9aa96a36cf33
parent 577 9dbb79722fbc
child 587 98445f90f45d
--- a/PLCOpenEditor.py	Mon Nov 07 10:55:17 2011 +0100
+++ b/PLCOpenEditor.py	Tue Nov 08 21:59:22 2011 +0100
@@ -113,7 +113,7 @@
 from RessourceEditor import *
 from DataTypeEditor import *
 from PLCControler import *
-from VariablePanel import VariablePanel
+from controls.VariablePanel import VariablePanel
 from SearchResultPanel import SearchResultPanel
 from controls import CustomGrid
 
@@ -267,14 +267,14 @@
         parent.Append(helpString=help, id=id, kind=kind, item=text)
 
 [TITLE, TOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, TYPESTREE, 
- INSTANCESTREE, LIBRARYTREE, SCALING
-] = range(9)
+ INSTANCESTREE, LIBRARYTREE, SCALING, PAGETITLES
+] = range(10)
 
 def GetShortcutKeyCallbackFunction(viewer_function):
     def ShortcutKeyFunction(self, event):
         control = self.FindFocus()
-        if isinstance(control, (Viewer, TextViewer)):
-            getattr(control, viewer_function)()
+        if control.GetName() in ["Viewer", "TextViewer"]:
+            getattr(control.Parent, viewer_function)()
         elif isinstance(control, wx.TextCtrl):
             control.ProcessEvent(event)
     return ShortcutKeyFunction
@@ -608,9 +608,6 @@
         self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
               id=ID_PLCOPENEDITORTOOLBARSELECTION)
         
-        self.VariablePanelIndexer = VariablePanelIndexer(self.BottomNoteBook, self)
-        self.BottomNoteBook.AddPage(self.VariablePanelIndexer, _("Variables"))
-
         self.SearchResultPanel = SearchResultPanel(self.BottomNoteBook, self)
         self.BottomNoteBook.AddPage(self.SearchResultPanel, _("Search"))
 
@@ -754,7 +751,8 @@
             TYPESTREE : self.RefreshTypesTree,
             INSTANCESTREE : self.RefreshInstancesTree, 
             LIBRARYTREE : self.RefreshLibraryTree,
-            SCALING : self.RefreshScaling}
+            SCALING : self.RefreshScaling,
+            PAGETITLES: self.RefreshPageTitles}
 
     ## Call PLCOpenEditor refresh functions.
     #  @param elements List of elements to refresh.
@@ -765,14 +763,6 @@
     ## Callback function when AUINotebook Page closed with CloseButton
     #  @param event AUINotebook Event.
     def OnPageClose(self, event):
-        # Get Selected Tab
-        selected = event.GetSelection()
-        if selected >= 0:
-            # Remove corresponding VariablePanel
-            window = self.TabsOpened.GetPage(selected)
-            if not window.IsDebugging():
-                self.VariablePanelIndexer.RemoveVariablePanel(window.GetTagName())
-        
         wx.CallAfter(self.RefreshTabCtrlEvent)
         event.Skip()
 
@@ -925,7 +915,6 @@
 
     def ResetView(self):
         self.DeleteAllPages()
-        self.VariablePanelIndexer.RemoveAllPanels()
         self.TypesTree.DeleteAllItems()
         self.InstancesTree.DeleteAllItems()
         self.LibraryTree.DeleteAllItems()
@@ -934,16 +923,10 @@
     def OnCloseTabMenu(self, event):
         selected = self.TabsOpened.GetSelection()
         if selected >= 0:
-            window = self.TabsOpened.GetPage(selected)
-            if not window.IsDebugging():
-                self.VariablePanelIndexer.RemoveVariablePanel(window.GetTagName())
             self.TabsOpened.DeletePage(selected)
             if self.TabsOpened.GetPageCount() > 0:
                 new_index = min(selected, self.TabsOpened.GetPageCount() - 1)
                 self.TabsOpened.SetSelection(new_index)
-                window = self.TabsOpened.GetPage(new_index)
-                if not window.IsDebugging():
-                    self.VariablePanelIndexer.ChangeVariablePanel(window.GetTagName())
         # Refresh all window elements that have changed
         self._Refresh(TITLE, TOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
         self.RefreshTabCtrlEvent()
@@ -1006,7 +989,12 @@
 
     def RefreshEditMenu(self):
         if self.Controler is not None:
-            undo, redo = self.Controler.GetBufferState()
+            selected = self.TabsOpened.GetSelection()
+            if selected > -1:
+                window = self.TabsOpened.GetPage(selected)
+                undo, redo = window.GetBufferState()
+            else:
+                undo, redo = False, False
             self.EditMenu.Enable(wx.ID_UNDO, undo)
             self.EditMenu.Enable(wx.ID_REDO, redo)
             #self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, True)
@@ -1045,25 +1033,24 @@
         idxs.reverse()
         for idx in idxs:
             window = self.TabsOpened.GetPage(idx)
-            if not window.IsDebugging():
-                tagname = window.GetTagName()
-                if self.Controler.GetEditedElement(tagname) is None:
-                    self.VariablePanelIndexer.RemoveVariablePanel(tagname)
-                    self.TabsOpened.DeletePage(idx)
+            if window.HasNoModel():
+                self.TabsOpened.DeletePage(idx)
 
     def OnUndoMenu(self, event):
-        self.Controler.LoadPrevious()
-        self.CloseTabsWithoutModel()
-        self.RefreshEditor()
-        self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
-                      SCALING)
+        selected = self.TabsOpened.GetSelection()
+        if selected != -1:
+            window = self.TabsOpened.GetPage(selected)
+            window.Undo()
+            self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
+                          SCALING, PAGETITLES)
     
     def OnRedoMenu(self, event):
-        self.Controler.LoadNext()
-        self.CloseTabsWithoutModel()
-        self.RefreshEditor()
-        self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
-                      SCALING)
+        selected = self.TabsOpened.GetSelection()
+        if selected != -1:
+            window = self.TabsOpened.GetPage(selected)
+            window.Redo()
+            self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE, 
+                          SCALING, PAGETITLES)
     
     def OnEnableUndoRedoMenu(self, event):
         self.Controler.EnableProjectBuffer(event.IsChecked())
@@ -1075,8 +1062,8 @@
 
     def OnSelectAllMenu(self, event):
         control = self.FindFocus()
-        if isinstance(control, (Viewer, TextViewer)):
-            control.SelectAll()
+        if control.GetName() in ["Viewer", "TextViewer"]:
+            control.Parent.SelectAll()
         elif isinstance(control, wx.TextCtrl):
             control.SetSelection(0, control.GetLastPosition())
         elif isinstance(control, wx.ComboBox):
@@ -1203,38 +1190,28 @@
             else:
                 wx.CallAfter(self.SelectInstancesTreeItem, self.InstancesTree.GetRootItem(), window.GetInstancePath())
             window.RefreshView()
-            if not window.IsDebugging():
-                self.VariablePanelIndexer.ChangeVariablePanel(window.GetTagName())
             self._Refresh(FILEMENU, EDITMENU, DISPLAYMENU, TOOLBAR)
         event.Skip()
 
-    def RefreshEditor(self, variablepanel = True):
+    def RefreshEditor(self):
         selected = self.TabsOpened.GetSelection()
         if USE_AUI:
             for child in self.TabsOpened.GetChildren():
                 if isinstance(child, wx.aui.AuiTabCtrl):
                     active_page = child.GetActivePage()
                     if active_page >= 0:
-                        window = child.GetWindowFromIdx(child.GetActivePage())
+                        window = child.GetWindowFromIdx(active_page)
                         window.RefreshView()
-                        if not window.IsDebugging() and self.TabsOpened.GetPageIndex(window) == selected and variablepanel:
-                            self.RefreshVariablePanel(window.GetTagName())
         elif selected >= 0:
             window = self.TabsOpened.GetPage(idx)
             window.RefreshView()
-            if not window.IsDebugging() and variablepanel:
-                self.RefreshVariablePanel(window.GetTagName())
-
-    def RefreshVariablePanel(self, tagname):
-        self.VariablePanelIndexer.RefreshVariablePanel(tagname)
-
+    
     def RefreshEditorNames(self, old_tagname, new_tagname):
         for i in xrange(self.TabsOpened.GetPageCount()):
             editor = self.TabsOpened.GetPage(i)
             if editor.GetTagName() == old_tagname:
                 editor.SetTagName(new_tagname)
-        self.VariablePanelIndexer.UpdateVariablePanelTagName(old_tagname, new_tagname)
-
+    
     def IsOpened(self, tagname):
         for idx in xrange(self.TabsOpened.GetPageCount()):
             if self.TabsOpened.GetPage(idx).IsViewing(tagname):
@@ -1244,31 +1221,10 @@
     def RefreshPageTitles(self):
         for idx in xrange(self.TabsOpened.GetPageCount()):
             window = self.TabsOpened.GetPage(idx)
-            debug = window.IsDebugging()
-            words = window.GetTagName().split("::")
-            if words[0] == "P":
-                pou_type = self.Controler.GetEditedElementType(window.GetTagName(), debug)[1].upper()
-                pou_body_type = self.Controler.GetEditedElementBodyType(window.GetTagName(), debug)
-                self.SetPageBitmap(idx, self.GenerateBitmap(pou_type, pou_body_type))
-            elif words[0] == "T":
-                pou_body_type = self.Controler.GetEditedElementBodyType(window.GetTagName(), debug)
-                self.SetPageBitmap(idx, self.GenerateBitmap("TRANSITION", pou_body_type))
-            elif words[0] == "A":
-                pou_body_type = self.Controler.GetEditedElementBodyType(window.GetTagName(), debug)
-                self.SetPageBitmap(idx, self.GenerateBitmap("ACTION", pou_body_type))
-            elif words[0] == "C":
-                self.SetPageBitmap(idx, self.GenerateBitmap("CONFIGURATION"))
-            elif words[0] == "R":
-                self.SetPageBitmap(idx, self.GenerateBitmap("RESOURCE"))
-            elif words[0] == "D":
-                self.SetPageBitmap(idx, self.GenerateBitmap("DATATYPE"))
-            if debug:
-                text = window.GetInstancePath()
-                if len(text) > 15:
-                    text = "..." + text[-12:]
-                self.TabsOpened.SetPageText(idx, text)
-            else:
-                self.TabsOpened.SetPageText(idx, "-".join(words[1:]))
+            icon = window.GetIcon()
+            if icon is not None:
+                self.SetPageBitmap(idx, icon)
+            self.TabsOpened.SetPageText(idx, window.GetTitle())
 
     def GetTabsOpenedDClickFunction(self, tabctrl):
         def OnTabsOpenedDClick(event):
@@ -1563,7 +1519,7 @@
         else:
             event.Skip()
     
-    def EditProjectElement(self, elementtype, tagname, onlyopened = False):
+    def EditProjectElement(self, element, tagname, onlyopened = False):
         openedidx = self.IsOpened(tagname)
         if openedidx is not None:
             old_selected = self.TabsOpened.GetSelection()
@@ -1571,19 +1527,18 @@
                 if old_selected >= 0:
                     self.TabsOpened.GetPage(old_selected).ResetBuffer()
                 self.TabsOpened.SetSelection(openedidx)
-            self.VariablePanelIndexer.ChangeVariablePanel(tagname)
-            self.RefreshPageTitles()
-            self._Refresh(FILEMENU, EDITMENU, TOOLBAR)
+            self._Refresh(FILEMENU, EDITMENU, TOOLBAR, PAGETITLES)
         elif not onlyopened:
-            if elementtype == ITEM_CONFIGURATION:
+            new_window = None
+            if element == ITEM_CONFIGURATION:
                 new_window = ConfigurationEditor(self.TabsOpened, tagname, self, self.Controler)
+                new_window.SetIcon(self.GenerateBitmap("CONFIGURATION"))
                 self.AddPage(new_window, "")
-                self.VariablePanelIndexer.AddVariablePanel(tagname, "config")
-            elif elementtype == ITEM_RESOURCE:
+            elif element == ITEM_RESOURCE:
                 new_window = ResourceEditor(self.TabsOpened, tagname, self, self.Controler)
+                new_window.SetIcon(self.GenerateBitmap("RESOURCE"))
                 self.AddPage(new_window, "")
-                self.VariablePanelIndexer.AddVariablePanel(tagname, "resource")
-            elif elementtype in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
+            elif element in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
                 bodytype = self.Controler.GetEditedElementBodyType(tagname)
                 if bodytype == "FBD":
                     new_window = Viewer(self.TabsOpened, tagname, self, self.Controler)
@@ -1601,24 +1556,35 @@
                         new_window.SetKeywords(IL_KEYWORDS)
                     else:
                         new_window.SetKeywords(ST_KEYWORDS)
+                if element == ITEM_POU:
+                    pou_type = self.Controler.GetEditedElementType(tagname)[1].upper()
+                    icon = self.GenerateBitmap(pou_type, bodytype)
+                elif element == ITEM_TRANSITION:
+                    icon = self.GenerateBitmap("TRANSITION", bodytype)
+                elif element == ITEM_ACTION:
+                    icon = self.GenerateBitmap("ACTION", bodytype)
+                new_window.SetIcon(icon)
                 self.AddPage(new_window, "")
                 words = tagname.split("::")
-                self.VariablePanelIndexer.AddVariablePanel(tagname, self.Controler.GetPouType(words[1]))
-            elif elementtype == ITEM_DATATYPE:
+            elif element == ITEM_DATATYPE:
                 new_window = DataTypeEditor(self.TabsOpened, tagname, self, self.Controler)
+                new_window.SetIcon(self.GenerateBitmap("DATATYPE"))
                 self.AddPage(new_window, "")
-            self.VariablePanelIndexer.ChangeVariablePanel(tagname)
-            openedidx = self.IsOpened(tagname)
-            old_selected = self.TabsOpened.GetSelection()
-            if old_selected != openedidx:
-                if old_selected >= 0:
-                    self.TabsOpened.GetPage(old_selected).ResetBuffer()
-            for i in xrange(self.TabsOpened.GetPageCount()):
-                window = self.TabsOpened.GetPage(i)
-                if window.GetTagName() == tagname:
-                    self.TabsOpened.SetSelection(i)
-                    window.SetFocus()
-                    self.RefreshPageTitles()
+            elif isinstance(element, EditorPanel):
+                new_window = element
+                self.AddPage(element, "")
+            if new_window is not None:
+                openedidx = self.IsOpened(tagname)
+                old_selected = self.TabsOpened.GetSelection()
+                if old_selected != openedidx:
+                    if old_selected >= 0:
+                        self.TabsOpened.GetPage(old_selected).ResetBuffer()
+                for i in xrange(self.TabsOpened.GetPageCount()):
+                    window = self.TabsOpened.GetPage(i)
+                    if window == new_window:
+                        self.TabsOpened.SetSelection(i)
+                        window.SetFocus()
+                self.RefreshPageTitles()
     
     def OnTypesTreeRightUp(self, event):
         if wx.Platform == '__WXMSW__':
@@ -1836,6 +1802,14 @@
                             new_window.SetKeywords(IL_KEYWORDS)
                         else:
                             new_window.SetKeywords(ST_KEYWORDS)
+                    if selected_infos[0] in [ITEM_FUNCTIONBLOCK, ITEM_PROGRAM]:
+                        pou_type = self.Controler.GetEditedElementType(selected_infos[1], True)[1].upper()
+                        icon = self.GenerateBitmap(pou_type, bodytype)
+                    elif selected_infos[0] == ITEM_TRANSITION:
+                        icon = self.GenerateBitmap("TRANSITION", bodytype)
+                    elif selected_infos[0] == ITEM_ACTION:
+                        icon = self.GenerateBitmap("ACTION", bodytype)
+                    new_window.SetIcon(icon)
                     self.AddPage(new_window, "")
                     new_window.SetFocus()
                     self.RefreshPageTitles()
@@ -2359,7 +2333,6 @@
                 tagname = self.Controler.ComputePouName(name)
                 idx = self.IsOpened(tagname)
                 if idx is not None:
-                    self.VariablePanelIndexer.RemoveVariablePanel(tagname)
                     self.TabsOpened.DeletePage(idx)
                 self._Refresh(TITLE, TOOLBAR, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE, LIBRARYTREE)
             else:
@@ -2379,7 +2352,6 @@
             tagname = self.Controler.ComputePouTransitionName(pou_name, transition)
             idx = self.IsOpened(tagname)
             if idx is not None:
-                self.VariablePanelIndexer.RemoveVariablePanel(tagname)
                 self.TabsOpened.DeletePage(idx)
             self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
 
@@ -2397,7 +2369,6 @@
             tagname = self.Controler.ComputePouActionName(pou_name, action)
             idx = self.IsOpened(tagname)
             if idx is not None:
-                self.VariablePanelIndexer.RemoveVariablePanel(tagname)
                 self.TabsOpened.DeletePage(idx)
             self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
 
@@ -2409,7 +2380,6 @@
             tagname = self.Controler.ComputeConfigurationName(name)
             idx = self.IsOpened(tagname)
             if idx is not None:
-                self.VariablePanelIndexer.RemoveVariablePanel(tagname)
                 self.TabsOpened.DeletePage(idx)
             self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE)
 
@@ -2427,7 +2397,6 @@
             tagname = self.Controler.ComputeConfigurationResourceName(config_name, selected)
             idx = self.IsOpened(tagname)
             if idx is not None:
-                self.VariablePanelIndexer.RemoveVariablePanel(tagname)
                 self.TabsOpened.DeletePage(idx)
             self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE)
     
@@ -2453,13 +2422,10 @@
             self.TypesTree.Unselect()
         else:
             self.EditProjectElement(self.Controler.GetElementType(infos[0]), infos[0])
-            if infos[1] in plcopen.searchResultVarTypes.values() + ["var_local"]:
-                self.VariablePanelIndexer.AddVariableHighlight(infos, highlight_type)
-            else:
-                selected = self.TabsOpened.GetSelection()
-                if selected != -1:
-                    viewer = self.TabsOpened.GetPage(selected)
-                    viewer.AddHighlight(infos[1:], start, end, highlight_type)
+            selected = self.TabsOpened.GetSelection()
+            if selected != -1:
+                viewer = self.TabsOpened.GetPage(selected)
+                viewer.AddHighlight(infos[1:], start, end, highlight_type)
 
     def ShowError(self, infos, start, end):
         self.ShowHighlight(infos, start, end, ERROR_HIGHLIGHT)
@@ -2473,7 +2439,6 @@
         else:
             self.Highlights = dict([(name, highlight) for name, highlight in self.Highlights.iteritems() if highlight != highlight_type])
         self.RefreshTypesTree()
-        self.VariablePanelIndexer.ClearHighlights(highlight_type)
         for i in xrange(self.TabsOpened.GetPageCount()):
             viewer = self.TabsOpened.GetPage(i)
             viewer.ClearHighlights(highlight_type)
@@ -2721,9 +2686,8 @@
         if not result:
             self.SaveProjectAs()
         else:
-            self.RefreshTitle()
-            self.RefreshFileMenu()
-    
+            self._Refresh(TITLE, FILEMENU, PAGETITLES)
+        
     def SaveProjectAs(self):
         filepath = self.Controler.GetFilePath()
         if filepath != "":
@@ -2739,8 +2703,7 @@
                     self.ShowErrorMessage(_("Can't save project to file %s!")%filepath)
             else:
                 self.ShowErrorMessage(_("\"%s\" is not a valid folder!")%os.path.dirname(filepath))
-            self.RefreshTitle()
-            self.RefreshFileMenu()
+            self._Refresh(TITLE, FILEMENU, PAGETITLES)
         dialog.Destroy()
 
 #-------------------------------------------------------------------------------
@@ -3846,106 +3809,6 @@
         return self.GetSizer().GetItem(1).GetWindow().GetValue()
 
 #-------------------------------------------------------------------------------
-#                            Variables Editor Panel
-#-------------------------------------------------------------------------------
-
-def PouTagname(tagname):
-    words = tagname.split("::")
-    if words[0] in ["T", "A"]:
-        return "P::%s" % words[1]
-    return tagname
-
-class VariablePanelIndexer(wx.Panel):
-    
-    def _init_sizers(self):
-        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
-        
-        self.SetSizer(self.MainSizer)
-    
-    def _init_ctrls(self, prnt):
-        wx.Panel.__init__(self, id=wx.NewId(),
-              name='VariablePanelIndexer', parent=prnt, pos=wx.Point(0, 0),
-              size=wx.Size(0, 300), style=wx.TAB_TRAVERSAL)
-        
-        self._init_sizers()
-    
-    def __init__(self, parent, window):
-        self._init_ctrls(parent)
-        
-        self.ParentWindow = window
-        
-        self.VariablePanelList = {}
-        self.CurrentPanel = None
-        
-    def AddVariablePanel(self, tagname, element_type):
-        tagname = PouTagname(tagname)
-        panel, users = self.VariablePanelList.get(tagname, (None, 0))
-        if panel is None:
-            panel = VariablePanel(self, self.ParentWindow, self.ParentWindow.Controler, element_type)
-            panel.SetTagName(tagname)
-            panel.Hide()
-            panel.RefreshView()
-            self.MainSizer.AddWindow(panel, 1, border=0, flag=wx.GROW)
-        self.VariablePanelList[tagname] = (panel, users + 1)
-        
-    def RemoveVariablePanel(self, tagname):
-        tagname = PouTagname(tagname)
-        panel, users = self.VariablePanelList.pop(tagname, (None, 0))
-        if panel is not None:
-            if users > 1:
-                self.VariablePanelList[tagname] = (panel, users - 1)
-            else:
-                self.MainSizer.Remove(panel)
-                panel.Destroy()
-            if self.CurrentPanel == tagname:
-                self.CurrentPanel = None
-    
-    def RemoveAllPanels(self):
-        for panel, users in self.VariablePanelList.itervalues():
-            self.MainSizer.Remove(panel)
-            panel.Destroy()
-        self.VariablePanelList = {}
-        self.CurrentPanel = None
-    
-    def UpdateVariablePanelTagName(self, old_tagname, new_tagname):
-        old_tagname = PouTagname(old_tagname)
-        new_tagname = PouTagname(new_tagname)
-        if old_tagname in self.VariablePanelList and old_tagname != new_tagname:
-            self.VariablePanelList[new_tagname] = self.VariablePanelList.pop(old_tagname)
-            if self.CurrentPanel == old_tagname:
-                self.CurrentPanel = new_tagname
-                
-    def ChangeVariablePanel(self, tagname):
-        tagname = PouTagname(tagname)
-        panel, users = self.VariablePanelList.get(tagname, (None, 0))
-        if panel is None:
-            if self.CurrentPanel is not None:
-                self.VariablePanelList[self.CurrentPanel][0].Hide()
-            self.CurrentPanel = None
-            self.MainSizer.Layout()
-        elif tagname != self.CurrentPanel:
-            if self.CurrentPanel is not None:
-                self.VariablePanelList[self.CurrentPanel][0].Hide()
-            self.CurrentPanel = tagname
-            panel.RefreshView()
-            panel.Show()
-            self.MainSizer.Layout()
-
-    def RefreshVariablePanel(self, tagname):
-        panel, users = self.VariablePanelList.get(PouTagname(tagname), (None, 0)) 
-        if panel is not None:
-            panel.RefreshView()
-
-    def AddVariableHighlight(self, infos, highlight_type):
-        self.ChangeVariablePanel(infos[0])
-        if self.CurrentPanel is not None:
-            self.VariablePanelList[self.CurrentPanel][0].AddVariableHighlight(infos[2:], highlight_type)
-
-    def ClearHighlights(self, highlight_type=None):
-        for panel, users in self.VariablePanelList.values():
-            panel.ClearHighlights(highlight_type)
-
-#-------------------------------------------------------------------------------
 #                            Debug Variables Panel
 #-------------------------------------------------------------------------------