commit 1dc6154708cdc43d66affe4ba79f7a812db9e987
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Tue Dec 18 08:32:48 2018 +0100

    GuiCharacter: Add "Reset" and "Restore Defaults" buttons
    
    Addresses #11415
---
 src/frontends/qt4/GuiCharacter.cpp  |   54 +++++++++++++++++++++++++++-------
 src/frontends/qt4/GuiCharacter.h    |    2 +
 src/frontends/qt4/ui/CharacterUi.ui |   43 ++++++++++++++++++++++++----
 status.23x                          |    3 ++
 4 files changed, 85 insertions(+), 17 deletions(-)

diff --git a/src/frontends/qt4/GuiCharacter.cpp 
b/src/frontends/qt4/GuiCharacter.cpp
index 9a865ce..4f644a1 100644
--- a/src/frontends/qt4/GuiCharacter.cpp
+++ b/src/frontends/qt4/GuiCharacter.cpp
@@ -213,6 +213,7 @@ GuiCharacter::GuiCharacter(GuiView & lv)
        connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK()));
        connect(applyPB, SIGNAL(clicked()), this, SLOT(slotApply()));
        connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
+       connect(resetPB, SIGNAL(clicked()), this, SLOT(slotRestore()));
        connect(autoapplyCB, SIGNAL(stateChanged(int)), this,
                SLOT(slotAutoApply()));
 
@@ -252,6 +253,7 @@ GuiCharacter::GuiCharacter(GuiView & lv)
        bc().setApply(applyPB);
        bc().setCancel(closePB);
        bc().setAutoApply(autoapplyCB);
+       bc().setRestore(resetPB);
        bc().addReadOnly(familyCO);
        bc().addReadOnly(seriesCO);
        bc().addReadOnly(sizeCO);
@@ -295,18 +297,12 @@ void GuiCharacter::on_nounCB_clicked()
 }
 
 
-void GuiCharacter::change_adaptor()
+void GuiCharacter::on_restorePB_clicked()
 {
-       changed();
-
-       if (!autoapplyCB->isChecked())
-               return;
-
-       // to be really good here, we should set the combos to the values of
-       // the current text, and make it appear as "no change" if the values
-       // stay the same between applys. Might be difficult though wrt to a
-       // moved cursor - jbl
-       slotApply();
+       Font font(inherit_font);
+       font.setLanguage(reset_language);
+       paramsToDialog(font);
+       change_adaptor();
 }
 
 
@@ -391,6 +387,40 @@ lyx::FontState setMarkupState(Qt::CheckState cs)
 } // end namespace anon
 
 
+void GuiCharacter::change_adaptor()
+{
+       changed();
+
+       checkRestoreDefaults();
+
+       if (!autoapplyCB->isChecked())
+               return;
+
+       // to be really good here, we should set the combos to the values of
+       // the current text, and make it appear as "no change" if the values
+       // stay the same between applys. Might be difficult though wrt to a
+       // moved cursor - jbl
+       slotApply();
+}
+
+
+void GuiCharacter::checkRestoreDefaults()
+{
+       // (De)Activate Restore Defaults button
+       restorePB->setEnabled(
+               family[familyCO->currentIndex()].second != INHERIT_FAMILY
+               || series[seriesCO->currentIndex()].second != INHERIT_SERIES
+               || shape[shapeCO->currentIndex()].second != INHERIT_SHAPE
+               || size[sizeCO->currentIndex()].second != FONT_SIZE_INHERIT
+               || setMarkupState(emphCB->checkState()) != FONT_OFF
+               || setMarkupState(nounCB->checkState()) != FONT_OFF
+               || bar[ulineCO->currentIndex()].second != INHERIT
+               || strike[strikeCO->currentIndex()].second != INHERIT
+               || 
lcolor.getFromLyXName(fromqstr(colorCO->itemData(colorCO->currentIndex()).toString()))
 != Color_inherit
+               || 
languages.getLanguage(fromqstr(language[langCO->currentIndex()].second)) != 
reset_language);
+}
+
+
 void GuiCharacter::updateContents()
 {
        if (bufferview()->cursor().selection()) {
@@ -443,6 +473,8 @@ void GuiCharacter::updateContents()
                font_.setLanguage(reset_language);
 
        paramsToDialog(font_);
+
+       checkRestoreDefaults();
 }
 
 
diff --git a/src/frontends/qt4/GuiCharacter.h b/src/frontends/qt4/GuiCharacter.h
index e9148e7..d460cb0 100644
--- a/src/frontends/qt4/GuiCharacter.h
+++ b/src/frontends/qt4/GuiCharacter.h
@@ -65,6 +65,8 @@ protected Q_SLOTS:
        void change_adaptor();
        void on_emphCB_clicked();
        void on_nounCB_clicked();
+       void on_restorePB_clicked();
+       void checkRestoreDefaults();
 
 private:
        /// \name Dialog inherited methods
diff --git a/src/frontends/qt4/ui/CharacterUi.ui 
b/src/frontends/qt4/ui/CharacterUi.ui
index 80db751..fdcdc60 100644
--- a/src/frontends/qt4/ui/CharacterUi.ui
+++ b/src/frontends/qt4/ui/CharacterUi.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>523</width>
-    <height>365</height>
+    <width>552</width>
+    <height>401</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -314,6 +314,33 @@
     </spacer>
    </item>
    <item row="3" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="autoapplyCB">
+       <property name="toolTip">
+        <string>Apply each change automatically</string>
+       </property>
+       <property name="text">
+        <string>Apply changes &amp;immediately</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="4" column="0">
     <layout class="QHBoxLayout">
      <property name="spacing">
       <number>6</number>
@@ -331,12 +358,16 @@
       <number>0</number>
      </property>
      <item>
-      <widget class="QCheckBox" name="autoapplyCB">
-       <property name="toolTip">
-        <string>Apply each change automatically</string>
+      <widget class="QPushButton" name="resetPB">
+       <property name="text">
+        <string>Reset</string>
        </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="restorePB">
        <property name="text">
-        <string>Apply changes &amp;immediately</string>
+        <string>Restore Defaults</string>
        </property>
       </widget>
      </item>
diff --git a/status.23x b/status.23x
index a83d30b..9295df2 100644
--- a/status.23x
+++ b/status.23x
@@ -33,6 +33,9 @@ What's new
 
 - Make tab movement visible (bug 10733).
 
+- Add "Reset" and "Restore Defaults" buttons to Text Properties
+  dialog (bug 11415).
+
 
 * DOCUMENTATION AND LOCALIZATION
 

Reply via email to