commit fb393b450d661e8b374a7db0177bad9170043dae
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Fri May 4 19:34:09 2018 +0200

    Towards a sane character dialog
    
    This is a proposal, but I think you should try it out in order to comment
    
    What this does, is:
    
    1. Remove the toggle madness. This is really not something anyone
    understands without knowing the code, and its very unusual UI
    (fixes #4836)
    
    2. Separate and group things that were put all into the "Misc" trashcan
    combo
    
    3. Let the dialog reflect the font settings at cursor (selection)
    
    Now the dialog looks more like character dialogs from other applications,
    and I think it is more in line with what users expect.
    
    Comments very welcome (and of course I will revert if you want to have
    the old idiosyncratic thing back).
---
 src/frontends/qt4/GuiCharacter.cpp  |  304 ++++++++++++------
 src/frontends/qt4/GuiCharacter.h    |   28 +-
 src/frontends/qt4/ui/CharacterUi.ui |  606 +++++++++++++++++------------------
 3 files changed, 527 insertions(+), 411 deletions(-)

diff --git a/src/frontends/qt4/GuiCharacter.cpp 
b/src/frontends/qt4/GuiCharacter.cpp
index 1e92db8..2c3023a 100644
--- a/src/frontends/qt4/GuiCharacter.cpp
+++ b/src/frontends/qt4/GuiCharacter.cpp
@@ -6,6 +6,7 @@
  * \author Angus Leeming
  * \author Edwin Leuven
  * \author John Levon
+ * \author Jürgen Spitzmüller
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -81,18 +82,27 @@ static QList<BarPair> barData()
 {
        QList<BarPair> bars;
        bars << BarPair(qt_("No change"), IGNORE);
-       bars << BarPair(qt_("Emph"),      EMPH_TOGGLE);
-       bars << BarPair(qt_("Underbar"),  UNDERBAR_TOGGLE);
-       bars << BarPair(qt_("Double underbar"),  UULINE_TOGGLE);
-       bars << BarPair(qt_("Wavy underbar"),  UWAVE_TOGGLE);
-       bars << BarPair(qt_("Strike out"),  STRIKEOUT_TOGGLE);
-       bars << BarPair(qt_("Cross out"),  XOUT_TOGGLE);
-       bars << BarPair(qt_("Noun"),      NOUN_TOGGLE);
-       bars << BarPair(qt_("Reset"),     INHERIT);
+       bars << BarPair(qt_("(Without)[[underlining]]"), NONE);
+       bars << BarPair(qt_("Single"), UNDERBAR);
+       bars << BarPair(qt_("Double"), UULINE);
+       bars << BarPair(qt_("Wavy"), UWAVE);
+       bars << BarPair(qt_("Reset"), INHERIT);
        return bars;
 }
 
 
+static QList<BarPair> strikeData()
+{
+       QList<BarPair> strike;
+       strike << BarPair(qt_("No change"), IGNORE);
+       strike << BarPair(qt_("(Without)[[strikethrough]]"), NONE);
+       strike << BarPair(qt_("Single"), STRIKEOUT);
+       strike << BarPair(qt_("With /"), XOUT);
+       strike << BarPair(qt_("Reset"), INHERIT);
+       return strike;
+}
+
+
 static QList<ColorCode> colorData()
 {
        QList<ColorCode> colors;
@@ -196,8 +206,8 @@ void fillComboColor(QComboBox * combo, QList<T> const & 
list)
 } // namespace
 
 GuiCharacter::GuiCharacter(GuiView & lv)
-       : GuiDialog(lv, "character", qt_("Text Style")), font_(ignore_font, 
ignore_language),
-         toggleall_(false)
+       : GuiDialog(lv, "character", qt_("Text Style")),
+         font_(ignore_font, ignore_language), emph_(false), noun_(false)
 {
        setupUi(this);
 
@@ -207,20 +217,22 @@ GuiCharacter::GuiCharacter(GuiView & lv)
        connect(autoapplyCB, SIGNAL(stateChanged(int)), this,
                SLOT(slotAutoApply()));
 
-       connect(miscCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
+       connect(ulineCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
+       connect(strikeCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
+       connect(emphCB, SIGNAL(clicked(bool)), this, SLOT(change_adaptor()));
        connect(sizeCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
        connect(familyCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
        connect(seriesCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
        connect(shapeCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
        connect(colorCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
        connect(langCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
-       connect(toggleallCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
 
        family = familyData();
        series = seriesData();
        shape  = shapeData();
        size   = sizeData();
        bar    = barData();
+       strike = strikeData();
        color  = colorData();
        qSort(color.begin(), color.end(), ColorSorter);
 
@@ -232,7 +244,8 @@ GuiCharacter::GuiCharacter(GuiView & lv)
        fillCombo(seriesCO, series);
        fillCombo(sizeCO, size);
        fillCombo(shapeCO, shape);
-       fillCombo(miscCO, bar);
+       fillCombo(ulineCO, bar);
+       fillCombo(strikeCO, strike);
        fillComboColor(colorCO, color);
        fillCombo(langCO, language);
 
@@ -245,10 +258,12 @@ GuiCharacter::GuiCharacter(GuiView & lv)
        bc().addReadOnly(seriesCO);
        bc().addReadOnly(sizeCO);
        bc().addReadOnly(shapeCO);
-       bc().addReadOnly(miscCO);
+       bc().addReadOnly(ulineCO);
+       bc().addReadOnly(strikeCO);
+       bc().addReadOnly(nounCB);
+       bc().addReadOnly(emphCB);
        bc().addReadOnly(langCO);
        bc().addReadOnly(colorCO);
-       bc().addReadOnly(toggleallCB);
        bc().addReadOnly(autoapplyCB);
 
 #ifdef Q_OS_MAC
@@ -267,6 +282,28 @@ GuiCharacter::GuiCharacter(GuiView & lv)
 }
 
 
+void GuiCharacter::on_emphCB_clicked()
+{
+       // skip intermediate state at user click
+       if (!emph_) {
+               emphCB->setCheckState(Qt::Checked);
+               emph_ = true;
+       }
+       change_adaptor();
+}
+
+
+void GuiCharacter::on_nounCB_clicked()
+{
+       // skip intermediate state at user click
+       if (!noun_) {
+               nounCB->setCheckState(Qt::Checked);
+               noun_ = true;
+       }
+       change_adaptor();
+}
+
+
 void GuiCharacter::change_adaptor()
 {
        changed();
@@ -292,111 +329,187 @@ static int findPos2nd(QList<P> const & vec, B const & 
val)
 }
 
 
-void GuiCharacter::updateContents()
+namespace{
+FontState getBar(FontInfo const & fi)
 {
-       if (!autoapplyCB->isChecked()) {
-               bc().setValid(true);
-               return;
-       }
-       if (bufferview()->cursor().selection()) {
-               //FIXME: it would be better to check if each font attribute is 
constant
-               // for the selection range.
-               font_ = Font(ignore_font, ignore_language);
-       } else
-               font_ = bufferview()->cursor().current_font;
+       if (fi.underbar() == FONT_ON)
+               return UNDERBAR;
 
-       paramsToDialog(font_);
+       if (fi.uuline() == FONT_ON)
+               return UULINE;
+
+       if (fi.uwave() == FONT_ON)
+               return UWAVE;
+
+       if (fi.underbar() == FONT_IGNORE)
+               return IGNORE;
+
+       return NONE;
 }
 
 
-static FontState getBar(FontInfo const & fi)
+FontState getStrike(FontInfo const & fi)
 {
-       if (fi.emph() == FONT_TOGGLE)
-               return EMPH_TOGGLE;
+       if (fi.strikeout() == FONT_ON)
+               return STRIKEOUT;
 
-       if (fi.underbar() == FONT_TOGGLE)
-               return UNDERBAR_TOGGLE;
+       if (fi.xout() == FONT_ON)
+               return XOUT;
 
-       if (fi.strikeout() == FONT_TOGGLE)
-               return STRIKEOUT_TOGGLE;
+       if (fi.strikeout() == FONT_IGNORE)
+               return IGNORE;
 
-       if (fi.xout() == FONT_TOGGLE)
-               return XOUT_TOGGLE;
+       return NONE;
+}
 
-       if (fi.uuline() == FONT_TOGGLE)
-               return UULINE_TOGGLE;
 
-       if (fi.uwave() == FONT_TOGGLE)
-               return UWAVE_TOGGLE;
+Qt::CheckState getMarkupState(lyx::FontState fs)
+{
+       switch (fs) {
+       case FONT_OFF:
+               return Qt::Unchecked;
+       case FONT_ON:
+               return Qt::Checked;
+       case FONT_TOGGLE:
+       case FONT_INHERIT:
+       case FONT_IGNORE:
+       default:
+               return Qt::PartiallyChecked;
+       }
+}
+
+lyx::FontState setMarkupState(Qt::CheckState cs)
+{
+       switch (cs) {
+       case Qt::Unchecked:
+               return FONT_OFF;
+       case Qt::Checked:
+               return FONT_ON;
+       case Qt::PartiallyChecked:
+       default:
+               return FONT_IGNORE;
+       }
+}
 
-       if (fi.noun() == FONT_TOGGLE)
-               return NOUN_TOGGLE;
+} // end namespace anon
 
-       if (fi.emph() == FONT_IGNORE
-           && fi.underbar() == FONT_IGNORE
-           && fi.noun() == FONT_IGNORE)
-               return IGNORE;
 
-       return INHERIT;
+void GuiCharacter::updateContents()
+{
+       if (bufferview()->cursor().selection()) {
+               Font font = bufferview()->cursor().real_current_font;
+               FontInfo fi = font.fontInfo();
+               BufferParams const bp = buffer().masterParams();
+
+               // Check if each font attribute is constant for the selection 
range.
+               DocIterator from = bufferview()->cursor().selectionBegin();
+               DocIterator to = bufferview()->cursor().selectionEnd();
+               for (DocIterator dit = from ; dit != to && !dit.atEnd(); ) {
+                       if (!dit.inTexted()) {
+                               dit.forwardPos();
+                               continue;
+                       }
+                       Paragraph const & par = dit.paragraph();
+                       pos_type const pos = dit.pos();
+                       Font tmp = par.getFont(bp, pos, font);
+                       if (font.language() != tmp.language())
+                               font.setLanguage(ignore_language);
+                       if (fi.family() != tmp.fontInfo().family())
+                               font.fontInfo().setFamily(IGNORE_FAMILY);
+                       if (fi.series() != tmp.fontInfo().series())
+                               font.fontInfo().setSeries(IGNORE_SERIES);
+                       if (fi.shape() != tmp.fontInfo().shape())
+                               font.fontInfo().setShape(IGNORE_SHAPE);
+                       if (fi.size() != tmp.fontInfo().size())
+                               font.fontInfo().setSize(FONT_SIZE_IGNORE);
+                       if (fi.emph() != tmp.fontInfo().emph())
+                               font.fontInfo().setEmph(FONT_IGNORE);
+                       if (fi.noun() != tmp.fontInfo().noun())
+                               font.fontInfo().setNoun(FONT_IGNORE);
+                       if (fi.color() != tmp.fontInfo().color())
+                               font.fontInfo().setColor(Color_ignore);
+                       if (fi.underbar() != tmp.fontInfo().underbar()
+                           || fi.uuline() != tmp.fontInfo().uuline()
+                           || fi.uwave() != tmp.fontInfo().uwave())
+                               setBar(font.fontInfo(), IGNORE);
+                       if (fi.strikeout() != tmp.fontInfo().strikeout()
+                           || fi.xout() != tmp.fontInfo().xout())
+                               setStrike(font.fontInfo(), IGNORE);
+                       dit.forwardPos();
+               }
+               font_ = font;
+       } else
+               font_ = bufferview()->cursor().real_current_font;
+
+       paramsToDialog(font_);
 }
 
 
-static void setBar(FontInfo & fi, FontState val)
+void GuiCharacter::setBar(FontInfo & fi, FontState val)
 {
        switch (val) {
        case IGNORE:
-               fi.setEmph(FONT_IGNORE);
                fi.setUnderbar(FONT_IGNORE);
-               fi.setStrikeout(FONT_IGNORE);
-               fi.setXout(FONT_IGNORE);
                fi.setUuline(FONT_IGNORE);
                fi.setUwave(FONT_IGNORE);
-               fi.setNoun(FONT_IGNORE);
                break;
-
-       case EMPH_TOGGLE:
-               setBar(fi, INHERIT);
-               fi.setEmph(FONT_TOGGLE);
+       case UNDERBAR:
+               setBar(fi, NONE);
+               fi.setUnderbar(FONT_ON);
                break;
-
-       case UNDERBAR_TOGGLE:
-               setBar(fi, INHERIT);
-               fi.setUnderbar(FONT_TOGGLE);
+       case UULINE:
+               setBar(fi, NONE);
+               fi.setUuline(FONT_ON);
                break;
-
-       case STRIKEOUT_TOGGLE:
-               setBar(fi, INHERIT);
-               fi.setStrikeout(FONT_TOGGLE);
+       case UWAVE:
+               setBar(fi, NONE);
+               fi.setUwave(FONT_ON);
                break;
-
-       case XOUT_TOGGLE:
-               setBar(fi, INHERIT);
-               fi.setXout(FONT_TOGGLE);
+       case INHERIT:
+               fi.setUnderbar(FONT_INHERIT);
+               fi.setUuline(FONT_INHERIT);
+               fi.setUwave(FONT_INHERIT);
                break;
-
-       case UULINE_TOGGLE:
-               setBar(fi, INHERIT);
-               fi.setUuline(FONT_TOGGLE);
+       case NONE:
+               fi.setUnderbar(FONT_OFF);
+               fi.setUuline(FONT_OFF);
+               fi.setUwave(FONT_OFF);
                break;
-
-       case UWAVE_TOGGLE:
-               setBar(fi, INHERIT);
-               fi.setUwave(FONT_TOGGLE);
+       case XOUT:
+       case STRIKEOUT:
+       default:
                break;
+       }
+}
 
-       case NOUN_TOGGLE:
-               setBar(fi, INHERIT);
-               fi.setNoun(FONT_TOGGLE);
-               break;
 
+void GuiCharacter::setStrike(FontInfo & fi, FontState val)
+{
+       switch (val) {
+       case IGNORE:
+               fi.setStrikeout(FONT_IGNORE);
+               fi.setXout(FONT_IGNORE);
+               break;
+       case STRIKEOUT:
+               setStrike(fi, NONE);
+               fi.setStrikeout(FONT_ON);
+               break;
+       case XOUT:
+               setStrike(fi, NONE);
+               fi.setXout(FONT_ON);
+               break;
        case INHERIT:
-               fi.setEmph(FONT_INHERIT);
-               fi.setUnderbar(FONT_INHERIT);
                fi.setStrikeout(FONT_INHERIT);
                fi.setXout(FONT_INHERIT);
-               fi.setUuline(FONT_INHERIT);
-               fi.setUwave(FONT_INHERIT);
-               fi.setNoun(FONT_INHERIT);
+               break;
+       case NONE:
+               fi.setStrikeout(FONT_OFF);
+               fi.setXout(FONT_OFF);
+               break;
+       case UNDERBAR:
+       case UWAVE:
+       case UULINE:
+       default:
                break;
        }
 }
@@ -409,15 +522,18 @@ void GuiCharacter::paramsToDialog(Font const & font)
        seriesCO->setCurrentIndex(findPos2nd(series, fi.series()));
        shapeCO->setCurrentIndex(findPos2nd(shape, fi.shape()));
        sizeCO->setCurrentIndex(findPos2nd(size, fi.size()));
-       miscCO->setCurrentIndex(findPos2nd(bar, getBar(fi)));
+       ulineCO->setCurrentIndex(findPos2nd(bar, getBar(fi)));
+       strikeCO->setCurrentIndex(findPos2nd(strike, getStrike(fi)));
        
colorCO->setCurrentIndex(colorCO->findData(toqstr(lcolor.getLyXName(fi.color()))));
+       emphCB->setCheckState(getMarkupState(fi.emph()));
+       nounCB->setCheckState(getMarkupState(fi.noun()));
+       emph_ = emphCB->checkState() == Qt::Checked;
+       noun_ = nounCB->checkState() == Qt::Checked;
 
        // reset_language is a null pointer.
        QString const lang = (font.language() == reset_language)
                ? "reset" : toqstr(font.language()->lang());
        langCO->setCurrentIndex(findPos2nd(language, lang));
-
-       toggleallCB->setChecked(toggleall_);
 }
 
 
@@ -428,13 +544,14 @@ void GuiCharacter::applyView()
        fi.setSeries(series[seriesCO->currentIndex()].second);
        fi.setShape(shape[shapeCO->currentIndex()].second);
        fi.setSize(size[sizeCO->currentIndex()].second);
-       setBar(fi, bar[miscCO->currentIndex()].second);
+       fi.setEmph(setMarkupState(emphCB->checkState()));
+       fi.setNoun(setMarkupState(nounCB->checkState()));
+       setBar(fi, bar[ulineCO->currentIndex()].second);
+       setStrike(fi, strike[strikeCO->currentIndex()].second);
        
fi.setColor(lcolor.getFromLyXName(fromqstr(colorCO->itemData(colorCO->currentIndex()).toString())));
 
        font_.setLanguage(languages.getLanguage(
                fromqstr(language[langCO->currentIndex()].second)));
-
-       toggleall_ = toggleallCB->isChecked();
 }
 
 
@@ -462,14 +579,13 @@ bool GuiCharacter::initialiseParams(string const &)
 
 void GuiCharacter::dispatchParams()
 {
-       dispatch(FuncRequest(getLfun(), font_.toString(toggleall_)));
+       dispatch(FuncRequest(getLfun(), font_.toString(false)));
 }
 
 
 void GuiCharacter::saveSession(QSettings & settings) const
 {
        Dialog::saveSession(settings);
-       settings.setValue(sessionKey() + "/toggleall", 
toggleallCB->isChecked());
        settings.setValue(sessionKey() + "/autoapply", 
autoapplyCB->isChecked());
 }
 
@@ -478,8 +594,6 @@ void GuiCharacter::restoreSession()
 {
        Dialog::restoreSession();
        QSettings settings;
-       toggleallCB->setChecked(
-               settings.value(sessionKey() + "/toggleall").toBool());
        autoapplyCB->setChecked(
                settings.value(sessionKey() + "/autoapply").toBool());
 }
diff --git a/src/frontends/qt4/GuiCharacter.h b/src/frontends/qt4/GuiCharacter.h
index 8328211..e9148e7 100644
--- a/src/frontends/qt4/GuiCharacter.h
+++ b/src/frontends/qt4/GuiCharacter.h
@@ -31,21 +31,19 @@ enum FontState {
        ///
        IGNORE,
        ///
-       EMPH_TOGGLE,
+       UNDERBAR,
        ///
-       UNDERBAR_TOGGLE,
+       STRIKEOUT,
        ///
-       NOUN_TOGGLE,
+       XOUT,
        ///
-       STRIKEOUT_TOGGLE,
+       UULINE,
        ///
-       XOUT_TOGGLE,
+       UWAVE,
        ///
-       UULINE_TOGGLE,
+       INHERIT,
        ///
-       UWAVE_TOGGLE,
-       ///
-       INHERIT
+       NONE
 };
 
 typedef std::pair<QString, FontFamily> FamilyPair;
@@ -65,6 +63,8 @@ public:
 
 protected Q_SLOTS:
        void change_adaptor();
+       void on_emphCB_clicked();
+       void on_nounCB_clicked();
 
 private:
        /// \name Dialog inherited methods
@@ -82,20 +82,26 @@ private:
 
        ///
        void paramsToDialog(Font const & font);
+       ///
+       void setBar(FontInfo & fi, FontState val);
+       ///
+       void setStrike(FontInfo & fi, FontState val);
 
        QList<FamilyPair> family;
        QList<SeriesPair> series;
        QList<ShapePair>  shape;
        QList<SizePair>   size;
        QList<BarPair>    bar;
+       QList<BarPair>    strike;
        QList<ColorCode> color;
        QList<LanguagePair> language;
 
        ///
-       ///
        Font font_;
        ///
-       bool toggleall_;
+       bool emph_;
+       ///
+       bool noun_;
 };
 
 } // namespace frontend
diff --git a/src/frontends/qt4/ui/CharacterUi.ui 
b/src/frontends/qt4/ui/CharacterUi.ui
index eedcc0a..be2f851 100644
--- a/src/frontends/qt4/ui/CharacterUi.ui
+++ b/src/frontends/qt4/ui/CharacterUi.ui
@@ -1,325 +1,306 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
  <class>CharacterUi</class>
- <widget class="QDialog" name="CharacterUi" >
-  <property name="geometry" >
+ <widget class="QDialog" name="CharacterUi">
+  <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>325</width>
-    <height>231</height>
+    <width>523</width>
+    <height>352</height>
    </rect>
   </property>
-  <property name="windowTitle" >
+  <property name="windowTitle">
    <string/>
   </property>
-  <property name="sizeGripEnabled" >
+  <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" >
-   <property name="margin" >
-    <number>11</number>
-   </property>
-   <property name="spacing" >
-    <number>6</number>
-   </property>
-   <item>
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
+  <layout class="QGridLayout" name="gridLayout_6">
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Font Properties</string>
      </property>
-     <property name="spacing" >
-      <number>6</number>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="0" column="0">
+       <layout class="QGridLayout" name="gridLayout">
+        <item row="0" column="0">
+         <widget class="QLabel" name="familyLA">
+          <property name="toolTip">
+           <string>Font family</string>
+          </property>
+          <property name="text">
+           <string>Fa&amp;mily:</string>
+          </property>
+          <property name="buddy">
+           <cstring>familyCO</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QComboBox" name="familyCO">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Font family</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="seriesLA">
+          <property name="toolTip">
+           <string>Font series</string>
+          </property>
+          <property name="text">
+           <string>&amp;Series:</string>
+          </property>
+          <property name="buddy">
+           <cstring>seriesCO</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QComboBox" name="seriesCO">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Font series</string>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QLabel" name="shapeLA">
+          <property name="toolTip">
+           <string>Font shape</string>
+          </property>
+          <property name="text">
+           <string>S&amp;hape:</string>
+          </property>
+          <property name="buddy">
+           <cstring>shapeCO</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QComboBox" name="shapeCO">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Font shape</string>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0">
+         <widget class="QLabel" name="sizeLA">
+          <property name="toolTip">
+           <string>Font size</string>
+          </property>
+          <property name="text">
+           <string>Si&amp;ze:</string>
+          </property>
+          <property name="buddy">
+           <cstring>sizeCO</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QComboBox" name="sizeCO">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Font size</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="title">
+      <string>Decoration</string>
      </property>
+     <layout class="QGridLayout" name="gridLayout_4">
+      <item row="0" column="0">
+       <layout class="QGridLayout" name="gridLayout_3">
+        <item row="0" column="0">
+         <widget class="QLabel" name="colorLA">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <property name="toolTip">
+           <string>Font color</string>
+          </property>
+          <property name="text">
+           <string>&amp;Color:</string>
+          </property>
+          <property name="buddy">
+           <cstring>colorCO</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QComboBox" name="colorCO">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Font color</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="ulineLA">
+          <property name="text">
+           <string>U&amp;nderlining:</string>
+          </property>
+          <property name="buddy">
+           <cstring>ulineCO</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QComboBox" name="ulineCO">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Other font settings</string>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QLabel" name="strikeLA">
+          <property name="text">
+           <string>S&amp;trikethrough:</string>
+          </property>
+          <property name="buddy">
+           <cstring>strikeCO</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QComboBox" name="strikeCO">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip">
+           <string>Other font settings</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout">
      <item>
-      <layout class="QGridLayout" >
-       <property name="margin" >
-        <number>0</number>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
        </property>
-       <property name="spacing" >
-        <number>6</number>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>20</height>
+        </size>
        </property>
-       <item row="0" column="0" >
-        <widget class="QLabel" name="familyLA" >
-         <property name="toolTip" >
-          <string>Font family</string>
-         </property>
-         <property name="text" >
-          <string>&amp;Family:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>familyCO</cstring>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="1" >
-        <widget class="QComboBox" name="shapeCO" >
-         <property name="sizePolicy" >
-          <sizepolicy>
-           <hsizetype>3</hsizetype>
-           <vsizetype>0</vsizetype>
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="toolTip" >
-          <string>Font shape</string>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="0" >
-        <widget class="QLabel" name="shapeLA" >
-         <property name="toolTip" >
-          <string>Font shape</string>
-         </property>
-         <property name="text" >
-          <string>S&amp;hape:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>shapeCO</cstring>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="1" >
-        <widget class="QComboBox" name="seriesCO" >
-         <property name="sizePolicy" >
-          <sizepolicy>
-           <hsizetype>3</hsizetype>
-           <vsizetype>0</vsizetype>
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="toolTip" >
-          <string>Font series</string>
-         </property>
-        </widget>
-       </item>
-       <item row="4" column="1" >
-        <widget class="QComboBox" name="langCO" >
-         <property name="sizePolicy" >
-          <sizepolicy>
-           <hsizetype>3</hsizetype>
-           <vsizetype>0</vsizetype>
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="toolTip" >
+      </spacer>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="langLA">
+         <property name="toolTip">
           <string>Language</string>
          </property>
-        </widget>
-       </item>
-       <item row="0" column="1" >
-        <widget class="QComboBox" name="familyCO" >
-         <property name="sizePolicy" >
-          <sizepolicy>
-           <hsizetype>3</hsizetype>
-           <vsizetype>0</vsizetype>
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+         <property name="text">
+          <string>&amp;Language:</string>
          </property>
-         <property name="toolTip" >
-          <string>Font family</string>
+         <property name="buddy">
+          <cstring>langCO</cstring>
          </property>
         </widget>
        </item>
-       <item row="3" column="1" >
-        <widget class="QComboBox" name="colorCO" >
-         <property name="sizePolicy" >
-          <sizepolicy>
-           <hsizetype>3</hsizetype>
-           <vsizetype>0</vsizetype>
+       <item>
+        <widget class="QComboBox" name="langCO">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
          </property>
-         <property name="toolTip" >
-          <string>Font color</string>
-         </property>
-        </widget>
-       </item>
-       <item row="4" column="0" >
-        <widget class="QLabel" name="langLA" >
-         <property name="toolTip" >
+         <property name="toolTip">
           <string>Language</string>
          </property>
-         <property name="text" >
-          <string>&amp;Language:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>langCO</cstring>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="0" >
-        <widget class="QLabel" name="seriesLA" >
-         <property name="toolTip" >
-          <string>Font series</string>
-         </property>
-         <property name="text" >
-          <string>&amp;Series:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>seriesCO</cstring>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="0" >
-        <widget class="QLabel" name="colorLA" >
-         <property name="enabled" >
-          <bool>true</bool>
-         </property>
-         <property name="toolTip" >
-          <string>Font color</string>
-         </property>
-         <property name="text" >
-          <string>&amp;Color:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>colorCO</cstring>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item>
-      <layout class="QVBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <widget class="QGroupBox" name="sizeGB" >
-         <property name="title" >
-          <string>Never Toggled</string>
-         </property>
-         <layout class="QHBoxLayout" >
-          <property name="margin" >
-           <number>11</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
-          <item>
-           <widget class="QLabel" name="sizeLA" >
-            <property name="toolTip" >
-             <string>Font size</string>
-            </property>
-            <property name="text" >
-             <string>Si&amp;ze:</string>
-            </property>
-            <property name="buddy" >
-             <cstring>sizeCO</cstring>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QComboBox" name="sizeCO" >
-            <property name="sizePolicy" >
-             <sizepolicy>
-              <hsizetype>3</hsizetype>
-              <vsizetype>0</vsizetype>
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="toolTip" >
-             <string>Font size</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
-       <item>
-        <widget class="QGroupBox" name="miscGB" >
-         <property name="toolTip" >
-          <string>Other font settings</string>
-         </property>
-         <property name="title" >
-          <string>Always Toggled</string>
-         </property>
-         <layout class="QHBoxLayout" >
-          <property name="margin" >
-           <number>11</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
-          <item>
-           <widget class="QLabel" name="miscLA" >
-            <property name="text" >
-             <string>&amp;Misc:</string>
-            </property>
-            <property name="buddy" >
-             <cstring>miscCO</cstring>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QComboBox" name="miscCO" >
-            <property name="sizePolicy" >
-             <sizepolicy>
-              <hsizetype>3</hsizetype>
-              <vsizetype>0</vsizetype>
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>           
-            <property name="toolTip" >
-             <string>Other font settings</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
         </widget>
        </item>
       </layout>
      </item>
     </layout>
    </item>
-   <item>
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
+   <item row="1" column="1">
+    <widget class="QGroupBox" name="groupBox_3">
+     <property name="title">
+      <string>Semantic Markup</string>
      </property>
-     <item>
-      <widget class="QCheckBox" name="toggleallCB" >
-       <property name="toolTip" >
-        <string>toggle font on all of the above</string>
-       </property>
-       <property name="text" >
-        <string>&amp;Toggle all</string>
-       </property>
-      </widget>
-     </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>
+     <layout class="QGridLayout" name="gridLayout_5">
+      <item row="0" column="0">
+       <widget class="QCheckBox" name="emphCB">
+        <property name="text">
+         <string>&amp;Emphasized</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QCheckBox" name="nounCB">
+        <property name="text">
+         <string>&amp;Noun</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
    </item>
-   <item>
+   <item row="2" column="0">
     <spacer>
-     <property name="orientation" >
+     <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
-     <property name="sizeType" >
+     <property name="sizeType">
       <enum>QSizePolicy::Expanding</enum>
      </property>
-     <property name="sizeHint" >
+     <property name="sizeHint" stdset="0">
       <size>
        <width>20</width>
        <height>20</height>
@@ -327,23 +308,42 @@
      </property>
     </spacer>
    </item>
-   <item>
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
+   <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="spacing" >
-      <number>6</number>
+     <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" >
+       <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
-       <property name="sizeType" >
+       <property name="sizeType">
         <enum>QSizePolicy::Expanding</enum>
        </property>
-       <property name="sizeHint" >
+       <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>20</height>
@@ -352,34 +352,34 @@
       </spacer>
      </item>
      <item>
-      <widget class="QPushButton" name="okPB" >
-       <property name="text" >
+      <widget class="QPushButton" name="okPB">
+       <property name="text">
         <string>&amp;OK</string>
        </property>
-       <property name="default" >
+       <property name="default">
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QPushButton" name="applyPB" >
-       <property name="text" >
+      <widget class="QPushButton" name="applyPB">
+       <property name="text">
         <string>&amp;Apply</string>
        </property>
-       <property name="autoDefault" >
+       <property name="autoDefault">
         <bool>false</bool>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QPushButton" name="closePB" >
-       <property name="text" >
+      <widget class="QPushButton" name="closePB">
+       <property name="text">
         <string>Close</string>
        </property>
-       <property name="autoDefault" >
+       <property name="autoDefault">
         <bool>false</bool>
        </property>
-       <property name="default" >
+       <property name="default">
         <bool>false</bool>
        </property>
       </widget>
@@ -394,16 +394,12 @@
   <tabstop>shapeCO</tabstop>
   <tabstop>colorCO</tabstop>
   <tabstop>langCO</tabstop>
-  <tabstop>toggleallCB</tabstop>
-  <tabstop>sizeCO</tabstop>
-  <tabstop>miscCO</tabstop>
-  <tabstop>autoapplyCB</tabstop>
   <tabstop>okPB</tabstop>
   <tabstop>applyPB</tabstop>
   <tabstop>closePB</tabstop>
  </tabstops>
  <includes>
-  <include location="local" >qt_i18n.h</include>
+  <include location="local">qt_i18n.h</include>
  </includes>
  <resources/>
  <connections/>

Reply via email to