-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCTTextField.t
64 lines (49 loc) · 1.8 KB
/
CTTextField.t
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
module CTTextField where
import COCOA
struct TextField < Component, HasText
mkCocoaTextField :: World -> Class TextField
mkCocoaTextField w = class
text := ""
state := Inactive
getState = request
result state
BaseComponent {setPosition=setPositionImpl,setSize=setSizeImpl,..} = new basicComponent True Nothing "TextField"
setPosition p = request
if isActive state then
Active ref = state
textFieldSetPosition ref p
setPositionImpl p
appendText s = request
text := text ++ s
setText s = request
text := s
if isActive state then
Active ref = state
textFieldSetText ref s
getText = request
result text
setSize s = request
if isActive state then
Active ref = state
setSizeImpl (<- textFieldSetSize ref s)
else
setSizeImpl s
destroyComp = request
state := destroyState state
initComp app = request
if isInactive state then
ref <- initTextField w
state := Active ref
textFieldSetText ref text
textFieldSetPosition ref (<- getPosition)
setSizeImpl (<- textFieldSetSize ref (<- getSize))
result state
this = TextField{id=self,..}
result this
--------------------------------------------------------------------------------------------------
------ ** EXTERN ** ----------------------------------------------------------
private
extern initTextField :: World -> Request CocoaRef
extern textFieldSetText :: CocoaRef -> String -> Request ()
extern textFieldSetPosition :: CocoaRef -> Position -> Request ()
extern textFieldSetSize :: CocoaRef -> Size -> Request Size