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).
This commit is contained in:
Juergen Spitzmueller 2018-05-04 19:34:09 +02:00
parent 9fd94a2dd0
commit fb393b450d
3 changed files with 575 additions and 459 deletions

View File

@ -6,6 +6,7 @@
* \author Angus Leeming * \author Angus Leeming
* \author Edwin Leuven * \author Edwin Leuven
* \author John Levon * \author John Levon
* \author Jürgen Spitzmüller
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
@ -81,18 +82,27 @@ static QList<BarPair> barData()
{ {
QList<BarPair> bars; QList<BarPair> bars;
bars << BarPair(qt_("No change"), IGNORE); bars << BarPair(qt_("No change"), IGNORE);
bars << BarPair(qt_("Emph"), EMPH_TOGGLE); bars << BarPair(qt_("(Without)[[underlining]]"), NONE);
bars << BarPair(qt_("Underbar"), UNDERBAR_TOGGLE); bars << BarPair(qt_("Single"), UNDERBAR);
bars << BarPair(qt_("Double underbar"), UULINE_TOGGLE); bars << BarPair(qt_("Double"), UULINE);
bars << BarPair(qt_("Wavy underbar"), UWAVE_TOGGLE); bars << BarPair(qt_("Wavy"), UWAVE);
bars << BarPair(qt_("Strike out"), STRIKEOUT_TOGGLE); bars << BarPair(qt_("Reset"), INHERIT);
bars << BarPair(qt_("Cross out"), XOUT_TOGGLE);
bars << BarPair(qt_("Noun"), NOUN_TOGGLE);
bars << BarPair(qt_("Reset"), INHERIT);
return bars; 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() static QList<ColorCode> colorData()
{ {
QList<ColorCode> colors; QList<ColorCode> colors;
@ -196,8 +206,8 @@ void fillComboColor(QComboBox * combo, QList<T> const & list)
} // namespace } // namespace
GuiCharacter::GuiCharacter(GuiView & lv) GuiCharacter::GuiCharacter(GuiView & lv)
: GuiDialog(lv, "character", qt_("Text Style")), font_(ignore_font, ignore_language), : GuiDialog(lv, "character", qt_("Text Style")),
toggleall_(false) font_(ignore_font, ignore_language), emph_(false), noun_(false)
{ {
setupUi(this); setupUi(this);
@ -207,20 +217,22 @@ GuiCharacter::GuiCharacter(GuiView & lv)
connect(autoapplyCB, SIGNAL(stateChanged(int)), this, connect(autoapplyCB, SIGNAL(stateChanged(int)), this,
SLOT(slotAutoApply())); 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(sizeCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
connect(familyCO, 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(seriesCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
connect(shapeCO, 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(colorCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
connect(langCO, 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(); family = familyData();
series = seriesData(); series = seriesData();
shape = shapeData(); shape = shapeData();
size = sizeData(); size = sizeData();
bar = barData(); bar = barData();
strike = strikeData();
color = colorData(); color = colorData();
qSort(color.begin(), color.end(), ColorSorter); qSort(color.begin(), color.end(), ColorSorter);
@ -232,7 +244,8 @@ GuiCharacter::GuiCharacter(GuiView & lv)
fillCombo(seriesCO, series); fillCombo(seriesCO, series);
fillCombo(sizeCO, size); fillCombo(sizeCO, size);
fillCombo(shapeCO, shape); fillCombo(shapeCO, shape);
fillCombo(miscCO, bar); fillCombo(ulineCO, bar);
fillCombo(strikeCO, strike);
fillComboColor(colorCO, color); fillComboColor(colorCO, color);
fillCombo(langCO, language); fillCombo(langCO, language);
@ -245,10 +258,12 @@ GuiCharacter::GuiCharacter(GuiView & lv)
bc().addReadOnly(seriesCO); bc().addReadOnly(seriesCO);
bc().addReadOnly(sizeCO); bc().addReadOnly(sizeCO);
bc().addReadOnly(shapeCO); bc().addReadOnly(shapeCO);
bc().addReadOnly(miscCO); bc().addReadOnly(ulineCO);
bc().addReadOnly(strikeCO);
bc().addReadOnly(nounCB);
bc().addReadOnly(emphCB);
bc().addReadOnly(langCO); bc().addReadOnly(langCO);
bc().addReadOnly(colorCO); bc().addReadOnly(colorCO);
bc().addReadOnly(toggleallCB);
bc().addReadOnly(autoapplyCB); bc().addReadOnly(autoapplyCB);
#ifdef Q_OS_MAC #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() void GuiCharacter::change_adaptor()
{ {
changed(); changed();
@ -292,111 +329,187 @@ static int findPos2nd(QList<P> const & vec, B const & val)
} }
namespace{
FontState getBar(FontInfo const & fi)
{
if (fi.underbar() == FONT_ON)
return UNDERBAR;
if (fi.uuline() == FONT_ON)
return UULINE;
if (fi.uwave() == FONT_ON)
return UWAVE;
if (fi.underbar() == FONT_IGNORE)
return IGNORE;
return NONE;
}
FontState getStrike(FontInfo const & fi)
{
if (fi.strikeout() == FONT_ON)
return STRIKEOUT;
if (fi.xout() == FONT_ON)
return XOUT;
if (fi.strikeout() == FONT_IGNORE)
return IGNORE;
return NONE;
}
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;
}
}
} // end namespace anon
void GuiCharacter::updateContents() void GuiCharacter::updateContents()
{ {
if (!autoapplyCB->isChecked()) {
bc().setValid(true);
return;
}
if (bufferview()->cursor().selection()) { if (bufferview()->cursor().selection()) {
//FIXME: it would be better to check if each font attribute is constant Font font = bufferview()->cursor().real_current_font;
// for the selection range. FontInfo fi = font.fontInfo();
font_ = Font(ignore_font, ignore_language); 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 } else
font_ = bufferview()->cursor().current_font; font_ = bufferview()->cursor().real_current_font;
paramsToDialog(font_); paramsToDialog(font_);
} }
static FontState getBar(FontInfo const & fi) void GuiCharacter::setBar(FontInfo & fi, FontState val)
{
if (fi.emph() == FONT_TOGGLE)
return EMPH_TOGGLE;
if (fi.underbar() == FONT_TOGGLE)
return UNDERBAR_TOGGLE;
if (fi.strikeout() == FONT_TOGGLE)
return STRIKEOUT_TOGGLE;
if (fi.xout() == FONT_TOGGLE)
return XOUT_TOGGLE;
if (fi.uuline() == FONT_TOGGLE)
return UULINE_TOGGLE;
if (fi.uwave() == FONT_TOGGLE)
return UWAVE_TOGGLE;
if (fi.noun() == FONT_TOGGLE)
return NOUN_TOGGLE;
if (fi.emph() == FONT_IGNORE
&& fi.underbar() == FONT_IGNORE
&& fi.noun() == FONT_IGNORE)
return IGNORE;
return INHERIT;
}
static void setBar(FontInfo & fi, FontState val)
{ {
switch (val) { switch (val) {
case IGNORE: case IGNORE:
fi.setEmph(FONT_IGNORE);
fi.setUnderbar(FONT_IGNORE); fi.setUnderbar(FONT_IGNORE);
fi.setStrikeout(FONT_IGNORE);
fi.setXout(FONT_IGNORE);
fi.setUuline(FONT_IGNORE); fi.setUuline(FONT_IGNORE);
fi.setUwave(FONT_IGNORE); fi.setUwave(FONT_IGNORE);
fi.setNoun(FONT_IGNORE);
break; break;
case UNDERBAR:
case EMPH_TOGGLE: setBar(fi, NONE);
setBar(fi, INHERIT); fi.setUnderbar(FONT_ON);
fi.setEmph(FONT_TOGGLE);
break; break;
case UULINE:
case UNDERBAR_TOGGLE: setBar(fi, NONE);
setBar(fi, INHERIT); fi.setUuline(FONT_ON);
fi.setUnderbar(FONT_TOGGLE);
break; break;
case UWAVE:
case STRIKEOUT_TOGGLE: setBar(fi, NONE);
setBar(fi, INHERIT); fi.setUwave(FONT_ON);
fi.setStrikeout(FONT_TOGGLE);
break; break;
case XOUT_TOGGLE:
setBar(fi, INHERIT);
fi.setXout(FONT_TOGGLE);
break;
case UULINE_TOGGLE:
setBar(fi, INHERIT);
fi.setUuline(FONT_TOGGLE);
break;
case UWAVE_TOGGLE:
setBar(fi, INHERIT);
fi.setUwave(FONT_TOGGLE);
break;
case NOUN_TOGGLE:
setBar(fi, INHERIT);
fi.setNoun(FONT_TOGGLE);
break;
case INHERIT: case INHERIT:
fi.setEmph(FONT_INHERIT);
fi.setUnderbar(FONT_INHERIT); fi.setUnderbar(FONT_INHERIT);
fi.setStrikeout(FONT_INHERIT);
fi.setXout(FONT_INHERIT);
fi.setUuline(FONT_INHERIT); fi.setUuline(FONT_INHERIT);
fi.setUwave(FONT_INHERIT); fi.setUwave(FONT_INHERIT);
fi.setNoun(FONT_INHERIT); break;
case NONE:
fi.setUnderbar(FONT_OFF);
fi.setUuline(FONT_OFF);
fi.setUwave(FONT_OFF);
break;
case XOUT:
case STRIKEOUT:
default:
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.setStrikeout(FONT_INHERIT);
fi.setXout(FONT_INHERIT);
break;
case NONE:
fi.setStrikeout(FONT_OFF);
fi.setXout(FONT_OFF);
break;
case UNDERBAR:
case UWAVE:
case UULINE:
default:
break; break;
} }
} }
@ -409,15 +522,18 @@ void GuiCharacter::paramsToDialog(Font const & font)
seriesCO->setCurrentIndex(findPos2nd(series, fi.series())); seriesCO->setCurrentIndex(findPos2nd(series, fi.series()));
shapeCO->setCurrentIndex(findPos2nd(shape, fi.shape())); shapeCO->setCurrentIndex(findPos2nd(shape, fi.shape()));
sizeCO->setCurrentIndex(findPos2nd(size, fi.size())); 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())))); 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. // reset_language is a null pointer.
QString const lang = (font.language() == reset_language) QString const lang = (font.language() == reset_language)
? "reset" : toqstr(font.language()->lang()); ? "reset" : toqstr(font.language()->lang());
langCO->setCurrentIndex(findPos2nd(language, lang)); langCO->setCurrentIndex(findPos2nd(language, lang));
toggleallCB->setChecked(toggleall_);
} }
@ -428,13 +544,14 @@ void GuiCharacter::applyView()
fi.setSeries(series[seriesCO->currentIndex()].second); fi.setSeries(series[seriesCO->currentIndex()].second);
fi.setShape(shape[shapeCO->currentIndex()].second); fi.setShape(shape[shapeCO->currentIndex()].second);
fi.setSize(size[sizeCO->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()))); fi.setColor(lcolor.getFromLyXName(fromqstr(colorCO->itemData(colorCO->currentIndex()).toString())));
font_.setLanguage(languages.getLanguage( font_.setLanguage(languages.getLanguage(
fromqstr(language[langCO->currentIndex()].second))); fromqstr(language[langCO->currentIndex()].second)));
toggleall_ = toggleallCB->isChecked();
} }
@ -462,14 +579,13 @@ bool GuiCharacter::initialiseParams(string const &)
void GuiCharacter::dispatchParams() void GuiCharacter::dispatchParams()
{ {
dispatch(FuncRequest(getLfun(), font_.toString(toggleall_))); dispatch(FuncRequest(getLfun(), font_.toString(false)));
} }
void GuiCharacter::saveSession(QSettings & settings) const void GuiCharacter::saveSession(QSettings & settings) const
{ {
Dialog::saveSession(settings); Dialog::saveSession(settings);
settings.setValue(sessionKey() + "/toggleall", toggleallCB->isChecked());
settings.setValue(sessionKey() + "/autoapply", autoapplyCB->isChecked()); settings.setValue(sessionKey() + "/autoapply", autoapplyCB->isChecked());
} }
@ -478,8 +594,6 @@ void GuiCharacter::restoreSession()
{ {
Dialog::restoreSession(); Dialog::restoreSession();
QSettings settings; QSettings settings;
toggleallCB->setChecked(
settings.value(sessionKey() + "/toggleall").toBool());
autoapplyCB->setChecked( autoapplyCB->setChecked(
settings.value(sessionKey() + "/autoapply").toBool()); settings.value(sessionKey() + "/autoapply").toBool());
} }

View File

@ -31,21 +31,19 @@ enum FontState {
/// ///
IGNORE, IGNORE,
/// ///
EMPH_TOGGLE, UNDERBAR,
/// ///
UNDERBAR_TOGGLE, STRIKEOUT,
/// ///
NOUN_TOGGLE, XOUT,
/// ///
STRIKEOUT_TOGGLE, UULINE,
/// ///
XOUT_TOGGLE, UWAVE,
/// ///
UULINE_TOGGLE, INHERIT,
/// ///
UWAVE_TOGGLE, NONE
///
INHERIT
}; };
typedef std::pair<QString, FontFamily> FamilyPair; typedef std::pair<QString, FontFamily> FamilyPair;
@ -65,6 +63,8 @@ public:
protected Q_SLOTS: protected Q_SLOTS:
void change_adaptor(); void change_adaptor();
void on_emphCB_clicked();
void on_nounCB_clicked();
private: private:
/// \name Dialog inherited methods /// \name Dialog inherited methods
@ -82,20 +82,26 @@ private:
/// ///
void paramsToDialog(Font const & font); void paramsToDialog(Font const & font);
///
void setBar(FontInfo & fi, FontState val);
///
void setStrike(FontInfo & fi, FontState val);
QList<FamilyPair> family; QList<FamilyPair> family;
QList<SeriesPair> series; QList<SeriesPair> series;
QList<ShapePair> shape; QList<ShapePair> shape;
QList<SizePair> size; QList<SizePair> size;
QList<BarPair> bar; QList<BarPair> bar;
QList<BarPair> strike;
QList<ColorCode> color; QList<ColorCode> color;
QList<LanguagePair> language; QList<LanguagePair> language;
///
/// ///
Font font_; Font font_;
/// ///
bool toggleall_; bool emph_;
///
bool noun_;
}; };
} // namespace frontend } // namespace frontend

View File

@ -1,349 +1,235 @@
<ui version="4.0" > <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CharacterUi</class> <class>CharacterUi</class>
<widget class="QDialog" name="CharacterUi" > <widget class="QDialog" name="CharacterUi">
<property name="geometry" > <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>325</width> <width>523</width>
<height>231</height> <height>352</height>
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle">
<string/> <string/>
</property> </property>
<property name="sizeGripEnabled" > <property name="sizeGripEnabled">
<bool>true</bool> <bool>true</bool>
</property> </property>
<layout class="QVBoxLayout" > <layout class="QGridLayout" name="gridLayout_6">
<property name="margin" > <item row="0" column="0">
<number>11</number> <widget class="QGroupBox" name="groupBox">
</property> <property name="title">
<property name="spacing" > <string>Font Properties</string>
<number>6</number>
</property>
<item>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property> </property>
<property name="spacing" > <layout class="QGridLayout" name="gridLayout_2">
<number>6</number> <item row="0" column="0">
</property> <layout class="QGridLayout" name="gridLayout">
<item> <item row="0" column="0">
<layout class="QGridLayout" > <widget class="QLabel" name="familyLA">
<property name="margin" > <property name="toolTip">
<number>0</number> <string>Font family</string>
</property>
<property name="spacing" >
<number>6</number>
</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" >
<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>
<property name="toolTip" >
<string>Font family</string>
</property>
</widget>
</item>
<item row="3" column="1" >
<widget class="QComboBox" name="colorCO" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>3</hsizetype>
<vsizetype>0</vsizetype>
<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" >
<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>
<property name="spacing" > <property name="text">
<number>6</number> <string>Fa&amp;mily:</string>
</property> </property>
<item> <property name="buddy">
<widget class="QLabel" name="sizeLA" > <cstring>familyCO</cstring>
<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>
<property name="spacing" > </widget>
<number>6</number> </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>
<item> <property name="toolTip">
<widget class="QLabel" name="miscLA" > <string>Font family</string>
<property name="text" > </property>
<string>&amp;Misc:</string> </widget>
</property> </item>
<property name="buddy" > <item row="1" column="0">
<cstring>miscCO</cstring> <widget class="QLabel" name="seriesLA">
</property> <property name="toolTip">
</widget> <string>Font series</string>
</item> </property>
<item> <property name="text">
<widget class="QComboBox" name="miscCO" > <string>&amp;Series:</string>
<property name="sizePolicy" > </property>
<sizepolicy> <property name="buddy">
<hsizetype>3</hsizetype> <cstring>seriesCO</cstring>
<vsizetype>0</vsizetype> </property>
<horstretch>0</horstretch> </widget>
<verstretch>0</verstretch> </item>
</sizepolicy> <item row="1" column="1">
</property> <widget class="QComboBox" name="seriesCO">
<property name="toolTip" > <property name="sizePolicy">
<string>Other font settings</string> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
</widget> <verstretch>0</verstretch>
</item> </sizepolicy>
</layout> </property>
</widget> <property name="toolTip">
</item> <string>Font series</string>
</layout> </property>
</item> </widget>
</layout> </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>
<item> <item row="0" column="1">
<layout class="QHBoxLayout" > <widget class="QGroupBox" name="groupBox_2">
<property name="margin" > <property name="title">
<number>0</number> <string>Decoration</string>
</property> </property>
<property name="spacing" > <layout class="QGridLayout" name="gridLayout_4">
<number>6</number> <item row="0" column="0">
</property> <layout class="QGridLayout" name="gridLayout_3">
<item> <item row="0" column="0">
<widget class="QCheckBox" name="toggleallCB" > <widget class="QLabel" name="colorLA">
<property name="toolTip" > <property name="enabled">
<string>toggle font on all of the above</string> <bool>true</bool>
</property> </property>
<property name="text" > <property name="toolTip">
<string>&amp;Toggle all</string> <string>Font color</string>
</property> </property>
</widget> <property name="text">
</item> <string>&amp;Color:</string>
<item> </property>
<widget class="QCheckBox" name="autoapplyCB" > <property name="buddy">
<property name="toolTip" > <cstring>colorCO</cstring>
<string>Apply each change automatically</string> </property>
</property> </widget>
<property name="text" > </item>
<string>Apply changes &amp;immediately</string> <item row="0" column="1">
</property> <widget class="QComboBox" name="colorCO">
</widget> <property name="sizePolicy">
</item> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
</layout> <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>
<item> <item row="1" column="0">
<spacer> <layout class="QVBoxLayout" name="verticalLayout">
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType" >
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" >
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item> <item>
<spacer> <spacer name="verticalSpacer">
<property name="orientation" > <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType" > <property name="sizeHint" stdset="0">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" >
<size> <size>
<width>20</width> <width>20</width>
<height>20</height> <height>20</height>
@ -352,34 +238,148 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QPushButton" name="okPB" > <layout class="QHBoxLayout" name="horizontalLayout">
<property name="text" > <item>
<widget class="QLabel" name="langLA">
<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>
<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>Language</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Semantic Markup</string>
</property>
<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 row="2" column="0">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</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 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="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="QPushButton" name="okPB">
<property name="text">
<string>&amp;OK</string> <string>&amp;OK</string>
</property> </property>
<property name="default" > <property name="default">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="applyPB" > <widget class="QPushButton" name="applyPB">
<property name="text" > <property name="text">
<string>&amp;Apply</string> <string>&amp;Apply</string>
</property> </property>
<property name="autoDefault" > <property name="autoDefault">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="closePB" > <widget class="QPushButton" name="closePB">
<property name="text" > <property name="text">
<string>Close</string> <string>Close</string>
</property> </property>
<property name="autoDefault" > <property name="autoDefault">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="default" > <property name="default">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
@ -394,16 +394,12 @@
<tabstop>shapeCO</tabstop> <tabstop>shapeCO</tabstop>
<tabstop>colorCO</tabstop> <tabstop>colorCO</tabstop>
<tabstop>langCO</tabstop> <tabstop>langCO</tabstop>
<tabstop>toggleallCB</tabstop>
<tabstop>sizeCO</tabstop>
<tabstop>miscCO</tabstop>
<tabstop>autoapplyCB</tabstop>
<tabstop>okPB</tabstop> <tabstop>okPB</tabstop>
<tabstop>applyPB</tabstop> <tabstop>applyPB</tabstop>
<tabstop>closePB</tabstop> <tabstop>closePB</tabstop>
</tabstops> </tabstops>
<includes> <includes>
<include location="local" >qt_i18n.h</include> <include location="local">qt_i18n.h</include>
</includes> </includes>
<resources/> <resources/>
<connections/> <connections/>