diff --git a/editor/js/nodes.js b/editor/js/nodes.js index 083eb41a4..fe9314c6c 100644 --- a/editor/js/nodes.js +++ b/editor/js/nodes.js @@ -195,6 +195,7 @@ RED.nodes = (function() { } nodes.push(n); } + RED.events.emit('nodes:add',n); } function addLink(l) { links.push(l); @@ -220,6 +221,7 @@ RED.nodes = (function() { if (id in configNodes) { node = configNodes[id]; delete configNodes[id]; + RED.events.emit('nodes:remove',node); RED.workspaces.refresh(); } else { node = getNode(id); @@ -252,6 +254,7 @@ RED.nodes = (function() { if (updatedConfigNode) { RED.workspaces.refresh(); } + RED.events.emit('nodes:remove',node); } } if (node && node._def.onremove) { diff --git a/editor/js/ui/editor.js b/editor/js/ui/editor.js index d2223904d..5a27356a3 100644 --- a/editor/js/ui/editor.js +++ b/editor/js/ui/editor.js @@ -545,6 +545,9 @@ RED.editor = (function() { function showEditDialog(node) { var editing_node = node; + if (editStack.length === 0) { + RED.events.emit("editor:open"); + } editStack.push(node); RED.view.state(RED.state.EDITING); var type = node.type; @@ -713,6 +716,7 @@ RED.editor = (function() { } editing_node.dirty = true; validateNode(editing_node); + RED.events.emit("editor:save",editing_node); RED.tray.close(); } } @@ -770,6 +774,7 @@ RED.editor = (function() { editStack.pop(); if (editStack.length === 0) { RED.view.focus(); + RED.events.emit("editor:close"); } }, show: function() { @@ -832,6 +837,9 @@ RED.editor = (function() { } editing_config_node["_"] = node_def._; } + if (editStack.length === 0) { + RED.events.emit("editor:open"); + } editStack.push(editing_config_node); RED.view.state(RED.state.EDITING); @@ -924,6 +932,7 @@ RED.editor = (function() { editStack.pop(); if (editStack.length === 0) { RED.view.focus(); + RED.events.emit("editor:close"); } }, show: function() { @@ -1054,6 +1063,9 @@ RED.editor = (function() { } RED.nodes.dirty(true); RED.view.redraw(true); + if (!configAdding) { + RED.events.emit("editor:save",editing_config_node); + } RED.tray.close(function() { updateConfigNodeSelect(configProperty,configType,editing_config_node.id,prefix); }); @@ -1083,7 +1095,6 @@ RED.editor = (function() { changes: {}, dirty: RED.nodes.dirty() } - RED.nodes.remove(configId); for (var i=0;i