EG/ui/panels/create_actions.py

218 lines
6.3 KiB
Python

class CreateActions:
"""Create and script entry actions extracted from main world."""
def __init__(self, app):
self.app = app
def __getattr__(self, name):
return getattr(self.app, name)
def __setattr__(self, name, value):
if name == "app" or name in self.__dict__ or hasattr(type(self), name):
object.__setattr__(self, name, value)
else:
setattr(self.app, name, value)
def _on_create_empty_object(self):
"""创建空对象"""
try:
result = self.createEmptyObject()
if result:
self.add_success_message("空对象创建成功")
else:
self.add_error_message("空对象创建失败")
return result
except Exception as e:
self.add_error_message(f"创建空对象失败: {str(e)}")
def _on_create_cube(self):
"""创建立方体"""
try:
result = self.createCube()
if result:
self.add_success_message("立方体创建成功")
else:
self.add_error_message("立方体创建失败")
return result
except Exception as e:
self.add_error_message(f"创建立方体失败: {str(e)}")
def _on_create_sphere(self):
"""创建球体"""
try:
result = self.createSphere()
if result:
self.add_success_message("球体创建成功")
else:
self.add_error_message("球体创建失败")
return result
except Exception as e:
self.add_error_message(f"创建球体失败: {str(e)}")
def _on_create_cylinder(self):
"""创建圆柱体"""
try:
result = self.createCylinder()
if result:
self.add_success_message("圆柱体创建成功")
else:
self.add_error_message("圆柱体创建失败")
return result
except Exception as e:
self.add_error_message(f"创建圆柱体失败: {str(e)}")
def _on_create_plane(self):
"""创建平面"""
try:
result = self.createPlane()
if result:
self.add_success_message("平面创建成功")
else:
self.add_error_message("平面创建失败")
return result
except Exception as e:
self.add_error_message(f"创建平面失败: {str(e)}")
def _on_create_3d_text(self):
"""创建3D文本"""
self.show_3d_text_dialog = True
def _on_create_3d_image(self):
"""创建3D图片"""
self.show_3d_image_dialog = True
def _on_create_gui_button(self):
"""创建GUI按钮"""
self.show_gui_button_dialog = True
def _on_create_gui_label(self):
"""创建GUI标签"""
self.show_gui_label_dialog = True
def _on_create_gui_entry(self):
"""创建GUI输入框"""
self.show_gui_entry_dialog = True
def _on_create_gui_image(self):
"""创建GUI图片"""
self.show_gui_image_dialog = True
def _on_create_video_screen(self):
"""创建视频屏幕"""
self.show_video_screen_dialog = True
def _on_create_2d_video_screen(self):
"""创建2D视频屏幕"""
self.show_2d_video_screen_dialog = True
def _on_create_spherical_video(self):
"""创建球形视频"""
self.show_spherical_video_dialog = True
def _on_create_virtual_screen(self):
"""创建虚拟屏幕"""
self.show_virtual_screen_dialog = True
def _on_create_spot_light(self):
"""创建聚光灯"""
self.show_spot_light_dialog = True
def _on_create_point_light(self):
"""创建点光源"""
self.show_point_light_dialog = True
def _on_create_flat_terrain(self):
"""创建平面地形"""
self.show_terrain_dialog = True
def _on_create_heightmap_terrain(self):
"""从高度图创建地形"""
self.show_heightmap_browser = True
def _on_create_script(self):
"""创建脚本"""
self.show_script_dialog = True
def _on_load_script(self):
"""加载脚本文件"""
self.show_script_browser = True
def _on_reload_all_scripts(self):
"""重载所有脚本"""
try:
if hasattr(self, 'script_manager') and self.script_manager:
self.script_manager.reloadAllScripts()
self.add_success_message("所有脚本重载成功")
else:
self.add_error_message("脚本管理器未初始化")
except Exception as e:
self.add_error_message(f"重载脚本失败: {str(e)}")
def _on_open_scripts_manager(self):
"""打开脚本管理器"""
self.showScriptPanel = True
self.add_info_message("脚本管理器已打开")
def _on_create_2d_sample_panel(self):
"""创建2D示例面板"""
try:
result = self.create2DSamplePanel()
if result:
self.add_success_message("2D示例面板创建成功")
else:
self.add_error_message("2D示例面板创建失败")
except Exception as e:
self.add_error_message(f"创建2D示例面板失败: {str(e)}")
def _on_create_3d_sample_panel(self):
"""创建3D实例面板"""
try:
result = self.create3DSamplePanel()
if result:
self.add_success_message("3D实例面板创建成功")
else:
self.add_error_message("3D实例面板创建失败")
except Exception as e:
self.add_error_message(f"创建3D实例面板失败: {str(e)}")
def _on_create_web_panel(self):
"""创建Web面板"""
try:
result = self.editor_panels._on_create_web_panel()
if result:
self.add_success_message("Web面板创建成功")
else:
self.add_error_message("Web面板创建失败")
return result
except Exception as e:
self.add_error_message(f"创建Web面板失败: {str(e)}")
return None
# ==================== 3D对象和GUI创建方法 ====================