61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
import { ComfyWidgets } from "../../../scripts/widgets.js";
|
|
import { fitHeight } from "./utils.js";
|
|
import { formatAndDisplayJSON } from "./gtUIUtils.js";
|
|
import { hideWidget, showWidget } from "./utils.js";
|
|
import { app } from "../../../scripts/app.js";
|
|
import { code_execution_templates } from "./CodeExecutionNodeTemplates.js";
|
|
|
|
// make a list of the keys in the code_execution_templates object
|
|
const code_execution_template_keys = Object.keys(code_execution_templates);
|
|
|
|
export function setupCodeExecutionNode(nodeType, nodeData, app) {
|
|
if (nodeData.name.includes("Run Python"))
|
|
{
|
|
// Add menu items to examples dropdown
|
|
const onNodeCreated = nodeType.prototype.onNodeCreated;
|
|
nodeType.prototype.onNodeCreated = async function () {
|
|
onNodeCreated?.apply(this, arguments);
|
|
const examples_widget = this.widgets.find(w => w.name === 'examples');
|
|
|
|
examples_widget.options.values = code_execution_template_keys;
|
|
examples_widget.callback = async() => {
|
|
|
|
const code_widget = this.widgets.find(w => w.name === 'code');
|
|
code_widget.value = code_execution_templates[examples_widget.value];
|
|
|
|
}
|
|
|
|
}
|
|
const original_getExtraMenuOptions = nodeType.prototype.getExtraMenuOptions;
|
|
nodeType.prototype.getExtraMenuOptions = function(_, options) {
|
|
original_getExtraMenuOptions?.apply(this, arguments);
|
|
options.push({
|
|
content: "Griptape Code Execution Templates",
|
|
has_submenu: true,
|
|
callback: make_code_execution_templates_submenu
|
|
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function make_code_execution_templates_submenu(value, options, e, menu, node) {
|
|
const submenu = new LiteGraph.ContextMenu(
|
|
code_execution_template_keys,
|
|
{
|
|
event: e,
|
|
callback: function (v) {
|
|
const code_widget = node.widgets.find(w => w.name === 'code');
|
|
code_widget.value = code_execution_templates[v];
|
|
// do something with v (=="option x")
|
|
},
|
|
parentMenu: menu,
|
|
node:node
|
|
}
|
|
)
|
|
|
|
}
|
|
|