Runtime: work around 1s delay added when using twisted reactor's callLater.
Since wxPython4, using wxReactor from non-main thread was producing
exceptions in wxWidget's C++ code. Then reactor.run() was called from
main thread, and runtime's worker was delegating calls to reactor
with callLater(0, callable).
While this worked perfectly with wxReactor, it did introduce an unexplained
1 second delay to each worker call when using nomal linux reactors
(i.e. without wxPython). As a workaround reactor runs in a thread when using
twisted without wxPython
// widget_customhtml.ysl2
widget_desc("CustomHtml") {
longdesc
||
CustomHtml widget allows insertion of HTML code in a svg:foreignObject.
Widget content is replaced by foreignObject. HTML code is obtained from
"code" labeled text content. HTML insert position and size is given with
"container" labeled element.
||
shortdesc > Custom HTML insert
// TODO: support reload and POST based on variable content
}
widget_class("CustomHtml"){
||
frequency = 5;
widget_size = undefined;
dispatch(value) {
this.request_animate();
}
animate(){
}
init() {
this.widget_size = this.container_elt.getBBox();
this.element.innerHTML ='<foreignObject x="'+
this.widget_size.x+'" y="'+this.widget_size.y+
'" width="'+this.widget_size.width+'" height="'+this.widget_size.height+'"> '+
this.code_elt.textContent+
' </foreignObject>';
}
||
}
widget_defs("CustomHtml") {
labels("container code");
}