controls/EditorPanel.py
changeset 586 9aa96a36cf33
child 600 7db729686416
--- /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)