🚀 插件系统架构概览该系统设计遵循“轻量核心,无限扩展”的原则:
🔌 核心层 (core/plugin_core.py):
PluginInterface:所有插件的基类,定义了标准生命周期(initialize, shutdown)和事件钩子(on_app_ready, on_editor_created)。
PluginManager:单例管理器,负责自动发现、加载、管理插件,并向插件注入全局上下文(如 MainWindow 实例)。
📂 插件目录 (plugins/):
每个插件拥有独立的文件夹。
plugin.json:描述插件元数据(ID、名称、版本、入口文件)。
main.py:插件的具体实现代码。
🔗 深度集成:
生命周期管理:MainWindow 启动时自动扫描并加载插件。
事件驱动:当编辑器创建新标签页、应用就绪时,会自动通知所有插件,实现功能的无缝注入。
🛠️ 已完成的工作
创建核心文件:
wemark/core/plugin_core.py: 实现了插件接口和管理器。
建立插件目录:
wemark/plugins/: 存放所有插件的根目录。
集成到主程序:
修改了 wemark/ui/main_window.py,在启动时初始化插件系统,并添加了必要的事件通知。
开发示例插件:
创建了 wemark/plugins/hello_world/,包含一个演示插件。
功能:该插件会在“工具”菜单中自动添加一个 "👋 Hello Plugin" 选项,点击后会弹出欢迎提示。
📖 如何开发新插件开发一个新插件非常简单,只需两步:
在 wemark/plugins/ 下创建一个新文件夹(例如 my_feature)。
创建 plugin.json 和 main.py。
plugin.json 示例:{ "id": "my_feature", "name": "我的超级功能", "version": "1.0.0", "entry_point": "main.py", "class_name": "MyPlugin"}main.py 示例:from core.plugin_core import PluginInterfaceclass MyPlugin(PluginInterface): def initialize(self): print("插件已加载!") def on_app_ready(self): # 获取主窗口实例,随心所欲地修改 UI main_window = self.context.get('main_window') # ...添加菜单、工具栏按钮或监听信号现在,您可以重启程序,在“工具”菜单中看到“👋 Hello Plugin”,这标志着插件系统已经成功运行!插件系统已经成功运行。