svghmi/widget_textstylelist.ysl2
author Edouard Tisserant
Tue, 23 Aug 2022 12:19:44 +0200
changeset 3594 30f7eade322f
parent 3556 5d73bed497de
permissions -rw-r--r--
SVGHMI: add support for "enable expressions" with arbitrary variable name assignment.

HMI tree paths can be prefixed with a variable name "@name=/MY/HMI/VAR"
Widget declarations can end with a "#" followed by a JS expression that refers to name given to variables.
Widget is disabled if expression's result is false.

Commit includes some more-or-less related generated code refactoring, that should simplify extending widget's variables attributes.
// widget_textstylelist.ysl2

widget_desc("TextStyleList") {
    longdesc
    ||
    TextStyleList widget is a svg:group, list items are labeled elements
    in that group.

    To use a TextStyleList, clone (svg:use) one of the items inside the widget 
    that expects a TextStyleList.

    In this list, only style matters. Text content is ignored.
    ||

    shortdesc > A named list of named texts

    arg name="listname"
}

widget_defs("TextStyleList") {
    |     styles: {
    foreach "$hmi_element/*[@inkscape:label]" {
        const "style", "func:refered_elements(.)[self::svg:text]/@style";
    |         «@inkscape:label»: "«$style»",
    }
    |     },
}

widget_class("TextStyleList");