-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbutton.go
More file actions
56 lines (44 loc) · 852 Bytes
/
button.go
File metadata and controls
56 lines (44 loc) · 852 Bytes
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
package ebui
import (
"image/color"
)
var _ FocusableComponent = &Button{}
type Button struct {
*ButtonContainer
label *Label
}
func WithLabelText(text string) ComponentOpt {
return func(c Component) {
if b, ok := c.(*Button); ok {
b.label.SetText(text)
}
}
}
func WithLabelColor(color color.Color) ComponentOpt {
return func(c Component) {
if b, ok := c.(*Button); ok {
b.label.SetColor(color)
}
}
}
func NewButton(opts ...ComponentOpt) *Button {
b := &Button{
ButtonContainer: NewButtonContainer(opts...),
}
b.label = NewLabel(
"",
WithSize(b.size.Width, b.size.Height),
WithJustify(JustifyCenter),
)
b.AddChild(b.label)
for _, opt := range opts {
opt(b)
}
return b
}
func (b *Button) GetLabel() string {
return b.label.GetText()
}
func (b *Button) SetLabel(text string) {
b.label.SetText(text)
}