diff --git a/gui/projectfile.ui b/gui/projectfile.ui
index 9c1cd7096a4..7bc0ef3a9ae 100644
--- a/gui/projectfile.ui
+++ b/gui/projectfile.ui
@@ -869,11 +869,42 @@
-
-
-
- Misra C++ 2008
-
-
+
+
-
+
+
+ Misra C++
+
+
+
+ -
+
+
-
+
+ 2008
+
+
+ -
+
+ 2023
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
-
diff --git a/gui/projectfiledialog.cpp b/gui/projectfiledialog.cpp
index 1d89c899505..2bb43eb72a4 100644
--- a/gui/projectfiledialog.cpp
+++ b/gui/projectfiledialog.cpp
@@ -60,6 +60,7 @@
static constexpr char ADDON_MISRA[] = "misra";
static constexpr char CODING_STANDARD_MISRA_C_2023[] = "misra-c-2023";
static constexpr char CODING_STANDARD_MISRA_CPP_2008[] = "misra-cpp-2008";
+static constexpr char CODING_STANDARD_MISRA_CPP_2023[] = "misra-cpp-2023";
static constexpr char CODING_STANDARD_CERT_C[] = "cert-c-2016";
static constexpr char CODING_STANDARD_CERT_CPP[] = "cert-cpp-2016";
static constexpr char CODING_STANDARD_AUTOSAR[] = "autosar";
@@ -391,9 +392,15 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
mUI->mBtnBrowseMisraFile->setEnabled(false);
}
+ mUI->mMisraCpp->setEnabled(mPremium);
+ mUI->mMisraCppVersion->setEnabled(mUI->mMisraCpp->isChecked());
+ connect(mUI->mMisraCpp, &QCheckBox::toggled, mUI->mMisraCppVersion, &QComboBox::setEnabled);
+
+ mUI->mMisraCppVersion->setVisible(mPremium);
+ mUI->mMisraCppVersion->setCurrentIndex(projectFile->getCodingStandards().contains(CODING_STANDARD_MISRA_CPP_2023));
+
mUI->mCertC2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_C));
mUI->mCertCpp2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_CPP));
- mUI->mMisraCpp2008->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_MISRA_CPP_2008));
mUI->mAutosar->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_AUTOSAR));
if (projectFile->getCertIntPrecision() <= 0)
@@ -401,7 +408,6 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
else
mUI->mEditCertIntPrecision->setText(QString::number(projectFile->getCertIntPrecision()));
- mUI->mMisraCpp2008->setEnabled(mPremium);
mUI->mCertC2016->setEnabled(mPremium);
mUI->mCertCpp2016->setEnabled(mPremium);
mUI->mAutosar->setEnabled(mPremium);
@@ -482,8 +488,10 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const
codingStandards << CODING_STANDARD_CERT_CPP;
if (mPremium && mUI->mMisraVersion->currentIndex() == 1)
codingStandards << CODING_STANDARD_MISRA_C_2023;
- if (mUI->mMisraCpp2008->isChecked())
+ if (mUI->mMisraCpp->isChecked() && mUI->mMisraCppVersion->currentIndex() == 0)
codingStandards << CODING_STANDARD_MISRA_CPP_2008;
+ if (mUI->mMisraCpp->isChecked() && mUI->mMisraCppVersion->currentIndex() == 1)
+ codingStandards << CODING_STANDARD_MISRA_CPP_2023;
if (mUI->mAutosar->isChecked())
codingStandards << CODING_STANDARD_AUTOSAR;
projectFile->setCodingStandards(std::move(codingStandards));