From 3f48df0fe91fc9a40bba167e4431913fde92c237 Mon Sep 17 00:00:00 2001 From: BlakeOne <30273164+BlakeOne@users.noreply.github.com> Date: Thu, 18 Apr 2024 12:11:47 -0700 Subject: [PATCH] Add support for widget callback --- js/extension.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/js/extension.js b/js/extension.js index ab108b5..d21d521 100644 --- a/js/extension.js +++ b/js/extension.js @@ -5,17 +5,25 @@ app.registerExtension({ setup() { const defaultWidgets = {}; const orig = LGraphCanvas.prototype.getNodeMenuOptions; - LGraphCanvas.prototype.getNodeMenuOptions = function(node) { + LGraphCanvas.prototype.getNodeMenuOptions = function(node) { const options = orig.call(this, node); options.push(null, { - content: "Reset", + content: "Restore default values", callback: () => { if (!defaultWidgets[node.type]) { defaultWidgets[node.type] = LiteGraph.createNode(node.type, node.name, node.options).widgets; } defaultWidgets[node.type].forEach(defaultWidget => { const widget = node.widgets.find(widget => widget.name === defaultWidget.name); - if (widget) widget.value = defaultWidget.value; + if (widget) { + widget.value = defaultWidget.value; + if (widget.options && widget.options.property && node.properties[widget.options.property] !== undefined) { + node.setProperty(widget.options.property, widget.value); + } + if (widget.callback) { + widget.callback(widget.value, this, node); + } + } }); node.setDirtyCanvas(true, false); }