From 2c9833a3ef4f1d6cf428d5ca21e151f39ce712e2 Mon Sep 17 00:00:00 2001 From: Crystian Date: Mon, 2 Jun 2025 02:03:31 +0200 Subject: [PATCH] switch from any added --- __init__.py | 4 +++- nodes/_names.py | 2 ++ nodes/image.py | 10 ++++++++-- nodes/switch.py | 27 +++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/__init__.py b/__init__.py index 5b98434..da29506 100644 --- a/__init__.py +++ b/__init__.py @@ -13,7 +13,7 @@ logger.info(f'Crystools version: {version}') from .nodes._names import CLASSES from .nodes.primitive import CBoolean, CText, CTextML, CInteger, CFloat from .nodes.switch import CSwitchBooleanAny, CSwitchBooleanLatent, CSwitchBooleanConditioning, CSwitchBooleanImage, \ - CSwitchBooleanString, CSwitchBooleanMask + CSwitchBooleanString, CSwitchBooleanMask, CSwitchFromAny from .nodes.debugger import CConsoleAny, CConsoleAnyToJson from .nodes.image import CImagePreviewFromImage, CImageLoadWithMetadata, CImageGetResolution, CImagePreviewFromMetadata, \ CImageSaveWithExtraMetadata @@ -38,6 +38,7 @@ NODE_CLASS_MAPPINGS = { CLASSES.CLIST_ANY_NAME.value: CListAny, CLASSES.CLIST_STRING_NAME.value: CListString, + CLASSES.CSWITCH_FROM_ANY_NAME.value: CSwitchFromAny, CLASSES.CSWITCH_ANY_NAME.value: CSwitchBooleanAny, CLASSES.CSWITCH_LATENT_NAME.value: CSwitchBooleanLatent, CLASSES.CSWITCH_CONDITIONING_NAME.value: CSwitchBooleanConditioning, @@ -75,6 +76,7 @@ NODE_DISPLAY_NAME_MAPPINGS = { CLASSES.CLIST_ANY_NAME.value: CLASSES.CLIST_ANY_DESC.value, CLASSES.CLIST_STRING_NAME.value: CLASSES.CLIST_STRING_DESC.value, + CLASSES.CSWITCH_FROM_ANY_NAME.value: CLASSES.CSWITCH_FROM_ANY_DESC.value, CLASSES.CSWITCH_ANY_NAME.value: CLASSES.CSWITCH_ANY_DESC.value, CLASSES.CSWITCH_LATENT_NAME.value: CLASSES.CSWITCH_LATENT_DESC.value, CLASSES.CSWITCH_CONDITIONING_NAME.value: CLASSES.CSWITCH_CONDITIONING_DESC.value, diff --git a/nodes/_names.py b/nodes/_names.py index eef1b4c..55f5714 100644 --- a/nodes/_names.py +++ b/nodes/_names.py @@ -28,6 +28,8 @@ class CLASSES(Enum): CLIST_STRING_NAME = 'List of strings [Crystools]' CLIST_STRING_DESC = prefix + 'List of strings' + CSWITCH_FROM_ANY_NAME = 'Switch from any [Crystools]' + CSWITCH_FROM_ANY_DESC = prefix + 'Switch from any' CSWITCH_ANY_NAME = 'Switch any [Crystools]' CSWITCH_ANY_DESC = prefix + 'Switch any' CSWITCH_STRING_NAME = 'Switch string [Crystools]' diff --git a/nodes/image.py b/nodes/image.py index f61a611..4a540de 100644 --- a/nodes/image.py +++ b/nodes/image.py @@ -1,3 +1,4 @@ +import fnmatch import os import random import sys @@ -234,12 +235,17 @@ class CImageLoadWithMetadata: @classmethod def INPUT_TYPES(cls): input_dir = folder_paths.get_input_directory() - exclude_folders = ["clipspace"] + + exclude_files = {"Thumbs.db", "*.DS_Store", "desktop.ini", "*.lock" } + exclude_folders = {"clipspace", ".*"} + file_list = [] for root, dirs, files in os.walk(input_dir): # Exclude specific folders - dirs[:] = [d for d in dirs if d not in exclude_folders] + dirs[:] = [d for d in dirs if not any(fnmatch.fnmatch(d, exclude) for exclude in exclude_folders)] + files = [f for f in files if not any(fnmatch.fnmatch(f, exclude) for exclude in exclude_files)] + for file in files: relpath = os.path.relpath(os.path.join(root, file), start=input_dir) diff --git a/nodes/switch.py b/nodes/switch.py index 33fe90e..6b07faf 100644 --- a/nodes/switch.py +++ b/nodes/switch.py @@ -1,6 +1,33 @@ from ..core import BOOLEAN, STRING, CATEGORY, any, logger +class CSwitchFromAny: + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "any": (any, ), + "boolean": BOOLEAN, + } + } + + CATEGORY = CATEGORY.MAIN.value + CATEGORY.SWITCH.value + RETURN_TYPES = (any, any,) + RETURN_NAMES = ("on_true", "on_false",) + + FUNCTION = "execute" + + def execute(self, any,boolean=True): + logger.debug("Any switch: " + str(boolean)) + + if boolean: + return any, None + else: + return None, any + class CSwitchBooleanAny: def __init__(self): pass