Tests: fix project edit test sikuli IDE test.
Background click based on bitmap matching doesn't work.
Grid dots are not good match candidates.
Rendering probably affected by virtual display's bpp or rasterizer approximations.
// widget_display.ysl2
widget_desc("Display") {
longdesc
||
If Display widget is a svg:text element, then text content is replaced by
value of given variables, space separated.
Otherwise, if Display widget is a group containing a svg:text element
labelled "format", then text content is replaced by printf-like formated
string. In other words, if "format" labeled text is "%d %s %f", then 3
variables paths are expected : HMI_IN, HMI_STRING and HMI_REAL.
In case Display widget is a svg::text element, it is also possible to give
format string as first argument.
||
shortdesc > Printf-like formated text display
arg name="format" count="optional" accepts="string" > printf-like format string when not given as svg:text
path name="fields" count="many" accepts="HMI_INT,HMI_REAL,HMI_STRING,HMI_BOOL" > variables to be displayed
}
widget_class("Display")
||
frequency = 5;
dispatch(value, oldval, index) {
this.fields[index] = value;
this.request_animate();
}
||
widget_defs("Display") {
const "format" optional_labels("format");
const "has_format","string-length($format)>0";
value "$format";
if "$hmi_element[not(self::svg:text)] and not($has_format)"
error > Display Widget id="«$hmi_element/@id»" must be a svg::text element itself or a group containing a svg:text element labelled "format"
const "field_initializer" foreach "path" {
choose{
when "@type='HMI_STRING'" > ""
otherwise > 0
}
if "position()!=last()" > ,
}
| fields: [«$field_initializer»],
| animate: function(){
choose {
when "$has_format" {
| if(this.format_elt.getAttribute("lang")) {
| this.format = svg_text_to_multiline(this.format_elt);
| this.format_elt.removeAttribute("lang");
| }
| let str = vsprintf(this.format,this.fields);
| multiline_to_svg_text(this.format_elt, str);
}
otherwise {
| let str = this.args.length == 1 ? vsprintf(this.args[0],this.fields) : this.fields.join(' ');
| multiline_to_svg_text(this.element, str);
}
}
| },
|
if "$has_format" {
| init: function() {
| this.format = svg_text_to_multiline(this.format_elt);
| },
}
}