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

YSSCore::General::YSSProject Class

class YSSCore::General::YSSProject

这个类代表YSS项目数据. 详情...

头文件: #include <YSSProject>
自以下版本: YSS 0.13.0

公开类型

(自 YSS 0.13.0 引入) enum LoadProjectResult { Unknown, Success, ParseError, InvalidConfig }

公开成员函数

(自 YSS 0.13.0 引入) YSSProject()
(自 YSS 0.13.0 引入) virtual ~YSSProject()
(自 YSS 0.17.0 引入) void addEditorOpenedFile(const QString &filePath, const QString &areaID = "")
void createFileBackup(const QString &inProjRelativePth)
QStringList getAllFileBackups()
(自 YSS 0.13.0 引入) QStringList getEditorOpenedFiles()
(自 YSS 0.17.0 引入) QMap<QString, QStringList> getEditorOpenedFilesInArea()
(自 YSS 0.17.0 引入) QString getFileAreaID(const QString &abs_filePath)
QByteArray getFileBackupContent(const QString &inProjRelativePth, const QDateTime &backupTime)
QList<QDateTime> getFileBackupList(const QString &inProjRelativePth)
qint32 getFileBackupMaxCount()
(自 YSS 0.13.0 引入) QString getFocusedFile()
(自 YSS 0.13.0 引入) QString getFocusedFileName()
(自 YSS 0.13.0 引入) QString getProjectAuthor()
(自 YSS 0.13.0 引入) Visindigo::Utility::JsonConfig getProjectConfigForPlugin(Visindigo::General::Plugin *plugin)
(自 YSS 0.13.0 引入) Visindigo::Utility::JsonConfig getProjectConfigForPlugin(const QString &pluginID)
(自 YSS 0.13.0 引入) QString getProjectConfigPath()
(自 YSS 0.13.0 引入) QDateTime getProjectCreateTime()
(自 YSS 0.13.0 引入) QString getProjectDebugServerID()
(自 YSS 0.13.0 引入) QString getProjectDescription()
(自 YSS 0.13.0 引入) QString getProjectFolder()
(自 YSS 0.13.0 引入) QString getProjectIconPath()
(自 YSS 0.13.0 引入) QDateTime getProjectLastModifyTime()
(自 YSS 0.13.0 引入) QString getProjectName()
(自 YSS 0.13.0 引入) QString getProjectPath()
(自 YSS 0.13.0 引入) Visindigo::General::Version getProjectVersion()
(自 YSS 0.17.0 引入) Visindigo::Utility::JsonConfig getTreeLayoutConfig()
(自 YSS 0.17.0 引入) bool hasTreeLayoutConfig()
(自 YSS 0.13.0 引入) bool initProject(const QString &folder, const QString &name)
(自 YSS 0.13.0 引入) YSSCore::General::YSSProject::LoadProjectResult loadProject(const QString &configPath)
(自 YSS 0.17.0 引入) void moveEditorOpenedFile(const QString &filePath, const QString &fromID, const QString &toID)
(自 YSS 0.13.0 引入) void refreshLastModifyTime()
(自 YSS 0.13.0 引入) void removeAllEditorOpenedFiles()
void removeAllFileBackup()
(自 YSS 0.13.0 引入) void removeEditorOpenedFile(const QString &filePath)
(自 YSS 0.17.0 引入) void removeEditorOpenedFilesInArea(const QString &areaID)
void removeFileBackup(const QString &inProjRelativePth)
void removeFileBackup(const QString &inProjRelativePth, const QDateTime &backupTime)
bool restoreFileBackup(const QString &inProjRelativePth, const QDateTime &backupTime, const QString &restoreToPath = "", bool overwrite = false)
(自 YSS 0.13.0 引入) bool saveProject(const QString &configPath = "")
(自 YSS 0.13.0 引入) void saveProjectConfigForPlugin(Visindigo::General::Plugin *plugin, const Visindigo::Utility::JsonConfig &config)
(自 YSS 0.13.0 引入) void saveProjectConfigForPlugin(const QString &pluginID, const Visindigo::Utility::JsonConfig &config)
(自 YSS 0.13.0 引入) void setEditorOpenedFiles(const QStringList &filePaths)
(自 YSS 0.17.0 引入) void setEditorOpenedFilesInArea(const QMap<QString, QStringList> &filePathsInArea)
void setFileBackupMaxCount(qint32 count)
(自 YSS 0.13.0 引入) void setFocusedFile(const QString &abs_filePath)
(自 YSS 0.13.0 引入) void setProjectAuthor(const QString &author)
(自 YSS 0.13.0 引入) void setProjectDebugServerID(const QString &id)
(自 YSS 0.13.0 引入) void setProjectDescription(const QString &description)
(自 YSS 0.13.0 引入) void setProjectIconPath(const QString &iconPath)
(自 YSS 0.13.0 引入) void setProjectName(const QString &name)
(自 YSS 0.17.0 引入) void setTreeLayoutConfig(const Visindigo::Utility::JsonConfig &config)

静态公开成员

(自 YSS 0.13.0 引入) YSSCore::General::YSSProject *getCurrentProject()
(自 YSS 0.13.0 引入) void setCurrentProject(YSSCore::General::YSSProject *project)

详细说明

YSSProject类代表YSS项目数据。值得注意的是,这个类目前是个非QObject类, 它是作为project.yssp文件的API操作以及读写使用,只负责数据操作, 不负责在程序中充当一个关于项目各项内容更改时的数据集散中心。

譬如,如果调用此类的setFocusedFile函数,它只会修改对应yssp文件中记录的数据, 不会真的使YSS编辑器变更当前打开的文件。这个需求需要用户调用FileServerManager 的changeFocusedFile信号进行。稍后,YSS会根据是否实际变更了打开的文件来读写YSSP。

YSSProject不是单例类,你可以根据需要在程序各个地方创建 任意多的YSSProject示例,但YSSProject语义上只允许一个YSSProject作为 “当前项目”,你可以通过getCurrentProjectsetCurrentProject读写它。当前项目 可以为nullptr,代表当前没有打开任何项目。

要从本类直接初始化一个YSS项目,请参见initProject函数的说明。

成员类型文档

[since YSS 0.13.0] enum YSSProject::LoadProjectResult

ConstantValueDescription
YSSCore::General::YSSProject::Unknown0未知的加载结果
YSSCore::General::YSSProject::Success1加载成功
YSSCore::General::YSSProject::ParseError2项目的JSON格式有误
YSSCore::General::YSSProject::InvalidConfig3项目的JSON格式无误,但配置无效

这个enum 从 YSS 0.13.0 开始支持。

成员函数文档

[since YSS 0.13.0] YSSProject::YSSProject()

构造函数,创建一个空的项目

这个function 从 YSS 0.13.0 开始支持。

[virtual noexcept, since YSS 0.13.0] YSSProject::~YSSProject()

析构函数

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] void YSSProject::addEditorOpenedFile(const QString &filePath, const QString &areaID = "")

filePath 编辑器打开的文件路径,绝对路径或相对于项目文件夹的相对路径均可。 areaID 编辑器打开文件所在的区域ID,默认为空字符串。

向项目中添加一个编辑器打开的文件路径。如果这个路径最终落在项目文件夹内,则 转换为相对路径存储,否则以绝对路径存储。

这个API和YSSCore::Editor::FileServerManager中的编辑器打开文件列表是分离的。 它只是单纯地修改项目文件中的数据,告诉项目这个文件被打开了,但它并不会真的使编辑器打开这个文件。

Note: 在0.17.0支持多窗口之前,没有areaID参数。自0.17.0起,编辑器可能有多个窗口,每个窗口都有自己的打开文件列表。 为了兼容考虑,如果areaID为空或"0",则表示默认的主窗口,且继续保存在Editor.OpenedFiles节点下,如果areaID不为空且不为"0", 则表示其他窗口,保存到Editor.OpenedFilesExtra.<areaID>节点下。

这个function 从 YSS 0.17.0 开始支持。

void YSSProject::createFileBackup(const QString &inProjRelativePth)

为项目内相对路径 inProjRelativePth 指向的文件创建一份备份。 文件内容从磁盘按原路径读取,存入备份虚拟存储中。

QStringList YSSProject::getAllFileBackups()

return 所有已备份文件的原始项目内相对路径列表。

[static, since YSS 0.13.0] YSSCore::General::YSSProject *YSSProject::getCurrentProject()

return 当前项目的实例指针。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QStringList YSSProject::getEditorOpenedFiles()

return 项目中编辑器当前打开的文件路径列表。对于真实文件路径,永远返回绝对路径;对于虚拟文件路径,返回原始的虚拟文件路径。

这个函数不区分区域,它会自动检索所有区域的打开文件列表,返回所有文件路径。

如果需要区分区域的版本,请使用getEditorOpenedFilesInArea函数。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] QMap<QString, QStringList> YSSProject::getEditorOpenedFilesInArea()

return 项目中编辑器当前打开的文件路径列表,按区域区分。对于真实文件路径,永远返回绝对路径;对于虚拟文件路径,返回原始的虚拟文件路径。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.17.0] QString YSSProject::getFileAreaID(const QString &abs_filePath)

abs_filePath 文件的绝对路径。

return 指定文件所在的区域ID,如果文件不在任何区域中打开,则返回空字符串。

这个function 从 YSS 0.17.0 开始支持。

QByteArray YSSProject::getFileBackupContent(const QString &inProjRelativePth, const QDateTime &backupTime)

获取 inProjRelativePthbackupTime 时的备份内容。

QList<QDateTime> YSSProject::getFileBackupList(const QString &inProjRelativePth)

返回 inProjRelativePth 的所有备份时间列表。

qint32 YSSProject::getFileBackupMaxCount()

return 当前设置的每文件最大备份数量。

[since YSS 0.13.0] QString YSSProject::getFocusedFile()

return 项目中编辑器当前聚焦的文件路径。对于真实文件路径,永远返回绝对路径;对于虚拟文件路径,返回原始的虚拟文件路径。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getFocusedFileName()

return 项目中编辑器当前聚焦的文件的文件名(不带路径)。对于虚拟文件路径,返回虚拟文件路径的名称部分。对于真实文件路径,返回真实文件的文件名。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectAuthor()

return 项目作者设置。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] Visindigo::Utility::JsonConfig YSSProject::getProjectConfigForPlugin(Visindigo::General::Plugin *plugin)

return 项目中为指定插件 plugin 保存的配置数据。

请注意,获取配置数据并修改后,需要通过saveProjectConfigForPlugin重新设置到项目里。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] Visindigo::Utility::JsonConfig YSSProject::getProjectConfigForPlugin(const QString &pluginID)

return 项目中为指定插件 pluginID 保存的配置数据。这个重载是按插件ID而非指针索引的。

请注意,获取配置数据并修改后,需要通过saveProjectConfigForPlugin重新设置到项目里。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectConfigPath()

return 当前项目的配置文件路径。 如果项目加载时是有效的,那这个返回值就等同于设置值。 即,它是绝对路径还是相对路径取决于设置时的原样。

Warning: 这个函数从0.17开始弃用,因为功能与getProjectPath()重复。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QDateTime YSSProject::getProjectCreateTime()

return 项目创建时间

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectDebugServerID()

return 项目设置的调试服务器ID。

由于YSS项目目前假定只面向那些编码项目,而编码项目 或多或少需要调试功能,因此提供了这个API。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectDescription()

获得项目描述

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectFolder()

return 当前项目的文件夹路径。

getProjectPath有所不同的是,这个函数固定按 绝对路径返回。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectIconPath()

return 当前项目的图标路径。

这个图标路径忠实返回项目文件设置的值,不管他 是否真的有效,以及是什么格式的路径。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QDateTime YSSProject::getProjectLastModifyTime()

return 项目上次修改时间

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectName()

获得项目名称

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString YSSProject::getProjectPath()

return 当前项目的配置文件路径。

如果项目加载时是有效的,那这个返回值就等同于设置值。 即,它是绝对路径还是相对路径取决于设置时的原样。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] Visindigo::General::Version YSSProject::getProjectVersion()

return 项目的版本号。从initProject初始化时,默认初始化为0.1.

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] Visindigo::Utility::JsonConfig YSSProject::getTreeLayoutConfig()

return 项目中为树形布局保存的配置数据。这个配置数据是一个JsonConfig对象,包含了树形布局的相关设置。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.17.0] bool YSSProject::hasTreeLayoutConfig()

return 项目中是否有树形布局的配置数据。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.13.0] bool YSSProject::initProject(const QString &folder, const QString &name)

folder 指定的文件夹初始化项目,名称为 name

如果 folder 不存在,那么会自动创建沿途所有不存在的文件夹。

如果 folder 不为空,会创建失败。

只要可以创建,这函数执行之后,configPath就被自动设置为指定的位置。

如果要通过YSSProject初始化YSS项目,一般推荐首先调用此函数以建立项目文件夹, 稍后再进行其他初始化操作。

return 是否成功初始化项目

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] YSSCore::General::YSSProject::LoadProjectResult YSSProject::loadProject(const QString &configPath)

configPath 加载YSS项目

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] void YSSProject::moveEditorOpenedFile(const QString &filePath, const QString &fromID, const QString &toID)

filePath 编辑器打开的文件路径,绝对路径或相对于项目文件夹的相对路径均可。 fromID 编辑器打开文件所在的原区域ID,默认为空字符串。 toID 编辑器打开文件所在的新区域ID,默认为空字符串。

将项目中一个编辑器打开的文件路径从一个区域移动到另一个区域。如果fromID中没有此文件路径,则不会移动。 如果fromID和toID相同,不做任何操作。

这个function 从 YSS 0.17.0 开始支持。

[since YSS 0.13.0] void YSSProject::refreshLastModifyTime()

刷新项目的最后修改时间。它被直接刷新为调用此函数的时间。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::removeAllEditorOpenedFiles()

从项目中移除所有编辑器打开的文件路径。 这个API和YSSCore::Editor::FileServerManager中的编辑器打开文件列表是分离的。 它只是单纯地修改项目文件中的数据,告诉项目没有文件被打开了,但它并不会真的使编辑器关闭所有文件。

这个function 从 YSS 0.13.0 开始支持。

void YSSProject::removeAllFileBackup()

删除项目中所有文件的全部备份。 直接销毁数据库文件并重建空库,避免逐条 SQL DELETE 的开销。

[since YSS 0.13.0] void YSSProject::removeEditorOpenedFile(const QString &filePath)

filePath 编辑器打开的文件路径,绝对路径或相对于项目文件夹的相对路径均可。

移除项目中一个编辑器打开的文件路径。

这个API和YSSCore::Editor::FileServerManager中的编辑器打开文件列表是分离的。 它只是单纯地修改项目文件中的数据,告诉项目这个文件被关闭了,但它并不会真的使编辑器关闭这个文件。

这个函数不区分区域,它会自动检索所有区域的打开文件列表,找到匹配的文件路径后移除。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] void YSSProject::removeEditorOpenedFilesInArea(const QString &areaID)

areaID 编辑器打开文件所在的区域ID,默认为空字符串。

从项目中移除指定区域的所有编辑器打开的文件路径。

这个function 从 YSS 0.17.0 开始支持。

void YSSProject::removeFileBackup(const QString &inProjRelativePth)

删除 inProjRelativePth 的所有备份。

void YSSProject::removeFileBackup(const QString &inProjRelativePth, const QDateTime &backupTime)

删除 inProjRelativePthbackupTime 的单份备份。

bool YSSProject::restoreFileBackup(const QString &inProjRelativePth, const QDateTime &backupTime, const QString &restoreToPath = "", bool overwrite = false)

inProjRelativePthbackupTime 的备份还原到磁盘。 若 restoreToPath 非空,则还原到指定路径; 若 overwrite 为 false 且目标已存在,则不覆盖返回 false。

return 还原成功返回 true;目标已存在且不覆盖时返回 false。

[since YSS 0.13.0] bool YSSProject::saveProject(const QString &configPath = "")

保存项目。 configPath 默认为空,代表在加载位置原地保存。如果configPath 为其他值,就相当于另存为。 return 是否保存成功

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::saveProjectConfigForPlugin(Visindigo::General::Plugin *plugin, const Visindigo::Utility::JsonConfig &config)

为指定插件 plugin 保存具有 config 的数据。

它被存储在YSSP文件的MetaData节点下。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::saveProjectConfigForPlugin(const QString &pluginID, const Visindigo::Utility::JsonConfig &config)

为指定插件 pluginID 保存具有 config 的数据。这个重载是按插件ID而非指针索引的。

它被存储在YSSP文件的MetaData节点下。

这个function 从 YSS 0.13.0 开始支持。

[static, since YSS 0.13.0] void YSSProject::setCurrentProject(YSSCore::General::YSSProject *project)

设置当前项目实例为 project

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::setEditorOpenedFiles(const QStringList &filePaths)

filePaths 编辑器打开的文件路径列表,绝对路径或相对于项目文件夹的相对路径均可。

有关其中每个文件路径的说明,请参见addEditorOpenedFile函数。

这个API和YSSCore::Editor::FileServerManager中的编辑器打开文件列表是分离的。 它只是单纯地修改项目文件中的数据,告诉项目这些文件被打开了,但它并不会真的使编辑器打开这些文件。

这个函数将把所有文件都添加到默认区域。这个函数没有区分区域的能力。若要区分区域,请用setEditorOpenedFilesInArea函数。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] void YSSProject::setEditorOpenedFilesInArea(const QMap<QString, QStringList> &filePathsInArea)

filePathsInArea 编辑器打开的文件路径列表,按区域区分。绝对路径或相对于项目文件夹的相对路径均可。

有关其中每个文件路径的说明,请参见addEditorOpenedFile函数。

这个API和YSSCore::Editor::FileServerManager中的编辑器打开文件列表是分离的。 它只是单纯地修改项目文件中的数据,告诉项目这些文件被打开了,但它并不会真的使编辑器打开这些文件。

这个function 从 YSS 0.17.0 开始支持。

void YSSProject::setFileBackupMaxCount(qint32 count)

设置每个文件保留的最大备份数量。超过上限时,最旧的备份会被自动清理。

count 保留的最大备份数量。

[since YSS 0.13.0] void YSSProject::setFocusedFile(const QString &abs_filePath)

abs_filePath 编辑器聚焦的文件路径,绝对路径或相对于项目文件夹的相对路径均可。

设置项目中编辑器当前聚焦的文件路径。

这个API和YSSCore::Editor::FileServerManager::focusFile信号无关 它只是单纯地修改项目文件中的数据,告诉项目这个文件被聚焦了,但它并不会真的使编辑器聚焦这个文件。

如果你希望YSS更改聚焦的文件,应该使用上面提到的这个信号。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::setProjectAuthor(const QString &author)

设置项目作者为 author

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::setProjectDebugServerID(const QString &id)

设置项目的调试服务器ID为 id

由于YSS项目目前假定只面向那些编码项目,而编码项目 或多或少需要调试功能,因此提供了这个API。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::setProjectDescription(const QString &description)

设置项目描述为 description

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::setProjectIconPath(const QString &iconPath)

设置项目图标路径为 iconPath

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void YSSProject::setProjectName(const QString &name)

设置项目名称为 name

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.17.0] void YSSProject::setTreeLayoutConfig(const Visindigo::Utility::JsonConfig &config)

为树形布局设置配置数据。这个配置数据是一个JsonConfig对象,包含了树形布局的相关设置。

config 树形布局配置数据。

这个function 从 YSS 0.17.0 开始支持。

另请参阅 hasTreeLayoutConfig().