Files
2026-09-05 16:46:25 +03:00

196 lines
6.3 KiB
JavaScript

import { app } from "../../../scripts/app.js";
// REGISTER ALL SETTINGS
const itoolsSettings = [
{
id: "iTools.Nodes.More Styles",
name: "Load extra styles",
type: "boolean",
defaultValue: true,
tooltip:
"Yaml files in the 'styles/more examples' folder will also be loaded for prompt styler nodes.",
toastMsg: "Restart ComfyUI and refresh your browser",
},
{
id: "iTools.Nodes.Compare Mode",
name: "Image Compare mode",
type: "combo",
defaultValue: "makadi",
options: ["rgthree", "makadi"],
tooltip:
"makadi: is how iTools developer like this node to work.\n\n rgthree: will behave exactly like the rgthree image compare node.",
toastMsg: "Refresh your browser",
},
{
id: "iTools.Nodes.Auto Resize",
name: "Auto resize nodes when created",
type: "boolean",
defaultValue: false,
toastMsg: "Refresh your browser",
},
{
id: "iTools.Nodes.Auto Color",
name: "Auto color nodes when created",
type: "boolean",
defaultValue: true,
toastMsg: "Refresh your browser",
},
{
id: "iTools.Nodes.Mask Tool",
name: "Allow Masking in iTools Paint Node",
type: "boolean",
defaultValue: false,
tooltip:
"Requires 'rembg' library installed (pip install rembg[gpu] or pip install rembg). Enables background removal/masking in iTools Paint Node.\n\nNote: rembg downloads the model (~176MB) to your user home folder (.u2net) on first use.",
toastMsg: "Refresh your browser",
},
{
id: "iTools.Nodes.Dev Mode2",
name: "Enable dev nodes",
type: "boolean",
defaultValue: false,
tooltip:
"You do not have to enable this, these are just test nodes for development.",
toastMsg: "Restart ComfyUI and refresh your browser",
},
{
id: "iTools.Nodes.Dev Mode",
name: "Enable beta nodes",
type: "boolean",
defaultValue: true,
tooltip:
"Will show or hide some experimental nodes, Restart ComfyUI and refresh your browser after changing this value.",
toastMsg: "Restart ComfyUI and refresh your browser",
},
{
id: "iTools.Nodes.Node Display Name Preferences",
name: "Use Simple Names for iTools nodes",
type: "boolean",
defaultValue: false,
tooltip: 'Will remove "iTools" prefix from the node names.',
toastMsg: "Restart ComfyUI and refresh your browser",
},
{
id: "iTools.Tabs.menuTab",
name: "Enable iTools tab on the menu bar.",
type: "boolean",
defaultValue: false,
tooltip: "Refresh your browser after changing this value.",
toastMsg: "Refresh your browser",
},
{
id: "iTools.Tabs.Side Tab",
name: "Enable Prompt Library icon in the sidebar.",
type: "boolean",
defaultValue: true,
tooltip: "Refresh your browser after changing this value.",
toastMsg: "Refresh your browser",
},
];
app.registerExtension({
name: "makadi_iTools_settings_manager",
settings: itoolsSettings.map((s) => ({
id: s.id,
name: s.name,
type: s.type,
defaultValue: s.defaultValue,
options: s.options, // This will be undefined for boolean, which is fine
tooltip: s.tooltip,
onChange: (value) => {
const prevValue = app.ui.settings.getSettingValue(s.id);
if (prevValue !== undefined && prevValue !== value) {
app.extensionManager.toast.add({
severity: "warn",
summary: "Alert!",
detail: s.toastMsg,
life: 3000,
});
}
},
})),
});
// APPEARANCE
app.registerExtension({
name: "makadi.appearance",
nodeCreated(node) {
const allow_auto_color = app.ui.settings.getSettingValue(
"iTools.Nodes.Auto Color",
);
const allow_auto_resize = app.ui.settings.getSettingValue(
"iTools.Nodes.Auto Resize",
);
switch (node.comfyClass) {
case "iToolsImageAdjust":
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.pale_blue.color;
// node.bgcolor = LGraphCanvas.node_colors.green.bgcolor;
break;
case "iToolsPromptBuilder":
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.green.color;
node.bgcolor = LGraphCanvas.node_colors.green.bgcolor;
break;
case "iToolsInstructorNode":
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.green.color;
break;
case "iToolsPreviewText":
// force resize
node.setSize([240, 80]);
break;
case "iToolsPromptStyler":
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.green.color;
node.bgcolor = LGraphCanvas.node_colors.green.bgcolor;
break;
case "iToolsPromptStylerExtra":
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.green.color;
node.bgcolor = LGraphCanvas.node_colors.green.bgcolor;
break;
case "iToolsTextReplacer":
if (allow_auto_resize) node.setSize([200, 80]);
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.green.color;
node.bgcolor = LGraphCanvas.node_colors.green.bgcolor;
break;
case "iToolsRegexNode":
if (allow_auto_resize) node.setSize([280, 130]);
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.green.color;
node.bgcolor = LGraphCanvas.node_colors.green.bgcolor;
break;
case "iToolsAddOverlay":
if (allow_auto_resize) node.size[0] = 240;
break;
case "iToolsLineLoader":
if (allow_auto_resize) node.size[0] = 200;
break;
case "iToolsGridFiller":
if (allow_auto_resize) node.size[0] = 240;
break;
case "iToolsLoadImagePlus":
if (allow_auto_resize) node.size[0] = 210;
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.pale_blue.color;
break;
case "iToolsCompareImage":
case "iToolsPreviewImage":
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.pale_blue.color;
break;
case "iToolsPromptRecord":
if (!allow_auto_color) break;
node.color = LGraphCanvas.node_colors.green.color;
// node.bgcolor = LGraphCanvas.node_colors.green.bgcolor;
break;
case "iToolsCheckerBoard":
if (allow_auto_resize) node.size[0] = 270;
break;
}
},
});