From 46e6b8ff1433a7f20d808d1428032a736ef2ca61 Mon Sep 17 00:00:00 2001 From: mlangkabel Date: Sat, 21 Jul 2018 09:32:33 +0200 Subject: [PATCH] logic: create non-existing project directory during project setup for better usability --- src/lib/utility/file/FilePath.h | 4 ++-- .../QtProjectWizzardContentProjectData.cpp | 23 +++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/lib/utility/file/FilePath.h b/src/lib/utility/file/FilePath.h index 0f328ab3..77aea243 100644 --- a/src/lib/utility/file/FilePath.h +++ b/src/lib/utility/file/FilePath.h @@ -5,9 +5,9 @@ #include #include -namespace boost +namespace boost { - namespace filesystem + namespace filesystem { class path; } diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp index 6576e0eb..9dd013d7 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp @@ -3,6 +3,7 @@ #include #include "settings/ProjectSettings.h" +#include "utility/file/FileSystem.h" QtProjectWizzardContentProjectData::QtProjectWizzardContentProjectData( std::shared_ptr projectSettings, @@ -87,13 +88,31 @@ bool QtProjectWizzardContentProjectData::check() } std::vector paths = FilePath(m_projectFileLocation->getText().toStdWString()).expandEnvironmentVariables(); - if (paths.size() != 1 || !paths[0].exists()) + if (paths.size() != 1 || !paths[0].isAbsolute()) { QMessageBox msgBox; - msgBox.setText("The specified location does not exist."); + msgBox.setText("The specified location is invalid. Please enter an absolute directory path."); msgBox.exec(); return false; } + else if (!paths[0].exists()) + { + QMessageBox msgBox; + msgBox.setText("The specified location does not exist. Do you want to create the directory?"); + msgBox.addButton("Abort", QMessageBox::ButtonRole::NoRole); + QPushButton* createButton = msgBox.addButton("Create", QMessageBox::ButtonRole::YesRole); + msgBox.setDefaultButton(createButton); + msgBox.setIcon(QMessageBox::Icon::Question); + int ret = msgBox.exec(); + if (ret == 1) // QMessageBox::Yes + { + FileSystem::createDirectory(paths[0]); + } + else + { + return false; + } + } return true; }