svghmi/analyse_widget.ysl2
author Edouard Tisserant
Thu, 17 Nov 2022 11:08:36 +0100 (2022-11-17)
changeset 3682 c613afdab571
parent 3241 fe945f1f48b7
permissions -rw-r--r--
IDE: Optimization of modification events processing in text editors.

Too many modifications types where registered, and then too many events were fired.
Also, in case of uninterrupted sequence of events, updates to the model is deferred to the end of that sequence (wx.Callafter).
include yslt_noindent.yml2

in xsl decl widget_desc(%name, match="widget[@type='%name']", mode="widget_desc") alias template {
    type > «@type»
    content;
};

decl nothing alias - ;
decl widget_class(%name) alias - {nothing};
decl widget_defs(%name) alias - {nothing};
decl widget_page(%name) alias - {nothing};
decl gen_index_xhtml alias - {nothing};
decl emit(*name) alias - {nothing};

istylesheet
            /* From Inkscape */
            xmlns:svg="http://www.w3.org/2000/svg"
            xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"

            extension-element-prefixes="ns func exsl regexp str dyn"
            exclude-result-prefixes="ns func exsl regexp str dyn svg inkscape" {

    const "indexed_hmitree", "/.."; // compatibility with parse_labels.ysl2
    include parse_labels.ysl2

    const "hmi_elements", "//svg:*[starts-with(@inkscape:label, 'HMI:')]";

    include widget_*.ysl2

    template "@* | node()", mode="document" {
        xsl:copy apply "@* | node()", mode="document";
    }

    template "widget", mode="document" {
        xsl:copy {
            apply "@* | node()", mode="document";
            defs apply ".", mode="widget_desc";
        }
    }

    template "/" {
        const "widgets"
            apply "$hmi_elements", mode="parselabel";
        const "widget_ns", "exsl:node-set($widgets)";
        widgets 
            apply "$widget_ns", mode="document";
    }

}