note.gdw raw

; The interface of `NoteView`, the widget this crate implements in `src/lib.rs`
; — a widget written in Rust *outside* the framework's vocabulary, declared
; here so a `.gdc` may write it and a theme may dress it, with the same checking
; the builtins get.
;
; This one file is the single source: `register_widget!` (in `src/lib.rs`)
; reads it to generate the runtime factory, and the application's
; `include_component!` reads the same file to type-check a `.gdc` that writes
; the widget. The compiler never resolves the path below; rustc does, against
; the generated construction.

(widget note
  (type "::guiduck_widget_fixture::NoteView")
  ; Set once, at construction.
  (prop title String)
  ; Reactive, and with the setter convention overridden — the manifest's
  ; `:setter` is what a widget that does not spell its methods `set_<prop>`
  ; needs, and the builtins already prove the case (`:text` is `set_content`
  ; on a text-input but `set_text` on a text).
  (prop scale f32 :setter set_zoom)
  ; An event that delivers a value…
  (event on-open :payload String)
  ; …and one that is a bare request.
  (event on-dismiss)
  ; A theme token, resolved through the same style engine every builtin uses.
  (token ink Brush))