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 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)
}
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()
{
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);
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().current_font;
font_ = bufferview()->cursor().real_current_font;
paramsToDialog(font_);
}
static FontState getBar(FontInfo const & fi)
{
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)
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);
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:
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.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;
}
}
@ -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());
}

View File

@ -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

View File

@ -1,349 +1,235 @@
<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>
</property>
<item>
<layout class="QGridLayout" >
<property name="margin" >
<number>0</number>
</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>
<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="spacing" >
<number>6</number>
<property name="text">
<string>Fa&amp;mily:</string>
</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 name="buddy">
<cstring>familyCO</cstring>
</property>
<property name="spacing" >
<number>6</number>
</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>
<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>
<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>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
<item row="0" column="1">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Decoration</string>
</property>
<property name="spacing" >
<number>6</number>
</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_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>
<spacer>
<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 row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<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 +238,148 @@
</spacer>
</item>
<item>
<widget class="QPushButton" name="okPB" >
<property name="text" >
<layout class="QHBoxLayout" name="horizontalLayout">
<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>
</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/>