BeforeBuild Hook
The beforeBuild hook runs once before the build-hook and thus also before any values are assigned to the WidgetState.
They are mainly used in renderables to instantiate the GTK-Widget and assign it to internalWidget on WidgetState.
It should be noted that unlike build hooks, beforeBuild hooks are not inherited by any child-widget. For more information, see the build hooks section.
Here a simple code-example for writing a beforeBuild hook:
import owlkettle
import owlkettle/bindings/gtk
import std/json
renderable MyRenderable:
text: string
hooks:
beforeBuild:
echo state.repr
state.internalWidget = gtk_label_new("ExampleText")
viewable App:
discard
method view(app: AppState): Widget =
result = gui:
Window:
MyRenderable()
when not defined(owlkettleNimiDocs):
brew(gui(App()))
We set the label-text to render directly via the gtk_label_new proc.
But what if we want to have a parent widget decide the text to render once and then never update it again?
That leads us to what afterBuild hooks are...