From ac8aac5b36e5895746aa145b20305cb909271e17 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Fri, 21 Dec 2018 12:31:25 +0100 Subject: [PATCH] GuiCharacter: Add menu to Restore button and allow for resetting all widgets to "No Change" besides "Default" --- src/frontends/qt4/GuiCharacter.cpp | 48 ++++++++++++++++++++++++++++-- src/frontends/qt4/GuiCharacter.h | 10 ++++++- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/src/frontends/qt4/GuiCharacter.cpp b/src/frontends/qt4/GuiCharacter.cpp index d2a735957a..ddeea8aa5f 100644 --- a/src/frontends/qt4/GuiCharacter.cpp +++ b/src/frontends/qt4/GuiCharacter.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -267,6 +268,18 @@ GuiCharacter::GuiCharacter(GuiView & lv) bc().addReadOnly(colorCO); bc().addReadOnly(autoapplyCB); + // Add button menu to restore button to reset + // all widgets to "Defaults" or "No Change" + resetdefault_ = new QAction(qt_("Reset All To &Default"), this); + resetnochange_ = new QAction(qt_("Reset All To No Chan&ge"), this); + QMenu * resetmenu = new QMenu(); + resetmenu->addAction(resetdefault_); + resetmenu->addAction(resetnochange_); + buttonBox->button(QDialogButtonBox::RestoreDefaults)->setMenu(resetmenu); + buttonBox->button(QDialogButtonBox::RestoreDefaults)->setText(qt_("&Reset All Fields")); + connect(resetdefault_, SIGNAL(triggered()), this, SLOT(resetToDefault())); + connect(resetnochange_, SIGNAL(triggered()), this, SLOT(resetToNoChange())); + #ifdef Q_OS_MAC // On Mac it's common to have tool windows which are always in the // foreground and are hidden when the main window is not focused. @@ -309,7 +322,7 @@ void GuiCharacter::on_nospellcheckCB_clicked() } -void GuiCharacter::slotRestoreDefaults() +void GuiCharacter::resetToDefault() { Font font(inherit_font); font.setLanguage(reset_language); @@ -318,6 +331,15 @@ void GuiCharacter::slotRestoreDefaults() } +void GuiCharacter::resetToNoChange() +{ + Font font(ignore_font); + font.setLanguage(ignore_language); + paramsToDialog(font); + change_adaptor(); +} + + template static int findPos2nd(QList

const & vec, B const & val) { @@ -418,8 +440,15 @@ void GuiCharacter::change_adaptor() void GuiCharacter::checkRestoreDefaults() { - // (De)Activate Restore Defaults button - buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled( + if (familyCO->currentIndex() == -1 || seriesCO->currentIndex() == -1 + || shapeCO->currentIndex() == -1 || sizeCO->currentIndex() == -1 + || ulineCO->currentIndex() == -1 || strikeCO->currentIndex() == -1 + || colorCO->currentIndex() == -1 || langCO->currentIndex() == -1) + // dialog not yet built + return; + + // (De)Activate Restore Defaults menu items + resetdefault_->setEnabled( family[familyCO->currentIndex()].second != INHERIT_FAMILY || series[seriesCO->currentIndex()].second != INHERIT_SERIES || shape[shapeCO->currentIndex()].second != INHERIT_SHAPE @@ -431,6 +460,19 @@ void GuiCharacter::checkRestoreDefaults() || strike[strikeCO->currentIndex()].second != INHERIT || lcolor.getFromLyXName(fromqstr(colorCO->itemData(colorCO->currentIndex()).toString())) != Color_inherit || languages.getLanguage(fromqstr(language[langCO->currentIndex()].second)) != reset_language); + + resetnochange_->setEnabled( + family[familyCO->currentIndex()].second != IGNORE_FAMILY + || series[seriesCO->currentIndex()].second != IGNORE_SERIES + || shape[shapeCO->currentIndex()].second != IGNORE_SHAPE + || size[sizeCO->currentIndex()].second != FONT_SIZE_IGNORE + || setMarkupState(emphCB->checkState()) != FONT_IGNORE + || setMarkupState(nounCB->checkState()) != FONT_IGNORE + || setMarkupState(nospellcheckCB->checkState()) != FONT_IGNORE + || bar[ulineCO->currentIndex()].second != IGNORE + || strike[strikeCO->currentIndex()].second != IGNORE + || lcolor.getFromLyXName(fromqstr(colorCO->itemData(colorCO->currentIndex()).toString())) != Color_ignore + || languages.getLanguage(fromqstr(language[langCO->currentIndex()].second)) != ignore_language); } diff --git a/src/frontends/qt4/GuiCharacter.h b/src/frontends/qt4/GuiCharacter.h index 439dba8767..ca55f33be9 100644 --- a/src/frontends/qt4/GuiCharacter.h +++ b/src/frontends/qt4/GuiCharacter.h @@ -18,6 +18,8 @@ #include "ui_CharacterUi.h" #include "Font.h" +#include + #include #ifdef IGNORE @@ -66,7 +68,8 @@ protected Q_SLOTS: void on_emphCB_clicked(); void on_nounCB_clicked(); void on_nospellcheckCB_clicked(); - void slotRestoreDefaults(); + void resetToDefault(); + void resetToNoChange(); void checkRestoreDefaults(); private: @@ -107,6 +110,11 @@ private: bool noun_; /// bool nospellcheck_; + + /// + QAction * resetdefault_ = new QAction; + /// + QAction * resetnochange_ = new QAction; }; } // namespace frontend -- 2.39.5