#!/usr/bin/env python3 """ 脚本管理界面测试 这个脚本测试新添加的脚本管理界面功能: 1. 脚本菜单 2. 脚本管理面板 3. 脚本挂载和卸载 4. 属性面板中的脚本信息显示 """ import sys import os # 确保能导入项目模块 sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) from main import MyWorld from ui.main_window import setup_main_window from panda3d.core import * def test_script_management(): """测试脚本管理功能""" print("=== 脚本管理界面测试 ===") # 创建世界对象 world = MyWorld() # 设置主窗口 app, main_window = setup_main_window(world) # 创建一些测试对象 print("\n1. 创建测试对象...") # 创建一个立方体 cube = world.loader.loadModel("models/environment") if cube: cube.reparentTo(world.render) cube.setPos(0, 10, 0) cube.setScale(0.5) cube.setName("测试立方体") world.models.append(cube) print("✓ 创建立方体") # 更新场景树 world.updateSceneTree() print("\n2. 脚本系统状态:") print(f"✓ 脚本系统已启动: {world.script_manager.engine.update_task is not None}") print(f"✓ 热重载已启用: {world.script_manager.hot_reload_enabled}") print(f"✓ 可用脚本数量: {len(world.getAvailableScripts())}") print("\n3. 测试脚本创建...") # 创建一些测试脚本 test_scripts = [ ("TestRotator", "basic"), ("TestMover", "movement"), ("TestScaler", "basic") ] for script_name, template in test_scripts: try: success = world.createScript(script_name, template) if success: print(f"✓ 创建脚本: {script_name}") else: print(f"✗ 创建脚本失败: {script_name}") except Exception as e: print(f"✗ 创建脚本出错 {script_name}: {e}") print("\n4. 加载所有脚本...") try: scripts_loaded = world.loadAllScripts() print(f"✓ 成功加载 {len(scripts_loaded)} 个脚本") for script_name in scripts_loaded: print(f" - {script_name}") except Exception as e: print(f"✗ 加载脚本失败: {e}") print("\n5. 测试脚本挂载...") if cube and world.getAvailableScripts(): script_name = world.getAvailableScripts()[0] try: success = world.addScript(cube, script_name) if success: print(f"✓ 成功挂载脚本 {script_name} 到立方体") # 获取挂载的脚本 scripts = world.getScripts(cube) print(f"✓ 立方体上的脚本数量: {len(scripts)}") else: print(f"✗ 挂载脚本失败") except Exception as e: print(f"✗ 挂载脚本出错: {e}") print("\n6. 界面使用说明:") print("─" * 50) print("• 使用菜单栏 -> 脚本 来访问脚本功能") print("• 在右侧停靠窗口中查看'脚本管理'标签页") print("• 选择场景中的对象查看其脚本属性") print("• 使用脚本面板挂载/卸载脚本") print("• 双击脚本名称可以(将来)打开外部编辑器") print("• 热重载功能会自动检测脚本文件变化") print("─" * 50) print("\n✓ 脚本管理界面测试完成!") print("现在可以通过GUI界面管理脚本了。") # 启动应用 return app.exec_() if __name__ == "__main__": sys.exit(test_script_management())