100 lines
3.0 KiB
Python
100 lines
3.0 KiB
Python
"""Compact Sampler Combo node for ComfyUI with minimal interface."""
|
|
|
|
from typing import Tuple
|
|
from ...base.base_node import ComfyAssetsBaseNode
|
|
from .logic import (
|
|
get_sampler_combo,
|
|
SAMPLERS,
|
|
SCHEDULERS,
|
|
)
|
|
|
|
|
|
class SamplerComboCompactNode(ComfyAssetsBaseNode):
|
|
"""
|
|
Compact Sampler Combo node with minimal interface.
|
|
|
|
Provides essential sampling parameters in a space-efficient layout
|
|
with shorter parameter names and reduced visual footprint.
|
|
"""
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
"""Define compact input types for the ComfyUI node."""
|
|
return {
|
|
"required": {
|
|
"sampler": (
|
|
SAMPLERS,
|
|
{
|
|
"default": "euler",
|
|
"tooltip": "Sampler",
|
|
},
|
|
),
|
|
"sched": (
|
|
SCHEDULERS,
|
|
{
|
|
"default": "normal",
|
|
"tooltip": "Scheduler",
|
|
},
|
|
),
|
|
"steps": (
|
|
"INT",
|
|
{
|
|
"default": 20,
|
|
"min": 1,
|
|
"max": 50,
|
|
"step": 1,
|
|
"tooltip": "Steps",
|
|
},
|
|
),
|
|
"cfg": (
|
|
"FLOAT",
|
|
{
|
|
"default": 7.0,
|
|
"min": 1.0,
|
|
"max": 15.0,
|
|
"step": 0.5,
|
|
"display": "slider",
|
|
"tooltip": "CFG",
|
|
},
|
|
),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = (SAMPLERS, SCHEDULERS, "INT", "FLOAT")
|
|
RETURN_NAMES = ("sampler", "scheduler", "steps", "cfg")
|
|
FUNCTION = "get_combo"
|
|
CATEGORY = "ComfyAssets"
|
|
|
|
def get_combo(
|
|
self, sampler: str, sched: str, steps: int, cfg: float
|
|
) -> Tuple[str, str, int, float]:
|
|
"""
|
|
Get compact sampler combo configuration.
|
|
|
|
Args:
|
|
sampler: The sampler algorithm name
|
|
sched: The scheduler algorithm name
|
|
steps: Number of sampling steps
|
|
cfg: CFG scale value
|
|
|
|
Returns:
|
|
Tuple of (sampler, scheduler, steps, cfg)
|
|
"""
|
|
try:
|
|
# Use the same validation logic but with compact interface
|
|
result = get_sampler_combo(sampler, sched, steps, cfg)
|
|
return result
|
|
|
|
except Exception as e:
|
|
# Graceful fallback
|
|
self.handle_error(f"Error in compact combo: {str(e)}")
|
|
return ("euler", "normal", 20, 7.0)
|
|
|
|
def __str__(self) -> str:
|
|
"""String representation of the compact node."""
|
|
return "SamplerComboCompactNode"
|
|
|
|
def __repr__(self) -> str:
|
|
"""Detailed string representation of the compact node."""
|
|
return f"SamplerComboCompactNode(category='{self.CATEGORY}')"
|