]> git.lyx.org Git - features.git/commitdiff
GuiCharacter: Add "Reset" and "Restore Defaults" buttons
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 17 Dec 2018 11:59:40 +0000 (12:59 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 17 Dec 2018 11:59:40 +0000 (12:59 +0100)
Addresses #11415

src/frontends/qt4/GuiCharacter.cpp
src/frontends/qt4/GuiCharacter.h
src/frontends/qt4/GuiDialog.cpp
src/frontends/qt4/GuiDialog.h
src/frontends/qt4/ui/CharacterUi.ui

index 79398b89f7024e72c0ec043a591debf8984315ca..54d90ccaacf6e14b05ea2d2c8055aada22eb1c5d 100644 (file)
@@ -34,6 +34,7 @@
 #include "support/lstrings.h"
 
 #include <QAbstractItemModel>
+#include <QPushButton>
 #include <QComboBox>
 #include <QModelIndex>
 #include <QSettings>
@@ -251,6 +252,7 @@ GuiCharacter::GuiCharacter(GuiView & lv)
        bc().setOK(buttonBox->button(QDialogButtonBox::Ok));
        bc().setApply(buttonBox->button(QDialogButtonBox::Apply));
        bc().setCancel(buttonBox->button(QDialogButtonBox::Cancel));
+       bc().setRestore(buttonBox->button(QDialogButtonBox::Reset));
        bc().setAutoApply(autoapplyCB);
        bc().addReadOnly(familyCO);
        bc().addReadOnly(seriesCO);
@@ -307,19 +309,12 @@ void GuiCharacter::on_nospellcheckCB_clicked()
 }
 
 
-
-void GuiCharacter::change_adaptor()
+void GuiCharacter::slotRestoreDefaults()
 {
-       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();
 }
 
 
@@ -404,6 +399,41 @@ 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
+       buttonBox->button(QDialogButtonBox::RestoreDefaults)->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
+               || setMarkupState(nospellcheckCB->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()) {
@@ -458,6 +488,8 @@ void GuiCharacter::updateContents()
                font_.setLanguage(reset_language);
 
        paramsToDialog(font_);
+
+       checkRestoreDefaults();
 }
 
 
index d26ca470f44d1f8c04946c23b88902c45283597a..cece7ba4ad2d35cebb5eda0a7023726229558ce0 100644 (file)
@@ -66,6 +66,8 @@ protected Q_SLOTS:
        void on_emphCB_clicked();
        void on_nounCB_clicked();
        void on_nospellcheckCB_clicked();
+       void slotRestoreDefaults();
+       void checkRestoreDefaults();
 
 private:
        /// \name Dialog inherited methods
index 4fcff16a2379f3689b3a61d539375e1f667f7bb8..8778886e34138ebc75550e3f3e8f845ab69048af 100644 (file)
@@ -106,9 +106,11 @@ void GuiDialog::slotButtonBox(QAbstractButton * button)
                slotClose();
                break;
        case QDialogButtonBox::Reset:
-       case QDialogButtonBox::RestoreDefaults:
                slotRestore();
                break;
+       case QDialogButtonBox::RestoreDefaults:
+               slotRestoreDefaults();
+               break;
        default:
                break;
        }
index de71a780e0ad37e45b1319215019aad625182453..d5f4227c08dd1b1432ec1a49c43b06c979cb9b41 100644 (file)
@@ -49,6 +49,8 @@ public Q_SLOTS:
         */
        // Restore button clicked
        void slotRestore();
+       // Restore Defaults button clicked
+       virtual void slotRestoreDefaults() {}
        // OK button clicked
        void slotOK();
        // Apply button clicked
index d22868fefcca99e9f9252e272dcc93c77b20ac38..05a8214d8a05b76d2505d8ea32e6af47f03a858e 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>523</width>
-    <height>372</height>
+    <width>545</width>
+    <height>428</height>
    </rect>
   </property>
   <property name="windowTitle">
    <bool>true</bool>
   </property>
   <layout class="QGridLayout" name="gridLayout_7">
-   <item row="2" column="0" colspan="2">
-    <layout class="QHBoxLayout">
-     <property name="spacing">
-      <number>6</number>
-     </property>
-     <property name="leftMargin">
-      <number>0</number>
-     </property>
-     <property name="topMargin">
-      <number>0</number>
-     </property>
-     <property name="rightMargin">
-      <number>0</number>
-     </property>
-     <property name="bottomMargin">
-      <number>0</number>
-     </property>
-     <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>
-     <item>
-      <spacer>
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeType">
-        <enum>QSizePolicy::Expanding</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>20</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QDialogButtonBox" name="buttonBox">
-       <property name="standardButtons">
-        <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
    <item row="0" column="0" colspan="2">
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
      </layout>
     </widget>
    </item>
+   <item row="3" column="0" colspan="2">
+    <layout class="QHBoxLayout">
+     <property name="spacing">
+      <number>6</number>
+     </property>
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox">
+       <property name="standardButtons">
+        <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset|QDialogButtonBox::RestoreDefaults</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <spacer>
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</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>
   </layout>
  </widget>
  <tabstops>