make entry widget a file-scoped local

main
Daniel Barlow 2022-12-26 11:31:10 +00:00
parent 6efbc34576
commit bbd67b3a16
1 changed files with 12 additions and 10 deletions

View File

@ -111,19 +111,16 @@
(local prompt (Gtk.Label { :label ""})) (local prompt (Gtk.Label { :label ""}))
(fn update-widget-state [w result]
(set prompt.label (or result.prompt ""))
(set w.sensitive result.active)
(set w.text
(or result.default result.error "")))
(local widget (local widget
(let [w (Gtk.Entry { (let [w (Gtk.Entry {
:sensitive false :sensitive false
})] })]
(tset w :on_activate (tset w :on_activate
(fn [event] (fn [event]
(update-widget-state w (on-input event.text)))) (let [result (on-input event.text)]
(set prompt.label (or result.prompt ""))
(set w.sensitive result.active)
(set w.text (or result.default result.error "")))))
w)) w))
(local box (local box
@ -136,6 +133,11 @@
(box:pack_start widget true true 5) (box:pack_start widget true true 5)
box)) box))
(fn update-widget-state [result]
(set prompt.label (or result.prompt ""))
(set widget.sensitive result.active)
(set widget.text (or result.default result.error "")))
(fn activate [] (fn activate []
(tset state :active true) (tset state :active true)
(set widget.sensitive true) (set widget.sensitive true)
@ -153,15 +155,15 @@
}] }]
(set state s) (set state s)
(let [r (on-input nil)] (let [r (on-input nil)]
(update-widget-state widget r) (update-widget-state r)
(widget:grab_focus) (widget:grab_focus)
r))) r)))
(fn active? [] state.active)
{ {
: activate : activate
: active? :active? (fn [] state.active)
: define-command : define-command
: on-input : on-input
: invoke-interactively : invoke-interactively