From b0a17487acab4982974fc2d6ae93d64ab258f7e2 Mon Sep 17 00:00:00 2001 From: "JO Jr." Date: Wed, 14 Feb 2024 15:35:55 -0500 Subject: [PATCH] On gen, display sizes, highlight selected --- js/show-sizes.js | 37 +++++++++++++++++++++++++++++++++++++ random_size.py | 7 ++++++- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 js/show-sizes.js diff --git a/js/show-sizes.js b/js/show-sizes.js new file mode 100644 index 0000000..e0fed8d --- /dev/null +++ b/js/show-sizes.js @@ -0,0 +1,37 @@ +import { app } from "../../../scripts/app.js"; +import { api } from "../../../scripts/api.js"; +import { ComfyWidgets } from "../../../scripts/widgets.js"; + +function displayMessage(message) { + var w = this.widgets?.find((w) => w.name === "display_text_widget"); + if (w === undefined) { + w = ComfyWidgets["STRING"](this, "display_text_widget", ["STRING", { multiline: true }], app).widget; + w.inputEl.readOnly = true; + w.inputEl.style.opacity = 0.6; + w.inputEl.style.fontSize = "9pt"; + } + const display = message.join('\n'); + w.value = 'Sizes in present:\n' + display; + this.onResize?.(this.size); +}; + +const ext = { + name: "jojr.random-sizes.displaymessage", + async setup() { + function messageHandler(event) { + const id = event.detail.id; + const message = event.detail.message; + const node = app.graph._nodes_by_id[id]; + if (node && node.displayMessage) node.displayMessage(message); + else (console.log(`node ${id} couldn't handle a message`)); + } + api.addEventListener("jojr.random-sizes.sendmessage", messageHandler); + }, + async beforeRegisterNodeDef(nodeType, nodeData, app) { + if (nodeType.comfyClass=="JOJR_RandomSize" ) { + nodeType.prototype.displayMessage = displayMessage; + } + } +} + +app.registerExtension(ext) \ No newline at end of file diff --git a/random_size.py b/random_size.py index c182ace..e537c40 100644 --- a/random_size.py +++ b/random_size.py @@ -37,8 +37,13 @@ class RandomSize: FUNCTION = "func" def func(self:str,seed, preset,id): sizes = get_sizes_from_preset_file(preset) - PromptServer.instance.send_sync("jojr.random-sizes.sendmessage", {"id": id, "message":sizes}) + rand_obj = random.Random(seed) size = rand_obj.choice(sizes) + for i in range(len(sizes)): + if sizes[i] == size: + sizes[i] = f"*{size}*" + + PromptServer.instance.send_sync("jojr.random-sizes.sendmessage", {"id": id, "message":sizes}) w, h = [int(i) for i in size.split('x')] return (w,h) \ No newline at end of file