diff -r 1460273f40ed -r 5743cbdff669 editors/EditorPanel.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/editors/EditorPanel.py Fri Sep 07 16:45:55 2012 +0200 @@ -0,0 +1,172 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor +#based on the plcopen standard. +# +#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD +# +#See COPYING file for copyrights details. +# +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. +# +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#General Public License for more details. +# +#You should have received a copy of the GNU General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import wx + +from controls import VariablePanel + +class EditorPanel(wx.SplitterWindow): + + VARIABLE_PANEL_TYPE = None + + def _init_Editor(self, prnt): + self.Editor = None + + def _init_MenuItems(self): + self.MenuItems = [] + + def _init_ctrls(self, parent): + wx.SplitterWindow.__init__(self, parent, + style=wx.SUNKEN_BORDER|wx.SP_3D) + self.SetNeedUpdating(True) + self.SetMinimumPaneSize(1) + + self._init_MenuItems() + + if self.VARIABLE_PANEL_TYPE is not None: + self.VariableEditor = VariablePanel(self, self, self.Controler, self.VARIABLE_PANEL_TYPE, self.Debug) + self.VariableEditor.SetTagName(self.TagName) + else: + self.VariableEditor = None + + self._init_Editor(self) + + if self.Editor is not None and self.VariableEditor is not None: + self.SplitHorizontally(self.VariableEditor, self.Editor, 200) + elif self.VariableEditor is not None: + self.Initialize(self.VariableEditor) + elif self.Editor is not None: + self.Initialize(self.Editor) + + def __init__(self, parent, tagname, window, controler, debug=False): + self.ParentWindow = window + self.Controler = controler + self.TagName = tagname + self.Icon = None + self.Debug = debug + + self._init_ctrls(parent) + + def SetTagName(self, tagname): + self.TagName = tagname + if self.VARIABLE_PANEL_TYPE is not None: + self.VariableEditor.SetTagName(tagname) + + def GetTagName(self): + return self.TagName + + def Select(self): + self.ParentWindow.EditProjectElement(None, self.GetTagName(), True) + + def GetTitle(self): + return "-".join(self.TagName.split("::")[1:]) + + def GetIcon(self): + return self.Icon + + def SetIcon(self, icon): + self.Icon = icon + + def GetState(self): + return None + + def SetState(self, state): + pass + + def IsViewing(self, tagname): + return self.GetTagName() == tagname + + def IsDebugging(self): + return self.Debug + + def SetMode(self, mode): + pass + + def ResetBuffer(self): + pass + + def IsModified(self): + return False + + def CheckSaveBeforeClosing(self): + return True + + def Save(self): + pass + + def SaveAs(self): + pass + + def GetBufferState(self): + if self.Controler is not None: + return self.Controler.GetBufferState() + return False, False + + def Undo(self): + if self.Controler is not None: + self.Controler.LoadPrevious() + self.RefreshView() + + def Redo(self): + if self.Controler is not None: + self.Controler.LoadNext() + self.RefreshView() + + def Find(self, direction, search_params): + pass + + def HasNoModel(self): + return False + + def RefreshView(self, variablepanel=True): + if variablepanel: + self.RefreshVariablePanel() + + def RefreshVariablePanel(self): + if self.VariableEditor is not None: + self.VariableEditor.RefreshView() + + def GetConfNodeMenuItems(self): + return self.MenuItems + + def RefreshConfNodeMenu(self, confnode_menu): + pass + + def _Refresh(self, *args): + self.ParentWindow._Refresh(*args) + + def RefreshScaling(self, refresh=True): + pass + + def AddHighlight(self, infos, start, end, highlight_type): + if self.VariableEditor is not None and infos[0] in ["var_local", "var_input", "var_output", "var_inout"]: + self.VariableEditor.AddVariableHighlight(infos[1:], highlight_type) + + def RemoveHighlight(self, infos, start, end, highlight_type): + if self.VariableEditor is not None and infos[0] in ["var_local", "var_input", "var_output", "var_inout"]: + self.VariableEditor.RemoveVariableHighlight(infos[1:], highlight_type) + + def ClearHighlights(self, highlight_type=None): + if self.VariableEditor is not None: + self.VariableEditor.ClearHighlights(highlight_type)