Yayin Story Studio logo 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.13.0 引入) void addEditorOpenedFile(const QString &filePath)
(自 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.13.0 引入) bool initProject(const QString &folder, const QString &name)
(自 YSS 0.13.0 引入) YSSCore::General::YSSProject::LoadProjectResult loadProject(const QString &configPath)
(自 YSS 0.13.0 引入) void refreshLastModifyTime()
(自 YSS 0.13.0 引入) void removeAllEditorOpenedFiles()
(自 YSS 0.13.0 引入) void removeEditorOpenedFile(const QString &filePath)
(自 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.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.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.13.0] void YSSProject::addEditorOpenedFile(const QString &filePath)

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

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

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

这个function 从 YSS 0.13.0 开始支持。

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

return 当前项目的实例指针。

这个function 从 YSS 0.13.0 开始支持。

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

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

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

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

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

这个function 从 YSS 0.13.0 开始支持。

[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中的编辑器打开文件列表是分离的。 它只是单纯地修改项目文件中的数据,告诉项目这些文件被打开了,但它并不会真的使编辑器打开这些文件。

这个function 从 YSS 0.13.0 开始支持。

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