Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

FileServer Class

class YSSCore::Editor::FileServer

此类提供文件打开服务。. 详情...

头文件: #include <FileServer>
自以下版本: YSSCore 0.13.0
继承自: Visindigo::General::PluginModule

公开类型

(自 Visindigo 0.13.0 引入) enum EditorType { CodeEditor, BuiltInEditor, WindowEditor, ExternalProgram, OtherEditor }

公开成员函数

(自 Visindigo 0.13.0 引入) FileServer(const QString &name, const QString &id, YSSCore::Editor::EditorPlugin *plugin)
(自 Visindigo 0.13.0 引入) virtual ~FileServer()
(自 Visindigo 0.13.0 引入) YSSCore::Editor::FileServer::EditorType getEditorType()
(自 Visindigo 0.13.0 引入) QStringList getSupportedFileExts()
(自 Visindigo 0.13.0 引入) virtual bool onCreateExternalEditor(const QString &filePath)
(自 Visindigo 0.13.0 引入) virtual YSSCore::Editor::FileEditWidget *onCreateFileEditWidget()
(自 Visindigo 0.13.0 引入) virtual QWidget *onCreateWindowEditor(const QString &filePath)
(自 Visindigo 0.13.0 引入) virtual bool onOtherOpenFile(const QString &filePath)

受保护成员函数

(自 Visindigo 0.13.0 引入) void setEditorType(YSSCore::Editor::FileServer::EditorType type)
(自 Visindigo 0.13.0 引入) void setSupportedFileExts(const QStringList &exts)

详细说明

由于YSSCore::Editor被设计为一个通用的编辑器框架,因此对于“打开文件”这样的需求只能提供通用框架, 即用户通过派生此类,并将其注册到YSSCore::Editor::FileServerManager中来实现对某类文件的打开支持。

这里的打开,指的就是通过YSSCore::Editor::FileServer::EditorType枚举中定义的几种方式的任意一种方式打开文件。 用户应该将自己实现的FileServer通过YSSCore::Editor::EditorPlugin::registerFileServer函数注册到YSSCore::Editor::FileServerManager中。 稍后,在调用YSSCore::Editor::FileServerManager::openFile函数时,Visindigo会根据文件扩展名选择合适的FileServer来打开文件。

成员类型文档

[since Visindigo 0.13.0] enum FileServer::EditorType

ConstantValueDescription
YSSCore::Editor::FileServer::CodeEditor0使用内置代码编辑器打开文件。
YSSCore::Editor::FileServer::BuiltInEditor1使用内置编辑器打开文件,但不是代码编辑器。这个编辑器必须是派生自YSSCore::Editor::FileEditWidget的类。 需要同时实现YSSCore::Editor::FileServer::onCreateFileEditWidget函数。
YSSCore::Editor::FileServer::WindowEditor2使用新窗口打开文件,但仍然在本程序内。这个编辑器必须是派生自QWidget的类。 需要同时实现YSSCore::Editor::FileServer::onCreateWindowEditor函数。
YSSCore::Editor::FileServer::ExternalProgram3使用第三方程序打开文件。需要同时实现YSSCore::Editor::FileServer::onCreateExternalEditor函数。
YSSCore::Editor::FileServer::OtherEditor4其他方式打开文件。需要同时实现YSSCore::Editor::FileServer::onOtherOpenFile函数。

这个 enum 从 Visindigo 0.13.0 开始支持。

成员函数文档

[since Visindigo 0.13.0] FileServer::FileServer(const QString &name, const QString &id, YSSCore::Editor::EditorPlugin *plugin)

name 为文件服务的名称。 id 为文件服务的唯一标识符。 plugin 为此文件服务所属的插件。 构造FileServer对象。

这个 function 从 Visindigo 0.13.0 开始支持。

[virtual noexcept, since Visindigo 0.13.0] FileServer::~FileServer()

析构FileServer对象。一般来说,没有任何情况需要手动析构此对象。FileServer应该与使用它的插件有一致的生命周期。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] YSSCore::Editor::FileServer::EditorType FileServer::getEditorType()

返回此文件服务的编辑器类型。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QStringList FileServer::getSupportedFileExts()

返回此文件服务支持的文件扩展名列表。

这个 function 从 Visindigo 0.13.0 开始支持。

[virtual, since Visindigo 0.13.0] bool FileServer::onCreateExternalEditor(const QString &filePath)

当需要使用第三方程序打开文件时调用。默认实现返回false。 filePath 为需要打开的文件路径。 此函数要求派生类根据filePath参数使用第三方程序打开这个文件,并返回是否成功的布尔值。

FileServerManager不会对这个函数的返回值做任何处理。它会直接返回这个值给调用者。

Visindigo对第三方程序的调用没有任何要求和限制。派生类可以使用任何方式调用第三方程序。 因此Visindigo也不打算提供生命周期辅助函数。如果插件需要对第三方程序的生命周期进行管理,请自行实现。 建议使用EditorPlugin::onPluginDisable函数在插件被禁用时关闭第三方程序。

这个 function 从 Visindigo 0.13.0 开始支持。

[virtual, since Visindigo 0.13.0] YSSCore::Editor::FileEditWidget *FileServer::onCreateFileEditWidget()

当需要创建内置编辑器时调用。默认实现返回nullptr。 此函数没有参数。因为设计上要求派生直接返回一个新创建的YSSCore::Editor::FileEditWidget派生类对象即可。

FileServerManager::openFile函数内部会自动对这个新的派生类对象调用openFile函数打开指定文件。

一旦成功,FileServerManager会发出FileServerManager::builtinEditorCreated信号,传递这个新的编辑器对象的指针。

这个 function 从 Visindigo 0.13.0 开始支持。

[virtual, since Visindigo 0.13.0] QWidget *FileServer::onCreateWindowEditor(const QString &filePath)

当需要创建新窗口编辑器时调用。默认实现返回nullptr。 filePath 为需要打开的文件路径。 此函数要求派生类根据filePath参数创建一个新的QWidget派生类对象,并返回这个对象的指针。

只要返回的指针不为nullptr,FileServerManager会发出FileServerManager::windowEditorCreated信号,传递这个新的窗口对象的指针。

这个 function 从 Visindigo 0.13.0 开始支持。

[virtual, since Visindigo 0.13.0] bool FileServer::onOtherOpenFile(const QString &filePath)

当需要使用其他方式打开文件时调用。默认实现返回false。 filePath 为需要打开的文件路径。 此函数要求派生类根据filePath参数使用其他方式打开这个文件,并返回是否成功的布尔值。 FileServerManager不会对这个函数的返回值做任何处理。它会直接返回这个值给调用者。

很难想象“其他方式”具体指什么,因此Visindigo对这个函数没有任何要求和限制。派生类可以使用任何方式打开文件。 同样的,Visindigo没有为这种方式提供任何生命周期辅助函数。如果插件需要对这种方式的生命周期进行管理,请自行实现。

这个 function 从 Visindigo 0.13.0 开始支持。

[protected, since Visindigo 0.13.0] void FileServer::setEditorType(YSSCore::Editor::FileServer::EditorType type)

设置此文件服务的编辑器类型。 type 为新的编辑器类型。

这个 function 从 Visindigo 0.13.0 开始支持。

[protected, since Visindigo 0.13.0] void FileServer::setSupportedFileExts(const QStringList &exts)

设置此文件服务支持的文件扩展名列表。 exts 为新的文件扩展名列表。

这个 function 从 Visindigo 0.13.0 开始支持。