112 from GraphicViewer import * |
112 from GraphicViewer import * |
113 from RessourceEditor import * |
113 from RessourceEditor import * |
114 from DataTypeEditor import * |
114 from DataTypeEditor import * |
115 from PLCControler import * |
115 from PLCControler import * |
116 from VariablePanel import VariablePanel |
116 from VariablePanel import VariablePanel |
|
117 from SearchResultPanel import SearchResultPanel |
117 |
118 |
118 # Define PLCOpenEditor controls id |
119 # Define PLCOpenEditor controls id |
119 [ID_PLCOPENEDITOR, ID_PLCOPENEDITORLEFTNOTEBOOK, |
120 [ID_PLCOPENEDITOR, ID_PLCOPENEDITORLEFTNOTEBOOK, |
120 ID_PLCOPENEDITORBOTTOMNOTEBOOK, ID_PLCOPENEDITORRIGHTNOTEBOOK, |
121 ID_PLCOPENEDITORBOTTOMNOTEBOOK, ID_PLCOPENEDITORRIGHTNOTEBOOK, |
121 ID_PLCOPENEDITORTYPESTREE, ID_PLCOPENEDITORINSTANCESTREE, |
122 ID_PLCOPENEDITORTYPESTREE, ID_PLCOPENEDITORINSTANCESTREE, |
133 ] = [wx.NewId() for _init_coll_FileMenu_Items in range(1)] |
134 ] = [wx.NewId() for _init_coll_FileMenu_Items in range(1)] |
134 |
135 |
135 # Define PLCOpenEditor EditMenu extra items id |
136 # Define PLCOpenEditor EditMenu extra items id |
136 [ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, ID_PLCOPENEDITOREDITMENUADDDATATYPE, |
137 [ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, ID_PLCOPENEDITOREDITMENUADDDATATYPE, |
137 ID_PLCOPENEDITOREDITMENUADDFUNCTION, ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK, |
138 ID_PLCOPENEDITOREDITMENUADDFUNCTION, ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK, |
138 ID_PLCOPENEDITOREDITMENUADDPROGRAM, ID_PLCOPENEDITOREDITMENUADDCONFIGURATION, |
139 ID_PLCOPENEDITOREDITMENUADDPROGRAM, ID_PLCOPENEDITOREDITMENUADDCONFIGURATION, |
139 ] = [wx.NewId() for _init_coll_EditMenu_Items in range(6)] |
140 ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, |
|
141 ] = [wx.NewId() for _init_coll_EditMenu_Items in range(7)] |
140 |
142 |
141 |
143 |
142 #------------------------------------------------------------------------------- |
144 #------------------------------------------------------------------------------- |
143 # ToolBars definitions |
145 # ToolBars definitions |
144 #------------------------------------------------------------------------------- |
146 #------------------------------------------------------------------------------- |
328 AppendMenu(parent, help='', id=wx.ID_COPY, |
330 AppendMenu(parent, help='', id=wx.ID_COPY, |
329 kind=wx.ITEM_NORMAL, text=_(u'Copy\tCTRL+C')) |
331 kind=wx.ITEM_NORMAL, text=_(u'Copy\tCTRL+C')) |
330 AppendMenu(parent, help='', id=wx.ID_PASTE, |
332 AppendMenu(parent, help='', id=wx.ID_PASTE, |
331 kind=wx.ITEM_NORMAL, text=_(u'Paste\tCTRL+V')) |
333 kind=wx.ITEM_NORMAL, text=_(u'Paste\tCTRL+V')) |
332 parent.AppendSeparator() |
334 parent.AppendSeparator() |
|
335 AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, |
|
336 kind=wx.ITEM_NORMAL, text=_(u'Search in Project')) |
|
337 parent.AppendSeparator() |
333 addmenu = wx.Menu(title='') |
338 addmenu = wx.Menu(title='') |
334 parent.AppendMenu(wx.ID_ADD, _("Add Element"), addmenu) |
339 parent.AppendMenu(wx.ID_ADD, _("Add Element"), addmenu) |
335 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE, |
340 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE, |
336 kind=wx.ITEM_NORMAL, text=_(u'Data Type')) |
341 kind=wx.ITEM_NORMAL, text=_(u'Data Type')) |
337 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION, |
342 AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION, |
350 self.Bind(wx.EVT_MENU, self.OnRedoMenu, id=wx.ID_REDO) |
355 self.Bind(wx.EVT_MENU, self.OnRedoMenu, id=wx.ID_REDO) |
351 #self.Bind(wx.EVT_MENU, self.OnEnableUndoRedoMenu, id=ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO) |
356 #self.Bind(wx.EVT_MENU, self.OnEnableUndoRedoMenu, id=ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO) |
352 self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT) |
357 self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT) |
353 self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY) |
358 self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY) |
354 self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE) |
359 self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE) |
|
360 self.Bind(wx.EVT_MENU, self.OnSearchInProjectMenu, |
|
361 id=ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT) |
355 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, |
362 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, |
356 id=ID_PLCOPENEDITOREDITMENUADDDATATYPE) |
363 id=ID_PLCOPENEDITOREDITMENUADDDATATYPE) |
357 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"), |
364 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"), |
358 id=ID_PLCOPENEDITOREDITMENUADDFUNCTION) |
365 id=ID_PLCOPENEDITOREDITMENUADDFUNCTION) |
359 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"), |
366 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"), |
592 id=ID_PLCOPENEDITORTOOLBARSELECTION) |
599 id=ID_PLCOPENEDITORTOOLBARSELECTION) |
593 |
600 |
594 self.VariablePanelIndexer = VariablePanelIndexer(self.BottomNoteBook, self) |
601 self.VariablePanelIndexer = VariablePanelIndexer(self.BottomNoteBook, self) |
595 self.BottomNoteBook.AddPage(self.VariablePanelIndexer, _("Variables")) |
602 self.BottomNoteBook.AddPage(self.VariablePanelIndexer, _("Variables")) |
596 |
603 |
|
604 self.SearchResultPanel = SearchResultPanel(self.BottomNoteBook, self) |
|
605 self.BottomNoteBook.AddPage(self.SearchResultPanel, _("Search")) |
|
606 |
597 self.LibraryPanel = wx.Panel(id=ID_PLCOPENEDITORLIBRARYPANEL, |
607 self.LibraryPanel = wx.Panel(id=ID_PLCOPENEDITORLIBRARYPANEL, |
598 name='LibraryPanel', parent=self.RightNoteBook, pos=wx.Point(0, |
608 name='LibraryPanel', parent=self.RightNoteBook, pos=wx.Point(0, |
599 0), size=wx.Size(0, 0), style=0) |
609 0), size=wx.Size(0, 0), style=0) |
600 self.RightNoteBook.AddPage(self.LibraryPanel, _("Library")) |
610 self.RightNoteBook.AddPage(self.LibraryPanel, _("Library")) |
601 |
611 |
611 id=ID_PLCOPENEDITORLIBRARYTREE) |
621 id=ID_PLCOPENEDITORLIBRARYTREE) |
612 self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnLibraryTreeBeginDrag, |
622 self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnLibraryTreeBeginDrag, |
613 id=ID_PLCOPENEDITORLIBRARYTREE) |
623 id=ID_PLCOPENEDITORLIBRARYTREE) |
614 |
624 |
615 self.LibraryComment = wx.TextCtrl(id=ID_PLCOPENEDITORLIBRARYCOMMENT, |
625 self.LibraryComment = wx.TextCtrl(id=ID_PLCOPENEDITORLIBRARYCOMMENT, |
616 name='LibraryComment', parent=self.LibraryPanel, |
626 name='LibraryComment', parent=self.LibraryPanel, |
617 pos=wx.Point(0, 0), size=wx.Size(0, 160), |
627 pos=wx.Point(0, 0), size=wx.Size(0, 160), |
618 style=wx.TE_READONLY|wx.TE_MULTILINE) |
628 style=wx.TE_READONLY|wx.TE_MULTILINE) |
619 |
629 |
620 self._init_sizers() |
630 self._init_sizers() |
621 |
631 |
622 if self.EnableDebug: |
632 if self.EnableDebug: |
623 self.DebugVariablePanel = DebugVariablePanel(self.RightNoteBook, self.Controler) |
633 self.DebugVariablePanel = DebugVariablePanel(self.RightNoteBook, self.Controler) |
990 self.EditMenu.Enable(wx.ID_UNDO, undo) |
1000 self.EditMenu.Enable(wx.ID_UNDO, undo) |
991 self.EditMenu.Enable(wx.ID_REDO, redo) |
1001 self.EditMenu.Enable(wx.ID_REDO, redo) |
992 #self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, True) |
1002 #self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, True) |
993 #self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, |
1003 #self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, |
994 # self.Controler.IsProjectBufferEnabled()) |
1004 # self.Controler.IsProjectBufferEnabled()) |
|
1005 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True) |
995 self.EditMenu.Enable(wx.ID_ADD, True) |
1006 self.EditMenu.Enable(wx.ID_ADD, True) |
996 self.EditMenu.Enable(wx.ID_DELETE, True) |
1007 self.EditMenu.Enable(wx.ID_DELETE, True) |
997 if self.TabsOpened.GetPageCount() > 0: |
1008 if self.TabsOpened.GetPageCount() > 0: |
998 self.EditMenu.Enable(wx.ID_CUT, True) |
1009 self.EditMenu.Enable(wx.ID_CUT, True) |
999 self.EditMenu.Enable(wx.ID_COPY, True) |
1010 self.EditMenu.Enable(wx.ID_COPY, True) |
1013 #self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, False) |
1024 #self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, False) |
1014 self.EditMenu.Enable(wx.ID_CUT, False) |
1025 self.EditMenu.Enable(wx.ID_CUT, False) |
1015 self.EditMenu.Enable(wx.ID_COPY, False) |
1026 self.EditMenu.Enable(wx.ID_COPY, False) |
1016 self.EditMenu.Enable(wx.ID_PASTE, False) |
1027 self.EditMenu.Enable(wx.ID_PASTE, False) |
1017 self.EditMenu.Enable(wx.ID_SELECTALL, False) |
1028 self.EditMenu.Enable(wx.ID_SELECTALL, False) |
|
1029 self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False) |
1018 self.EditMenu.Enable(wx.ID_ADD, False) |
1030 self.EditMenu.Enable(wx.ID_ADD, False) |
1019 self.EditMenu.Enable(wx.ID_DELETE, False) |
1031 self.EditMenu.Enable(wx.ID_DELETE, False) |
1020 |
1032 |
1021 def CloseTabsWithoutModel(self): |
1033 def CloseTabsWithoutModel(self): |
1022 idxs = range(self.TabsOpened.GetPageCount()) |
1034 idxs = range(self.TabsOpened.GetPageCount()) |
1084 elif isinstance(window, (Viewer, TextViewer)): |
1096 elif isinstance(window, (Viewer, TextViewer)): |
1085 event = wx.KeyEvent(wx.EVT_CHAR._getEvtType()) |
1097 event = wx.KeyEvent(wx.EVT_CHAR._getEvtType()) |
1086 event.m_keyCode = wx.WXK_DELETE |
1098 event.m_keyCode = wx.WXK_DELETE |
1087 window.ProcessEvent(event) |
1099 window.ProcessEvent(event) |
1088 |
1100 |
1089 |
1101 def OnSearchInProjectMenu(self, event): |
|
1102 dialog = SearchInProjectDialog(self) |
|
1103 if dialog.ShowModal() == wx.ID_OK: |
|
1104 criteria = dialog.GetCriteria() |
|
1105 result = self.Controler.SearchInProject(criteria) |
|
1106 self.ClearSearchResults() |
|
1107 self.SearchResultPanel.SetSearchResults(criteria, result) |
|
1108 self.BottomNoteBook.SetSelection(self.BottomNoteBook.GetPageIndex(self.SearchResultPanel)) |
|
1109 |
1090 #------------------------------------------------------------------------------- |
1110 #------------------------------------------------------------------------------- |
1091 # Display Menu Functions |
1111 # Display Menu Functions |
1092 #------------------------------------------------------------------------------- |
1112 #------------------------------------------------------------------------------- |
1093 |
1113 |
1094 def RefreshDisplayMenu(self): |
1114 def RefreshDisplayMenu(self): |
1271 item_name = infos["name"] |
1291 item_name = infos["name"] |
1272 if infos["type"] in ITEMS_UNEDITABLE: |
1292 if infos["type"] in ITEMS_UNEDITABLE: |
1273 item_name = _(item_name) |
1293 item_name = _(item_name) |
1274 self.TypesTree.SetItemText(root, item_name) |
1294 self.TypesTree.SetItemText(root, item_name) |
1275 self.TypesTree.SetPyData(root, infos["type"]) |
1295 self.TypesTree.SetPyData(root, infos["type"]) |
1276 if infos.get("tagname", None) in self.Errors: |
1296 highlight_colours = self.Highlights.get(infos.get("tagname", None), (wx.WHITE, wx.BLACK)) |
1277 self.TypesTree.SetItemBackgroundColour(root, wx.Colour(255, 255, 0)) |
1297 self.TypesTree.SetItemBackgroundColour(root, highlight_colours[0]) |
1278 self.TypesTree.SetItemTextColour(root, wx.RED) |
1298 self.TypesTree.SetItemTextColour(root, highlight_colours[1]) |
1279 else: |
|
1280 self.TypesTree.SetItemBackgroundColour(root, wx.WHITE) |
|
1281 self.TypesTree.SetItemTextColour(root, wx.BLACK) |
|
1282 if infos["type"] == ITEM_POU: |
1299 if infos["type"] == ITEM_POU: |
1283 self.TypesTree.SetItemImage(root, self.TreeImageDict[self.Controler.GetPouBodyType(infos["name"])]) |
1300 self.TypesTree.SetItemImage(root, self.TreeImageDict[self.Controler.GetPouBodyType(infos["name"])]) |
1284 else: |
1301 else: |
1285 self.TypesTree.SetItemImage(root, self.TreeImageDict[infos["type"]]) |
1302 self.TypesTree.SetItemImage(root, self.TreeImageDict[infos["type"]]) |
1286 |
1303 |
2420 def OnAboutMenu(self, event): |
2437 def OnAboutMenu(self, event): |
2421 OpenHtmlFrame(self,_("About PLCOpenEditor"), os.path.join(CWD, "doc","about.html"), wx.Size(350, 350)) |
2438 OpenHtmlFrame(self,_("About PLCOpenEditor"), os.path.join(CWD, "doc","about.html"), wx.Size(350, 350)) |
2422 |
2439 |
2423 |
2440 |
2424 #------------------------------------------------------------------------------- |
2441 #------------------------------------------------------------------------------- |
2425 # Errors showing functions |
2442 # Highlights showing functions |
2426 #------------------------------------------------------------------------------- |
2443 #------------------------------------------------------------------------------- |
2427 |
2444 |
2428 def ShowError(self, infos, start, end): |
2445 def ShowHighlight(self, infos, start, end, highlight_type): |
2429 self.EditProjectElement(self.Controler.GetElementType(infos[0]), infos[0]) |
2446 print infos, start, end, highlight_type |
2430 self.SelectTypesTreeItem(infos[0]) |
2447 self.SelectTypesTreeItem(infos[0]) |
2431 if infos[1] == "name": |
2448 if infos[1] == "name": |
2432 self.Errors.append(infos[0]) |
2449 self.Highlights[infos[0]] = highlight_type |
2433 self.RefreshTypesTree() |
2450 self.RefreshTypesTree() |
2434 self.TypesTree.Unselect() |
2451 self.TypesTree.Unselect() |
2435 elif infos[1] == "variable": |
|
2436 self.VariablePanelIndexer.AddVariableError(infos) |
|
2437 else: |
2452 else: |
2438 selected = self.TabsOpened.GetSelection() |
2453 self.EditProjectElement(self.Controler.GetElementType(infos[0]), infos[0]) |
2439 if selected != -1: |
2454 if infos[1] in plcopen.searchResultVarTypes.values() + ["var_local"]: |
2440 viewer = self.TabsOpened.GetPage(selected) |
2455 self.VariablePanelIndexer.AddVariableHighlight(infos, highlight_type) |
2441 viewer.AddShownError(infos[1:], start, end) |
2456 else: |
2442 viewer.RefreshView() |
2457 selected = self.TabsOpened.GetSelection() |
2443 |
2458 if selected != -1: |
2444 def ClearErrors(self): |
2459 viewer = self.TabsOpened.GetPage(selected) |
2445 self.Errors = [] |
2460 viewer.AddHighlight(infos[1:], start, end, highlight_type) |
|
2461 |
|
2462 def ShowError(self, infos, start, end): |
|
2463 self.ShowHighlight(infos, start, end, ERROR_HIGHLIGHT) |
|
2464 |
|
2465 def ShowSearchResult(self, infos, start, end): |
|
2466 self.ShowHighlight(infos, start, end, SEARCH_RESULT_HIGHLIGHT) |
|
2467 |
|
2468 def ClearHighlights(self, highlight_type=None): |
|
2469 if highlight_type is None: |
|
2470 self.Highlights = {} |
|
2471 else: |
|
2472 self.Highlights = dict([(name, highlight) for name, highlight in self.Highlights.iteritems() if highlight != highlight_type]) |
2446 self.RefreshTypesTree() |
2473 self.RefreshTypesTree() |
2447 self.VariablePanelIndexer.ClearErrors() |
2474 self.VariablePanelIndexer.ClearHighlights(highlight_type) |
2448 for i in xrange(self.TabsOpened.GetPageCount()): |
2475 for i in xrange(self.TabsOpened.GetPageCount()): |
2449 viewer = self.TabsOpened.GetPage(i) |
2476 viewer = self.TabsOpened.GetPage(i) |
2450 viewer.ClearErrors() |
2477 viewer.ClearHighlights(highlight_type) |
|
2478 |
|
2479 def ClearErrors(self): |
|
2480 self.ClearHighlights(ERROR_HIGHLIGHT) |
|
2481 |
|
2482 def ClearSearchResults(self): |
|
2483 self.ClearHighlights(SEARCH_RESULT_HIGHLIGHT) |
2451 |
2484 |
2452 #------------------------------------------------------------------------------- |
2485 #------------------------------------------------------------------------------- |
2453 # PLCOpenEditor Main Class |
2486 # PLCOpenEditor Main Class |
2454 #------------------------------------------------------------------------------- |
2487 #------------------------------------------------------------------------------- |
2455 |
2488 |
3835 |
3874 |
3836 self.VariablePanelList = {} |
3875 self.VariablePanelList = {} |
3837 self.CurrentPanel = None |
3876 self.CurrentPanel = None |
3838 |
3877 |
3839 def AddVariablePanel(self, tagname, element_type): |
3878 def AddVariablePanel(self, tagname, element_type): |
3840 new_panel = VariablePanel(self, self.ParentWindow, self.ParentWindow.Controler, element_type) |
3879 tagname = PouTagname(tagname) |
3841 new_panel.SetTagName(tagname) |
3880 panel, users = self.VariablePanelList.get(tagname, (None, 0)) |
3842 new_panel.Hide() |
3881 if panel is None: |
3843 new_panel.RefreshView() |
3882 panel = VariablePanel(self, self.ParentWindow, self.ParentWindow.Controler, element_type) |
3844 self.MainSizer.AddWindow(new_panel, 1, border=0, flag=wx.GROW) |
3883 panel.SetTagName(tagname) |
3845 self.VariablePanelList[tagname] = new_panel |
3884 panel.Hide() |
|
3885 panel.RefreshView() |
|
3886 self.MainSizer.AddWindow(panel, 1, border=0, flag=wx.GROW) |
|
3887 self.VariablePanelList[tagname] = (panel, users + 1) |
3846 |
3888 |
3847 def RemoveVariablePanel(self, tagname): |
3889 def RemoveVariablePanel(self, tagname): |
3848 if tagname in self.VariablePanelList: |
3890 tagname = PouTagname(tagname) |
3849 panel = self.VariablePanelList.pop(tagname) |
3891 panel, users = self.VariablePanelList.pop(tagname, (None, 0)) |
|
3892 if panel is not None: |
|
3893 if users > 1: |
|
3894 self.VariablePanelList[tagname] = (panel, users - 1) |
|
3895 else: |
|
3896 self.MainSizer.Remove(panel) |
|
3897 panel.Destroy() |
|
3898 if self.CurrentPanel == tagname: |
|
3899 self.CurrentPanel = None |
|
3900 |
|
3901 def RemoveAllPanels(self): |
|
3902 for panel, users in self.VariablePanelList.itervalues(): |
3850 self.MainSizer.Remove(panel) |
3903 self.MainSizer.Remove(panel) |
3851 panel.Destroy() |
3904 panel.Destroy() |
3852 if self.CurrentPanel == tagname: |
3905 self.VariablePanelList = {} |
3853 self.CurrentPanel = None |
3906 self.CurrentPanel = None |
3854 |
|
3855 def RemoveAllPanels(self): |
|
3856 for tagname in self.VariablePanelList.keys(): |
|
3857 self.RemoveVariablePanel(tagname) |
|
3858 |
3907 |
3859 def UpdateVariablePanelTagName(self, old_tagname, new_tagname): |
3908 def UpdateVariablePanelTagName(self, old_tagname, new_tagname): |
3860 if old_tagname in self.VariablePanelList: |
3909 old_tagname = PouTagname(old_tagname) |
|
3910 new_tagname = PouTagname(new_tagname) |
|
3911 if old_tagname in self.VariablePanelList and old_tagname != new_tagname: |
3861 self.VariablePanelList[new_tagname] = self.VariablePanelList.pop(old_tagname) |
3912 self.VariablePanelList[new_tagname] = self.VariablePanelList.pop(old_tagname) |
3862 if self.CurrentPanel == old_tagname: |
3913 if self.CurrentPanel == old_tagname: |
3863 self.CurrentPanel = new_tagname |
3914 self.CurrentPanel = new_tagname |
3864 |
3915 |
3865 def ChangeVariablePanel(self, tagname): |
3916 def ChangeVariablePanel(self, tagname): |
3866 if tagname in self.VariablePanelList: |
3917 tagname = PouTagname(tagname) |
3867 if tagname != self.CurrentPanel: |
3918 panel, users = self.VariablePanelList.get(tagname, (None, 0)) |
3868 if self.CurrentPanel is not None: |
3919 if panel is None: |
3869 self.VariablePanelList[self.CurrentPanel].Hide() |
|
3870 self.CurrentPanel = tagname |
|
3871 self.VariablePanelList[self.CurrentPanel].RefreshView() |
|
3872 self.VariablePanelList[self.CurrentPanel].Show() |
|
3873 self.MainSizer.Layout() |
|
3874 else: |
|
3875 if self.CurrentPanel is not None: |
3920 if self.CurrentPanel is not None: |
3876 self.VariablePanelList[self.CurrentPanel].Hide() |
3921 self.VariablePanelList[self.CurrentPanel][0].Hide() |
3877 self.CurrentPanel = None |
3922 self.CurrentPanel = None |
3878 self.MainSizer.Layout() |
3923 self.MainSizer.Layout() |
|
3924 elif tagname != self.CurrentPanel: |
|
3925 if self.CurrentPanel is not None: |
|
3926 self.VariablePanelList[self.CurrentPanel][0].Hide() |
|
3927 self.CurrentPanel = tagname |
|
3928 panel.RefreshView() |
|
3929 panel.Show() |
|
3930 self.MainSizer.Layout() |
3879 |
3931 |
3880 def RefreshVariablePanel(self, tagname): |
3932 def RefreshVariablePanel(self, tagname): |
3881 if tagname in self.VariablePanelList: |
3933 panel, users = self.VariablePanelList.get(PouTagname(tagname), (None, 0)) |
3882 self.VariablePanelList[self.CurrentPanel].RefreshView() |
3934 if panel is not None: |
3883 |
3935 panel.RefreshView() |
3884 def AddVariableError(self, infos): |
3936 |
|
3937 def AddVariableHighlight(self, infos, highlight_type): |
3885 self.ChangeVariablePanel(infos[0]) |
3938 self.ChangeVariablePanel(infos[0]) |
3886 if self.CurrentPanel is not None: |
3939 if self.CurrentPanel is not None: |
3887 self.VariablePanelList[self.CurrentPanel].AddVariableError(infos[2:]) |
3940 self.VariablePanelList[self.CurrentPanel][0].AddVariableHighlight(infos[2:], highlight_type) |
3888 |
3941 |
3889 def ClearErrors(self): |
3942 def ClearHighlights(self, highlight_type=None): |
3890 for panel in self.VariablePanelList.values(): |
3943 for panel, users in self.VariablePanelList.values(): |
3891 panel.ClearErrors() |
3944 panel.ClearHighlights(highlight_type) |
3892 |
3945 |
3893 #------------------------------------------------------------------------------- |
3946 #------------------------------------------------------------------------------- |
3894 # Debug Variables Panel |
3947 # Debug Variables Panel |
3895 #------------------------------------------------------------------------------- |
3948 #------------------------------------------------------------------------------- |
3896 |
3949 |