None of the nodes showed description text in ComfyUI because ComfyUI reads obj_class.DESCRIPTION when it builds node_info - it does not read the class docstring, which is what these nodes had. Every registered node now carries a one-line DESCRIPTION, kept to 29-67 characters so it fits the limited space in ComfyUI Manager and the node search results. Image Transform Pro's four-sentence description is shortened to match. Descriptions are derived from each node's existing docstring, or from the README for the five classes that had no docstring (ImageBlendPro, ColorMatchBlend and the three Boolean switch nodes). README also updated for the recent changes: the New Nodes table now lists the real "Rotate & Scale" category, the XY placement direction is documented on both nodes (positive X right, positive Y up), and the v2.2.0 changelog records the placement convention, the node outputs and the MP_ImageTransform internal name.
224 lines
9.3 KiB
Python
224 lines
9.3 KiB
Python
class MegaSliderMasterValue:
|
|
"""
|
|
Master settings for Mega Sliders.
|
|
Connect to Mega Slider nodes to control min/max/step for all sliders.
|
|
"""
|
|
|
|
DESCRIPTION = "Share one min/max/step range across Mega Slider nodes."
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"min_value": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.1}),
|
|
"max_value": ("FLOAT", {"default": 1.0, "min": -10000.0, "max": 10000.0, "step": 0.1}),
|
|
"step": ("FLOAT", {"default": 0.01, "min": 0.001, "max": 1000.0, "step": 0.01}),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("MEGA_SLIDER_MASTER",)
|
|
RETURN_NAMES = ("master",)
|
|
FUNCTION = "output_settings"
|
|
CATEGORY = "MachinePaintingNodes/Util"
|
|
|
|
def output_settings(self, min_value, max_value, step):
|
|
return ({"min": min_value, "max": max_value, "step": step},)
|
|
|
|
|
|
class MegaSliderX1:
|
|
"""
|
|
Single universal slider with float/int output toggle.
|
|
Connect Mega Slider Master Value for settings, or use right-click > Properties for overrides.
|
|
"""
|
|
|
|
DESCRIPTION = "One universal slider with float/int output."
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"output_int": ("BOOLEAN", {"default": False}),
|
|
"slider_1": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
},
|
|
"optional": {
|
|
"master": ("MEGA_SLIDER_MASTER",),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("FLOAT",)
|
|
RETURN_NAMES = ("value",)
|
|
FUNCTION = "output_values"
|
|
CATEGORY = "MachinePaintingNodes/Util"
|
|
|
|
def output_values(self, output_int, slider_1, master=None):
|
|
value = slider_1
|
|
|
|
if master:
|
|
min_val = master["min"]
|
|
max_val = master["max"]
|
|
step_val = master["step"]
|
|
|
|
def round_to_step(val, step_size):
|
|
return round(val / step_size) * step_size
|
|
|
|
value = max(min_val, min(max_val, round_to_step(value, step_val)))
|
|
|
|
if output_int:
|
|
value = int(value)
|
|
|
|
return (value,)
|
|
|
|
|
|
class MegaSliderX3:
|
|
"""
|
|
3 universal sliders with float/int output toggle.
|
|
Connect Mega Slider Master Value for settings, or use right-click > Properties for per-slider overrides.
|
|
"""
|
|
|
|
DESCRIPTION = "Three universal sliders with float/int output."
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"output_int": ("BOOLEAN", {"default": False}),
|
|
"slider_1": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_2": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_3": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
},
|
|
"optional": {
|
|
"master": ("MEGA_SLIDER_MASTER",),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("FLOAT", "FLOAT", "FLOAT")
|
|
RETURN_NAMES = ("value_1", "value_2", "value_3")
|
|
FUNCTION = "output_values"
|
|
CATEGORY = "MachinePaintingNodes/Util"
|
|
|
|
def output_values(self, output_int, slider_1, slider_2, slider_3, master=None):
|
|
values = [slider_1, slider_2, slider_3]
|
|
|
|
if master:
|
|
min_val = master["min"]
|
|
max_val = master["max"]
|
|
step_val = master["step"]
|
|
|
|
def round_to_step(val, step_size):
|
|
return round(val / step_size) * step_size
|
|
|
|
values = [max(min_val, min(max_val, round_to_step(v, step_val))) for v in values]
|
|
|
|
if output_int:
|
|
values = [int(v) for v in values]
|
|
|
|
return tuple(values)
|
|
|
|
|
|
class MegaSliderX6:
|
|
"""
|
|
6 universal sliders with float/int output toggle.
|
|
Connect Mega Slider Master Value for settings, or use right-click > Properties for per-slider overrides.
|
|
"""
|
|
|
|
DESCRIPTION = "Six universal sliders with float/int output."
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"output_int": ("BOOLEAN", {"default": False}),
|
|
"slider_1": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_2": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_3": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_4": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_5": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_6": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
},
|
|
"optional": {
|
|
"master": ("MEGA_SLIDER_MASTER",),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT")
|
|
RETURN_NAMES = ("value_1", "value_2", "value_3", "value_4", "value_5", "value_6")
|
|
FUNCTION = "output_values"
|
|
CATEGORY = "MachinePaintingNodes/Util"
|
|
|
|
def output_values(self, output_int, slider_1, slider_2, slider_3, slider_4, slider_5, slider_6, master=None):
|
|
values = [slider_1, slider_2, slider_3, slider_4, slider_5, slider_6]
|
|
|
|
if master:
|
|
min_val = master["min"]
|
|
max_val = master["max"]
|
|
step_val = master["step"]
|
|
|
|
def round_to_step(val, step_size):
|
|
return round(val / step_size) * step_size
|
|
|
|
values = [max(min_val, min(max_val, round_to_step(v, step_val))) for v in values]
|
|
|
|
if output_int:
|
|
values = [int(v) for v in values]
|
|
|
|
return tuple(values)
|
|
|
|
|
|
class MegaSliderX12:
|
|
"""
|
|
12 universal sliders with float/int output toggle.
|
|
Connect Mega Slider Master Value for settings, or use right-click > Properties for per-slider overrides.
|
|
"""
|
|
|
|
DESCRIPTION = "Twelve universal sliders with float/int output."
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"output_int": ("BOOLEAN", {"default": False}),
|
|
"slider_1": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_2": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_3": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_4": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_5": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_6": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_7": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_8": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_9": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_10": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_11": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
"slider_12": ("FLOAT", {"default": 0.0, "min": -10000.0, "max": 10000.0, "step": 0.01, "display": "slider"}),
|
|
},
|
|
"optional": {
|
|
"master": ("MEGA_SLIDER_MASTER",),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT",
|
|
"FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT")
|
|
RETURN_NAMES = ("value_1", "value_2", "value_3", "value_4", "value_5", "value_6",
|
|
"value_7", "value_8", "value_9", "value_10", "value_11", "value_12")
|
|
FUNCTION = "output_values"
|
|
CATEGORY = "MachinePaintingNodes/Util"
|
|
|
|
def output_values(self, output_int, slider_1, slider_2, slider_3, slider_4, slider_5, slider_6,
|
|
slider_7, slider_8, slider_9, slider_10, slider_11, slider_12, master=None):
|
|
values = [slider_1, slider_2, slider_3, slider_4, slider_5, slider_6,
|
|
slider_7, slider_8, slider_9, slider_10, slider_11, slider_12]
|
|
|
|
if master:
|
|
min_val = master["min"]
|
|
max_val = master["max"]
|
|
step_val = master["step"]
|
|
|
|
def round_to_step(val, step_size):
|
|
return round(val / step_size) * step_size
|
|
|
|
values = [max(min_val, min(max_val, round_to_step(v, step_val))) for v in values]
|
|
|
|
if output_int:
|
|
values = [int(v) for v in values]
|
|
|
|
return tuple(values)
|