Themes, classes and styles
run-app's #:theme gives "light", "dark" or the system's for a model, and is set again when it changes. classed puts a view in classes, and #:styles are rules of style: a kind and a class, and colours, a font size, a padding and a radius. A button's rule may also give the colours while the pointer is over it and while it is pressed; those are set on the presenter in its template, as the Fluent theme sets its own. Avalonia's Selectors.Class adds a class to a type-and-class selector it is given rather than making a new one, so each style's selector is made anew. 🤖 Generated with [ECA](https://eca.dev) (anthropic/claude-opus-4-8) Co-Authored-By: eca-agent <git@eca.dev>
This commit is contained in:
parent
56a01efe76
commit
e3c54c4348
3 changed files with 201 additions and 11 deletions
11
src/view.bjo
11
src/view.bjo
|
|
@ -24,7 +24,7 @@
|
|||
toggle-switch radio number-input date-picker auto-complete expander
|
||||
column row grid scroll border flow dock
|
||||
;; Wrappers.
|
||||
keyed at paint with-context-menu tooltip at-top at-bottom at-left at-right
|
||||
keyed at paint with-context-menu tooltip at-top at-bottom at-left at-right classed
|
||||
|
||||
;; Keyboard shortcuts.
|
||||
Key key key-gesture key-message
|
||||
|
|
@ -83,7 +83,8 @@
|
|||
(: PropTip string) ; shown when the pointer rests on a view
|
||||
(: PropExpanded bool) ; whether an expander shows its content
|
||||
(: PropDate string) ; a date picker's date, as "2026-10-25"
|
||||
(: PropDockSide int)))) ; where a view is in its dock: 0 to 3
|
||||
(: PropDockSide int) ; where a view is in its dock: 0 to 3
|
||||
(: PropClasses (Vec string))))) ; the classes that styles match
|
||||
|
||||
;; An event, and the message it sends.
|
||||
(type (: (On %m) (Union (: OnClick %m)
|
||||
|
|
@ -143,6 +144,12 @@
|
|||
(defun (with-context-menu v #:rest items)
|
||||
(container ContextKind [] [v (container ContextMenuKind [] (array->vec items))]))
|
||||
|
||||
;; The view, in the classes `names`, which the styles given to `run-app`
|
||||
;; match with `#:class`.
|
||||
(: classed (-> (View %m) #:rest string (View %m)))
|
||||
(defun (classed v #:rest names)
|
||||
(record-set v (props (vec-add (.props v) (PropClasses (array->vec names))))))
|
||||
|
||||
;; The view, with `text` shown when the pointer rests on it.
|
||||
(: tooltip (-> (View %m) string (View %m)))
|
||||
(defun (tooltip v text)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue