跳到正文
Yayin Story Studio Yayin Story Studio 项目文档

YSSCore::Editor::VirtualFilePath Class

class YSSCore::Editor::VirtualFilePath

表示一个虚拟文件路径,提供解析和构造虚拟文件路径的能力. 详情...

头文件: #include <VirtualFilePath>
自以下版本: YSS 0.16.0

公开成员函数

(自 YSS 0.16.0 引入) VirtualFilePath(const QString &path)
(自 YSS 0.16.0 引入) VirtualFilePath(const QString &ext, const QString &fileName, const QString &param)
(自 YSS 0.16.0 引入) VirtualFilePath(const QString &ext, const QString &fileName, const Visindigo::Utility::JsonConfig &params)
(自 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 &param)
(自 YSS 0.16.0 引入) void setParam(const QString &key, const QVariant &value)
(自 YSS 0.16.0 引入) void setParams(const Visindigo::Utility::JsonConfig &params)
(自 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() 方法可以将对象转回完整的虚拟文件路径字符串。

参数部分支持两种存取方式:

与FileServer的关系

虚拟文件路径的 file_extFileServer 中作为虚拟文件服务器的ID使用。 有关虚拟文件服务器的注册和分发机制,请参考 YSSCore::Editor::FileServerYSSCore::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 &param)

ext 虚拟文件扩展名(同时也是虚拟文件服务器ID)。 fileName 显示用的文件名。 param JSON格式的参数字符串。

从各个部分构造虚拟文件路径。param 字符串会以JSON格式解析到内部JsonConfig对象中。 如果 extfileName 为空,构造出的对象 isValid() 将返回false。

这个function 从 YSS 0.16.0 开始支持。

[since YSS 0.16.0] VirtualFilePath::VirtualFilePath(const QString &ext, const QString &fileName, const Visindigo::Utility::JsonConfig &params)

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 &param)

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 &params)

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 开始支持。