YSSCore::Editor::EditorPlugin Class
class YSSCore::Editor::EditorPlugin此类为Yayin Story Studio提供插件基类. 详情...
| 头文件: | #include <EditorPlugin> |
| 自以下版本: | YSSCore 0.13.0 |
| 继承自: | Visindigo::General::Plugin |
公开成员函数
(自 YSS 0.13.0 引入) | EditorPlugin(const QString &id, Visindigo::General::Version apiVersion = Compiled_VIAPI_Version, Visindigo::General::Version abiVersion = Compiled_VIABI_Version, QObject *parent = nullptr) |
(自 YSS 0.13.0 引入) virtual | ~EditorPlugin() |
(自 YSSCore 0.16.0 引入) virtual bool | onProjectAboutToClose(YSSCore::General::YSSProject *project) |
(自 YSS 0.13.0 引入) virtual void | onProjectClose(YSSCore::General::YSSProject *project) |
(自 YSS 0.13.0 引入) virtual void | onProjectOpen(YSSCore::General::YSSProject *project) |
(自 YSSCore 0.15.0 引入) virtual QWidget * | onToolWidgetRequested(const QString &widgetID) |
受保护成员函数
(自 YSS 0.15.0 引入) YSSCore::General::YSSProject * | getCurrentProject() |
(自 YSS 0.13.0 引入) void | registerDebugServer(YSSCore::Editor::DebugServer *server) |
(自 YSS 0.13.0 引入) void | registerFileServer(YSSCore::Editor::FileServer *server) |
(自 YSS 0.13.0 引入) void | registerFileTemplateProvider(YSSCore::Editor::FileTemplateProvider *provider) |
(自 YSS 0.13.0 引入) void | registerLangServer(YSSCore::Editor::LangServer *server) |
(自 YSS 0.13.0 引入) void | registerProjectTemplateProvider(YSSCore::Editor::ProjectTemplateProvider *provider) |
(自 YSS 0.15.0 引入) void | registerToolWidget(const QString &widgetID, const QString &widgetName) |
详细说明
EditorPlugin是所有YSS编辑器插件的基类。除非只需要提供标准Visindigo插件功能, 否则您应该从此类派生来开发您的插件。
这类的用法和Visindigo::General::Plugin类似,但提供了更多与YSS编辑器交互的功能。
成员函数文档
[since YSS 0.13.0] EditorPlugin::EditorPlugin(const QString &id, Visindigo::General::Version apiVersion = Compiled_VIAPI_Version, Visindigo::General::Version abiVersion = Compiled_VIABI_Version, QObject *parent = nullptr)
id 插件的ID apiVersion 插件的API版本 abiVersion 插件的ABI版本 parent 插件的父对象
对于abiVersion,其已经在头文件中被默认填充为Compiled_YSSABI_Version,代表您的插件编译时YSS对应的ABI版本。 在派生此类时,不需要实际传递任何参数。
Warning: 请注意,abiVersion并不是插件的版本号,也不是YSS的程序版本。它是YSS的二进制兼容版本。
这个function 从 YSS 0.13.0 开始支持。
[virtual noexcept, since YSS 0.13.0] EditorPlugin::~EditorPlugin()
析构函数
这个function 从 YSS 0.13.0 开始支持。
[protected, since YSS 0.15.0] YSSCore::General::YSSProject *EditorPlugin::getCurrentProject()
return 当前打开的项目。
实际上,这个函数就是YSSProject::getCurrentProject的本类便捷写法。
这个function 从 YSS 0.15.0 开始支持。
[virtual, since YSSCore 0.16.0] bool EditorPlugin::onProjectAboutToClose(YSSCore::General::YSSProject *project)
project 即将关闭的项目对象
return 同意关闭项目时返回 true,否则返回 false。 当项目即将被关闭时调用此函数。参数project是即将被关闭的项目对象。 YSS会在关闭项目之前调用此函数,询问插件是否同意关闭项目。如果所有插件都同意,则项目正常关闭; 如果有任何一个插件不同意,则取消关闭项目的操作。因此,如果您的插件需要在项目关闭前进行一些检查, 或者需要提示用户保存未保存的更改,您可以在这个函数中实现相关逻辑,并根据情况返回true或false。
默认实现返回true,表示同意关闭项目。您可以重写此函数来实现自定义的关闭前逻辑。
请注意,根据YSSCore的实现,只要有插件不同意关闭项目,则后续的onProjectAboutToClose都不会再继续调用。 因此,不应当在这个函数中执行资源回收或其他影响插件状态的操作,只判断当前是否可以关闭项目即可。
这个function 从 YSSCore 0.16.0 开始支持。
[virtual, since YSS 0.13.0] void EditorPlugin::onProjectClose(YSSCore::General::YSSProject *project)
project 关闭的项目对象
关闭项目时调用此虚函数。参数project是被关闭的项目对象。
这个function 从 YSS 0.13.0 开始支持。
[virtual, since YSS 0.13.0] void EditorPlugin::onProjectOpen(YSSCore::General::YSSProject *project)
project 打开的项目对象
打开项目时调用此虚函数。参数project是被打开的项目对象。
这个function 从 YSS 0.13.0 开始支持。
[virtual, since YSSCore 0.15.0] QWidget *EditorPlugin::onToolWidgetRequested(const QString &widgetID)
widgetID 工具窗口ID
YSS需要请求显示工具窗口内容时调用此函数。参数widgetID是被请求的工具窗口ID。 如果插件提供了对应ID的工具窗口内容,则返回一个QWidget指针;否则返回nullptr。
这个窗口一旦创建,所有权归YSS前台所有,插件不需要也不应该管理它的生命周期。 YSS会确保每次请求同一个工具窗口ID时,如果窗口仍然存活,则直接返回现有的实例; 如果窗口已经被关闭销毁,则再次调用此函数请求新的实例。因此,这个函数每次被调用时, 上一次请求所返回的指针已经被正确销毁了,因此插件不需要担心重复创建工具窗口的问题。
此外,这个窗口不应该中途移除Qt::WA_DeleteOnClose属性,YSS使用此属性来辅助管理工具窗口的生命周期。
如果你确实有持久化存储一些数据的需求,请考虑将其存储在工具窗口类的外部。
另请参见YSSCore::Editor::ToolWidgetManager。
这个function 从 YSSCore 0.15.0 开始支持。
[protected, since YSS 0.13.0] void EditorPlugin::registerDebugServer(YSSCore::Editor::DebugServer *server)
server 调试服务器
注册调试服务器。
这个function 从 YSS 0.13.0 开始支持。
[protected, since YSS 0.13.0] void EditorPlugin::registerFileServer(YSSCore::Editor::FileServer *server)
server 文件服务器
注册文件服务器。
这个function 从 YSS 0.13.0 开始支持。
[protected, since YSS 0.13.0] void EditorPlugin::registerFileTemplateProvider(YSSCore::Editor::FileTemplateProvider *provider)
provider 文件模板提供者
注册文件模板提供者。
这个function 从 YSS 0.13.0 开始支持。
[protected, since YSS 0.13.0] void EditorPlugin::registerLangServer(YSSCore::Editor::LangServer *server)
server 语言服务器
注册语言服务器。此函数还会自动从插件配置中读取该语言服务器的当前主题,并设置给语言服务器的颜色主题提供者。
这个function 从 YSS 0.13.0 开始支持。
[protected, since YSS 0.13.0] void EditorPlugin::registerProjectTemplateProvider(YSSCore::Editor::ProjectTemplateProvider *provider)
provider 项目模板提供者
注册项目模板提供者。
这个function 从 YSS 0.13.0 开始支持。
[protected, since YSS 0.15.0] void EditorPlugin::registerToolWidget(const QString &widgetID, const QString &widgetName)
widgetID 工具窗口ID widgetName 工具窗口名称
Warning: 自0.17.0起,ToolWidget完全弃用,改用FileServer的listAsTool属性来实现工具窗口功能。
注册工具窗口。工具窗口是YSS编辑器中可以停靠的窗口,插件可以通过onToolWidgetRequested()提供工具窗口的内容。
工具窗口的ID必须全程序唯一,一般建议使用反向域命名法。 widgetName 是支持VI18N的字符串,用于直接显示在界面上。
另请参见YSSCore::Editor::ToolWidgetManager。
这个function 从 YSS 0.15.0 开始支持。