diff --git a/.vs/ComfyUI/FileContentIndex/03b3439e-8e72-44f6-8e52-76aea081bb6c.vsidx b/.vs/ComfyUI/FileContentIndex/03b3439e-8e72-44f6-8e52-76aea081bb6c.vsidx new file mode 100644 index 000000000..600cf2b31 Binary files /dev/null and b/.vs/ComfyUI/FileContentIndex/03b3439e-8e72-44f6-8e52-76aea081bb6c.vsidx differ diff --git a/.vs/ComfyUI/FileContentIndex/05b2f020-3ab2-4506-8e7d-0f3a76d67546.vsidx b/.vs/ComfyUI/FileContentIndex/05b2f020-3ab2-4506-8e7d-0f3a76d67546.vsidx new file mode 100644 index 000000000..861809101 Binary files /dev/null and b/.vs/ComfyUI/FileContentIndex/05b2f020-3ab2-4506-8e7d-0f3a76d67546.vsidx differ diff --git a/.vs/ComfyUI/FileContentIndex/13b8ad4e-1f6c-47b3-a604-02082ea0c1bc.vsidx b/.vs/ComfyUI/FileContentIndex/13b8ad4e-1f6c-47b3-a604-02082ea0c1bc.vsidx new file mode 100644 index 000000000..600cf2b31 Binary files /dev/null and b/.vs/ComfyUI/FileContentIndex/13b8ad4e-1f6c-47b3-a604-02082ea0c1bc.vsidx differ diff --git a/.vs/ComfyUI/FileContentIndex/b1be2aa4-4451-469d-9918-09b7c25df232.vsidx b/.vs/ComfyUI/FileContentIndex/b1be2aa4-4451-469d-9918-09b7c25df232.vsidx new file mode 100644 index 000000000..4d7f4f97a Binary files /dev/null and b/.vs/ComfyUI/FileContentIndex/b1be2aa4-4451-469d-9918-09b7c25df232.vsidx differ diff --git a/.vs/ComfyUI/FileContentIndex/read.lock b/.vs/ComfyUI/FileContentIndex/read.lock new file mode 100644 index 000000000..e69de29bb diff --git a/.vs/ComfyUI/v17/.suo b/.vs/ComfyUI/v17/.suo new file mode 100644 index 000000000..d493b9bdd Binary files /dev/null and b/.vs/ComfyUI/v17/.suo differ diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 000000000..f8b488856 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/PythonSettings.json b/.vs/PythonSettings.json new file mode 100644 index 000000000..a229f65c7 --- /dev/null +++ b/.vs/PythonSettings.json @@ -0,0 +1,3 @@ +{ + "SuppressEnvironmentCreationPrompt": true +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 000000000..35fb3a8b4 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,12 @@ +{ + "ExpandedNodes": [ + "", + "\\web", + "\\web\\extensions", + "\\web\\extensions\\core", + "\\web\\lib", + "\\web\\scripts" + ], + "SelectedNode": "\\web\\scripts\\ui.js", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 000000000..6d0786e3c Binary files /dev/null and b/.vs/slnx.sqlite differ diff --git a/web/extensions/core/widgetInputs.js b/web/extensions/core/widgetInputs.js index ff9227d28..9acdb791e 100644 --- a/web/extensions/core/widgetInputs.js +++ b/web/extensions/core/widgetInputs.js @@ -1,4 +1,4 @@ -import { ComfyWidgets, addRandomizeWidget } from "/scripts/widgets.js"; +import { ComfyWidgets, addSeedControlWidget } from "/scripts/widgets.js"; import { app } from "/scripts/app.js"; const CONVERTED_TYPE = "converted-widget"; @@ -284,10 +284,10 @@ app.registerExtension({ } } - if (widget.type === "number") { - addRandomizeWidget(this, widget, "Random after every gen"); - } - + if (widget.type === "combo") { + addSeedControlWidget(this, widget, "randomize"); + } + // When our value changes, update other widgets to reflect our changes // e.g. so LoadImage shows correct image const callback = widget.callback; diff --git a/web/scripts/app.js b/web/scripts/app.js index 43d7f7b59..5faae5e2e 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -772,6 +772,12 @@ class ComfyApp { } } } + if (widget.name == "seed control after generating") { + if (widget.value == true) { + widget.value = "randomize"; + } + + } } } diff --git a/web/scripts/widgets.js b/web/scripts/widgets.js index 5f5043cd0..da2cca41f 100644 --- a/web/scripts/widgets.js +++ b/web/scripts/widgets.js @@ -10,37 +10,55 @@ function getNumberDefaults(inputData, defaultStep) { return { val: defaultVal, config: { min, max, step: 10.0 * step } }; } -export function addRandomizeWidget(node, targetWidget, name, defaultValue = false) { - const randomize = node.addWidget("toggle", name, defaultValue, function (v) {}, { - on: "enabled", - off: "disabled", - serialize: false, // Don't include this in prompt. - }); +export function addSeedControlWidget(node, targetWidget, defaultValue = "randomize", values) { + const seedControl = node.addWidget("combo", "seed control after generating", "randomize", function (v) { }, { + values: ["fixed seed", "increment", "decrement", "randomize"] + }) + seedControl.afterQueued = () => { - randomize.afterQueued = () => { - if (randomize.value) { - const min = targetWidget.options?.min; - let max = targetWidget.options?.max; - if (min != null || max != null) { - if (max) { - // limit max to something that javascript can handle - max = Math.min(1125899906842624, max); + var v = seedControl.value; + + switch (v) { + case ("fixed seed"): + console.log("Fixed Seed"); + break; + case ("increment"): + targetWidget.value += 1; + console.log("increment"); + break; + case ("decrement"): + targetWidget.value -= 1; + console.log("decrement"); + break; + case ("randomize"): + const min = targetWidget.options?.min; + let max = targetWidget.options?.max; + if (min != null || max != null) { + if (max) { + // limit max to something that javascript can handle + max = Math.min(1125899906842624, max); + console.log("Random"); + } + targetWidget.value = Math.floor(Math.random() * ((max ?? 9999999999) - (min ?? 0) + 1) + (min ?? 0)); + console.log("Random"); + } else { + targetWidget.value = Math.floor(Math.random() * 1125899906842624); + console.log("Random"); } - targetWidget.value = Math.floor(Math.random() * ((max ?? 9999999999) - (min ?? 0) + 1) + (min ?? 0)); - } else { - targetWidget.value = Math.floor(Math.random() * 1125899906842624); - } + break; + default: + console.log("default (fail)"); } }; - return randomize; + return seedControl; } function seedWidget(node, inputName, inputData) { - const seed = ComfyWidgets.INT(node, inputName, inputData); - const randomize = addRandomizeWidget(node, seed.widget, "Random seed after every gen", true); + const seed = ComfyWidgets.COMBO(node, inputName, inputData); + const seedControl = addSeedControlWidget(node, seed.widget, "randomize"); - seed.widget.linkedWidgets = [randomize]; - return { widget: seed, randomize }; + seed.widget.linkedWidgets = [seedControl]; + return { widget: seed, seedControl }; } const MultilineSymbol = Symbol();