62 lines
1.4 KiB
Python
62 lines
1.4 KiB
Python
# Text editing widget
|
|
|
|
from stdwinevents import *
|
|
|
|
class TextEdit():
|
|
#
|
|
def create(self, (parent, (cols, rows))):
|
|
parent.addchild(self)
|
|
self.parent = parent
|
|
self.cols = cols
|
|
self.rows = rows
|
|
self.text = ''
|
|
# Creation of the editor is done in realize()
|
|
self.editor = 0
|
|
return self
|
|
#
|
|
def settext(self, text):
|
|
self.editor.settext(text)
|
|
#
|
|
# Downcalls from parent to child
|
|
#
|
|
def destroy(self):
|
|
del self.parent
|
|
del self.editor
|
|
del self.window
|
|
#
|
|
def minsize(self, m):
|
|
return self.cols*m.textwidth('n'), self.rows*m.lineheight()
|
|
def setbounds(self, bounds):
|
|
self.bounds = bounds
|
|
if self.editor:
|
|
self.editor.move(bounds)
|
|
def getbounds(self, bounds):
|
|
if self.editor:
|
|
return self.editor.getrect()
|
|
else:
|
|
return self.bounds
|
|
def realize(self):
|
|
self.window = self.parent.getwindow()
|
|
self.editor = self.window.textcreate(self.bounds)
|
|
self.editor.settext(self.text)
|
|
self.parent.need_mouse(self)
|
|
self.parent.need_keybd(self)
|
|
self.parent.need_altdraw(self)
|
|
def draw(self, (d, area)):
|
|
pass
|
|
def altdraw(self, area):
|
|
self.editor.draw(area)
|
|
#
|
|
# Event downcalls
|
|
#
|
|
def mouse_down(self, detail):
|
|
x = self.editor.event(WE_MOUSE_DOWN, self.window, detail)
|
|
def mouse_move(self, detail):
|
|
x = self.editor.event(WE_MOUSE_MOVE, self.window, detail)
|
|
def mouse_up(self, detail):
|
|
x = self.editor.event(WE_MOUSE_UP, self.window, detail)
|
|
#
|
|
def keybd(self, (type, detail)):
|
|
x = self.editor.event(type, self.window, detail)
|
|
#
|