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