diff --git a/bin/app/data/projects/tictactoe/tictactoe.coatiproject b/bin/app/data/projects/tictactoe/tictactoe.coatiproject index 0d5532d0..13616e9f 100644 --- a/bin/app/data/projects/tictactoe/tictactoe.coatiproject +++ b/bin/app/data/projects/tictactoe/tictactoe.coatiproject @@ -5,8 +5,17 @@ 11 + + .h + .hpp + .cpp + .cxx + .cc + .c + - ./src + /Users/ebsi/Documents/Coati/bin/app/data/projects/tictactoe/src + 0 diff --git a/src/lib/settings/ProjectSettings.cpp b/src/lib/settings/ProjectSettings.cpp index 473f64b4..d3576099 100644 --- a/src/lib/settings/ProjectSettings.cpp +++ b/src/lib/settings/ProjectSettings.cpp @@ -13,10 +13,10 @@ std::vector ProjectSettings::getDefaultHeaderExtensions() std::vector ProjectSettings::getDefaultSourceExtensions() { std::vector defaultValues; + defaultValues.push_back(".c"); defaultValues.push_back(".cpp"); defaultValues.push_back(".cxx"); defaultValues.push_back(".cc"); - defaultValues.push_back(".c"); return defaultValues; } @@ -52,7 +52,9 @@ bool ProjectSettings::operator==(const ProjectSettings& other) const utility::isPermutation(getSourcePaths(), other.getSourcePaths()) && utility::isPermutation(getHeaderSearchPaths(), other.getHeaderSearchPaths()) && utility::isPermutation(getFrameworkSearchPaths(), other.getFrameworkSearchPaths()) && - utility::isPermutation(getCompilerFlags(), other.getCompilerFlags()); + utility::isPermutation(getCompilerFlags(), other.getCompilerFlags()) && + utility::isPermutation(getHeaderExtensions(), other.getHeaderExtensions()) && + utility::isPermutation(getSourceExtensions(), other.getSourceExtensions()); } void ProjectSettings::save(const FilePath& filePath) diff --git a/src/lib/utility/file/FileRegister.cpp b/src/lib/utility/file/FileRegister.cpp index aa6d592e..8928e70b 100644 --- a/src/lib/utility/file/FileRegister.cpp +++ b/src/lib/utility/file/FileRegister.cpp @@ -26,7 +26,7 @@ void FileRegister::setFilePaths(const std::vector& filePaths) { m_sourceFilePaths.emplace(path, STATE_UNPARSED); } - else + else if (m_fileManager->hasIncludeExtension(path)) { m_includeFilePaths.emplace(path, STATE_UNPARSED); } diff --git a/src/lib_gui/CMakeLists.txt b/src/lib_gui/CMakeLists.txt index 199a10bb..68b63dbe 100644 --- a/src/lib_gui/CMakeLists.txt +++ b/src/lib_gui/CMakeLists.txt @@ -111,6 +111,8 @@ add_files( qt/window/project_wizzard/QtProjectWizzardContentCDBSource.h qt/window/project_wizzard/QtProjectWizzardContentData.cpp qt/window/project_wizzard/QtProjectWizzardContentData.h + qt/window/project_wizzard/QtProjectWizzardContentExtensions.cpp + qt/window/project_wizzard/QtProjectWizzardContentExtensions.h qt/window/project_wizzard/QtProjectWizzardContentFlags.cpp qt/window/project_wizzard/QtProjectWizzardContentFlags.h qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp index 21c72dd3..df3b5c1c 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp @@ -8,6 +8,7 @@ #include "qt/window/project_wizzard/QtProjectWizzardContentBuildFile.h" #include "qt/window/project_wizzard/QtProjectWizzardContentCDBSource.h" #include "qt/window/project_wizzard/QtProjectWizzardContentData.h" +#include "qt/window/project_wizzard/QtProjectWizzardContentExtensions.h" #include "qt/window/project_wizzard/QtProjectWizzardContentFlags.h" #include "qt/window/project_wizzard/QtProjectWizzardContentPaths.h" #include "qt/window/project_wizzard/QtProjectWizzardContentSimple.h" @@ -537,6 +538,7 @@ void QtProjectWizzard::showSummary() } summary->addContent(new QtProjectWizzardContentFlags(settings, window), true, false); + summary->addContent(new QtProjectWizzardContentExtensions(settings, window), true, true); window->setup(); diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentBuildFile.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentBuildFile.cpp index feb988a7..f07ca2b4 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentBuildFile.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentBuildFile.cpp @@ -134,6 +134,9 @@ void QtProjectWizzardContentBuildFile::refreshClicked() FilePath path = FilePath(m_picker->getText().toStdString()); if (!path.exists()) { + QMessageBox msgBox; + msgBox.setText("Please enter a valid file path."); + msgBox.exec(); return; } diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentCDBSource.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentCDBSource.cpp index 913fed13..d72ed493 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentCDBSource.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentCDBSource.cpp @@ -34,11 +34,15 @@ void QtProjectWizzardContentCDBSource::populateWindow(QGridLayout* layout, int& void QtProjectWizzardContentCDBSource::load() { std::vector filePaths = TaskParseCxx::getSourceFilesFromCDB(m_settings->getCompilationDatabasePath()); + std::vector extensions = m_settings->getSourceExtensions(); m_fileNames.clear(); for (const FilePath& path : filePaths) { - m_fileNames << QString::fromStdString(path.str()); + if (path.hasExtension(extensions)) + { + m_fileNames << QString::fromStdString(path.str()); + } } if (m_text) diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentExtensions.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentExtensions.cpp new file mode 100644 index 00000000..c5a1d2f2 --- /dev/null +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentExtensions.cpp @@ -0,0 +1,47 @@ +#include "qt/window/project_wizzard/QtProjectWizzardContentExtensions.h" + +#include + +#include "qt/element/QtDirectoryListBox.h" + +QtProjectWizzardContentExtensions::QtProjectWizzardContentExtensions( + ProjectSettings* settings, QtProjectWizzardWindow* window +) + : QtProjectWizzardContent(settings, window) +{ +} + +void QtProjectWizzardContentExtensions::populateForm(QGridLayout* layout, int& row) +{ + QLabel* headerLabel = createFormLabel("Header File Extensions"); + headerLabel->setObjectName("label"); + layout->addWidget(headerLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight); + + addHelpButton("Define extensions for header files including the dot e.g. .h", layout, row); + + m_headerList = new QtDirectoryListBox(this, true); + layout->addWidget(m_headerList, row, QtProjectWizzardWindow::BACK_COL); + row++; + + QLabel* sourceLabel = createFormLabel("Source File Extensions"); + sourceLabel->setObjectName("label"); + layout->addWidget(sourceLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight); + + addHelpButton("Define extensions for source files including the dot e.g. .cpp", layout, row); + + m_sourceList = new QtDirectoryListBox(this, true); + layout->addWidget(m_sourceList, row, QtProjectWizzardWindow::BACK_COL); + row++; +} + +void QtProjectWizzardContentExtensions::load() +{ + m_headerList->setStringList(m_settings->getHeaderExtensions()); + m_sourceList->setStringList(m_settings->getSourceExtensions()); +} + +void QtProjectWizzardContentExtensions::save() +{ + m_settings->setHeaderExtensions(m_headerList->getStringList()); + m_settings->setSourceExtensions(m_sourceList->getStringList()); +} diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentExtensions.h b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentExtensions.h new file mode 100644 index 00000000..b88ed1a6 --- /dev/null +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentExtensions.h @@ -0,0 +1,27 @@ +#ifndef QT_PROJECT_WIZZARD_CONTENT_EXTENSIONS_H +#define QT_PROJECT_WIZZARD_CONTENT_EXTENSIONS_H + +#include "qt/window/project_wizzard/QtProjectWizzardContent.h" + +class QtDirectoryListBox; + +class QtProjectWizzardContentExtensions + : public QtProjectWizzardContent +{ + Q_OBJECT + +public: + QtProjectWizzardContentExtensions(ProjectSettings* settings, QtProjectWizzardWindow* window); + + // QtProjectWizzardContent implementation + virtual void populateForm(QGridLayout* layout, int& row) override; + + virtual void load() override; + virtual void save() override; + +private: + QtDirectoryListBox* m_headerList; + QtDirectoryListBox* m_sourceList; +}; + +#endif // QT_PROJECT_WIZZARD_CONTENT_EXTENSIONS_H