src: Project Refactoring

* Added language specific Project and ProjectSettings
* moved project specific code from Application to Project
* made Application a singleton
* added handleDialog method to Application which displays a dialog window and waits for user input
* Added ScopedFunctor that executes a function when deleted
This commit is contained in:
malte_langkabel
2016-08-11 12:17:13 +02:00
parent 6b51c7cfe4
commit c847fba568
63 changed files with 1375 additions and 874 deletions
+2 -2
View File
@@ -21,7 +21,7 @@
#include "qt/window/QtAbout.h"
#include "qt/window/QtLicense.h"
#include "settings/ApplicationSettings.h"
#include "settings/ProjectSettings.h"
#include "Application.h"
#include "utility/file/FileSystem.h"
#include "utility/logging/logging.h"
#include "utility/messaging/type/MessageCodeReference.h"
@@ -420,7 +420,7 @@ void QtMainWindow::openProject(const QString &path)
void QtMainWindow::editProject()
{
QtProjectWizzard* wizzard = createWindow<QtProjectWizzard>();
wizzard->editProject(*ProjectSettings::getInstance().get());
wizzard->editProject(Application::getInstance()->getCurrentProject()->getProjectSettingsFilePath());
}
void QtMainWindow::find()
@@ -18,6 +18,9 @@
#include "qt/window/project_wizzard/QtProjectWizzardContentSourceList.h"
#include "qt/window/project_wizzard/QtProjectWizzardContentSummary.h"
#include "qt/window/project_wizzard/QtProjectWizzardWindow.h"
#include "settings/CxxProjectSettings.h"
#include "settings/JavaProjectSettings.h"
#include "utility/file/FileSystem.h"
#include "utility/messaging/type/MessageDispatchWhenLicenseValid.h"
#include "utility/messaging/type/MessageLoadProject.h"
#include "utility/messaging/type/MessageRefresh.h"
@@ -29,6 +32,8 @@
#include "utility/logging/logging.h"
#include "Application.h"
QtProjectWizzard::QtProjectWizzard(QWidget* parent)
: QtWindowStackElement(parent)
, m_windowStack(this)
@@ -70,13 +75,11 @@ void QtProjectWizzard::hideWindow()
void QtProjectWizzard::newProject()
{
m_settings = ProjectSettings();
QtProjectWizzardWindow* window = createWindowWithContent<QtProjectWizzardContentSelect>();
connect(dynamic_cast<QtProjectWizzardContentSelect*>(window->content()),
SIGNAL(selected(QtProjectWizzardContentSelect::ProjectType)),
this, SLOT(selectedProjectType(QtProjectWizzardContentSelect::ProjectType)));
SIGNAL(selected(LanguageType, QtProjectWizzardContentSelect::ProjectType)),
this, SLOT(selectedProjectType(LanguageType, QtProjectWizzardContentSelect::ProjectType)));
window->setNextEnabled(false);
window->setPreviousEnabled(false);
@@ -86,8 +89,9 @@ void QtProjectWizzard::newProjectFromSolution(const std::string& ideId, const st
{
if (m_parserManager->canParseSolution(ideId))
{
ProjectSettings settings = m_parserManager->getProjectSettings(ideId, visualStudioSolutionPath);
std::shared_ptr<ProjectSettings> settings = m_parserManager->getProjectSettings(ideId, visualStudioSolutionPath);
// this looks rather hacky.. calling the edit project and then setting the title.
editProject(settings);
QWidget* widget = m_windowStack.getTopWindow();
@@ -124,12 +128,16 @@ void QtProjectWizzard::refreshProjectFromSolution(const std::string& ideId, cons
window->content()->save();
}
ProjectSettings settings = m_parserManager->getProjectSettings(ideId, visualStudioSolutionPath);
m_settings.setSourcePaths(settings.getSourcePaths());
m_settings.setHeaderSearchPaths(settings.getHeaderSearchPaths());
m_settings.setVisualStudioSolutionPath(FilePath(visualStudioSolutionPath));
std::shared_ptr<ProjectSettings> settings = m_parserManager->getProjectSettings(ideId, visualStudioSolutionPath);
std::shared_ptr<CxxProjectSettings> otherCxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(settings);
std::shared_ptr<CxxProjectSettings> ownCxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (otherCxxSettings && ownCxxSettings)
{
ownCxxSettings->setSourcePaths(otherCxxSettings->getSourcePaths());
ownCxxSettings->setHeaderSearchPaths(otherCxxSettings->getHeaderSearchPaths());
ownCxxSettings->setVisualStudioSolutionPath(FilePath(visualStudioSolutionPath));
}
if (window)
{
window->content()->load();
@@ -142,7 +150,28 @@ void QtProjectWizzard::refreshProjectFromSolution(const std::string& ideId, cons
}
}
void QtProjectWizzard::editProject(const ProjectSettings& settings)
void QtProjectWizzard::editProject(const FilePath& settingsPath)
{
std::shared_ptr<ProjectSettings> settings;
switch (ProjectSettings::getLanguageOfProject(settingsPath))
{
case LANGUAGE_C:
case LANGUAGE_CPP:
settings = std::make_shared<CxxProjectSettings>(settingsPath);
break;
case LANGUAGE_JAVA:
settings = std::make_shared<JavaProjectSettings>(settingsPath);
break;
}
if (settings)
{
settings->load();
editProject(settings);
}
}
void QtProjectWizzard::editProject(std::shared_ptr<ProjectSettings> settings)
{
m_settings = settings;
m_editing = true;
@@ -167,14 +196,12 @@ void QtProjectWizzard::showPreferences()
{
summary->setIsForm(true);
ProjectSettings* settings = &m_settings;
summary->addContent(new QtProjectWizzardContentPreferences(m_settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPreferences(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(m_settings, window), false, false);
if (QSysInfo::macVersion() != QSysInfo::MV_None)
{
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(m_settings, window), false, false);
}
window->setup();
@@ -196,7 +223,7 @@ QtProjectWizzardWindow* QtProjectWizzard::createWindowWithContent()
connect(window, SIGNAL(previous()), &m_windowStack, SLOT(popWindow()));
connect(window, SIGNAL(canceled()), this, SLOT(cancelWizzard()));
window->setContent(new T(&m_settings, window));
window->setContent(new T(m_settings, window));
window->setup();
m_windowStack.pushWindow(window);
@@ -212,9 +239,7 @@ QtProjectWizzardWindow* QtProjectWizzard::createWindowWithContent<QtProjectWizza
connect(window, SIGNAL(previous()), &m_windowStack, SLOT(popWindow()));
connect(window, SIGNAL(canceled()), this, SLOT(cancelWizzard()));
QtProjectWizzardContentSelect* content = new QtProjectWizzardContentSelect(&m_settings, window, m_parserManager);
QtProjectWizzardContentSelect* content = new QtProjectWizzardContentSelect(m_settings, window, m_parserManager);
window->setContent(content);
window->setup();
@@ -232,7 +257,7 @@ QtProjectWizzardWindow* QtProjectWizzard::createWindowWithSummary(
connect(window, SIGNAL(previous()), &m_windowStack, SLOT(popWindow()));
connect(window, SIGNAL(canceled()), this, SLOT(cancelWizzard()));
QtProjectWizzardContentSummary* summary = new QtProjectWizzardContentSummary(&m_settings, window);
QtProjectWizzardContentSummary* summary = new QtProjectWizzardContentSummary(m_settings, window);
window->setContent(summary);
func(window, summary);
@@ -248,7 +273,7 @@ QtProjectWizzardWindow* QtProjectWizzard::createPopupWithContent()
QtProjectWizzardWindow* window = new QtProjectWizzardWindow(parentWidget());
window->setShowAsPopup(true);
window->setContent(new T(&m_settings, window));
window->setContent(new T(m_settings, window));
window->setup();
window->move(window->pos() + QPoint(50, 50));
@@ -266,13 +291,6 @@ QtProjectWizzardWindow* QtProjectWizzard::createPopupWithContent()
return window;
}
ProjectSettings QtProjectWizzard::getSettingsForCompilationDatabase(const std::string& compilationDatabasePath) const
{
ProjectSettings settings;
settings.setCompilationDatabasePath(FilePath(compilationDatabasePath));
return settings;
}
void QtProjectWizzard::connectShowFiles(QtProjectWizzardContent* content)
{
connect(content, SIGNAL(filesButtonClicked(QtProjectWizzardContent*)),
@@ -311,11 +329,13 @@ void QtProjectWizzard::popupClosed()
}
}
void QtProjectWizzard::selectedProjectType(QtProjectWizzardContentSelect::ProjectType type)
void QtProjectWizzard::selectedProjectType(LanguageType languageType, QtProjectWizzardContentSelect::ProjectType type)
{
switch (type)
{
case QtProjectWizzardContentSelect::PROJECT_EMPTY:
m_settings = std::make_shared<CxxProjectSettings>();
m_settings->setLanguage(languageType);
emptyProject();
break;
@@ -346,6 +366,8 @@ void QtProjectWizzard::selectedProjectType(QtProjectWizzardContentSelect::Projec
}
case QtProjectWizzardContentSelect::PROJECT_CDB:
m_settings = std::make_shared<CxxProjectSettings>();
m_settings->setLanguage(languageType);
emptyProjectCDB();
break;
}
@@ -362,13 +384,12 @@ void QtProjectWizzard::sourcePaths()
QtProjectWizzardWindow* window = createWindowWithSummary(
[this](QtProjectWizzardWindow* window, QtProjectWizzardContentSummary* summary)
{
ProjectSettings* settings = &m_settings;
QtProjectWizzardContent* source = new QtProjectWizzardContentPathsSource(settings, window);
QtProjectWizzardContent* source = new QtProjectWizzardContentPathsSource(m_settings, window);
summary->addContent(source, false, false);
connectShowFiles(source);
summary->addContent(new QtProjectWizzardContentExtensions(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentExtensions(m_settings, window), false, false);
window->setup();
}
@@ -382,11 +403,9 @@ void QtProjectWizzard::headerSearchPaths()
QtProjectWizzardWindow* window = createWindowWithSummary(
[this](QtProjectWizzardWindow* window, QtProjectWizzardContentSummary* summary)
{
ProjectSettings* settings = &m_settings;
summary->addContent(new QtProjectWizzardContentPathsHeaderSearch(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentSimple(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(settings, window), false, true);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearch(m_settings, window), false, false);
summary->addContent(new QtProjectWizzardContentSimple(m_settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(m_settings, window), false, true);
window->setup();
}
@@ -412,10 +431,8 @@ void QtProjectWizzard::frameworkSearchPaths()
QtProjectWizzardWindow* window = createWindowWithSummary(
[this](QtProjectWizzardWindow* window, QtProjectWizzardContentSummary* summary)
{
ProjectSettings* settings = &m_settings;
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearch(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearch(m_settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(m_settings, window), false, false);
window->setup();
}
@@ -438,13 +455,11 @@ void QtProjectWizzard::headerPathsCDB()
QtProjectWizzardWindow* window = createWindowWithSummary(
[this](QtProjectWizzardWindow* window, QtProjectWizzardContentSummary* summary)
{
ProjectSettings* settings = &m_settings;
QtProjectWizzardContent* source = new QtProjectWizzardContentCDBSource(settings, window);
QtProjectWizzardContent* source = new QtProjectWizzardContentCDBSource(m_settings, window);
summary->addContent(source, false, false);
connectShowFiles(source);
QtProjectWizzardContent* header = new QtProjectWizzardContentPathsCDBHeader(settings, window);
QtProjectWizzardContent* header = new QtProjectWizzardContentPathsCDBHeader(m_settings, window);
summary->addContent(header, false, false);
window->setup();
@@ -492,13 +507,11 @@ void QtProjectWizzard::showSummary()
{
summary->setIsForm(true);
ProjectSettings* settings = &m_settings;
QtProjectWizzardContentBuildFile* buildFile = new QtProjectWizzardContentBuildFile(settings, window);
QtProjectWizzardContentBuildFile* buildFile = new QtProjectWizzardContentBuildFile(m_settings, window);
if (buildFile->getType() != QtProjectWizzardContentSelect::PROJECT_CDB)
{
summary->addContent(new QtProjectWizzardContentData(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentData(m_settings, window), false, false);
if (buildFile->getType() == QtProjectWizzardContentSelect::PROJECT_MANAGED)
{
@@ -509,39 +522,39 @@ void QtProjectWizzard::showSummary()
this, SLOT(refreshProjectFromSolution(const std::string&, const std::string&)));
}
QtProjectWizzardContentPathsSource* source = new QtProjectWizzardContentPathsSource(settings, window);
QtProjectWizzardContentPathsSource* source = new QtProjectWizzardContentPathsSource(m_settings, window);
summary->addContent(source, false, true);
connectShowFiles(source);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearch(settings, window), false, true);
summary->addContent(new QtProjectWizzardContentSimple(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearch(m_settings, window), false, true);
summary->addContent(new QtProjectWizzardContentSimple(m_settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(m_settings, window), false, false);
if (QSysInfo::macVersion() != QSysInfo::MV_None)
{
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearch(settings, window), false, true);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearch(m_settings, window), false, true);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(m_settings, window), false, false);
}
}
else
{
summary->addContent(new QtProjectWizzardContentDataCDB(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentDataCDB(m_settings, window), false, false);
QtProjectWizzardContent* headers = new QtProjectWizzardContentPathsCDBHeader(settings, window);
QtProjectWizzardContent* headers = new QtProjectWizzardContentPathsCDBHeader(m_settings, window);
summary->addContent(headers, false, true);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearch(settings, window), true, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(settings, window), false, true);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearch(m_settings, window), true, false);
summary->addContent(new QtProjectWizzardContentPathsHeaderSearchGlobal(m_settings, window), false, true);
if (QSysInfo::macVersion() != QSysInfo::MV_None)
{
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearch(settings, window), true, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(settings, window), false, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearch(m_settings, window), true, false);
summary->addContent(new QtProjectWizzardContentPathsFrameworkSearchGlobal(m_settings, window), false, false);
}
}
summary->addContent(new QtProjectWizzardContentFlags(settings, window), true, true);
summary->addContent(new QtProjectWizzardContentPathsExclude(settings, window), true, true);
summary->addContent(new QtProjectWizzardContentFlags(m_settings, window), true, true);
summary->addContent(new QtProjectWizzardContentPathsExclude(m_settings, window), true, true);
window->setup();
@@ -555,23 +568,52 @@ void QtProjectWizzard::showSummary()
void QtProjectWizzard::createProject()
{
FilePath path(m_settings.getProjectFileLocation().str() + "/" + m_settings.getProjectName() + ".coatiproject");
m_settings.save(path);
FilePath path = m_settings->getFilePath();
bool edited = false;
m_settings->save(path);
bool foreceRefreshProject = false;
if (m_editing)
{
bool settingsChanged = !(m_settings == *ProjectSettings::getInstance().get());
std::shared_ptr<Application> application = Application::getInstance();
FilePath oldPath = application->getCurrentProject()->getProjectSettingsFilePath();
if (oldPath.exists() && oldPath != path)
{
std::vector<std::string> options;
options.push_back("Yes");
options.push_back("No");
int result = application->handleDialog(
"You changed the project location. The project file (.coatiproject) and the database file (.coatidb) will "
"be moved to the new location. Do you want to keep a copy of the files in the previous location?"
, options
);
FilePath dbPath = FilePath(path).replaceExtension("coatidb");
FilePath oldDbPath = FilePath(oldPath).replaceExtension("coatidb");
if (result == 0)
{
FileSystem::copyFile(oldDbPath, dbPath);
}
else
{
FileSystem::remove(oldPath);
FileSystem::rename(oldDbPath, dbPath);
}
}
bool settingsChanged = !(application->getCurrentProject()->settingsEqualExceptNameAndLocation(*(m_settings.get())));
bool appSettingsChanged = !(m_appSettings == *ApplicationSettings::getInstance().get());
if (settingsChanged || appSettingsChanged)
{
edited = true;
foreceRefreshProject = true;
}
}
MessageDispatchWhenLicenseValid(
std::make_shared<MessageLoadProject>(path, edited)
std::make_shared<MessageLoadProject>(path, foreceRefreshProject)
).dispatch();
finishWizzard();
@@ -584,7 +626,9 @@ void QtProjectWizzard::savePreferences()
if (appSettingsChanged)
{
MessageDispatchWhenLicenseValid(
std::make_shared<MessageLoadProject>("", true)
std::make_shared<MessageLoadProject>(
Application::getInstance()->getCurrentProject()->getProjectSettingsFilePath(), true
)
).dispatch();
}
else
@@ -36,7 +36,8 @@ public slots:
void newProjectFromSolution(const std::string& ideId, const std::string& visualStudioSolutionPath);
void refreshProjectFromSolution(const std::string& ideId, const std::string& visualStudioSolutionPath);
void editProject(const ProjectSettings& settings);
void editProject(const FilePath& settingsPath);
void editProject(std::shared_ptr<ProjectSettings> settings);
void showPreferences();
private:
@@ -48,14 +49,12 @@ private:
template<typename T>
QtProjectWizzardWindow* createPopupWithContent();
ProjectSettings getSettingsForCompilationDatabase(const std::string& compilationDatabasePath) const;
void connectShowFiles(QtProjectWizzardContent* content);
QtWindowStack m_windowStack;
std::shared_ptr<QtProjectWizzardWindow> m_popup;
ProjectSettings m_settings;
std::shared_ptr<ProjectSettings> m_settings;
ApplicationSettings m_appSettings;
bool m_editing;
@@ -69,7 +68,7 @@ private slots:
void windowStackChanged();
void popupClosed();
void selectedProjectType(QtProjectWizzardContentSelect::ProjectType type);
void selectedProjectType(LanguageType languageType, QtProjectWizzardContentSelect::ProjectType type);
void emptyProject();
@@ -24,7 +24,7 @@ void QtHelpButton::handleHelpPress()
}
QtProjectWizzardContent::QtProjectWizzardContent(ProjectSettings* settings, QtProjectWizzardWindow* window)
QtProjectWizzardContent::QtProjectWizzardContent(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window)
: QWidget(window)
, m_settings(settings)
, m_window(window)
@@ -33,7 +33,7 @@ class QtProjectWizzardContent
Q_OBJECT
public:
QtProjectWizzardContent(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContent(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
virtual void populateWindow(QWidget* widget);
virtual void populateWindow(QGridLayout* layout);
@@ -64,7 +64,7 @@ protected:
QtHelpButton* addHelpButton(QString helpString, QGridLayout* layout, int row) const;
QPushButton* addFilesButton(QString name, QGridLayout* layout, int row) const;
ProjectSettings* m_settings;
std::shared_ptr<ProjectSettings> m_settings;
QtProjectWizzardWindow* m_window;
private slots:
@@ -4,20 +4,25 @@
#include <QPushButton>
#include "qt/element/QtLocationPicker.h"
#include "settings/CxxProjectSettings.h"
QtProjectWizzardContentBuildFile::QtProjectWizzardContentBuildFile(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContent(settings, window)
, m_type(QtProjectWizzardContentSelect::PROJECT_EMPTY)
{
if (!m_settings->getVisualStudioSolutionPath().empty())
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
m_type = QtProjectWizzardContentSelect::PROJECT_MANAGED;
}
else if (!m_settings->getCompilationDatabasePath().empty())
{
m_type = QtProjectWizzardContentSelect::PROJECT_CDB;
if (!cxxSettings->getVisualStudioSolutionPath().empty())
{
m_type = QtProjectWizzardContentSelect::PROJECT_MANAGED;
}
else if (!cxxSettings->getCompilationDatabasePath().empty())
{
m_type = QtProjectWizzardContentSelect::PROJECT_CDB;
}
}
}
@@ -73,35 +78,43 @@ void QtProjectWizzardContentBuildFile::populateForm(QGridLayout* layout, int& ro
void QtProjectWizzardContentBuildFile::load()
{
switch (m_type)
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
case QtProjectWizzardContentSelect::PROJECT_EMPTY:
return;
case QtProjectWizzardContentSelect::PROJECT_MANAGED:
m_picker->setText(QString::fromStdString(m_settings->getVisualStudioSolutionPath().str()));
break;
case QtProjectWizzardContentSelect::PROJECT_CDB:
m_picker->setText(QString::fromStdString(m_settings->getCompilationDatabasePath().str()));
break;
switch (m_type)
{
case QtProjectWizzardContentSelect::PROJECT_EMPTY:
return;
case QtProjectWizzardContentSelect::PROJECT_MANAGED:
m_picker->setText(QString::fromStdString(cxxSettings->getVisualStudioSolutionPath().str()));
break;
case QtProjectWizzardContentSelect::PROJECT_CDB:
m_picker->setText(QString::fromStdString(cxxSettings->getCompilationDatabasePath().str()));
break;
}
}
}
void QtProjectWizzardContentBuildFile::save()
{
switch (m_type)
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
case QtProjectWizzardContentSelect::PROJECT_EMPTY:
case QtProjectWizzardContentSelect::PROJECT_MANAGED:
break;
case QtProjectWizzardContentSelect::PROJECT_CDB:
switch (m_type)
{
FilePath path = m_picker->getText().toStdString();
if (!path.exists() || path.extension() != ".json")
case QtProjectWizzardContentSelect::PROJECT_EMPTY:
case QtProjectWizzardContentSelect::PROJECT_MANAGED:
break;
case QtProjectWizzardContentSelect::PROJECT_CDB:
{
return;
FilePath path = m_picker->getText().toStdString();
if (!path.exists() || path.extension() != ".json")
{
return;
}
cxxSettings->setCompilationDatabasePath(m_picker->getText().toStdString());
break;
}
m_settings->setCompilationDatabasePath(m_picker->getText().toStdString());
break;
}
}
}
@@ -16,7 +16,7 @@ signals:
void refreshVisualStudioSolution(const std::string& ideId, const std::string& solutionPath);
public:
QtProjectWizzardContentBuildFile(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentBuildFile(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentSelect::ProjectType getType() const;
@@ -1,9 +1,10 @@
#include "qt/window/project_wizzard/QtProjectWizzardContentCDBSource.h"
#include "data/parser/cxx/TaskParseCxx.h"
#include "settings/CxxProjectSettings.h"
QtProjectWizzardContentCDBSource::QtProjectWizzardContentCDBSource(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContent(settings, window)
, m_text(nullptr)
@@ -38,32 +39,35 @@ void QtProjectWizzardContentCDBSource::load()
FilePath projectPath = m_settings->getProjectFileLocation();
std::vector<FilePath> excludePaths = m_settings->getAbsoluteExcludePaths();
std::vector<FilePath> filePaths = TaskParseCxx::getSourceFilesFromCDB(m_settings->getCompilationDatabasePath());
for (FilePath path : filePaths)
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
bool excluded = false;
for (FilePath p : excludePaths)
std::vector<FilePath> filePaths = TaskParseCxx::getSourceFilesFromCDB(cxxSettings->getCompilationDatabasePath());
for (FilePath path : filePaths)
{
if (p == path || p.contains(path))
bool excluded = false;
for (FilePath p : excludePaths)
{
excluded = true;
break;
if (p == path || p.contains(path))
{
excluded = true;
break;
}
}
}
if (excluded)
{
continue;
}
if (excluded)
{
continue;
}
if (projectPath.exists())
{
path = path.relativeTo(projectPath);
}
if (projectPath.exists())
{
path = path.relativeTo(projectPath);
}
m_fileNames << QString::fromStdString(path.str());
m_fileNames << QString::fromStdString(path.str());
}
}
if (m_text)
{
m_text->setText(QString::number(m_fileNames.size()) + " source files were found in the compilation database.");
@@ -9,7 +9,7 @@ class QtProjectWizzardContentCDBSource
Q_OBJECT
public:
QtProjectWizzardContentCDBSource(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentCDBSource(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void populateWindow(QGridLayout* layout, int& row) override;
@@ -3,7 +3,9 @@
#include <QFormLayout>
#include <QMessageBox>
QtProjectWizzardContentData::QtProjectWizzardContentData(ProjectSettings* settings, QtProjectWizzardWindow* window)
#include "settings/CxxProjectSettings.h"
QtProjectWizzardContentData::QtProjectWizzardContentData(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window)
: QtProjectWizzardContent(settings, window)
, m_projectName(nullptr)
, m_projectFileLocation(nullptr)
@@ -45,9 +47,9 @@ void QtProjectWizzardContentData::load()
if (m_language)
{
if (m_settings->getLanguage().length() > 0)
if (m_settings->getLanguage() != LANGUAGE_UNKNOWN)
{
m_language->setCurrentText(QString::fromStdString(m_settings->getLanguage()));
m_language->setCurrentText(QString::fromStdString(languageTypeToString(m_settings->getLanguage())));
}
if (m_settings->getStandard().length() > 0)
@@ -76,7 +78,7 @@ void QtProjectWizzardContentData::save()
if (m_language)
{
m_settings->setLanguage(m_language->currentText().toStdString());
m_settings->setLanguage(stringToLanguageType(m_language->currentText().toStdString()));
if (m_cppStandard->isVisible())
{
@@ -239,7 +241,7 @@ void QtProjectWizzardContentData::handleSelectionChanged(int index)
QtProjectWizzardContentDataCDB::QtProjectWizzardContentDataCDB(
ProjectSettings* settings, QtProjectWizzardWindow* window)
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window)
: QtProjectWizzardContentData(settings, window)
{
}
@@ -259,8 +261,11 @@ void QtProjectWizzardContentDataCDB::populateForm(QGridLayout* layout, int& row)
void QtProjectWizzardContentDataCDB::load()
{
QtProjectWizzardContentData::load();
m_buildFilePicker->setText(QString::fromStdString(m_settings->getCompilationDatabasePath().str()));
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
m_buildFilePicker->setText(QString::fromStdString(cxxSettings->getCompilationDatabasePath().str()));
}
}
void QtProjectWizzardContentDataCDB::save()
@@ -272,7 +277,12 @@ void QtProjectWizzardContentDataCDB::save()
{
return;
}
m_settings->setCompilationDatabasePath(path);
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
cxxSettings->setCompilationDatabasePath(path);
}
}
bool QtProjectWizzardContentDataCDB::check()
@@ -13,7 +13,7 @@ class QtProjectWizzardContentData
Q_OBJECT
public:
QtProjectWizzardContentData(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentData(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void populateWindow(QGridLayout* layout) override;
@@ -50,7 +50,7 @@ class QtProjectWizzardContentDataCDB
Q_OBJECT
public:
QtProjectWizzardContentDataCDB(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentDataCDB(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
virtual void populateForm(QGridLayout* layout, int& row) override;
@@ -5,7 +5,7 @@
#include "qt/element/QtDirectoryListBox.h"
QtProjectWizzardContentExtensions::QtProjectWizzardContentExtensions(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContent(settings, window)
{
@@ -11,7 +11,7 @@ class QtProjectWizzardContentExtensions
Q_OBJECT
public:
QtProjectWizzardContentExtensions(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentExtensions(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void populateWindow(QGridLayout* layout, int& row) override;
@@ -3,8 +3,9 @@
#include <QFormLayout>
#include "qt/element/QtDirectoryListBox.h"
#include "settings/CxxProjectSettings.h"
QtProjectWizzardContentFlags::QtProjectWizzardContentFlags(ProjectSettings* settings, QtProjectWizzardWindow* window)
QtProjectWizzardContentFlags::QtProjectWizzardContentFlags(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window)
: QtProjectWizzardContent(settings, window)
{
}
@@ -24,10 +25,18 @@ void QtProjectWizzardContentFlags::populateForm(QGridLayout* layout, int& row)
void QtProjectWizzardContentFlags::load()
{
m_list->setStringList(m_settings->getCompilerFlags());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
m_list->setStringList(cxxSettings->getCompilerFlags());
}
}
void QtProjectWizzardContentFlags::save()
{
m_settings->setCompilerFlags(m_list->getStringList());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
cxxSettings->setCompilerFlags(m_list->getStringList());
}
}
@@ -11,7 +11,7 @@ class QtProjectWizzardContentFlags
Q_OBJECT
public:
QtProjectWizzardContentFlags(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentFlags(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void populateForm(QGridLayout* layout, int& row) override;
@@ -5,13 +5,14 @@
#include <QVBoxLayout>
#include "qt/element/QtDirectoryListBox.h"
#include "settings/CxxProjectSettings.h"
#include "settings/ApplicationSettings.h"
#include "utility/file/FileManager.h"
#include "utility/file/FileSystem.h"
#include "utility/headerSearch/StandardHeaderDetection.h"
#include "utility/utility.h"
QtProjectWizzardContentPaths::QtProjectWizzardContentPaths(ProjectSettings* settings, QtProjectWizzardWindow* window)
QtProjectWizzardContentPaths::QtProjectWizzardContentPaths(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window)
: QtProjectWizzardContent(settings, window)
{
}
@@ -197,7 +198,7 @@ void QtProjectWizzardContentPaths::detectionClicked()
QtProjectWizzardContentPathsSource::QtProjectWizzardContentPathsSource(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContentPaths(settings, window)
{
@@ -278,7 +279,7 @@ QString QtProjectWizzardContentPathsSource::getFileNamesDescription() const
}
QtProjectWizzardContentPathsCDBHeader::QtProjectWizzardContentPathsCDBHeader(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContentPathsSource(settings, window)
{
@@ -297,7 +298,7 @@ QtProjectWizzardContentPathsCDBHeader::QtProjectWizzardContentPathsCDBHeader(
QtProjectWizzardContentPathsExclude::QtProjectWizzardContentPathsExclude(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContentPaths(settings, window)
{
@@ -320,7 +321,7 @@ void QtProjectWizzardContentPathsExclude::save()
QtProjectWizzardContentPathsHeaderSearch::QtProjectWizzardContentPathsHeaderSearch(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContentPaths(settings, window)
{
@@ -335,12 +336,20 @@ QtProjectWizzardContentPathsHeaderSearch::QtProjectWizzardContentPathsHeaderSear
void QtProjectWizzardContentPathsHeaderSearch::load()
{
m_list->setList(m_settings->getHeaderSearchPaths());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
m_list->setList(cxxSettings->getHeaderSearchPaths());
}
}
void QtProjectWizzardContentPathsHeaderSearch::save()
{
m_settings->setHeaderSearchPaths(m_list->getList());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
cxxSettings->setHeaderSearchPaths(m_list->getList());
}
}
bool QtProjectWizzardContentPathsHeaderSearch::isScrollAble() const
@@ -349,7 +358,7 @@ bool QtProjectWizzardContentPathsHeaderSearch::isScrollAble() const
}
QtProjectWizzardContentPathsHeaderSearchGlobal::QtProjectWizzardContentPathsHeaderSearchGlobal(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContentPaths(settings, window)
{
@@ -380,7 +389,7 @@ void QtProjectWizzardContentPathsHeaderSearchGlobal::save()
QtProjectWizzardContentPathsFrameworkSearch::QtProjectWizzardContentPathsFrameworkSearch(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContentPaths(settings, window)
{
@@ -394,12 +403,20 @@ QtProjectWizzardContentPathsFrameworkSearch::QtProjectWizzardContentPathsFramewo
void QtProjectWizzardContentPathsFrameworkSearch::load()
{
m_list->setList(m_settings->getFrameworkSearchPaths());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
m_list->setList(cxxSettings->getFrameworkSearchPaths());
}
}
void QtProjectWizzardContentPathsFrameworkSearch::save()
{
m_settings->setFrameworkSearchPaths(m_list->getList());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
cxxSettings->setFrameworkSearchPaths(m_list->getList());
}
}
bool QtProjectWizzardContentPathsFrameworkSearch::isScrollAble() const
@@ -408,7 +425,7 @@ bool QtProjectWizzardContentPathsFrameworkSearch::isScrollAble() const
}
QtProjectWizzardContentPathsFrameworkSearchGlobal::QtProjectWizzardContentPathsFrameworkSearchGlobal(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContentPaths(settings, window)
{
@@ -17,7 +17,7 @@ signals:
void showSourceFiles();
public:
QtProjectWizzardContentPaths(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPaths(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtSettingsWindow implementation
virtual void populateWindow(QGridLayout* layout) override;
@@ -57,7 +57,7 @@ class QtProjectWizzardContentPathsSource
: public QtProjectWizzardContentPaths
{
public:
QtProjectWizzardContentPathsSource(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPathsSource(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual QSize preferredWindowSize() const override;
@@ -74,7 +74,7 @@ class QtProjectWizzardContentPathsCDBHeader
: public QtProjectWizzardContentPathsSource
{
public:
QtProjectWizzardContentPathsCDBHeader(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPathsCDBHeader(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
};
@@ -82,7 +82,7 @@ class QtProjectWizzardContentPathsExclude
: public QtProjectWizzardContentPaths
{
public:
QtProjectWizzardContentPathsExclude(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPathsExclude(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
virtual void load() override;
virtual void save() override;
@@ -93,7 +93,7 @@ class QtProjectWizzardContentPathsHeaderSearch
: public QtProjectWizzardContentPaths
{
public:
QtProjectWizzardContentPathsHeaderSearch(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPathsHeaderSearch(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void load() override;
@@ -106,7 +106,7 @@ class QtProjectWizzardContentPathsHeaderSearchGlobal
: public QtProjectWizzardContentPaths
{
public:
QtProjectWizzardContentPathsHeaderSearchGlobal(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPathsHeaderSearchGlobal(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void load() override;
@@ -118,7 +118,7 @@ class QtProjectWizzardContentPathsFrameworkSearch
: public QtProjectWizzardContentPaths
{
public:
QtProjectWizzardContentPathsFrameworkSearch(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPathsFrameworkSearch(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void load() override;
@@ -131,7 +131,7 @@ class QtProjectWizzardContentPathsFrameworkSearchGlobal
: public QtProjectWizzardContentPaths
{
public:
QtProjectWizzardContentPathsFrameworkSearchGlobal(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPathsFrameworkSearchGlobal(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void load() override;
@@ -6,7 +6,7 @@
#include "utility/ResourcePaths.h"
QtProjectWizzardContentPreferences::QtProjectWizzardContentPreferences(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContent(settings, window)
, m_oldColorSchemeIndex(-1)
@@ -13,7 +13,7 @@ class QtProjectWizzardContentPreferences
Q_OBJECT
public:
QtProjectWizzardContentPreferences(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentPreferences(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
~QtProjectWizzardContentPreferences();
// QtProjectWizzardContent implementation
@@ -10,7 +10,7 @@
#include "utility/solution/SolutionParserManager.h"
QtProjectWizzardContentSelect::QtProjectWizzardContentSelect(ProjectSettings* settings, QtProjectWizzardWindow* window, std::weak_ptr<SolutionParserManager> solutionParserManager)
QtProjectWizzardContentSelect::QtProjectWizzardContentSelect(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window, std::weak_ptr<SolutionParserManager> solutionParserManager)
: QtProjectWizzardContent(settings, window)
, m_solutionParserManager(solutionParserManager)
{
@@ -145,8 +145,6 @@ void QtProjectWizzardContentSelect::populateWindow(QGridLayout* layout)
void QtProjectWizzardContentSelect::save()
{
m_settings->setLanguage(m_languages->checkedButton()->text().toStdString());
ProjectType type;
switch (m_buttons->checkedId())
@@ -157,7 +155,7 @@ void QtProjectWizzardContentSelect::save()
default: type = PROJECT_MANAGED; break;
}
emit selected(type);
emit selected(stringToLanguageType(m_languages->checkedButton()->text().toStdString()), type);
}
bool QtProjectWizzardContentSelect::check()
@@ -19,7 +19,7 @@ public:
PROJECT_MANAGED = 2 // use this type for all standard parser (parsers that are handled by the parser manager)
};
QtProjectWizzardContentSelect(ProjectSettings* settings, QtProjectWizzardWindow* window, std::weak_ptr<SolutionParserManager> solutionParserManager);
QtProjectWizzardContentSelect(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window, std::weak_ptr<SolutionParserManager> solutionParserManager);
// QtProjectWizzardContent implementation
virtual void populateWindow(QGridLayout* layout) override;
@@ -30,7 +30,7 @@ public:
virtual QSize preferredWindowSize() const override;
signals:
void selected(QtProjectWizzardContentSelect::ProjectType);
void selected(LanguageType, QtProjectWizzardContentSelect::ProjectType);
// void selected(unsigned int type);
@@ -3,7 +3,9 @@
#include <QCheckBox>
#include <QLabel>
QtProjectWizzardContentSimple::QtProjectWizzardContentSimple(ProjectSettings* settings, QtProjectWizzardWindow* window)
#include "settings/CxxProjectSettings.h"
QtProjectWizzardContentSimple::QtProjectWizzardContentSimple(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window)
: QtProjectWizzardContent(settings, window)
, m_checkBox(nullptr)
{
@@ -52,10 +54,18 @@ void QtProjectWizzardContentSimple::populateForm(QGridLayout* layout, int& row)
void QtProjectWizzardContentSimple::load()
{
m_checkBox->setChecked(m_settings->getUseSourcePathsForHeaderSearch());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
m_checkBox->setChecked(cxxSettings->getUseSourcePathsForHeaderSearch());
}
}
void QtProjectWizzardContentSimple::save()
{
m_settings->setUseSourcePathsForHeaderSearch(m_checkBox->isChecked());
std::shared_ptr<CxxProjectSettings> cxxSettings = std::dynamic_pointer_cast<CxxProjectSettings>(m_settings);
if (cxxSettings)
{
cxxSettings->setUseSourcePathsForHeaderSearch(m_checkBox->isChecked());
}
}
@@ -12,7 +12,7 @@ class QtProjectWizzardContentSimple
Q_OBJECT
public:
QtProjectWizzardContentSimple(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentSimple(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtProjectWizzardContent implementation
virtual void populateWindow(QGridLayout* layout) override;
@@ -4,7 +4,7 @@
#include <QStringListModel>
QtProjectWizzardContentSourceList::QtProjectWizzardContentSourceList(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContent(settings, window)
{
@@ -10,7 +10,7 @@ class QtProjectWizzardContentSourceList
: public QtProjectWizzardContent
{
public:
QtProjectWizzardContentSourceList(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentSourceList(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
// QtSettingsWindow implementation
virtual void populateWindow(QWidget* widget) override;
@@ -3,7 +3,7 @@
#include <QCheckBox>
QtProjectWizzardContentSummary::QtProjectWizzardContentSummary(
ProjectSettings* settings, QtProjectWizzardWindow* window
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
)
: QtProjectWizzardContent(settings, window)
, m_layout(nullptr)
@@ -19,7 +19,7 @@ private:
};
public:
QtProjectWizzardContentSummary(ProjectSettings* settings, QtProjectWizzardWindow* window);
QtProjectWizzardContentSummary(std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window);
void addContent(QtProjectWizzardContent* content, bool advanced, bool gapBefore);
void setIsForm(bool isForm);