YSSCore::Editor::VirtualFilePath Class
class YSSCore::Editor::VirtualFilePath表示一个虚拟文件路径,提供解析和构造虚拟文件路径的能力. 详情...
| 头文件: | #include <VirtualFilePath> |
| 自以下版本: | YSS 0.16.0 |
- 所有成员列表(包含继承成员)
- VirtualFilePath 是该集合的一部分:文件服务框架.
公开成员函数
(自 YSS 0.16.0 引入) | VirtualFilePath(const QString &path) |
(自 YSS 0.16.0 引入) | VirtualFilePath(const QString &ext, const QString &fileName, const QString ¶m) |
(自 YSS 0.16.0 引入) | VirtualFilePath(const QString &ext, const QString &fileName, const Visindigo::Utility::JsonConfig ¶ms) |
(自 YSS 0.16.0 引入) | ~VirtualFilePath() |
(自 YSS 0.16.0 引入) QString | getExt() const |
(自 YSS 0.16.0 引入) QString | getFileName() const |
(自 YSS 0.16.0 引入) QString | getParam() const |
(自 YSS 0.16.0 引入) QVariant | getParam(const QString &key, bool *ok = nullptr) const |
(自 YSS 0.16.0 引入) Visindigo::Utility::JsonConfig | getParams() const |
(自 YSS 0.16.0 引入) bool | isValid() const |
(自 YSS 0.16.0 引入) void | setExt(const QString &ext) |
(自 YSS 0.16.0 引入) void | setFileName(const QString &fileName) |
(自 YSS 0.16.0 引入) void | setParam(const QString ¶m) |
(自 YSS 0.16.0 引入) void | setParam(const QString &key, const QVariant &value) |
(自 YSS 0.16.0 引入) void | setParams(const Visindigo::Utility::JsonConfig ¶ms) |
(自 YSS 0.16.0 引入) QString | toString() const |
静态公开成员
(自 YSS 0.16.0 引入) bool | isVirtualFilePath(const QString &path) |
详细说明
虚拟文件路径是一种特殊的路径格式,用于在文件编辑区域打开一些并非真实存在的文件进行编辑, 譬如程序设置、插件设置等页面。
路径格式
虚拟文件路径的格式固定为:
@file_ext!file_name?param
其中:
file_ext为虚拟文件扩展名,也作为虚拟文件服务器的ID使用。同一扩展名只能有一个FileServer注册。file_name为显示用的文件名,推荐用于本地化展示。param为可选参数,内部以 Visindigo::Utility::JsonConfig 对象存储,推荐按JSON格式书写。
例如:
@YSS.SettingsWidget!程序设置?{"from":"menubar"}
使用方式
可以使用静态函数 isVirtualFilePath() 来判断任意字符串是否符合虚拟文件路径的格式。
可以通过构造函数从完整的虚拟文件路径字符串解析,也可以通过 ext、fileName、param 三个部分 分别构造。toString() 方法可以将对象转回完整的虚拟文件路径字符串。
参数部分支持两种存取方式:
- 原始字符串存取:通过 setParam() / getParam() 以JSON字符串形式读写
param部分。 - JSON对象存取:通过 setParam(key, value) / getParam(key) / setParams() / getParams() 以JsonConfig对象形式读写参数的键值对。
与FileServer的关系
虚拟文件路径的 file_ext 在 FileServer 中作为虚拟文件服务器的ID使用。 有关虚拟文件服务器的注册和分发机制,请参考 YSSCore::Editor::FileServer 和 YSSCore::Editor::FileServerManager 的相关文档。
成员函数文档
[since YSS 0.16.0] VirtualFilePath::VirtualFilePath(const QString &path)
path 完整的虚拟文件路径字符串。
从完整的虚拟文件路径字符串构造。使用正则表达式 ^@([^!]+)!([^?]+)\\?(.*)$ 解析路径,分别提取 ext、fileName 和 param 部分。param 部分会以JSON格式解析。
如果 path 不符合虚拟文件路径格式,则 ext 和 fileName 均为空字符串, 此时 isValid() 返回false。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] VirtualFilePath::VirtualFilePath(const QString &ext, const QString &fileName, const QString ¶m)
ext 虚拟文件扩展名(同时也是虚拟文件服务器ID)。 fileName 显示用的文件名。 param JSON格式的参数字符串。
从各个部分构造虚拟文件路径。param 字符串会以JSON格式解析到内部JsonConfig对象中。 如果 ext 或 fileName 为空,构造出的对象 isValid() 将返回false。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] VirtualFilePath::VirtualFilePath(const QString &ext, const QString &fileName, const Visindigo::Utility::JsonConfig ¶ms)
ext 虚拟文件扩展名(同时也是虚拟文件服务器ID)。 fileName 显示用的文件名。 params JSON格式的参数对象。
从各个部分构造虚拟文件路径。参数以JsonConfig对象形式直接存储。
这个function 从 YSS 0.16.0 开始支持。
[noexcept, since YSS 0.16.0] VirtualFilePath::~VirtualFilePath()
析构VirtualFilePath对象。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] QString VirtualFilePath::getExt() const
return 当前虚拟文件扩展名。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] QString VirtualFilePath::getFileName() const
return 当前显示文件名。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] QString VirtualFilePath::getParam() const
return 以紧凑JSON字符串表示的当前参数。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] QVariant VirtualFilePath::getParam(const QString &key, bool *ok = nullptr) const
key 参数的键名。 ok 可选的输出参数,指示是否成功获取。 return 参数键对应的QVariant值。
以JSON方式获取单个参数键值。如果参数不存在,则把 ok 设为 false, 并返回空的QVariant。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] Visindigo::Utility::JsonConfig VirtualFilePath::getParams() const
return 以JsonConfig对象表示的当前全部参数。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] bool VirtualFilePath::isValid() const
return 当前对象是否表示一个有效的虚拟文件路径。
只有当 ext 和 fileName 均非空时,才返回true。
这个function 从 YSS 0.16.0 开始支持。
[static, since YSS 0.16.0] bool VirtualFilePath::isVirtualFilePath(const QString &path)
path 待检测的路径字符串。 return 如果 path 符合虚拟文件路径格式 @ext!fileName?param,返回true;否则返回false。
此函数使用正则表达式 ^@([^!]+)!([^?]+)\\?(.*)$ 进行匹配。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] void VirtualFilePath::setExt(const QString &ext)
ext 新的虚拟文件扩展名。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] void VirtualFilePath::setFileName(const QString &fileName)
fileName 新的显示文件名。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] void VirtualFilePath::setParam(const QString ¶m)
param JSON格式的参数字符串。
将参数字符串以JSON格式解析并替换当前参数。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] void VirtualFilePath::setParam(const QString &key, const QVariant &value)
key 参数的键名。 value 参数的键值。
以JSON方式设置单个参数键值对。会修改现有参数(如果存在)或添加新参数。
直接操作内部的JsonConfig对象。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] void VirtualFilePath::setParams(const Visindigo::Utility::JsonConfig ¶ms)
params 要设置的完整参数JSON对象。
以JsonConfig对象设置全部参数,会覆盖现有参数。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] QString VirtualFilePath::toString() const
return 完整的虚拟文件路径字符串,格式为 @ext!fileName?param。 其中param部分以紧凑JSON格式序列化。
这个function 从 YSS 0.16.0 开始支持。