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要求 连接了此信号的前台在聚焦时,应使用 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.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 开始支持。