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

YSSCore::Editor::FileServerManager Class

class YSSCore::Editor::FileServerManager

管理FileServer的对象. 详情...

头文件: #include <FileServerManager>
自以下版本: YSS 0.13.0

公开成员函数

(自 YSS 0.13.0 引入) ~FileServerManager()
(自 YSS 0.15.0 引入) QList<YSSCore::Editor::FileEditWidget *> getAllFileEditWidgets()
(自 YSS 0.15.0 引入) QStringList getAllOpenedFilePaths()
(自 YSS 0.13.0 引入) QStringList getAvailableFileServerForFileExt(const QString &fileExt)
(自 YSS 0.15.0 引入) YSSCore::Editor::FileEditWidget *getFileEditWidget(const QString &filePath)
(自 YSS 0.13.0 引入) QString getNameOfFileServer(const QString &serverId)
(自 YSS 0.13.0 引入) QStringList getSupportedFileExts()
(自 YSS 0.13.0 引入) bool isEspeciallyFocusEnable(const QString &fileExt)
(自 Visindgo 0.13.0 引入) bool openFile(const QString &filePath, const QString &preferredServerId = QString(), bool useFallback = true)
(自 Visindgo 0.13.0 引入) void registerFileServer(YSSCore::Editor::FileServer *server)
(自 YSS 0.13.0 引入) void setEspeciallyFocusEnable(const QString &fileExt, bool enable)
(自 YSS 0.13.0 引入) void setPriorityForFileExt(const QString &fileExt, const QStringList &serverIds)
(自 YSS 0.13.0 引入) void unregisterFileServer(YSSCore::Editor::FileServer *server)

信号

(自 YSS 0.15.0 引入) void fileChangeCanceled(const QString &filePath)
(自 YSS 0.15.0 引入) void fileChanged(const QString &filePath)
(自 YSS 0.15.0 引入) void fileClosed(const QString &filePath)
(自 YSS 0.15.0 引入) void fileOpened(const QString &filePath)
(自 YSS 0.15.0 引入) void fileRenamed(const QString &raw, const QString &changed)
(自 YSS 0.15.0 引入) void fileSaved(const QString &filePath)
(自 YSS 0.15.0 引入) void focusOnFile(const QString &filePath, qint32 lineNumber = 0, qint32 column = 0)

静态公开成员

(自 YSS 0.13.0 引入) YSSCore::Editor::FileServerManager *getInstance()

详细说明

在用户将自己的FileServer注册到FileServerManager后,FileServerManager可以根据已经注册的支持类型选择合适的FileServer来打开文件。

打开文件时的基本工作流程

FileServerManager的工作过程遵循以下步骤:

  • 1. 根据打开时的文件扩展名选定全部有效的FileServer对象。
  • 2. 首先尝试使用preferredServerId参数指定的FileServer对象(如果存在且有效)来打开文件。
  • 3. 若2失败,则尝试使用特别关注强度决定的优先级列表(如果该功能没有被禁用)来打开文件。
  • 4. 如果无人特别关注,就回退到手动设置的优先级列表(如果存在)来打开文件。
  • 5. 如果优先级列表未设置,则按照注册顺序尝试打开文件。
  • 6. 如果以上步骤全部失败,或者根本不存在支持该文件类型的FileServer,则根据useFallback参数决定是否使用内置文本编辑器打开文件。

有关特别关注、首选ID、优先级列表等概念的详细信息,请参见相关函数的文档说明。

成员函数文档

[noexcept, since YSS 0.13.0] FileServerManager::~FileServerManager()

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

这个function 从 YSS 0.13.0 开始支持。

[signal, since YSS 0.15.0] void FileServerManager::fileChangeCanceled(const QString &filePath)

filePath 是被撤销修改的文件的绝对路径。

当一个文件的修改被撤销时发出的信号。

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.15.0] void FileServerManager::fileChanged(const QString &filePath)

filePath 是被修改的文件的绝对路径。

当一个文件被修改时发出的信号。

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.15.0] void FileServerManager::fileClosed(const QString &filePath)

filePath 是被关闭的文件的绝对路径。

当一个文件被关闭时发出的信号。

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.15.0] void FileServerManager::fileOpened(const QString &filePath)

filePath 是被打开的文件的绝对路径。

当一个文件被成功打开时发出的信号。

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.15.0] void FileServerManager::fileRenamed(const QString &raw, const QString &changed)

raw 是文件重命名前的绝对路径 changed 是文件重命名后的绝对路径。

当一个文件被重命名时发出的信号。参数

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.15.0] void FileServerManager::fileSaved(const QString &filePath)

当一个文件被保存时发出的信号。参数 filePath 是被保存的文件的绝对路径。

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.15.0] void FileServerManager::focusOnFile(const QString &filePath, qint32 lineNumber = 0, qint32 column = 0)

filePath 被聚焦的文件的绝对路径, lineNumber 聚焦的行号, column 聚焦的列号。

请求聚焦一个文件时应该尝试发出此信号。

具体如何聚焦文件,由连接了该信号的前台决定。不过,YSSCore要求 连接了此信号的前台在聚焦时,应使用 lineNumbercolumn 调用响应的 FileEditWidget::cursorToPosition函数来聚焦文件的特定位置。

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.15.0] QList<YSSCore::Editor::FileEditWidget *> FileServerManager::getAllFileEditWidgets()

return 所有打开的文件编辑窗口。

return 所有打开的文件编辑窗口列表。

该返回值应即用即弃,不应被缓存或长期持有,因为FileServerManager会负责在窗口关闭时删除窗口对象。

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.15.0] QStringList FileServerManager::getAllOpenedFilePaths()

return 所有打开的文件路径列表。

该返回值应即用即弃,不应被缓存或长期持有,因为实际打开的文件列表可能会发生变化,缓存的列表可能会过时并导致逻辑错误。

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.13.0] QStringList FileServerManager::getAvailableFileServerForFileExt(const QString &fileExt)

return 某种文件类型对应的可用FileServer列表。 fileExt 文件类型后缀名(不含点号)。 return 返回某种文件类型对应的可用FileServer ID列表。

这个API不返回任何有关虚拟文件服务器的信息。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.15.0] YSSCore::Editor::FileEditWidget *FileServerManager::getFileEditWidget(const QString &filePath)

return 指定文件路径对应的文件编辑窗口。 filePath 文件路径。 return 指定文件路径对应的文件编辑窗口指针,如果没有找到则返回nullptr。 该返回值应即用即弃,不应被缓存或长期持有,因为FileServerManager会负责在窗口关闭时删除窗口对象。

这个function 从 YSS 0.15.0 开始支持。

[static, since YSS 0.13.0] YSSCore::Editor::FileServerManager *FileServerManager::getInstance()

return FileServerManager的单例对象。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString FileServerManager::getNameOfFileServer(const QString &serverId)

return 某个FileServer的名称。 serverId FileServer的ID。 return 返回某个FileServer的名称,如果没有找到对应ID的FileServer,则返回一个空字符串。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QStringList FileServerManager::getSupportedFileExts()

return 所有已注册的FileServer支持的文件类型列表。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] bool FileServerManager::isEspeciallyFocusEnable(const QString &fileExt)

检查某种文件类型的特别关注强度功能是否启用。 fileExt 文件类型后缀名(不含点号)。

return 某种文件类型的特别关注强度功能是否启用。

这个function 从 YSS 0.13.0 开始支持。

[since Visindgo 0.13.0] bool FileServerManager::openFile(const QString &filePath, const QString &preferredServerId = QString(), bool useFallback = true)

打开一个文件。如果有合适的FileServer注册,则使用该FileServer打开文件,否则使用内置的文本编辑器打开文件。 filePath 要打开的文件路径。 preferredServerId 优先使用的FileServer ID。 useFallback 是否在没有任何FileServer成功打开文件时使用内置文本编辑器打开文件。默认为true。

return 文件成功是否成功打开

如果存在优先使用的FileServerID且该FileServer成功打开文件,则会优先使用该FileServer。 否则首先回退到特别关注强度决定的优先级列表(除非为改扩展名禁用了该功能),然后回退到注册顺序决定的优先级列表。 如果以上操作全部失败,或者根本不存在支持该文件类型的FileServer,则会根据useFallback参数决定是否使用内置文本编辑器打开文件。

Warning: 值得指出的是,为了统一下游的使用体验,FileServerManager在尝试使用FileServer打开文件时会将文件路径转换为绝对路径, 并且不区分路径的大小写(如果操作系统不区分大小写)。如果FileServer有必要对文件路径进行处理,请严格使用QFileQFileInfoQDir等文件系统相关类对输入的路径字符串进行处理,而不是直接对字符串进行操作,以避免字面值发生变化导致逻辑错误。

如果filePath为虚拟文件路径,则只匹配支持该虚拟文件的FileServer,不考虑 preferredServerId 、特别关注强度、优先级列表、 useFallback 等因素。

这个function 从 Visindgo 0.13.0 开始支持。

[since Visindgo 0.13.0] void FileServerManager::registerFileServer(YSSCore::Editor::FileServer *server)

注册一个FileServer对象。 server 要注册的FileServer对象指针。 如果同一个FileServer对象被重复注册,则不会有任何效果。

对于普通的FileServer对象,由于同一个文件扩展名可能有多个FileServer支持, 因此文件扩展名可以在多个FileServer之间重复。

而对于作为虚拟文件服务器的FileServer,由于虚拟文件里的扩展名语义是作为ID 使用的,因此对于一个虚拟文件扩展名,只能有一个FileServer支持, 如果有多个FileServer支持同一个虚拟文件扩展名,则只有第一个被注册的FileServer会生效, 后续的注册会被忽略,并且会在日志中输出警告信息。

这个function 从 Visindgo 0.13.0 开始支持。

[since YSS 0.13.0] void FileServerManager::setEspeciallyFocusEnable(const QString &fileExt, bool enable)

启用或禁用某种文件类型的特别关注强度功能。 fileExt 文件类型后缀名(不含点号)。 enable 是否启用特别关注强度功能。默认为true。

这个function 从 YSS 0.13.0 开始支持。

另请参阅 isEspeciallyFocusEnable().

[since YSS 0.13.0] void FileServerManager::setPriorityForFileExt(const QString &fileExt, const QStringList &serverIds)

为某种文件类型设置FileServer优先级。 fileExt 文件类型后缀名(不含点号)。 serverIds 按优先级顺序排列的FileServer ID列表。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void FileServerManager::unregisterFileServer(YSSCore::Editor::FileServer *server)

注销一个已经注册的FileServer对象。 server 要注销的FileServer对象指针。 如果传入的FileServer对象没有被注册,则不会有任何效果。

这个function 从 YSS 0.13.0 开始支持。