Skip to content

Commit 5c10cfd

Browse files
committed
GUI: fix path issue with backslashes. hide non-premium setting in premium settings dialog.
1 parent 6df8573 commit 5c10cfd

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

gui/mainwindow.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,16 @@
7272
static const QString OnlineHelpURL("https://cppcheck.sourceforge.io/manual.html");
7373
static const QString compile_commands_json("compile_commands.json");
7474

75+
static QString fromNativePath(const QString& p) {
76+
#ifdef Q_OS_WIN
77+
QString ret(p);
78+
ret.replace('\\', '/');
79+
return ret;
80+
#else
81+
return p;
82+
#endif
83+
}
84+
7585
MainWindow::MainWindow(TranslationHandler* th, QSettings* settings) :
7686
mSettings(settings),
7787
mApplications(new ApplicationList(this)),
@@ -913,7 +923,7 @@ Settings MainWindow::getCppcheckSettings()
913923
if (!mProjectFile->getImportProject().isEmpty())
914924
result.checkAllConfigurations = false;
915925

916-
const QString &buildDir = mProjectFile->getBuildDir();
926+
const QString &buildDir = fromNativePath(mProjectFile->getBuildDir());
917927
if (!buildDir.isEmpty()) {
918928
if (QDir(buildDir).isAbsolute()) {
919929
result.buildDir = buildDir.toStdString();
@@ -949,7 +959,7 @@ Settings MainWindow::getCppcheckSettings()
949959
result.checkUnknownFunctionReturn.insert(s.toStdString());
950960

951961
QString filesDir(getDataDir());
952-
const QString pythonCmd = mSettings->value(SETTINGS_PYTHON_PATH).toString();
962+
const QString pythonCmd = fromNativePath(mSettings->value(SETTINGS_PYTHON_PATH).toString());
953963
for (const QString& addon : mProjectFile->getAddons()) {
954964
QString addonFilePath = ProjectFile::getAddonFilePath(filesDir, addon);
955965
if (addonFilePath.isEmpty())
@@ -961,7 +971,7 @@ Settings MainWindow::getCppcheckSettings()
961971
json += "{ \"script\":\"" + addonFilePath + "\"";
962972
if (!pythonCmd.isEmpty())
963973
json += ", \"python\":\"" + pythonCmd + "\"";
964-
QString misraFile = mSettings->value(SETTINGS_MISRA_FILE).toString();
974+
QString misraFile = fromNativePath(mSettings->value(SETTINGS_MISRA_FILE).toString());
965975
if (addon == "misra" && !misraFile.isEmpty()) {
966976
QString arg;
967977
if (misraFile.endsWith(".pdf", Qt::CaseInsensitive))
@@ -1102,7 +1112,7 @@ void MainWindow::checkLockDownUI()
11021112

11031113
void MainWindow::programSettings()
11041114
{
1105-
SettingsDialog dialog(mApplications, mTranslation, this);
1115+
SettingsDialog dialog(mApplications, mTranslation, isCppcheckPremium(), this);
11061116
if (dialog.exec() == QDialog::Accepted) {
11071117
dialog.saveSettingValues();
11081118
mSettings->sync();

gui/settingsdialog.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,14 @@
3737

3838
SettingsDialog::SettingsDialog(ApplicationList *list,
3939
TranslationHandler *translator,
40+
bool premium,
4041
QWidget *parent) :
4142
QDialog(parent),
4243
mApplications(list),
4344
mTempApplications(new ApplicationList(this)),
4445
mTranslator(translator),
45-
mUI(new Ui::Settings)
46+
mUI(new Ui::Settings),
47+
mPremium(premium)
4648
{
4749
mUI->setupUi(this);
4850
mUI->mPythonPathWarning->setStyleSheet("color: red");
@@ -63,6 +65,10 @@ SettingsDialog::SettingsDialog(ApplicationList *list,
6365
mUI->mCheckForUpdates->setCheckState(boolToCheckState(settings.value(SETTINGS_CHECK_FOR_UPDATES, false).toBool()));
6466
mUI->mEditPythonPath->setText(settings.value(SETTINGS_PYTHON_PATH, QString()).toString());
6567
validateEditPythonPath();
68+
if (premium)
69+
mUI->mEditMisraFile->setVisible(false);
70+
else
71+
mUI->mEditMisraFile->setText(settings.value(SETTINGS_MISRA_FILE, QString()).toString());
6672
mUI->mEditMisraFile->setText(settings.value(SETTINGS_MISRA_FILE, QString()).toString());
6773

6874
#ifdef Q_OS_WIN

gui/settingsdialog.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class SettingsDialog : public QDialog {
4545
public:
4646
SettingsDialog(ApplicationList *list,
4747
TranslationHandler *translator,
48+
bool premium,
4849
QWidget *parent = nullptr);
4950
SettingsDialog(const SettingsDialog &) = delete;
5051
~SettingsDialog() override;
@@ -238,6 +239,8 @@ protected slots:
238239
void manageStyleControls();
239240

240241
static const int mLangCodeRole = Qt::UserRole;
242+
243+
bool mPremium;
241244
};
242245
/// @}
243246
#endif // SETTINGSDIALOG_H

0 commit comments

Comments
 (0)