diff -r bd8c7a033b17 -r 9aa96a36cf33 controls/EditorPanel.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controls/EditorPanel.py Tue Nov 08 21:59:22 2011 +0100 @@ -0,0 +1,138 @@ +#!/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 VariablePanel import VariablePanel + +class EditorPanel(wx.SplitterWindow): + + ID = wx.NewId() + VARIABLE_PANEL_TYPE = None + + if wx.VERSION < (2, 6, 0): + def Bind(self, event, function, id = None): + if id is not None: + event(self, id, function) + else: + event(self, function) + + def _init_Editor(self, prnt): + self.Editor = None + + def _init_ctrls(self, prnt): + wx.SplitterWindow.__init__(self, id=self.ID, name='MainSplitter', parent=prnt, + size=wx.Size(0, 0), style=wx.SUNKEN_BORDER|wx.SP_3D) + self.SetNeedUpdating(True) + self.SetMinimumPaneSize(1) + + self._init_Editor(self) + + if self.VARIABLE_PANEL_TYPE is not None: + self.VariableEditor = VariablePanel(self, self, self.Controler, self.VARIABLE_PANEL_TYPE) + self.VariableEditor.SetTagName(self.TagName) + + if self.Editor is not None: + self.SplitHorizontally(self.VariableEditor, self.Editor, 200) + else: + self.Initialize(self.VariableEditor) + + else: + self.VariableEditor = None + + if self.Editor is not None: + self.Initialize(self.Editor) + + def __init__(self, parent, tagname, window, controler): + self.ParentWindow = window + self.Controler = controler + self.TagName = tagname + self.Icon = None + + 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 GetTitle(self): + return "-".join(self.TagName.split("::")[1:]) + + def GetIcon(self): + return self.Icon + + def SetIcon(self, icon): + self.Icon = icon + + def IsViewing(self, tagname): + return self.TagName == tagname + + def IsDebugging(self): + return False + + def SetMode(self, mode): + pass + + def ResetBuffer(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 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 _Refresh(self, *args): + self.ParentWindow._Refresh(*args) + + def RefreshScaling(self, refresh=True): + pass + + def ClearHighlights(self, highlight_type=None): + if self.VariableEditor is not None: + self.VariableEditor.ClearHighlights(highlight_type)