# HG changeset patch # User laurent # Date 1336064554 -7200 # Node ID 180e4a7d945ce442f31394959521c1adb878d9f4 # Parent 135566ab080707446c406ad2ba90b38fbe79cea3 Adding search field for finding function or function block in library tree diff -r 135566ab0807 -r 180e4a7d945c Beremiz.py --- a/Beremiz.py Fri Apr 27 02:07:47 2012 +0200 +++ b/Beremiz.py Thu May 03 19:02:34 2012 +0200 @@ -146,7 +146,7 @@ import TextCtrlAutoComplete, cPickle from BrowseValuesLibraryDialog import BrowseValuesLibraryDialog import types, time, re, platform, time, traceback, commands -from plugger import PluginsRoot, MATIEC_ERROR_MODEL +from plugger import PluginsRoot, MiniTextControler, MATIEC_ERROR_MODEL from wxPopen import ProcessLogger from docutils import * @@ -559,6 +559,7 @@ self.Controler = self.PluginRoot result = self.PluginRoot.LoadProject(projectOpen, buildpath) if not result: + self.LibraryPanel.SetControler(self.Controler) self.RefreshConfigRecentProjects(os.path.abspath(projectOpen)) self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE) self.RefreshAll() @@ -569,6 +570,7 @@ self.PluginRoot = plugin_root self.Controler = plugin_root if plugin_root is not None: + self.LibraryPanel.SetControler(self.Controler) self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE) self.RefreshAll() if self.EnableDebug: @@ -673,13 +675,19 @@ ConfigurationEditor, DataTypeEditor))): return ("plugin", tab.Controler.PlugFullName()) + elif (isinstance(tab, TextViewer) and + (tab.Controler is None or isinstance(tab.Controler, MiniTextControler))): + return ("plugin", None, tab.GetInstancePath()) else: return IDEFrame.GetTabInfos(self, tab) def LoadTab(self, notebook, page_infos): if page_infos[0] == "plugin": - plugin = self.PluginRoot.GetChildByName(page_infos[1]) - return notebook.GetPageIndex(plugin._OpenView()) + if page_infos[1] is None: + plugin = self.PluginRoot + else: + plugin = self.PluginRoot.GetChildByName(page_infos[1]) + return notebook.GetPageIndex(plugin._OpenView(*page_infos[2:])) else: return IDEFrame.LoadTab(self, notebook, page_infos) @@ -1673,6 +1681,7 @@ if not result: self.PluginRoot = plugin_root self.Controler = self.PluginRoot + self.LibraryPanel.SetControler(self.Controler) self.RefreshConfigRecentProjects(projectpath) if self.EnableDebug: self.DebugVariablePanel.SetDataProducer(self.PluginRoot) @@ -1707,6 +1716,7 @@ self.Controler = self.PluginRoot result = self.PluginRoot.LoadProject(projectpath) if not result: + self.LibraryPanel.SetControler(self.Controler) self.RefreshConfigRecentProjects(projectpath) if self.EnableDebug: self.DebugVariablePanel.SetDataProducer(self.PluginRoot) diff -r 135566ab0807 -r 180e4a7d945c plugger.py --- a/plugger.py Fri Apr 27 02:07:47 2012 +0200 +++ b/plugger.py Thu May 03 19:02:34 2012 +0200 @@ -35,7 +35,10 @@ def __init__(self, filepath): self.FilePath = filepath - + + def PlugFullName(self): + return "" + def SetEditedElementText(self, tagname, text): file = open(self.FilePath, "w") file.write(text) @@ -493,7 +496,7 @@ self.BaseParams.setIEC_Channel(res) return res - def _OpenView(self): + def _OpenView(self, name=None): if self.EditorType is not None and self._View is None: app_frame = self.GetPlugRoot().AppFrame @@ -1018,7 +1021,7 @@ self.ClearPluginTypes() self.AddPluginTypesList(self.PluginsTypesFactory()) if self.AppFrame is not None: - self.AppFrame.RefreshLibraryTree() + self.AppFrame.RefreshLibraryPanel() self.AppFrame.RefreshEditor() # Update a PLCOpenEditor Pou variable location @@ -1555,31 +1558,44 @@ self.AppFrame.ShowError(infos, start, end) def _showIECcode(self): - plc_file = self._getIECcodepath() - - IEC_code_viewer = TextViewer(self.AppFrame.TabsOpened, "", None, None, instancepath="IEC code") - #IEC_code_viewer.Enable(False) - IEC_code_viewer.SetTextSyntax("ALL") - IEC_code_viewer.SetKeywords(IEC_KEYWORDS) - try: - text = file(plc_file).read() - except: - text = '(* No IEC code have been generated at that time ! *)' - IEC_code_viewer.SetText(text = text) - IEC_code_viewer.SetIcon(self.AppFrame.GenerateBitmap("ST")) + self._OpenView("IEC code") + + def _editIECrawcode(self): + self._OpenView("IEC raw code") + + def _OpenView(self, name=None): + if name == "IEC code": + plc_file = self._getIECcodepath() + + IEC_code_viewer = TextViewer(self.AppFrame.TabsOpened, "", None, None, instancepath=name) + #IEC_code_viewer.Enable(False) + IEC_code_viewer.SetTextSyntax("ALL") + IEC_code_viewer.SetKeywords(IEC_KEYWORDS) + try: + text = file(plc_file).read() + except: + text = '(* No IEC code have been generated at that time ! *)' + IEC_code_viewer.SetText(text = text) + IEC_code_viewer.SetIcon(self.AppFrame.GenerateBitmap("ST")) + + self.AppFrame.EditProjectElement(IEC_code_viewer, name) - self.AppFrame.EditProjectElement(IEC_code_viewer, "IEC code") - - def _editIECrawcode(self): - controler = MiniTextControler(self._getIECrawcodepath()) - IEC_raw_code_viewer = TextViewer(self.AppFrame.TabsOpened, "", None, controler, instancepath="IEC raw code") - #IEC_raw_code_viewer.Enable(False) - IEC_raw_code_viewer.SetTextSyntax("ALL") - IEC_raw_code_viewer.SetKeywords(IEC_KEYWORDS) - IEC_raw_code_viewer.RefreshView() - IEC_raw_code_viewer.SetIcon(self.AppFrame.GenerateBitmap("ST")) - - self.AppFrame.EditProjectElement(IEC_raw_code_viewer, "IEC raw code") + return IEC_code_viewer + + elif name == "IEC raw code": + controler = MiniTextControler(self._getIECrawcodepath()) + IEC_raw_code_viewer = TextViewer(self.AppFrame.TabsOpened, "", None, controler, instancepath=name) + #IEC_raw_code_viewer.Enable(False) + IEC_raw_code_viewer.SetTextSyntax("ALL") + IEC_raw_code_viewer.SetKeywords(IEC_KEYWORDS) + IEC_raw_code_viewer.RefreshView() + IEC_raw_code_viewer.SetIcon(self.AppFrame.GenerateBitmap("ST")) + + self.AppFrame.EditProjectElement(IEC_raw_code_viewer, name) + + return IEC_raw_code_viewer + + return None def _Clean(self): if os.path.isdir(os.path.join(self._getBuildPath())):