diff --git a/krita/krita4.xmlgui b/krita/krita4.xmlgui
--- a/krita/krita4.xmlgui
+++ b/krita/krita4.xmlgui
@@ -361,6 +361,8 @@
+
+
diff --git a/krita/kritamenu.action b/krita/kritamenu.action
--- a/krita/kritamenu.action
+++ b/krita/kritamenu.action
@@ -1568,6 +1568,19 @@
Settings
+
+
+
+ &Manage Resources...
+
+ Manage Resources
+ Manage Resources
+ 0
+ 0
+
+ false
+
+
configure
&Configure Krita...
@@ -1580,14 +1593,12 @@
false
-
+
- &Manage Resources...
+ Reset Krita Configurations
- Manage Resources
- Manage Resources
- 0
- 0
+ Reset Krita Configurations
+ Reset Krita Configurations
false
@@ -1602,6 +1613,7 @@
false
+
&Show Dockers
diff --git a/krita/main.cc b/krita/main.cc
--- a/krita/main.cc
+++ b/krita/main.cc
@@ -454,11 +454,6 @@
tryInitDrMingw();
#endif
- // If we should clear the config, it has to be done as soon as possible after
- // KisApplication has been created. Otherwise the config file may have been read
- // and stored in a KConfig object we have no control over.
- app.askClearConfig();
-
KisApplicationArguments args(app);
if (singleApplication && app.isRunning()) {
diff --git a/libs/ui/KisApplication.cpp b/libs/ui/KisApplication.cpp
--- a/libs/ui/KisApplication.cpp
+++ b/libs/ui/KisApplication.cpp
@@ -889,10 +889,9 @@
KIS_ASSERT_RECOVER_RETURN(qApp->thread() == QThread::currentThread());
KSharedConfigPtr config = KSharedConfig::openConfig();
-
// find user settings file
- bool createDir = false;
- QString kritarcPath = KoResourcePaths::locateLocal("config", "kritarc", createDir);
+ QString configPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
+ QString kritarcPath = configPath + QStringLiteral("/kritarc");
QFile configFile(kritarcPath);
if (configFile.exists()) {
@@ -902,11 +901,11 @@
}
else {
QMessageBox::warning(0,
- i18nc("@title:window", "Krita"),
- i18n("Failed to clear %1\n\n"
- "Please make sure no other program is using the file and try again.",
- kritarcPath),
- QMessageBox::Ok, QMessageBox::Ok);
+ i18nc("@title:window", "Krita"),
+ i18n("Failed to clear %1\n\n"
+ "Please make sure no other program is using the file and try again.",
+ kritarcPath),
+ QMessageBox::Ok, QMessageBox::Ok);
}
}
@@ -918,16 +917,11 @@
void KisApplication::askClearConfig()
{
- Qt::KeyboardModifiers mods = QApplication::queryKeyboardModifiers();
- bool askClearConfig = (mods & Qt::ControlModifier) && (mods & Qt::ShiftModifier) && (mods & Qt::AltModifier);
-
- if (askClearConfig) {
- bool ok = QMessageBox::question(0,
- i18nc("@title:window", "Krita"),
- i18n("Do you want to clear the settings file?"),
- QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes;
- if (ok) {
- clearConfig();
- }
+ bool ok = QMessageBox::question(0,
+ i18nc("@title:window", "Krita"),
+ i18n("Do you want to clear the settings file?"),
+ QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes;
+ if (ok) {
+ clearConfig();
}
}
diff --git a/libs/ui/KisMainWindow.h b/libs/ui/KisMainWindow.h
--- a/libs/ui/KisMainWindow.h
+++ b/libs/ui/KisMainWindow.h
@@ -402,7 +402,11 @@
*/
void slotReloadFile();
-
+ /**
+ * Resets configuration files.
+ */
+ void slotResetConfigurations();
+
/**
* File --> Import
*
diff --git a/libs/ui/KisMainWindow.cpp b/libs/ui/KisMainWindow.cpp
--- a/libs/ui/KisMainWindow.cpp
+++ b/libs/ui/KisMainWindow.cpp
@@ -253,6 +253,7 @@
KisAction *toggleDockers {0};
KisAction *toggleDockerTitleBars {0};
KisAction *toggleDetachCanvas {0};
+ KisAction *resetConfigurations {0};
KisAction *fullScreenMode {0};
KisAction *showSessionManager {0};
@@ -2005,6 +2006,7 @@
}
}
+
void KisMainWindow::slotConfigureToolbars()
{
saveWindowState();
@@ -2014,6 +2016,13 @@
applyToolBarLayout();
}
+void KisMainWindow::slotResetConfigurations()
+{
+ //KisApplication.askClearConfig();
+ KisApplication *kisApp = static_cast(qApp);
+ kisApp->askClearConfig();
+}
+
void KisMainWindow::slotNewToolbarConfig()
{
applyMainWindowSettings(d->windowStateConfig);
@@ -2708,6 +2717,7 @@
d->importAnimation = actionManager->createAction("file_import_animation");
connect(d->importAnimation, SIGNAL(triggered()), this, SLOT(importAnimation()));
+
d->closeAll = actionManager->createAction("file_close_all");
connect(d->closeAll, SIGNAL(triggered()), this, SLOT(slotFileCloseAll()));
@@ -2740,6 +2750,9 @@
d->toggleDockers->setChecked(true);
connect(d->toggleDockers, SIGNAL(toggled(bool)), SLOT(toggleDockersVisibility(bool)));
+ d->resetConfigurations = actionManager->createAction("reset_configurations");
+ connect(d->resetConfigurations, SIGNAL(triggered()), this, SLOT(slotResetConfigurations()));
+
d->toggleDetachCanvas = actionManager->createAction("view_detached_canvas");
d->toggleDetachCanvas->setChecked(false);
connect(d->toggleDetachCanvas, SIGNAL(toggled(bool)), SLOT(setCanvasDetached(bool)));
diff --git a/libs/widgetutils/config/kstandardaction.h b/libs/widgetutils/config/kstandardaction.h
--- a/libs/widgetutils/config/kstandardaction.h
+++ b/libs/widgetutils/config/kstandardaction.h
@@ -148,7 +148,7 @@
// Settings Menu
ShowMenubar, ShowToolbar, ShowStatusbar,
SaveOptions, KeyBindings,
- Preferences, ConfigureToolbars,
+ Preferences, ConfigureToolbars, ResetConfigurations,
// Help Menu
Help, HelpContents, WhatsThis, ReportBug, AboutApp, AboutKDE,
@@ -553,6 +553,11 @@
*/
KRITAWIDGETUTILS_EXPORT QAction *configureToolbars(const QObject *recvr, const char *slot, QObject *parent);
+/**
+ * Reset configurations dialog.
+ */
+KRITAWIDGETUTILS_EXPORT QAction *resetConfigurations(const QObject *recvr, const char *slot, QObject *parent);
+
/**
* The Configure Notifications dialog.
*/
diff --git a/libs/widgetutils/config/kstandardaction.cpp b/libs/widgetutils/config/kstandardaction.cpp
--- a/libs/widgetutils/config/kstandardaction.cpp
+++ b/libs/widgetutils/config/kstandardaction.cpp
@@ -592,6 +592,11 @@
return KStandardAction::create(ConfigureToolbars, recvr, slot, parent);
}
+QAction *resetConfigurations(const QObject *recvr, const char *slot, QObject *parent)
+{
+ return KStandardAction::create(ResetConfigurations, recvr, slot, parent);
+}
+
QAction *configureNotifications(const QObject *recvr, const char *slot, QObject *parent)
{
return KStandardAction::create(ConfigureNotifications, recvr, slot, parent);
diff --git a/libs/widgetutils/config/kstandardaction_p.h b/libs/widgetutils/config/kstandardaction_p.h
--- a/libs/widgetutils/config/kstandardaction_p.h
+++ b/libs/widgetutils/config/kstandardaction_p.h
@@ -101,6 +101,7 @@
{ KeyBindings, KStandardShortcut::KeyBindings, "options_configure_keybinding", I18N_NOOP("Configure S&hortcuts..."), 0, "configure-shortcuts" },
{ Preferences, KStandardShortcut::Preferences, "options_configure", I18N_NOOP("&Configure %1..."), 0, "configure" },
{ ConfigureToolbars, KStandardShortcut::ConfigureToolbars, "options_configure_toolbars", I18N_NOOP("Configure Tool&bars..."), 0, "configure-toolbars" },
+ { ResetConfigurations, KStandardShortcut::ReportBug, "reset_configurations", I18N_NOOP("Reset Configurations"), 0, "configure-toolbars" },
{ ConfigureNotifications, KStandardShortcut::ConfigureNotifications, "options_configure_notifications", I18N_NOOP("Configure &Notifications..."), 0, "preferences-desktop-notification" },
// the idea here is that Contents is used in menus, and Help in dialogs, so both share the same