Files
ashtar1984 a56ca4d013 Create switch_path_rev.py
new node for reverse (1 input/ 2 output)
2025-12-13 16:55:05 +01:00

81 lines
2.6 KiB
Python

# switch_path_rev.py
from server import PromptServer
from comfy_execution.graph_utils import ExecutionBlocker
class AnyType(str):
"""Wildcard type to accept any input/output type"""
def __ne__(self, __value: object) -> bool:
return False
def __eq__(self, __value: object) -> bool:
return True
def __str__(self):
return "*"
ANY_TYPE = AnyType("*")
class SwitchPathRev:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"state": ("BOOLEAN", {"default": True}),
"input": (ANY_TYPE, {"lazy": True}),
},
"hidden": {"unique_id": "UNIQUE_ID"},
}
RETURN_TYPES = (ANY_TYPE, ANY_TYPE)
RETURN_NAMES = ("on_true", "on_false")
FUNCTION = "execute"
CATEGORY = "flow control"
def check_lazy_status(self, input=None, state=None, **kwargs):
"""Indique à ComfyUI quelles sorties sont nécessaires selon le state"""
if state:
return ["on_true"] # Besoin seulement de on_true
else:
return ["on_false"] # Besoin seulement de on_false
def execute(self, state, input=None, unique_id=None, **kwargs):
# Détermine les valeurs pour chaque sortie
if state:
on_true_output = input
on_false_output = ExecutionBlocker(None) if input is not None else None
active_path = "on_true"
inactive_path = "on_false"
else:
on_true_output = ExecutionBlocker(None) if input is not None else None
on_false_output = input
active_path = "on_false"
inactive_path = "on_true"
# --- Affichage live sous le node ---
if unique_id:
try:
html_text = (
f"<b style='color:white;'>State:</b> <b style='color:#a0ffa0;'>{str(state).upper()}</b><br>"
f"<b style='color:white;'>Active Output:</b> <b style='color:#a0ffa0;'>{active_path}</b><br>"
f"<b style='color:white;'>Inactive Output:</b> <b style='color:#ff8080;'>{inactive_path}</b><br>"
f"<b style='color:white;'>Lazy Skip:</b> <span style='color:#a0ffa0;'>inactive branch blocked</span>"
)
PromptServer.instance.send_progress_text(html_text, unique_id)
except Exception:
pass
return (on_true_output, on_false_output)
# Node registration
NODE_CLASS_MAPPINGS = {
"SwitchPathRev": SwitchPathRev
}
NODE_DISPLAY_NAME_MAPPINGS = {
"SwitchPathRev": "Switch Path Rev (1→2 Lazy)"
}
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']