aboutsummaryrefslogtreecommitdiffstats
path: root/gui/widget/widget.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-01-19 22:07:42 -0500
committerSam Anthony <sam@samanthony.xyz>2024-01-19 22:07:42 -0500
commit54d71a24b6eaa191b2777f6070de252fc26801a3 (patch)
tree1d26f49dfcacc5578b4e6c91e8ffb31b09a9f662 /gui/widget/widget.go
parent39a3b948e525fe2b22b90e07df323ab77f6a81f6 (diff)
downloadvolute-54d71a24b6eaa191b2777f6070de252fc26801a3.zip
add layout from Keitio
Diffstat (limited to 'gui/widget/widget.go')
-rw-r--r--gui/widget/widget.go28
1 files changed, 20 insertions, 8 deletions
diff --git a/gui/widget/widget.go b/gui/widget/widget.go
index 94d1915..6da7aaf 100644
--- a/gui/widget/widget.go
+++ b/gui/widget/widget.go
@@ -5,15 +5,22 @@ import (
"fmt"
"image"
+ "image/color"
"image/draw"
"volute/gui"
"volute/gui/win"
)
+var (
+ FOCUS_COLOR = color.RGBA{179, 217, 255, 255}
+ BLACK = color.Gray{0}
+ WHITE = color.Gray{255}
+)
+
func Label(text string, r image.Rectangle, env gui.Env) {
redraw := func(drw draw.Image) image.Rectangle {
- drawText([]byte(text), drw, r)
+ drawText([]byte(text), drw, r, BLACK, WHITE)
return r
}
env.Draw() <- redraw
@@ -29,36 +36,41 @@ func Label(text string, r image.Rectangle, env gui.Env) {
}
func Input(val chan<- uint, r image.Rectangle, focusChan <-chan bool, env gui.Env) {
- redraw := func(text []byte) func(draw.Image) image.Rectangle {
+ redraw := func(text []byte, focus bool) func(draw.Image) image.Rectangle {
return func(drw draw.Image) image.Rectangle {
- drawText(text, drw, r)
+ if focus {
+ drawText(text, drw, r, BLACK, FOCUS_COLOR)
+ } else {
+ drawText(text, drw, r, BLACK, WHITE)
+ }
return r
}
}
text := []byte{'0'}
focus := false
- env.Draw() <- redraw(text)
+ env.Draw() <- redraw(text, focus)
for {
select {
case focus = <-focusChan:
+ env.Draw() <- redraw(text, focus)
case event := <-env.Events():
switch event := event.(type) {
case win.WiFocus:
if event.Focused {
- env.Draw() <- redraw(text)
+ env.Draw() <- redraw(text, focus)
}
case win.KbType:
if focus && isDigit(event.Rune) {
text = fmt.Appendf(text, "%c", event.Rune)
- env.Draw() <- redraw(text)
+ env.Draw() <- redraw(text, focus)
val <- atoi(text)
}
case win.KbDown:
if focus && event.Key == win.KeyBackspace && len(text) > 0 {
text = text[:len(text)-1]
- env.Draw() <- redraw(text)
+ env.Draw() <- redraw(text, focus)
val <- atoi(text)
}
}
@@ -70,7 +82,7 @@ func Input(val chan<- uint, r image.Rectangle, focusChan <-chan bool, env gui.En
func Output(val <-chan uint, r image.Rectangle, env gui.Env) {
redraw := func(n uint) func(draw.Image) image.Rectangle {
return func(drw draw.Image) image.Rectangle {
- drawText([]byte(fmt.Sprint(n)), drw, r)
+ drawText([]byte(fmt.Sprint(n)), drw, r, BLACK, WHITE)
return r
}
}