commit ac8aac5b36e5895746aa145b20305cb909271e17
Author: Juergen Spitzmueller <[email protected]>
Date: Fri Dec 21 12:31:25 2018 +0100
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 d2a7359..ddeea8a 100644
--- a/src/frontends/qt4/GuiCharacter.cpp
+++ b/src/frontends/qt4/GuiCharacter.cpp
@@ -36,6 +36,7 @@
#include <QAbstractItemModel>
#include <QPushButton>
#include <QComboBox>
+#include <QMenu>
#include <QModelIndex>
#include <QSettings>
#include <QVariant>
@@ -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<class P, class B>
static int findPos2nd(QList<P> 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 439dba8..ca55f33 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 <QAction>
+
#include <utility>
#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