--- /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)