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要求 连接了此信号的前台在聚焦时,应使用 lineNumber 和 column 调用响应的 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有必要对文件路径进行处理,请严格使用QFile、QFileInfo、 QDir等文件系统相关类对输入的路径字符串进行处理,而不是直接对字符串进行操作,以避免字面值发生变化导致逻辑错误。
如果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 开始支持。