跳到正文
Yayin Story Studio 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.17.0 引入) QList<YSSCore::Editor::FileServer *> getAsToolFileServers() const
(自 YSS 0.16.0 引入) YSSCore::Editor::FileEditWidget *getFileEditWidget(const QFileInfo &fileInfo)
(自 YSS 0.15.0 引入) YSSCore::Editor::FileEditWidget *getFileEditWidget(const QString &filePath)
(自 YSS 0.17.0 引入) YSSCore::Editor::FileServer *getFileEditWidgetSourceServer(YSSCore::Editor::FileEditWidget *few) const
(自 YSS 0.17.0 引入) YSSCore::Editor::FileServer *getFileEditWidgetSourceServer(const QFileInfo &fileInfo) const
(自 YSS 0.17.0 引入) YSSCore::Editor::FileServer *getFileEditWidgetSourceServer(const QString &filePath) const
(自 YSS 0.17.0 引入) YSSCore::Editor::FileServer *getFileServerById(const QString &serverId) const
(自 YSS 0.17.0 引入) QList<YSSCore::Editor::FileServer *> getFileServersForFileExt(const QString &fileExt) const
(自 YSS 0.13.0 引入) QString getNameOfFileServer(const QString &serverId)
(自 YSS 0.17.0 引入) QList<YSSCore::Editor::FileServer *> getRegisteredFileServers() const
(自 YSS 0.13.0 引入) QStringList getSupportedFileExts()
(自 YSS 0.17.0 引入) QStringList getSupportedVirtualFileExts() const
(自 YSS 0.17.0 引入) QList<YSSCore::Editor::FileServer *> getVirtualFileServers() const
(自 YSS 0.13.0 引入) bool isEspeciallyFocusEnable(const QString &fileExt)
(自 YSS 0.16.0 引入) bool openFile(const QFileInfo &fileInfo, const QString &preferredServerId = QString(), bool useFallback = true)
(自 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.17.0] QList<YSSCore::Editor::FileServer *> FileServerManager::getAsToolFileServers() const

return 全部已经注册的文件服务器中,标记为“作为工具列出”的服务器。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.16.0] YSSCore::Editor::FileEditWidget *FileServerManager::getFileEditWidget(const QFileInfo &fileInfo)

return 指定文件信息对应的文件编辑窗口。 fileInfo 文件信息对象。 return 指定文件对应的文件编辑窗口指针,如果没有找到则返回nullptr。

这是getFileEditWidget的主实现版本。直接接受QFileInfo,以规范化路径进行索引查找。

这个function 从 YSS 0.16.0 开始支持。

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

return 指定文件路径对应的文件编辑窗口。 filePath 文件路径。 return 指定文件路径对应的文件编辑窗口指针,如果没有找到则返回nullptr。

委托到getFileEditWidget(const QFileInfo&)版本。

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.17.0] YSSCore::Editor::FileServer *FileServerManager::getFileEditWidgetSourceServer(YSSCore::Editor::FileEditWidget *few) const

few 文件编辑控件。

return 指定FileEditWidget的源FileServer对象。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.17.0] YSSCore::Editor::FileServer *FileServerManager::getFileEditWidgetSourceServer(const QFileInfo &fileInfo) const

return 指定文件信息对应的FileEditWidget的源FileServer对象。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.17.0] YSSCore::Editor::FileServer *FileServerManager::getFileEditWidgetSourceServer(const QString &filePath) const

return 指定文件路径对应的FileEditWidget的源FileServer对象。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.17.0] YSSCore::Editor::FileServer *FileServerManager::getFileServerById(const QString &serverId) const

serverId 文件服务器ID。

return 指定ID的FileServer对象。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.17.0] QList<YSSCore::Editor::FileServer *> FileServerManager::getFileServersForFileExt(const QString &fileExt) const

return 全部已经注册的文件服务器中,支持指定文件类型的服务器。

fileExt 文件类型后缀名(不含点号)。

请注意,这个返回值不包括对虚拟文件路径中扩展名的搜索。

这个function 从 YSS 0.17.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.17.0] QList<YSSCore::Editor::FileServer *> FileServerManager::getRegisteredFileServers() const

return 全部已经注册的文件服务器。

这个function 从 YSS 0.17.0 开始支持。

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

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

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] QStringList FileServerManager::getSupportedVirtualFileExts() const

return 全部支持的虚拟文件扩展名。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.17.0] QList<YSSCore::Editor::FileServer *> FileServerManager::getVirtualFileServers() const

return 全部已经注册的文件服务器中,支持虚拟文件路径的服务器。

这个function 从 YSS 0.17.0 开始支持。

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

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

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

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.16.0] bool FileServerManager::openFile(const QFileInfo &fileInfo, const QString &preferredServerId = QString(), bool useFallback = true)

打开一个文件。如果有合适的FileServer注册,则使用该FileServer打开文件,否则使用内置的文本编辑器打开文件。

这是openFile的主实现版本。接受QFileInfo对象以避免路径字面值问题。 fileInfo 要打开的文件信息对象。 preferredServerId 优先使用的FileServer ID。 useFallback 是否在没有任何FileServer成功打开文件时使用内置文本编辑器打开文件。默认为true。

return 文件成功是否成功打开

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

Warning: QFileInfo不处理虚拟文件路径。虚拟文件路径的判断和分发在 openFile(const QString&) 版本中完成,使用 YSSCore::Editor::VirtualFilePath 进行解析。

这个function 从 YSS 0.16.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参数决定是否使用内置文本编辑器打开文件。

如果filePath为虚拟文件路径(参见 YSSCore::Editor::VirtualFilePath),则只匹配支持该虚拟文件的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 开始支持。