forked from qt-creator/qt-creator
CMakePM: Display presets as part of the project outline
Fixes: QTCREATORBUG-28966 Change-Id: Iae0f77956bf6f4682ea8a25e08d05de3331c7420 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -3,9 +3,11 @@
|
||||
|
||||
#include "projecttreehelper.h"
|
||||
|
||||
#include "cmakeproject.h"
|
||||
#include "cmakeprojectmanagertr.h"
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/projectmanager.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/fsengine/fileiconprovider.h>
|
||||
@@ -88,6 +90,34 @@ void addCMakeInputs(FolderNode *root,
|
||||
root->addNode(std::move(cmakeVFolder));
|
||||
}
|
||||
|
||||
void addCMakePresets(FolderNode *root, const Utils::FilePath &sourceDir)
|
||||
{
|
||||
QStringList presetFileNames;
|
||||
presetFileNames << "CMakePresets.json";
|
||||
presetFileNames << "CMakeUserPresets.json";
|
||||
|
||||
const CMakeProject *cp = static_cast<const CMakeProject *>(
|
||||
ProjectManager::projectForFile(sourceDir.pathAppended("CMakeLists.txt")));
|
||||
|
||||
if (cp && cp->presetsData().include)
|
||||
presetFileNames.append(cp->presetsData().include.value());
|
||||
|
||||
std::vector<std::unique_ptr<FileNode>> presets;
|
||||
for (const auto &fileName : presetFileNames) {
|
||||
Utils::FilePath file = sourceDir.pathAppended(fileName);
|
||||
if (file.exists())
|
||||
presets.push_back(std::make_unique<FileNode>(file, Node::fileTypeForFileName(file)));
|
||||
}
|
||||
|
||||
if (presets.empty())
|
||||
return;
|
||||
|
||||
std::unique_ptr<ProjectNode> cmakeVFolder = std::make_unique<CMakePresetsNode>(root->filePath());
|
||||
addCMakeVFolder(cmakeVFolder.get(), sourceDir, 1000, QString(), std::move(presets));
|
||||
|
||||
root->addNode(std::move(cmakeVFolder));
|
||||
}
|
||||
|
||||
QHash<Utils::FilePath, ProjectNode *> addCMakeLists(
|
||||
CMakeProjectNode *root, std::vector<std::unique_ptr<FileNode>> &&cmakeLists)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user