From 704b3c26261ae15fa8901529a448947f081385f8 Mon Sep 17 00:00:00 2001 From: JerryOrbachJr Date: Tue, 13 Feb 2024 19:56:12 -0500 Subject: [PATCH] js update --- __init__.py | 3 ++- random_size.py | 5 ++++- sizes/js/display_sizes,js | 43 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 sizes/js/display_sizes,js diff --git a/__init__.py b/__init__.py index 4977b6a..895dee4 100644 --- a/__init__.py +++ b/__init__.py @@ -15,4 +15,5 @@ NODE_DISPLAY_NAME_MAPPINGS = { "JOJR_RandomSize": "Random Size", } -__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS'] \ No newline at end of file +WEB_DIRECTORY = "js" +__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS', 'WEB_DIRECTORY'] \ No newline at end of file diff --git a/random_size.py b/random_size.py index fe051aa..c182ace 100644 --- a/random_size.py +++ b/random_size.py @@ -1,4 +1,5 @@ import yaml, os, random +from server import PromptServer sizes_dir = os.path.join(os.path.dirname(__file__), "sizes") sizes_dir = os.path.abspath(sizes_dir) custom_sizes_dir = os.path.join(os.path.dirname(__file__), "sizes","custom") @@ -29,12 +30,14 @@ class RandomSize: "seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}), "preset": (preset,) }, + "hidden": {"id":"UNIQUE_ID"} } RETURN_TYPES = ("INT","INT") RETURN_NAMES = ("width","height") FUNCTION = "func" - def func(self:str,seed, preset): + 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) w, h = [int(i) for i in size.split('x')] diff --git a/sizes/js/display_sizes,js b/sizes/js/display_sizes,js new file mode 100644 index 0000000..fea8124 --- /dev/null +++ b/sizes/js/display_sizes,js @@ -0,0 +1,43 @@ +import { app } from "../../../scripts/app.js"; +import { api } from "../../../scripts/api.js"; +import { ComfyWidgets } from "../../../scripts/widgets.js"; + +function displayMessage(message) { + if (!this.origComputeSize) { + this.origComputeSize = this.computeSize; + this.computeSize = impose_min_width; + } + if (this.widgets) { this.widgets.forEach((w) => { if (w.onRemove) { w.onRemove(); } } ) } + this.widgets = []; + 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"; + } + w.value = message; + this.onResize?.(this.size); +}; + + + +app.registerExtension({ + 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.handleMessage) node.handleMessage(displayMessage); + else (console.log(`node ${id} couldn't handle a message`)); + } + api.addEventListener("jojr.random-sizes.sendmessage", messageHandler); + console.log("jojr.random-sizes.sendmessage added") + }, + async beforeRegisterNodeDef(nodeType, nodeData, app) { + if (nodeType.comfyClass=="RandomSize" ) { + nodeType.prototype.displayMessage = displayMessage; + } + } +}) \ No newline at end of file