diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-05-10 13:09:30 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-05-10 13:09:30 -0400 |
| commit | 039d0880c9bff721189e1ba2e658fa5fcc3a980f (patch) | |
| tree | 1aa99620068ef5ab62265a9c1de075a15e2c455e /gui/widget/widget.go | |
| parent | 88c23a05e891f5f2a4cb96c493bc464fcb841109 (diff) | |
| download | volute-039d0880c9bff721189e1ba2e658fa5fcc3a980f.zip | |
move input widget to separate file
Diffstat (limited to 'gui/widget/widget.go')
| -rw-r--r-- | gui/widget/widget.go | 61 |
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()) |