diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp index 29ae5f31..0131dfcf 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp @@ -1,6 +1,7 @@ #include "QtProjectWizzardContentProjectData.h" #include +#include #include #include "ProjectSettings.h" @@ -32,6 +33,7 @@ void QtProjectWizzardContentProjectData::populate(QGridLayout* layout, int& row) m_projectName->setObjectName("name"); m_projectName->setAttribute(Qt::WA_MacShowFocusRect, 0); m_projectName->setEnabled(!m_disableNameEditing); + connect(m_projectName, &QLineEdit::textEdited, this, &QtProjectWizzardContentProjectData::onProjectNameEdited); layout->addWidget(nameLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight); layout->addWidget(m_projectName, row, QtProjectWizzardWindow::BACK_COL); @@ -125,3 +127,14 @@ bool QtProjectWizzardContentProjectData::check() return true; } + +void QtProjectWizzardContentProjectData::onProjectNameEdited(QString text) +{ + const int cursorPosition = m_projectName->cursorPosition(); + + QRegularExpression regex("[^A-Za-z0-9_.-]"); + text.replace(regex, "_"); + + m_projectName->setText(text); + m_projectName->setCursorPosition(cursorPosition); +} diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.h b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.h index 93fbad5c..5401931d 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.h +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.h @@ -24,6 +24,9 @@ public: virtual void save() override; virtual bool check() override; +public slots: + void onProjectNameEdited(QString text); + private: std::shared_ptr m_projectSettings;