-
Notifications
You must be signed in to change notification settings - Fork 0
/
CTLabel.t
91 lines (71 loc) · 2.48 KB
/
CTLabel.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
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
module CTLabel where
import COCOA
struct Label < Component, HasText, HasBackgroundColor where
setTextColor :: Color -> Request ()
getTextColor :: Request Color
mkCocoaLabel :: World -> Class Label
mkCocoaLabel w = class
state := Inactive
textColor := black
text := "Default Label"
color := white
alpha := 0.0
BaseComponent {setPosition=setPositionImpl,setSize=setSizeImpl,..} = new basicComponent False Nothing "Label"
setPosition p = request
if isActive state then
Active ref = state
labelSetPosition ref p
setPositionImpl p
setSize s = request
if isActive state then
Active ref = state
labelSetSize ref s
setSizeImpl s
setText s = request
text := s
if isActive state then
Active ref = state
labelSetText ref s
getText = request
result text
appendText s = request
text := text ++ s
setTextColor c = request
if isActive state then
Active ref = state
labelSetTextColor ref c
textColor := c
getTextColor = request
result textColor
getBackgroundColor = request
result color
setBackgroundColor c = setBackgroundColorWithAlpha c 1.0
setBackgroundColorWithAlpha c a = request
if isActive state then
Active ref = state
labelSetBackgroundColor ref c a
color := c
alpha := a
destroyComp = request
state := destroyState state
getState = request
result state
initComp app = request
if isInactive state then
ref <- initLabel w
state := Active ref
labelSetText ref text
labelSetPosition ref (<- getPosition)
labelSetSize ref (<- getSize)
labelSetTextColor ref textColor
labelSetBackgroundColor ref color alpha
result state
this = Label{id=self,..}
result this
private
extern initLabel :: World -> Request CocoaRef
extern labelSetText :: CocoaRef -> String -> Request ()
extern labelSetPosition :: CocoaRef -> Position -> Request ()
extern labelSetSize :: CocoaRef -> Size -> Request ()
extern labelSetTextColor :: CocoaRef -> Color -> Request ()
extern labelSetBackgroundColor :: CocoaRef -> Color -> Float -> Request ()