aboutsummaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-05-09 16:05:42 -0400
committerSam Anthony <sam@samanthony.xyz>2024-05-09 16:05:42 -0400
commitbcf781ad03595de88d280cb6f6cec5af05242193 (patch)
tree7ff94c3e1042f3bab97ff4d338ea483bae491d2e /gui
parent96865538c9188c9e9f36995e2b8a0eca8ddc0868 (diff)
downloadvolute-bcf781ad03595de88d280cb6f6cec5af05242193.zip
refactor input widget draw function
Diffstat (limited to 'gui')
-rw-r--r--gui/widget/widget.go33
1 files changed, 17 insertions, 16 deletions
diff --git a/gui/widget/widget.go b/gui/widget/widget.go
index 41fb621..53be0b5 100644
--- a/gui/widget/widget.go
+++ b/gui/widget/widget.go
@@ -46,20 +46,10 @@ func Input(val chan<- uint, r image.Rectangle, focus FocusSlave, env gui.Env, wg
defer close(env.Draw())
defer close(val)
- redraw := func(text []byte, focused bool) func(draw.Image) image.Rectangle {
- return func(drw draw.Image) image.Rectangle {
- if focused {
- drawText(text, drw, r, GREEN, FOCUS_COLOR)
- } else {
- drawText(text, drw, r, GREEN, WHITE)
- }
- return r
- }
- }
text := []byte{'0'}
focused := false
- env.Draw() <- redraw(text, focused)
+ env.Draw() <- inputDraw(text, focused, r)
Loop:
for {
select {
@@ -68,14 +58,14 @@ Loop:
break Loop
}
focused = true
- env.Draw() <- redraw(text, focused)
+ env.Draw() <- inputDraw(text, focused, r)
case dir, ok := <-focus.lose:
if !ok {
break Loop
}
focus.yield <- dir
focused = false
- env.Draw() <- redraw(text, focused)
+ env.Draw() <- inputDraw(text, focused, r)
case event, ok := <-env.Events():
if !ok { // channel closed
break Loop
@@ -83,18 +73,18 @@ Loop:
switch event := event.(type) {
case win.WiFocus:
if event.Focused {
- env.Draw() <- redraw(text, focused)
+ env.Draw() <- inputDraw(text, focused, r)
}
case win.KbType:
if focused && isDigit(event.Rune) {
text = fmt.Appendf(text, "%c", event.Rune)
- env.Draw() <- redraw(text, focused)
+ env.Draw() <- inputDraw(text, focused, r)
val <- atoi(text)
}
case win.KbDown:
if focused && event.Key == win.KeyBackspace && len(text) > 0 {
text = text[:len(text)-1]
- env.Draw() <- redraw(text, focused)
+ env.Draw() <- inputDraw(text, focused, r)
val <- atoi(text)
}
}
@@ -102,6 +92,17 @@ Loop:
}
}
+func inputDraw(text []byte, focused bool, r image.Rectangle) func(draw.Image) image.Rectangle {
+ return func(drw draw.Image) image.Rectangle {
+ if focused {
+ drawText(text, drw, r, GREEN, FOCUS_COLOR)
+ } else {
+ drawText(text, drw, r, GREEN, WHITE)
+ }
+ return r
+ }
+}
+
func Output(val <-chan float64, r image.Rectangle, env gui.Env, wg *sync.WaitGroup) {
defer wg.Done()
defer close(env.Draw())