from .angles import CAMERA_MAPS, get_qwen_prompt # Node stable, version officielle NODE_NAME = "QwenCameraSelector" NODE_VERSION = "1.0.0" class QwenCameraSelector: CATEGORY = "Camera/Qwen" RETURN_TYPES = ("STRING", "STRING") RETURN_NAMES = ("prompt", "prompt_preview") FUNCTION = "run" OUTPUT_TOOLTIPS = ( "Prompt string for Qwen-Multiple-Angle camera settings", "Preview of the full prompt (connect to Text Display node to see it)" ) @classmethod def INPUT_TYPES(cls): required = {} for key in ["azimuth", "elevation", "distance"]: map_data = CAMERA_MAPS[key]["map"] default = CAMERA_MAPS[key]["default"] options = [str(k) for k in map_data.keys()] # Tooltip “friendly” if key in ["azimuth", "elevation"]: tooltip_lines = [f"{k}° → {v}" for k, v in map_data.items()] else: # distance tooltip_lines = [f"{v} ({k})" for k, v in map_data.items()] tooltip = "\n".join(tooltip_lines) default_key = str([k for k, v in map_data.items() if v == default][0]) required[key] = (options, {"default": default_key, "tooltip": tooltip}) return {"required": required} def run(self, azimuth, elevation, distance): az = int(azimuth) el = int(elevation) dist = distance camera_prompt = get_qwen_prompt(az, el, dist) final_prompt = " " + camera_prompt # Debug console (optionnel) print("[QwenCameraSelector] Prompt:", final_prompt) return (final_prompt, final_prompt)