diff --git a/src/lib/settings/ProjectSettings.cpp b/src/lib/settings/ProjectSettings.cpp index 9ec0839c..e1b8f35a 100644 --- a/src/lib/settings/ProjectSettings.cpp +++ b/src/lib/settings/ProjectSettings.cpp @@ -225,24 +225,24 @@ void ProjectSettings::setProjectName(const std::string& name) m_projectName = name; } -std::string ProjectSettings::getProjectFileLocation() const +FilePath ProjectSettings::getProjectFileLocation() const { - if (m_projectFileLocation.size()) + if (!m_projectFileLocation.empty()) { return m_projectFileLocation; } - return getFilePath().parentDirectory().str(); + return getFilePath().parentDirectory(); } -void ProjectSettings::setProjectFileLocation(const std::string& location) +void ProjectSettings::setProjectFileLocation(const FilePath& location) { m_projectFileLocation = location; } void ProjectSettings::makePathsAbsolute(std::vector& paths) const { - FilePath basePath = getFilePath().parentDirectory(); + FilePath basePath = getProjectFileLocation(); for (size_t i = 0; i < paths.size(); i++) { if (!paths[i].isAbsolute()) diff --git a/src/lib/settings/ProjectSettings.h b/src/lib/settings/ProjectSettings.h index 073f4bde..0e586986 100644 --- a/src/lib/settings/ProjectSettings.h +++ b/src/lib/settings/ProjectSettings.h @@ -67,14 +67,14 @@ public: std::string getProjectName() const; void setProjectName(const std::string& name); - std::string getProjectFileLocation() const; - void setProjectFileLocation(const std::string& location); + FilePath getProjectFileLocation() const; + void setProjectFileLocation(const FilePath& location); private: void makePathsAbsolute(std::vector& paths) const; std::string m_projectName; - std::string m_projectFileLocation; + FilePath m_projectFileLocation; static std::shared_ptr s_instance; }; diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp index 5996e986..1330c23e 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp @@ -517,6 +517,13 @@ void QtProjectWizzard::headerPathsCDBDone() void QtProjectWizzard::showFiles(QtProjectWizzardContent* content) { + QWidget* widget = m_windowStack.getTopWindow(); + if (widget) + { + QtProjectWizzardWindow* win = dynamic_cast(widget); + win->content()->save(); + } + QtProjectWizzardWindow* window = createPopupWithContent(); dynamic_cast(window->content())->showFilesFromContent(content); } @@ -591,7 +598,7 @@ void QtProjectWizzard::showSummary() void QtProjectWizzard::createProject() { - std::string path = m_settings.getProjectFileLocation() + "/" + m_settings.getProjectName() + ".coatiproject"; + std::string path = m_settings.getProjectFileLocation().str() + "/" + m_settings.getProjectName() + ".coatiproject"; m_settings.save(path); diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContent.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContent.cpp index d1d6aa06..b20cbb81 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContent.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContent.cpp @@ -129,7 +129,5 @@ QPushButton* QtProjectWizzardContent::addFilesButton(QString name, QGridLayout* void QtProjectWizzardContent::buttonClicked() { - save(); - emit filesButtonClicked(this); } diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentData.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentData.cpp index d580422f..cb85a850 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentData.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentData.cpp @@ -103,7 +103,7 @@ void QtProjectWizzardContentData::populateForm(QGridLayout* layout, int& row) void QtProjectWizzardContentData::load() { m_projectName->setText(QString::fromStdString(m_settings->getProjectName())); - m_projectFileLocation->setText(QString::fromStdString(m_settings->getProjectFileLocation())); + m_projectFileLocation->setText(QString::fromStdString(m_settings->getProjectFileLocation().str())); if (m_settings->getLanguage().length() > 0) { diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp index 49e250f8..e680c46d 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp @@ -97,24 +97,25 @@ bool QtProjectWizzardContentPaths::check() QString missingPaths; for (FilePath f : m_list->getList()) { - f = f.expandEnvironmentVariables(); - - if (!f.exists()) + FilePath fi = f.expandEnvironmentVariables(); + if (!fi.isAbsolute()) { - if (!missingPaths.isEmpty()) - { - missingPaths.append("\n"); - } + fi = FilePath(m_settings->getProjectFileLocation()).concat(fi); + } + + if (!fi.exists()) + { + missingPaths.append("\n"); missingPaths.append(f.str().c_str()); } + } - if (!missingPaths.isEmpty()) - { - QMessageBox msgBox; - msgBox.setText("These paths do not exist:\n" + missingPaths); - msgBox.exec(); - return false; - } + if (!missingPaths.isEmpty()) + { + QMessageBox msgBox; + msgBox.setText("These paths do not exist:" + missingPaths); + msgBox.exec(); + return false; } return true; @@ -267,8 +268,7 @@ QStringList QtProjectWizzardContentPathsSource::getSourceFileNames(bool headersO utility::append(extensions, m_settings->getHeaderExtensions()); std::vector fileInfos = FileSystem::getFileInfosFromPaths(sourcePaths, extensions); - - FilePath projectPath = FilePath(m_settings->getProjectFileLocation()); + FilePath projectPath = m_settings->getProjectFileLocation(); QStringList list; for (const FileInfo& info : fileInfos) diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardWindow.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardWindow.cpp index 7ea9fb0d..7a862657 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardWindow.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardWindow.cpp @@ -84,9 +84,10 @@ void QtProjectWizzardWindow::handleNext() emit next(); } + m_content->save(); + if (m_content->check()) { - m_content->save(); emit next(); } }