author | Edouard Tisserant <edouard.tisserant@gmail.com> |
Tue, 19 Oct 2021 12:58:22 +0200 | |
changeset 3366 | 1ca385429bba |
parent 3259 | 76da573569a6 |
child 3408 | 13c5cac55ac7 |
permissions | -rw-r--r-- |
3221
3d307ad803ea
SVGHMI: Widget Library Picker now transforms SVG widget before allowing DnD. Transform is just identity forn now, but label parsing have already been included. To be continued.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3205
diff
changeset
|
1 |
// parse_labels.ysl2 |
2790
8fab1886ebec
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant
parents:
2789
diff
changeset
|
2 |
|
2843
94696b3f69fb
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant
parents:
2842
diff
changeset
|
3 |
|
2882 | 4 |
// Parses: |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
5 |
// "HMI:WidgetType:param1:param2@path1,path1min,path1max@path2" |
2882 | 6 |
// |
7 |
// Into: |
|
2893
d57a12b8f5db
SVGHMI: added func:get_hmi_tree_elt to match HMI tree node from path. Continue implementing ForEach widget : force order and completeness of items list. Now also collecting ForEach buttons.
Edouard Tisserant
parents:
2890
diff
changeset
|
8 |
// widget type="WidgetType" id="blah456" { |
2882 | 9 |
// arg value="param1"; |
10 |
// arg value="param2"; |
|
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
11 |
// path value=".path1" index=".path1" min="path1min" max="path1max" type="PAGE_LOCAL"; |
3060 | 12 |
// path value="/path1" index="348" type="HMI_INT"; |
13 |
// path value="path4" index="path4" type="HMI_LOCAL"; |
|
2882 | 14 |
// } |
15 |
// |
|
3236
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
16 |
const "pathregex",!"'^([^\[,]+)(\[[^\]]+\])?([\d,]*)$'"!; |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
17 |
|
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
18 |
template "*", mode="parselabel" |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
19 |
{ |
2886
6c82fad8be65
SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2885
diff
changeset
|
20 |
const "label","@inkscape:label"; |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
21 |
const "id","@id"; |
3259
76da573569a6
SVGHMI: UI: added prefill of arguments according to values in widget instance in library. Also added library's widget instance description to description field.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3236
diff
changeset
|
22 |
|
2877
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
23 |
const "description", "substring-after($label,'HMI:')"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
24 |
|
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
25 |
const "_args", "substring-before($description,'@')"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
26 |
const "args" choose { |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
27 |
when "$_args" value "$_args"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
28 |
otherwise value "$description"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
29 |
} |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
30 |
|
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
31 |
const "_type", "substring-before($args,':')"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
32 |
const "type" choose { |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
33 |
when "$_type" value "$_type"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
34 |
otherwise value "$args"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
35 |
} |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
36 |
|
2886
6c82fad8be65
SVGHMI: Simplification and optimization. func:parselabel becomes a template.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2885
diff
changeset
|
37 |
if "$type" widget { |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
38 |
attrib "id" > «$id» |
2877
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
39 |
attrib "type" > «$type» |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
40 |
foreach "str:split(substring-after($args, ':'), ':')" { |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
41 |
arg { |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
42 |
attrib "value" > «.» |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
43 |
} |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
44 |
} |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
45 |
const "paths", "substring-after($description,'@')"; |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
46 |
foreach "str:split($paths, '@')" { |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
47 |
if "string-length(.) > 0" path { |
3236
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
48 |
// 1 : global match |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
49 |
// 2 : /path |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
50 |
// 3 : [accepts] |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
51 |
// 4 : min,max |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
52 |
const "path_match", "regexp:match(.,$pathregex)"; |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
53 |
const "pathminmax", "str:split($path_match[4],',')"; |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
54 |
const "path", "$path_match[2]"; |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
55 |
const "path_accepts", "$path_match[3]"; |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
56 |
const "pathminmaxcount", "count($pathminmax)"; |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
57 |
attrib "value" > «$path» |
3236
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
58 |
if "string-length($path_accepts)" |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
59 |
attrib "accepts" > «$path_accepts» |
3017
15e2df3e5610
SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2941
diff
changeset
|
60 |
choose { |
3236
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
61 |
when "$pathminmaxcount = 2" { |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
62 |
attrib "min" > «$pathminmax[1]» |
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
63 |
attrib "max" > «$pathminmax[2]» |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
64 |
} |
3236
e4e27c4efb96
SVGHMI: Extend widget labels parsing to allow expressing widget's accepted types in labels
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3230
diff
changeset
|
65 |
when "$pathminmaxcount = 1 or $pathminmaxcount > 2" { |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
66 |
error > Widget id:«$id» label:«$label» has wrong syntax of path section «$pathminmax» |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
67 |
} |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
68 |
} |
3229
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
69 |
if "$indexed_hmitree" choose { |
3127
d4dfd47f8156
SVGHMI: Enforce formating HMI_LOCAL and PAGE_LOCAL variables until the end of variable name
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3097
diff
changeset
|
70 |
when "regexp:test($path,'^\.[a-zA-Z0-9_]+$')" { |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
71 |
attrib "type" > PAGE_LOCAL |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
72 |
} |
3127
d4dfd47f8156
SVGHMI: Enforce formating HMI_LOCAL and PAGE_LOCAL variables until the end of variable name
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3097
diff
changeset
|
73 |
when "regexp:test($path,'^[a-zA-Z0-9_]+$')" { |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
74 |
attrib "type" > HMI_LOCAL |
3017
15e2df3e5610
SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2941
diff
changeset
|
75 |
} |
15e2df3e5610
SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2941
diff
changeset
|
76 |
otherwise { |
3097
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
77 |
const "item", "$indexed_hmitree/*[@hmipath = $path]"; |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
78 |
const "pathtype", "local-name($item)"; |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
79 |
if "$pathminmaxcount = 3 and not($pathtype = 'HMI_INT' or $pathtype = 'HMI_REAL')" { |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
80 |
error > Widget id:«$id» label:«$label» path section «$pathminmax» use min and max on non mumeric value |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
81 |
} |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
82 |
if "count($item) = 1" { |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
83 |
attrib "index" > «$item/@index» |
a098b2dd9dff
SVGHMI: Added parsing of min and max value that can be given as @path,min,max in widget description
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3060
diff
changeset
|
84 |
attrib "type" > «$pathtype» |
3017
15e2df3e5610
SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2941
diff
changeset
|
85 |
} |
15e2df3e5610
SVGHMI: Intermediate state while implementing local HMI variables. Now write to cache only (no send), still need to implement dispatch on change.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2941
diff
changeset
|
86 |
} |
2911
211d6a185e31
SVGHMI: More infrastructure for editing values with a keypad.
Edouard Tisserant
parents:
2904
diff
changeset
|
87 |
} |
2877
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
88 |
} |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
89 |
} |
3259
76da573569a6
SVGHMI: UI: added prefill of arguments according to values in widget instance in library. Also added library's widget instance description to description field.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3236
diff
changeset
|
90 |
if "svg:desc" desc value "svg:desc/text()"; |
2877
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
91 |
} |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
92 |
} |
682bce953795
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant
parents:
2874
diff
changeset
|
93 |
|
3229
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
94 |
|
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
95 |
// Templates to generate label back from parsed tree |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
96 |
template "arg", mode="genlabel" > :«@value» |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
97 |
|
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
98 |
template "path", mode="genlabel" { |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
99 |
> @«@value» |
3230
95f07764991f
SVGHMI: fixed typo
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3229
diff
changeset
|
100 |
if "string-length(@min)>0 or string-length(@max)>0" > ,«@min»,«@max» |
3229
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
101 |
} |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
102 |
|
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
103 |
template "widget", mode="genlabel" { |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
104 |
> HMI:«@type» |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
105 |
apply "arg", mode="genlabel"; |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
106 |
apply "path", mode="genlabel"; |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
107 |
} |
c5be4fd425e7
SVGHMI: still quite naive path substitution whn prepearing widget for DnD, but now uses label generation.
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
3221
diff
changeset
|
108 |