editors/EditorPanel.py
changeset 814 5743cbdff669
child 980 c7ba67d01d65
--- /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)