""" Analyze the WORKING PanLeft mappings from TestMKS_original.set """ import sys import os import json os.chdir(r'C:\DEV\COPILOT_codex') sys.path.insert(0, r'C:\DEV\COPILOT_codex') from geviset_parser import load_set from pathlib import Path # First, let me check if the file exists in the expected location # The user said they uploaded it to the server, so I need to download it first print("Looking for TestMKS_original.set...") print() # Try to find it in common locations possible_paths = [ Path(r"C:\DEV\COPILOT_codex\TestMKS_original.set"), Path(r"C:\DEV\COPILOT\TestMKS_original.set"), Path(r"C:\GEVISOFT\TestMKS_original.set"), ] set_file = None for path in possible_paths: if path.exists(): set_file = path print(f"Found file at: {path}") break if not set_file: print("ERROR: TestMKS_original.set not found in common locations") print("Please specify the full path to TestMKS_original.set") sys.exit(1) print() print("=" * 80) print("ANALYZING WORKING PANLEFT MAPPINGS") print("=" * 80) print() tree = load_set(set_file) # Find MappingRules mapping_rules = None for child in tree.get("children", []): if child.get("name") == "MappingRules" and child.get("type") == "folder": mapping_rules = child break if not mapping_rules: print("ERROR: MappingRules not found!") sys.exit(1) # Find mappings with PanLeft or camera control actions camera_control_mappings = [] for mapping in mapping_rules.get("children", []): if mapping.get("type") != "folder": continue # Get mapping name name = None rules_folder = None for child in mapping.get("children", []): if child.get("name") == "@": name = child.get("value") if child.get("name") == "Rules" and child.get("type") == "folder": rules_folder = child if not rules_folder: continue # Check output actions for camera control actions has_camera_control = False for output in rules_folder.get("children", []): if output.get("type") != "folder": continue for field in output.get("children", []): field_value = str(field.get("value", "")).lower() if any(action in field_value for action in ["panleft", "panright", "panstop", "pan left", "pan right", "pan stop"]): has_camera_control = True break if has_camera_control: break if has_camera_control: camera_control_mappings.append({ "mapping_name": name, "mapping_id": mapping.get("name"), "mapping_folder": mapping }) print(f"Found {len(camera_control_mappings)} mappings with camera control actions") print() if camera_control_mappings: # Show the first one in detail first = camera_control_mappings[0] print("=" * 80) print(f"FIRST CAMERA CONTROL MAPPING: {first['mapping_name']} (ID: {first['mapping_id']})") print("=" * 80) print() mapping_folder = first["mapping_folder"] print("MAPPING LEVEL STRUCTURE:") for i, child in enumerate(mapping_folder.get("children", []), 1): child_type = child.get("type") child_name = child.get("name") child_value = child.get("value") children_count = len(child.get("children", [])) value_display = child_value if child_value is not None else f"{children_count} children" print(f" {i:2d}. {child_name:20s} ({child_type:6s}): {value_display}") print() # Find Rules folder rules_folder = None for child in mapping_folder.get("children", []): if child.get("name") == "Rules" and child.get("type") == "folder": rules_folder = child break if rules_folder: print("OUTPUT ACTIONS:") for output in rules_folder.get("children", []): if output.get("type") != "folder": continue print(f"\nOutput Action {output.get('name')}:") print("-" * 60) for field in output.get("children", []): field_name = field.get("name") field_type = field.get("type") field_value = field.get("value") print(f" {field_name:20s} ({field_type:6s}): {field_value}") # Save full structure to JSON output_file = Path(r"C:\DEV\COPILOT\working_panleft_structure.json") with output_file.open("w") as f: json.dump(first["mapping_folder"], f, indent=2) print() print("=" * 80) print(f"Full structure saved to: {output_file}") print("=" * 80) else: print("No camera control mappings found!") print() print("Available mappings:") for mapping in mapping_rules.get("children", []): if mapping.get("type") == "folder": for child in mapping.get("children", []): if child.get("name") == "@": print(f" - {child.get('value')}")