1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
# simple text editor
#
# Copyright 2001 Adam Feuer and Steve Howell
#
# License: Python
import re
import wx
from wx.lib.editor import Editor
#---------------------------------------------------------------------
class FrogEditor(Editor):
def __init__(self, parent, id,
pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, statusBar=None):
self.StatusBar = statusBar
Editor.__init__(self, parent, id, pos, size, style)
self.parent = parent
##------------------------------------
def TouchBuffer(self):
Editor.TouchBuffer(self)
self.StatusBar.setDirty(1)
def UnTouchBuffer(self):
Editor.UnTouchBuffer(self)
self.StatusBar.setDirty(0)
#--------- utility function -------------
# override our base class method
def DrawCursor(self, dc = None):
Editor.DrawCursor(self,dc)
self.StatusBar.setRowCol(self.cy,self.cx)
def lastLine(self):
lastline = self.sy + self.sh - 1
return min(lastline, self.LinesInFile() - 1)
def rawLines(self):
return [l.text for l in self.text]
def save(self):
if self.page:
self.ds.store(self.page,self.rawLines())
def SetRawText(self, rawtext=""):
self.rawText= rawtext
self.SetText(self.RenderText())
def RenderText(self):
return(self.rawText)
#---------- logging -------------
def SetStatus(self, log):
self.log = log
self.status = []
def PrintSeparator(self, event):
self.Print("..........................")
def Print(self, data):
self.status.append(data)
if data[-1:] == '\n':
data = data[:-1]
wx.LogMessage(data)
#--------- wxEditor keyboard overrides
def SetControlFuncs(self, action):
Editor.SetControlFuncs(self, action)
action['-'] = self.PrintSeparator
def SetAltFuncs(self, action):
Editor.SetAltFuncs(self, action)
action['x'] = self.Exit
#----------- commands -----------
def OnCloseWindow(self, event):
# xxx - We don't fully understand how exit logic works.
# This event is actually called by our parent frame.
pass
def Exit(self,event):
self.parent.Close(None)
|