aboutsummaryrefslogtreecommitdiffstats
path: root/gui/widget/widget.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-05-10 13:09:30 -0400
committerSam Anthony <sam@samanthony.xyz>2024-05-10 13:09:30 -0400
commit039d0880c9bff721189e1ba2e658fa5fcc3a980f (patch)
tree1aa99620068ef5ab62265a9c1de075a15e2c455e /gui/widget/widget.go
parent88c23a05e891f5f2a4cb96c493bc464fcb841109 (diff)
downloadvolute-039d0880c9bff721189e1ba2e658fa5fcc3a980f.zip
move input widget to separate file
Diffstat (limited to 'gui/widget/widget.go')
-rw-r--r--gui/widget/widget.go61
1 files changed, 0 insertions, 61 deletions
diff --git a/gui/widget/widget.go b/gui/widget/widget.go
index 84d85be..d20d67e 100644
--- a/gui/widget/widget.go
+++ b/gui/widget/widget.go
@@ -44,67 +44,6 @@ func Label(str string, r image.Rectangle, env gui.Env, wg *sync.WaitGroup) {
}
}
-func Input(val chan<- uint, r image.Rectangle, focus FocusSlave, env gui.Env, wg *sync.WaitGroup) {
- defer wg.Done()
- defer close(env.Draw())
- defer close(val)
-
- text := []byte{'0'}
- focused := false
- env.Draw() <- inputDraw(text, focused, r)
-Loop:
- for {
- select {
- case _, ok := <-focus.gain:
- if !ok {
- break Loop
- }
- focused = true
- env.Draw() <- inputDraw(text, focused, r)
- case dir, ok := <-focus.lose:
- if !ok {
- break Loop
- }
- focus.yield <- dir
- focused = false
- env.Draw() <- inputDraw(text, focused, r)
- case event, ok := <-env.Events():
- if !ok {
- break Loop
- }
- switch event := event.(type) {
- case win.WiFocus:
- if event.Focused {
- env.Draw() <- inputDraw(text, focused, r)
- }
- case win.KbType:
- if focused && isDigit(event.Rune) {
- text = fmt.Appendf(text, "%c", event.Rune)
- 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() <- inputDraw(text, focused, r)
- val <- atoi(text)
- }
- }
- }
- }
-}
-
-func inputDraw(str []byte, focused bool, r image.Rectangle) func(draw.Image) image.Rectangle {
- return func(drw draw.Image) image.Rectangle {
- if focused {
- text.Draw(str, drw, r, GREEN, FOCUS_COLOR)
- } else {
- text.Draw(str, 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())