99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
"""
|
||
流体动力学插件
|
||
此文件定义了插件的主类和基本接口
|
||
"""
|
||
|
||
from plugins.plugin_manager import BasePlugin
|
||
from .core.fluid_world import FluidWorld
|
||
|
||
class Plugin(BasePlugin):
|
||
"""
|
||
流体动力学插件主类
|
||
"""
|
||
|
||
def __init__(self, plugin_manager, name):
|
||
super().__init__(plugin_manager, name)
|
||
# 设置插件配置
|
||
self.config = {
|
||
"version": "1.0.0",
|
||
"author": "Your Name",
|
||
"description": "基于物理的流体动力学模拟插件"
|
||
}
|
||
|
||
# 流体世界实例
|
||
self.fluid_world = None
|
||
|
||
def initialize(self) -> bool:
|
||
"""
|
||
初始化插件
|
||
在插件加载时调用,用于执行一次性设置
|
||
返回True表示初始化成功,False表示失败
|
||
"""
|
||
print(f"初始化流体动力学插件: {self.name}")
|
||
# 在这里执行插件初始化逻辑
|
||
return True
|
||
|
||
def enable(self) -> bool:
|
||
"""
|
||
启用插件
|
||
在插件启用时调用,用于注册事件处理器、创建GUI元素等
|
||
返回True表示启用成功,False表示失败
|
||
"""
|
||
if not super().enable():
|
||
return False
|
||
|
||
print(f"启用流体动力学插件: {self.name}")
|
||
# 创建流体世界实例
|
||
try:
|
||
self.fluid_world = FluidWorld(self.plugin_manager.world)
|
||
print("流体世界创建成功")
|
||
except Exception as e:
|
||
print(f"流体世界创建失败: {e}")
|
||
return False
|
||
|
||
# 在这里执行插件启用逻辑
|
||
# 例如注册事件处理器:
|
||
# self.plugin_manager.world.accept("f1", self.on_f1_pressed)
|
||
return True
|
||
|
||
def disable(self) -> bool:
|
||
"""
|
||
禁用插件
|
||
在插件禁用时调用,用于清理资源、移除事件处理器等
|
||
返回True表示禁用成功,False表示失败
|
||
"""
|
||
if not super().disable():
|
||
return False
|
||
|
||
print(f"禁用流体动力学插件: {self.name}")
|
||
# 清理流体世界资源
|
||
if self.fluid_world:
|
||
self.fluid_world.cleanup()
|
||
|
||
# 在这里执行插件禁用逻辑
|
||
# 例如移除事件处理器:
|
||
# self.plugin_manager.world.ignore("f1")
|
||
return True
|
||
|
||
def finalize(self):
|
||
"""
|
||
清理插件资源
|
||
在插件卸载时调用,用于执行最终清理工作
|
||
"""
|
||
print(f"清理流体动力学插件资源: {self.name}")
|
||
# 在这里执行最终清理逻辑
|
||
if self.fluid_world:
|
||
self.fluid_world.cleanup()
|
||
|
||
def get_info(self) -> dict:
|
||
"""
|
||
获取插件信息
|
||
返回包含插件信息的字典
|
||
"""
|
||
info = super().get_info()
|
||
info.update({
|
||
"version": self.config.get("version", "1.0.0"),
|
||
"author": self.config.get("author", "Unknown"),
|
||
"description": self.config.get("description", "Fluid dynamics plugin")
|
||
})
|
||
return info |