diff --git a/Settings/Settings.cpp b/Settings/Settings.cpp index b023da6a..d22bb184 100644 --- a/Settings/Settings.cpp +++ b/Settings/Settings.cpp @@ -66,21 +66,6 @@ QString randomString(int length) { return randomString; } -/** - * @brief configDirectory - * @return - */ -QString configDirectory() { - static const QByteArray nedit_home = qgetenv("NEDIT_NG_HOME"); - if (!nedit_home.isEmpty()) { - return QString::fromLocal8Bit(nedit_home); - } - - static const QString configDir = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation); - static const auto filename = QStringLiteral("%1/nedit-ng").arg(configDir); - return filename; -} - } bool alwaysCheckRelativeTagsSpecs; @@ -161,6 +146,21 @@ ShowMatchingStyle showMatching; TruncSubstitution truncSubstitution; WrapStyle autoWrap; +/** + * @brief configDirectory + * @return + */ +QString configDirectory() { + static const QByteArray nedit_home = qgetenv("NEDIT_NG_HOME"); + if (!nedit_home.isEmpty()) { + return QString::fromLocal8Bit(nedit_home); + } + + static const QString configDir = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation); + static const auto filename = QStringLiteral("%1/nedit-ng").arg(configDir); + return filename; +} + /** * @brief themeFile * @return diff --git a/Settings/Settings.h b/Settings/Settings.h index a537670d..c8f9c471 100644 --- a/Settings/Settings.h +++ b/Settings/Settings.h @@ -34,6 +34,7 @@ bool savePreferences(); void importSettings(const QString &filename); // Paths +QString configDirectory(); QString configFile(); QString historyFile(); QString autoLoadMacroFile(); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 185df8aa..70f117a0 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -380,6 +381,7 @@ void MainWindow::connectSlots() { connect(ui.action_About, &QAction::triggered, this, &MainWindow::action_About_triggered); connect(ui.action_About_Qt, &QAction::triggered, this, &MainWindow::action_About_Qt_triggered); connect(ui.action_Help, &QAction::triggered, this, &MainWindow::action_Help_triggered); + connect(ui.action_Open_Configuration_Directory, &QAction::triggered, this, &MainWindow::action_Open_Configuration_Directory_triggered); connect(ui.action_Statistics_Line, &QAction::toggled, this, &MainWindow::action_Statistics_Line_toggled); connect(ui.action_Incremental_Search_Line, &QAction::toggled, this, &MainWindow::action_Incremental_Search_Line_toggled); @@ -5574,6 +5576,19 @@ void MainWindow::action_Help_triggered() { Help::displayTopic(Help::Topic::Start); } +/** + * @brief MainWindow::action_Open_Configuration_Directory_triggered + */ +void MainWindow::action_Open_Configuration_Directory_triggered() { + const QString configDir = Settings::configDirectory(); + + // ensure that the folder exists + QDir(configDir).mkpath(QStringLiteral(".")); + + QUrl url(QStringLiteral("file:///%1").arg(configDir, QUrl::TolerantMode)); + QDesktopServices::openUrl(url); +} + /** * @brief MainWindow::eventFilter * @param object diff --git a/src/MainWindow.h b/src/MainWindow.h index 53f12ea7..3eaef02e 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -418,6 +418,7 @@ class MainWindow final : public QMainWindow { void action_About_triggered(); void action_About_Qt_triggered(); void action_Help_triggered(); + void action_Open_Configuration_Directory_triggered(); private: void focusChanged(QWidget *from, QWidget *to); diff --git a/src/MainWindow.ui b/src/MainWindow.ui index c2b3bd45..ddcd6139 100644 --- a/src/MainWindow.ui +++ b/src/MainWindow.ui @@ -482,6 +482,8 @@ + + @@ -1810,6 +1812,11 @@ F1 + + + Open Configuration &Directory + +