SVGHMI: add "unsubscribable" property to widgets in order to generalize what already happens for jump buttons.
In most cases jump buttons do not really subscribe to pointed HMI variable, path is given as a relative page jump path. When widget.unsubscribable is set to true, no subscription is made on page switch, but still offset is updated.
This fixes bug happening on relative jump buttons without "disabled" element where offset did not change on relative page switch.
// import Nevow.Athena
// import Divmod.Base
function updateAttr(id, param, value) {
Nevow.Athena.Widget.fromAthenaID(1).callRemote('HMIexec', 'setattr', id, param, value);
}
var svguiWidgets = new Array();
var currentObject = null;
function setCurrentObject(obj) {
currentObject = obj;
}
function isCurrentObject(obj) {
return currentObject == obj;
}
function getSVGElementById(id) {
return document.getElementById(id);
}
function blockSVGElementDrag(element) {
element.addEventListener("draggesture", function(event){event.stopPropagation()}, true);
}
LiveSVGPage.LiveSVGWidget = Nevow.Athena.Widget.subclass('LiveSVGPage.LiveSVGWidget');
LiveSVGPage.LiveSVGWidget.methods(
function handleEvent(self, evt) {
if (currentObject != null) {
currentObject.handleEvent(evt);
}
},
function receiveData(self, data){
dataReceived = json_parse(data);
gadget = svguiWidgets[dataReceived.id]
if (gadget) {
gadget.updateValues(json_parse(dataReceived.kwargs));
}
//console.log("OBJET : " + dataReceived.back_id + " STATE : " + newState);
},
function init(self, arg1){
//console.log("Object received : " + arg1);
for (ind in arg1) {
gad = json_parse(arg1[ind]);
args = json_parse(gad.kwargs);
gadget = new svguilib[gad.__class__](self, gad.id, args);
svguiWidgets[gadget.id]=gadget;
//console.log('GADGET :' + gadget);
}
var elements = document.getElementsByTagName("svg");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener("mouseup", self, false);
}
//console.log("SVGUIWIDGETS : " + svguiWidgets);
}
);