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