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
|
# 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
#
# 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.replace(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)
#
|