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作为 “当前项目”,你可以通过getCurrentProject和setCurrentProject读写它。当前项目 可以为nullptr,代表当前没有打开任何项目。
要从本类直接初始化一个YSS项目,请参见initProject函数的说明。
成员类型文档
[since YSS 0.13.0] enum YSSProject::LoadProjectResult
| Constant | Value | Description |
|---|---|---|
YSSCore::General::YSSProject::Unknown | 0 | 未知的加载结果 |
YSSCore::General::YSSProject::Success | 1 | 加载成功 |
YSSCore::General::YSSProject::ParseError | 2 | 项目的JSON格式有误 |
YSSCore::General::YSSProject::InvalidConfig | 3 | 项目的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)
获取 inProjRelativePth 在 backupTime 时的备份内容。
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)
删除 inProjRelativePth 在 backupTime 的单份备份。
bool YSSProject::restoreFileBackup(const QString &inProjRelativePth, const QDateTime &backupTime, const QString &restoreToPath = "", bool overwrite = false)
将 inProjRelativePth 在 backupTime 的备份还原到磁盘。 若 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().