hook up progress-bar, uri display

the road to callback hell is plagued with good intentions:
I am not unwilling to revisit this code if it gets any more gnarly
main
Daniel Barlow 2023-01-01 00:11:01 +00:00
parent 39735be891
commit 64d4dfe2ff
3 changed files with 24 additions and 3 deletions

View File

@ -2,6 +2,7 @@
(local { : view } (require :fennel))
(fn new-buffer [name]
(var property-change-listener nil)
(let [props {}
widget (WebKit2.WebView {
;; :on_decide_policy
@ -19,11 +20,16 @@
(when (not (= pspec.name :parent))
(let [val (. self pspec.name)]
(tset props pspec.name val)
;(listeners:notify pspec.name val)
)))
(when property-change-listener
(property-change-listener
pspec.name val)))
))
})]
{:webview widget
:name name
:subscribe-property-changes
(fn [self cb]
(set property-change-listener cb))
:location #(widget:get_uri)
:visit (fn [_ u] (widget:load_uri u))
:properties props}))

View File

@ -183,6 +183,9 @@
:widget box
: prompt
: frame
:set-inactive-text (fn [self text]
(when (not self.state.active)
(tset entry :text text)))
:completions-widget completions
}]
(hbox:pack_start prompt false false 15)

View File

@ -30,7 +30,14 @@
contentwidget (Gtk.Box {
:orientation Gtk.Orientation.VERTICAL
})
]
update-prop (fn [name value]
(match name
:estimated-load-progress
(tset progress-bar :fraction value)
:uri
(commander:set-inactive-text value)
n
(comment (print "prop change" n value))))]
(tset window :on_key_release_event
(fn [window event]
@ -58,6 +65,11 @@
(w:hide))
(tset self :buffer b)
(contentwidget:pack_start b.webview true true 0)
(b:subscribe-property-changes
(fn [name val]
(if (= b self.buffer)
(update-prop name val)
(print "ignore props from background" b))))
(b.webview:show))
}]
(lume.extend self f)