beremiz

SVGHMI: Fixes UI lifecycle problems

2023-11-25, Edouard Tisserant
89549813a6c1
SVGHMI: Fixes UI lifecycle problems

Was sometime showing HMI tree of previously closed project : no more module globals to store hmi tree.
C++ dead object exceptions happened when re-opening SVGHMI UI or building after close of UI.
// widget_list.ysl2
widget_desc("List") {
longdesc
||
List widget is a svg:group, list items are labeled elements
in that group.
To use a List, clone (svg:use) one of the items inside the widget that
expects a List.
Positions of items are relative to each other, and they must all be in the
same place. In order to make editing easier it is therefore recommanded to
make stacked clones of svg elements spread nearby the list.
||
shortdesc > A named list of named graphical elements
arg name="listname"
}
widget_defs("List") {
| items: {
foreach "$hmi_element/*[@inkscape:label]" {
| "«@inkscape:label»": "«@id»",
}
| },
}
widget_class("List");