# HG changeset patch # User usveticic # Date 1596632693 -7200 # Node ID 7c6960f09881cf522425bae75c14d1e9327e8917 # Parent 705e34c6fe93c813fa027a9261e8e4b61cbd5cb7 Reworked button widget so it uses classes. diff -r 705e34c6fe93 -r 7c6960f09881 svghmi/widget_button.ysl2 --- a/svghmi/widget_button.ysl2 Tue Aug 04 11:53:39 2020 +0200 +++ b/svghmi/widget_button.ysl2 Wed Aug 05 15:04:53 2020 +0200 @@ -1,33 +1,47 @@ // widget_button.ysl2 +template "widget[@type='Button']", mode="widget_class" + || + class ButtonWidget extends Widget{ + frequency = 5; + state = 0; + active_style = undefined; + inactive_style = undefined; + + on_mouse_down(evt) { + if (this.active_style && this.inactive_style) { + this.active_elt.setAttribute("style", this.active_style); + this.inactive_elt.setAttribute("style", "display:none"); + } + change_hmi_value(this.indexes[0], "=1"); + } + + on_mouse_up(evt) { + if (this.active_style && this.inactive_style) { + this.active_elt.setAttribute("style", "display:none"); + this.inactive_elt.setAttribute("style", this.inactive_style); + } + change_hmi_value(this.indexes[0], "=0"); + } + + init() { + this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined; + this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined; + + if (this.active_style && this.inactive_style) { + this.active_elt.setAttribute("style", "display:none"); + this.inactive_elt.setAttribute("style", this.inactive_style); + } + + this.element.setAttribute("onmousedown", "hmi_widgets['«$hmi_element/@id»'].on_mouse_down(evt)"); + this.element.setAttribute("onmouseup", "hmi_widgets['«$hmi_element/@id»'].on_mouse_up(evt)"); + } + } + || + + template "widget[@type='Button']", mode="widget_defs" { param "hmi_element"; optional_labels("active inactive"); - | frequency: 5, - | on_mouse_down: function(evt) { - | if (this.active_style && this.inactive_style) { - | this.active_elt.setAttribute("style", this.active_style); - | this.inactive_elt.setAttribute("style", "display:none"); - | } - | this.apply_hmi_value(0, 1); - | }, - | on_mouse_up: function(evt) { - | if (this.active_style && this.inactive_style) { - | this.active_elt.setAttribute("style", "display:none"); - | this.inactive_elt.setAttribute("style", this.inactive_style); - | } - | this.apply_hmi_value(0, 0); - | }, - | active_style: undefined, - | inactive_style: undefined, - | init: function() { - | this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined; - | this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined; - | if (this.active_style && this.inactive_style) { - | this.active_elt.setAttribute("style", "display:none"); - | this.inactive_elt.setAttribute("style", this.inactive_style); - | } - | this.element.setAttribute("onmousedown", "hmi_widgets['«$hmi_element/@id»'].on_mouse_down(evt)"); - | this.element.setAttribute("onmouseup", "hmi_widgets['«$hmi_element/@id»'].on_mouse_up(evt)"); - | }, + |, }