This patch addresses the usability bugs discussed in this thread:
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg121160.html
and largely implements Helge's suggestions. (Helge often seems to have
good ideas on these things.) The main change is that the "Default"
button is now a radio button like the rest, so you don't have to uncheck
Default to be allowed to check something else. The layout that happens
to be the default isn't treated specially except insofar as it is
italicized, so as to indicate which one it is.
Richard
--
==================================================================
Richard G Heck, Jr
Professor of Philosophy
Brown University
http://frege.brown.edu/heck/
==================================================================
Get my public key from http://sks.keyserver.penguin.de
Hash: 0x1DE91F1E66FFBDEC
Learn how to sign your email using Thunderbird and GnuPG at:
http://dudu.dyn.2-h.org/nist/gpg-enigmail-howto
Index: src/frontends/qt4/QParagraph.cpp
===================================================================
--- src/frontends/qt4/QParagraph.cpp (revision 18842)
+++ src/frontends/qt4/QParagraph.cpp (working copy)
@@ -50,7 +50,7 @@
connect(applyPB, SIGNAL(clicked()), form_, SLOT(slotApply()));
connect(closePB, SIGNAL(clicked()), form_, SLOT(slotClose()));
connect(restorePB, SIGNAL(clicked()), form_, SLOT(slotRestore()));
- connect(alignDefaultCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
+ connect(alignDefaultRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
connect(alignJustRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
connect(alignLeftRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
connect(alignRightRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
@@ -77,9 +77,10 @@
" items is used."
));
- radioMap[LYX_ALIGN_BLOCK] = alignJustRB;
- radioMap[LYX_ALIGN_LEFT] = alignLeftRB;
- radioMap[LYX_ALIGN_RIGHT] = alignRightRB;
+ radioMap[LYX_ALIGN_LAYOUT] = alignDefaultRB;
+ radioMap[LYX_ALIGN_BLOCK] = alignJustRB;
+ radioMap[LYX_ALIGN_LEFT] = alignLeftRB;
+ radioMap[LYX_ALIGN_RIGHT] = alignRightRB;
radioMap[LYX_ALIGN_CENTER] = alignCenterRB;
}
@@ -105,35 +106,36 @@
void QParagraphDialog::checkAlignmentRadioButtons() {
- if (alignDefaultCB->isChecked()) {
- QPRadioMap::const_iterator it = radioMap.begin();
- for (; it != radioMap.end(); ++it)
- it->second->setDisabled(true);
- } else {
- LyXAlignment alignPossible = form_->controller().alignPossible();
- QPRadioMap::const_iterator it = radioMap.begin();
- for (; it != radioMap.end(); ++it)
- it->second->setEnabled(it->first & alignPossible);
+ LyXAlignment const alignPossible = form_->controller().alignPossible();
+ LyXAlignment const defaultAlignment = form_->controller().alignDefault();
+ QPRadioMap::iterator it = radioMap.begin();
+ for (; it != radioMap.end(); ++it) {
+ it->second->setEnabled((it->first & alignPossible) ||
+ (it->first == LYX_ALIGN_LAYOUT));
+ QFont newFont = it->second->font();
+ newFont.setItalic((it->first == defaultAlignment) ||
+ (it->first == LYX_ALIGN_LAYOUT));
+ it->second->setFont(newFont);
}
}
-void QParagraphDialog::on_alignDefaultCB_toggled(bool)
-{
- checkAlignmentRadioButtons();
- alignmentToRadioButtons();
-}
-
-
void QParagraphDialog::alignmentToRadioButtons(LyXAlignment align)
{
- if (align == LYX_ALIGN_LAYOUT)
- align = form_->controller().alignDefault();
+ LyXAlignment const defaultAlignment = form_->controller().alignDefault();
+ if (align == LYX_ALIGN_LAYOUT || align == defaultAlignment) {
+ alignDefaultRB->blockSignals(true);
+ alignDefaultRB->setChecked(true);
+ alignDefaultRB->blockSignals(false);
+ return;
+ }
QPRadioMap::const_iterator it = radioMap.begin();
for (;it != radioMap.end(); ++it) {
if (align == it->first) {
+ it->second->blockSignals(true);
it->second->setChecked(true);
+ it->second->blockSignals(false);
return;
}
}
@@ -145,8 +147,6 @@
LyXAlignment QParagraphDialog::getAlignmentFromDialog()
{
- if (alignDefaultCB->isChecked())
- return LYX_ALIGN_LAYOUT;
LyXAlignment alignment = LYX_ALIGN_NONE;
QPRadioMap::const_iterator it = radioMap.begin();
for (; it != radioMap.end(); ++it) {
@@ -155,8 +155,6 @@
break;
}
}
- if (alignment == form_->controller().alignDefault())
- return LYX_ALIGN_LAYOUT;
return alignment;
}
@@ -243,15 +241,8 @@
}
// alignment
- LyXAlignment newAlignment = params.align();
- LyXAlignment defaultAlignment = controller().alignDefault();
- bool alignmentIsDefault =
- newAlignment == LYX_ALIGN_LAYOUT || newAlignment == defaultAlignment;
- dialog_->alignDefaultCB->blockSignals(true);
- dialog_->alignDefaultCB->setChecked(alignmentIsDefault);
- dialog_->alignDefaultCB->blockSignals(false);
dialog_->checkAlignmentRadioButtons();
- dialog_->alignmentToRadioButtons(newAlignment);
+ dialog_->alignmentToRadioButtons(params.align());
//indentation
bool const canindent = controller().canIndent();
Index: src/frontends/qt4/QParagraph.h
===================================================================
--- src/frontends/qt4/QParagraph.h (revision 18842)
+++ src/frontends/qt4/QParagraph.h (working copy)
@@ -49,8 +49,6 @@
void change_adaptor();
///
void enableLinespacingValue(int);
- ///
- void on_alignDefaultCB_toggled(bool);
};
Index: src/frontends/qt4/ui/ParagraphUi.ui
===================================================================
--- src/frontends/qt4/ui/ParagraphUi.ui (revision 18842)
+++ src/frontends/qt4/ui/ParagraphUi.ui (working copy)
@@ -8,8 +8,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>373</width>
- <height>203</height>
+ <width>387</width>
+ <height>245</height>
</rect>
</property>
<property name="sizePolicy" >
@@ -36,7 +36,65 @@
<property name="spacing" >
<number>6</number>
</property>
- <item row="4" column="0" colspan="2" >
+ <item rowspan="4" row="0" column="0" >
+ <widget class="QGroupBox" name="aligmentGB" >
+ <property name="title" >
+ <string>Alignment</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="3" column="0" >
+ <widget class="QRadioButton" name="alignCenterRB" >
+ <property name="text" >
+ <string>&Center</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" >
+ <widget class="QRadioButton" name="alignRightRB" >
+ <property name="text" >
+ <string>&Right</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" >
+ <widget class="QRadioButton" name="alignLeftRB" >
+ <property name="text" >
+ <string>&Left</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QRadioButton" name="alignJustRB" >
+ <property name="text" >
+ <string>&Justified</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" >
+ <widget class="QRadioButton" name="alignDefaultRB" >
+ <property name="font" >
+ <font>
+ <italic>true</italic>
+ </font>
+ </property>
+ <property name="toolTip" >
+ <string>Use the default alignment for this paragraph, whatever it is.</string>
+ </property>
+ <property name="text" >
+ <string>Default</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="1" >
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
@@ -45,16 +103,82 @@
<number>6</number>
</property>
<item>
- <widget class="QPushButton" name="restorePB" >
+ <widget class="QLabel" name="linespacingL" >
<property name="text" >
- <string>&Restore</string>
+ <string>L&ine spacing:</string>
</property>
- <property name="autoDefault" >
+ <property name="buddy" >
+ <cstring>linespacing</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="linespacing" >
+ <item>
+ <property name="text" >
+ <string>Default</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>Single</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>1.5</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>Double</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>Custom</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="linespacingValue" >
+ <property name="enabled" >
<bool>false</bool>
</property>
</widget>
</item>
+ </layout>
+ </item>
+ <item row="2" column="1" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>249</width>
+ <height>31</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="1" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item>
+ <widget class="QCheckBox" name="indentCB" >
+ <property name="text" >
+ <string>Indent &Paragraph</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
@@ -70,39 +194,6 @@
</property>
</spacer>
</item>
- <item>
- <widget class="QPushButton" name="okPB" >
- <property name="text" >
- <string>&OK</string>
- </property>
- <property name="autoDefault" >
- <bool>false</bool>
- </property>
- <property name="default" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="applyPB" >
- <property name="text" >
- <string>&Apply</string>
- </property>
- <property name="autoDefault" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="closePB" >
- <property name="text" >
- <string>&Close</string>
- </property>
- <property name="autoDefault" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
</layout>
</item>
<item row="3" column="1" >
@@ -143,7 +234,7 @@
</layout>
</widget>
</item>
- <item row="1" column="1" >
+ <item row="4" column="0" colspan="2" >
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
@@ -152,10 +243,13 @@
<number>6</number>
</property>
<item>
- <widget class="QCheckBox" name="indentCB" >
+ <widget class="QPushButton" name="restorePB" >
<property name="text" >
- <string>Indent &Paragraph</string>
+ <string>&Restore</string>
</property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
</widget>
</item>
<item>
@@ -174,135 +268,41 @@
</property>
</spacer>
</item>
- </layout>
- </item>
- <item row="2" column="1" >
- <spacer>
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>249</width>
- <height>31</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="0" column="1" >
- <layout class="QHBoxLayout" >
- <property name="margin" >
- <number>0</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
<item>
- <widget class="QLabel" name="linespacingL" >
+ <widget class="QPushButton" name="okPB" >
<property name="text" >
- <string>L&ine spacing:</string>
+ <string>&OK</string>
</property>
- <property name="buddy" >
- <cstring>linespacing</cstring>
+ <property name="autoDefault" >
+ <bool>false</bool>
</property>
+ <property name="default" >
+ <bool>true</bool>
+ </property>
</widget>
</item>
<item>
- <widget class="QComboBox" name="linespacing" >
- <item>
- <property name="text" >
- <string>Default</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>Single</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>1.5</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>Double</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>Custom</string>
- </property>
- </item>
+ <widget class="QPushButton" name="applyPB" >
+ <property name="text" >
+ <string>&Apply</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
</widget>
</item>
<item>
- <widget class="QLineEdit" name="linespacingValue" >
- <property name="enabled" >
+ <widget class="QPushButton" name="closePB" >
+ <property name="text" >
+ <string>&Close</string>
+ </property>
+ <property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
- <item rowspan="4" row="0" column="0" >
- <widget class="QGroupBox" name="aligmentGB" >
- <property name="title" >
- <string>Alignment</string>
- </property>
- <layout class="QVBoxLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item>
- <widget class="QCheckBox" name="alignDefaultCB" >
- <property name="font" >
- <font>
- <weight>50</weight>
- <italic>true</italic>
- <bold>false</bold>
- <kerning>true</kerning>
- </font>
- </property>
- <property name="text" >
- <string>&Default</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="alignJustRB" >
- <property name="text" >
- <string>&Justified</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="alignLeftRB" >
- <property name="text" >
- <string>&Left</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="alignRightRB" >
- <property name="text" >
- <string>&Right</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="alignCenterRB" >
- <property name="text" >
- <string>&Center</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
</layout>
</widget>
<tabstops>