3 # Text windows, a subclass of gwin
7 from stdwinevents
import *
11 docwidth
, docheight
= w
.text
.getrect()[1]
12 winheight
= w
.getwinsize()[1]
13 if winheight
> docheight
: docheight
= winheight
14 w
.setdocsize(0, docheight
)
18 s
= w
.text
.getfocustext()
20 stdwin
.setcutbuffer(0, s
)
25 s
= w
.text
.getfocustext()
27 stdwin
.setcutbuffer(0, s
)
31 w
.text
.replace(stdwin
.getcutbuffer(0))
35 m
= w
.editmenu
= w
.menucreate('Edit')
39 m
.additem('Copy', 'C')
41 m
.additem('Paste', 'V')
42 m
.action
.append(paste
)
47 can_copy
= (f
[0] < f
[1])
51 m
.enable(2, (stdwin
.getcutbuffer(0) <> ''))
53 def draw(w
, area
): # Draw method
56 def size(w
, newsize
): # Size method
57 w
.text
.move((0, 0), newsize
)
60 def close(w
): # Close method
61 del w
.text
# Break circular ref
64 def char(w
, c
): # Char method
68 def backspace(w
): # Backspace method
69 void
= w
.text
.event(WE_COMMAND
, w
, WC_BACKSPACE
)
72 def arrow(w
, detail
): # Arrow method
76 def mdown(w
, detail
): # Mouse down method
77 void
= w
.text
.event(WE_MOUSE_DOWN
, w
, detail
)
80 def mmove(w
, detail
): # Mouse move method
81 void
= w
.text
.event(WE_MOUSE_MOVE
, w
, detail
)
83 def mup(w
, detail
): # Mouse up method
84 void
= w
.text
.event(WE_MOUSE_UP
, w
, detail
)
87 def activate(w
): # Activate method
90 def open(title
, str): # Display a string in a window
93 w
.text
= w
.textcreate((0, 0), w
.getwinsize())
105 w
.backspace
= backspace
107 w
.activate
= activate
110 def open_readonly(title
, str): # Same with char input disabled
113 w
.char
= w
.backspace
= gwin
.nop
114 # Disable Cut and Paste menu item; leave Copy alone
115 w
.editmenu
.enable(0, 0)
116 w
.editmenu
.enable(2, 0)