When reading, create the local equivalent of a dataclass, so that access
doesn't require ["foo"] key syntax.
Also implement the copy protocol, so that we can safely make clones of
the references returned by the ListModel.
* Show all file-local componanets (check is-exported)
* Parse all known files before generating the file list
Keep the document_cache with all the extra documents loaded around,
Build only the printer demo for WASM for the CI, to fan out wasm related issues.
Build the remaining demos (especially the rebuild of the gallery with all styles)
and artefacts in the nightly snapshot.
It turns out that for repeated elements, we set root_weak to self_weak, instead of the root we obtain from the parent instance. Fix this by moving the code to initialize parent_item_tree_offset to before we try to use it (via parent_instance) to initialize root_weak.
Move the zephyr, yocto, and esp-idf tests into nightly_tests.yaml, from nightly_snapshot.yaml and ci.yaml. The zephyr builds take ~6 minutes each but are rather similar to the esp-idf build (C++ CMake build for MCU environment), so it should suffice to do them nightly.
It doesn't compile:
```
Dex conversion failed: Error in ...\out\java\dev\slint\android-activity\SlintAndroidJavaHelper$1.class:
java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null
```
I don't know how to solve the error, but i can giv an informative
message telling them to downgrade Java
CC: #4973
This reverts commit 42571bbddb.
The line-by-line renderer doesn't compile with xcode 15.4,
and TestWindowAdapter doesn't compile with gcc 10 in the linux CI.
Instead of replacing the existing x/y properties with "invisible" ones, let's just keep those that we have and merely zero out the geometry x/y.
This has the bonus that access to x/y within the PopupWindow will provide the right value, i.e.
popup := PopupWindow {
x: 42px;
Text { text: popup.text / 1px; }
}
will show "42" instead of zero.
Since x/y are now merely referenced via the NamedReferences in PopupWindow, this patch also fixes the property materialization pass to use
visit_all_named_references(component) to also visit the x/y named refs,
instead of visit_all_named_references_in_element() that skips them.
The property editor built into the live-preview now comes with the
concept of a "simple/complex mode". There is a "K" (for complex, obviously;-)
or a "S" (for simple, just as obvious) beween the property name and property
value. you can click on the letter to switch from simple to complex mode,
but you can only switch back to simple mode if there are no complex expressions
in the line edit.
This implements a "simple" mode for bools.
# Todo
* [ ] Find icons for simple/complex mode:-)
* [ ] Figure out how to decide whether other types are "simple"
* [ ] Define more UIs for simple types
live-preview: Move simple property code into rust
... and handle simple strings in addition to bool.