Uwe Stöhr schrieb:
Is this now correct?
Attached is a slightly improved one. regards Uwe
Index: frontends/qt4/GuiBox.cpp =================================================================== --- frontends/qt4/GuiBox.cpp (revision 20474) +++ frontends/qt4/GuiBox.cpp (working copy) @@ -63,6 +63,8 @@ this, SLOT(change_adaptor())); connect(valignCO, SIGNAL(highlighted(const QString &)), this, SLOT(change_adaptor())); + connect(heightCB, SIGNAL(stateChanged(int)), + this, SLOT(change_adaptor())); connect(heightED, SIGNAL(textChanged(const QString &)), this, SLOT(change_adaptor())); connect(heightUnitsLC, SIGNAL(selectionChanged(lyx::Length::UNIT) ), @@ -70,6 +72,7 @@ connect(restorePB, SIGNAL(clicked()), this, SLOT(restoreClicked())); connect(typeCO, SIGNAL(activated(int)), this, SLOT(change_adaptor())); connect(typeCO, SIGNAL(activated(int)), this, SLOT(typeChanged(int))); + connect(heightCB, SIGNAL(stateChanged(int)), this, SLOT(heightChecked(int))); connect(halignCO, SIGNAL(activated(int)), this, SLOT(change_adaptor())); connect(ialignCO, SIGNAL(activated(int)), this, SLOT(change_adaptor())); connect(innerBoxCO, SIGNAL(activated(const QString&)), @@ -87,6 +90,7 @@ bc().addReadOnly(ialignCO); bc().addReadOnly(halignCO); bc().addReadOnly(widthED); + bc().addReadOnly(heightCB); bc().addReadOnly(heightED); bc().addReadOnly(widthUnitsLC); bc().addReadOnly(heightUnitsLC); @@ -98,7 +102,7 @@ // initialize the length validator bc().addCheckedLineEdit(widthED, widthLA); - bc().addCheckedLineEdit(heightED, heightLA); + bc().addCheckedLineEdit(heightED, heightCB); } @@ -127,6 +131,7 @@ valignCO->setEnabled(ibox); ialignCO->setEnabled(ibox); halignCO->setEnabled(!ibox); + heightCB->setEnabled(ibox); heightED->setEnabled(ibox); heightUnitsLC->setEnabled(ibox); setSpecial(ibox); @@ -140,6 +145,7 @@ valignCO->setEnabled(true); ialignCO->setEnabled(true); halignCO->setEnabled(false); + heightCB->setEnabled(true); heightED->setEnabled(true); heightUnitsLC->setEnabled(true); setSpecial(true); @@ -149,11 +155,23 @@ } +void GuiBoxDialog::heightChecked(int checkState) +{ + if (checkState == Qt::Unchecked) { + heightED->setEnabled(false); + heightUnitsLC->setEnabled(false); + } else { + heightED->setEnabled(true); + heightUnitsLC->setEnabled(true); + } +} + void GuiBoxDialog::restoreClicked() { setInnerType(true, 2); widthED->setText("100"); widthUnitsLC->setCurrentItem(Length::PCW); + heightCB->setCheckState(Qt::Checked); heightED->setText("1"); for (int j = 0; j < heightUnitsLC->count(); j++) { if (heightUnitsLC->itemText(j) == qt_("Total Height")) @@ -230,7 +248,7 @@ } } } - + heightCB->setEnabled(ibox); heightED->setEnabled(ibox); heightUnitsLC->setEnabled(ibox); } @@ -312,12 +330,19 @@ controller().params().height_special = ids_spec_[i]; string height; - if (spec && !isValidLength(fromqstr(heightED->text()))) { - height = fromqstr(value); - // beware: bogosity! the unit is simply ignored in this case - height += "in"; - } else - height = widgetsToLength(heightED, heightUnitsLC); + // only set the actual value when heightCB is checked + if (heightCB->checkState() == Qt::Checked) { + if (spec && !isValidLength(fromqstr(heightED->text()))) { + height = fromqstr(value); + // beware: bogosity! the unit is simply ignored in this case + height += "in"; + } else + height = widgetsToLength(heightED, heightUnitsLC); + } else { + // the height parameter is omitted in InsetBox.cpp when the value + // is "0" + height = "0in"; + } controller().params().height = Length(height); } Index: frontends/qt4/GuiBox.h =================================================================== --- frontends/qt4/GuiBox.h (revision 20474) +++ frontends/qt4/GuiBox.h (working copy) @@ -33,6 +33,7 @@ void change_adaptor(); void innerBoxChanged(const QString &); void typeChanged(int); + void heightChecked(int); void restoreClicked(); private: Index: frontends/qt4/ui/BoxUi.ui =================================================================== --- frontends/qt4/ui/BoxUi.ui (revision 20474) +++ frontends/qt4/ui/BoxUi.ui (working copy) @@ -1,15 +1,12 @@ <ui version="4.0" > - <author></author> - <comment></comment> - <exportmacro></exportmacro> <class>BoxUi</class> <widget class="QDialog" name="BoxUi" > <property name="geometry" > <rect> <x>0</x> <y>0</y> - <width>333</width> - <height>274</height> + <width>348</width> + <height>256</height> </rect> </property> <property name="windowTitle" > @@ -18,361 +15,400 @@ <property name="sizeGripEnabled" > <bool>true</bool> </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> + <widget class="QWidget" name="layoutWidget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>220</y> + <width>328</width> + <height>27</height> + </rect> </property> - <property name="spacing" > - <number>6</number> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QPushButton" name="restorePB" > + <property name="toolTip" > + <string/> + </property> + <property name="text" > + <string>&Restore</string> + </property> + <property name="autoDefault" > + <bool>false</bool> + </property> + <property name="default" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</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> + <widget class="QPushButton" name="okPB" > + <property name="toolTip" > + <string/> + </property> + <property name="text" > + <string>&OK</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="applyPB" > + <property name="toolTip" > + <string/> + </property> + <property name="text" > + <string>&Apply</string> + </property> + <property name="autoDefault" > + <bool>false</bool> + </property> + <property name="default" > + <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> + <property name="default" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="layoutWidget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>80</y> + <width>321</width> + <height>24</height> + </rect> </property> - <item row="3" column="2" > - <widget class="LengthCombo" name="heightUnitsLC" /> - </item> - <item row="1" column="1" colspan="2" > - <widget class="QComboBox" name="innerBoxCO" > - <property name="toolTip" > - <string>Inner box -- needed for fixed width & line breaks</string> - </property> - <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="heightCB" > + <property name="toolTip" > + <string/> + </property> <property name="text" > - <string>None</string> + <string>&Height (optional):</string> </property> - </item> - <item> + <property name="checked" > + <bool>true</bool> + </property> + <property name="tristate" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="heightED" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Height value</string> + </property> + </widget> + </item> + <item> + <widget class="LengthCombo" name="heightUnitsLC" /> + </item> + </layout> + </widget> + <widget class="QWidget" name="layoutWidget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>10</y> + <width>321</width> + <height>70</height> + </rect> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="2" column="1" > + <widget class="QLineEdit" name="widthED" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Width value</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <widget class="QComboBox" name="typeCO" > + <property name="toolTip" > + <string>Supported box types</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="innerBoxLA" > + <property name="toolTip" > + <string/> + </property> <property name="text" > - <string>Parbox</string> + <string>Inner Bo&x:</string> </property> - </item> - <item> + <property name="buddy" > + <cstring>innerBoxCO</cstring> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="LengthCombo" name="widthUnitsLC" /> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="typeLA" > + <property name="toolTip" > + <string/> + </property> <property name="text" > - <string>Minipage</string> + <string>&Decoration:</string> </property> - </item> - </widget> - </item> - <item row="0" column="1" colspan="2" > - <widget class="QComboBox" name="typeCO" > - <property name="toolTip" > - <string>Supported box types</string> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="innerBoxLA" > - <property name="toolTip" > - <string>Inner box -- needed for fixed width & line breaks</string> - </property> - <property name="text" > - <string>Inner Bo&x:</string> - </property> - <property name="buddy" > - <cstring>innerBoxCO</cstring> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="typeLA" > - <property name="toolTip" > - <string>Supported box types</string> - </property> - <property name="text" > - <string>&Decoration:</string> - </property> - <property name="buddy" > - <cstring>typeCO</cstring> - </property> - </widget> - </item> - <item row="3" column="1" > - <widget class="QLineEdit" name="heightED" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>1</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="toolTip" > - <string>Height value</string> - </property> - </widget> - </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="widthED" > - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>1</hsizetype> - <vsizetype>0</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="toolTip" > - <string>Width value</string> - </property> - </widget> - </item> - <item row="3" column="0" > - <widget class="QLabel" name="heightLA" > - <property name="toolTip" > - <string>Height value</string> - </property> - <property name="text" > - <string>&Height:</string> - </property> - <property name="buddy" > - <cstring>heightED</cstring> - </property> - </widget> - </item> - <item row="2" column="2" > - <widget class="LengthCombo" name="widthUnitsLC" /> - </item> - <item row="2" column="0" > - <widget class="QLabel" name="widthLA" > - <property name="toolTip" > - <string>Width value</string> - </property> - <property name="text" > - <string>&Width:</string> - </property> - <property name="buddy" > - <cstring>widthED</cstring> - </property> - </widget> - </item> - <item row="4" column="0" colspan="3" > - <widget class="QGroupBox" name="groupBox_2" > - <property name="title" > - <string>Alignment</string> - </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>9</number> + <property name="buddy" > + <cstring>typeCO</cstring> </property> - <property name="spacing" > - <number>6</number> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="widthLA" > + <property name="toolTip" > + <string/> </property> - <item row="1" column="2" > - <widget class="QComboBox" name="halignCO" > - <property name="toolTip" > - <string>Horizontal alignment of the content inside the box</string> - </property> - <item> - <property name="text" > - <string>Left</string> - </property> - </item> - <item> - <property name="text" > - <string>Center</string> - </property> - </item> - <item> - <property name="text" > - <string>Right</string> - </property> - </item> - <item> - <property name="text" > - <string>Stretch</string> - </property> - </item> - </widget> + <property name="text" > + <string>&Width:</string> + </property> + <property name="buddy" > + <cstring>widthED</cstring> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2" > + <widget class="QComboBox" name="innerBoxCO" > + <property name="toolTip" > + <string>Inner box -- needed for fixed width & line breaks</string> + </property> + <item> + <property name="text" > + <string>None</string> + </property> </item> - <item row="0" column="2" > - <widget class="QLabel" name="halignLA" > - <property name="toolTip" > - <string>Horizontal alignment of the content inside the box</string> - </property> - <property name="text" > - <string>Horizontal</string> - </property> - </widget> + <item> + <property name="text" > + <string>Parbox</string> + </property> </item> - <item row="2" column="1" > - <widget class="QComboBox" name="valignCO" > - <property name="toolTip" > - <string>Vertical alignment of the box (with regard to baseline)</string> - </property> - <item> - <property name="text" > - <string>Top</string> - </property> - </item> - <item> - <property name="text" > - <string>Middle</string> - </property> - </item> - <item> - <property name="text" > - <string>Bottom</string> - </property> - </item> - </widget> + <item> + <property name="text" > + <string>Minipage</string> + </property> </item> - <item row="2" column="0" > - <widget class="QLabel" name="valignLA" > - <property name="toolTip" > - <string>Vertical alignment of the box (with regard to baseline)</string> - </property> - <property name="text" > - <string>&Box:</string> - </property> - <property name="buddy" > - <cstring>valignCO</cstring> - </property> - </widget> + </widget> + </item> + </layout> + </widget> + <widget class="QGroupBox" name="groupBox_2" > + <property name="geometry" > + <rect> + <x>10</x> + <y>110</y> + <width>321</width> + <height>104</height> + </rect> + </property> + <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="1" column="2" > + <widget class="QComboBox" name="halignCO" > + <property name="toolTip" > + <string>Horizontal alignment of the content inside the box</string> + </property> + <item> + <property name="text" > + <string>Left</string> + </property> </item> - <item row="1" column="0" > - <widget class="QLabel" name="label" > - <property name="text" > - <string>Co&ntent:</string> - </property> - <property name="buddy" > - <cstring>ialignCO</cstring> - </property> - </widget> + <item> + <property name="text" > + <string>Center</string> + </property> </item> - <item row="1" column="1" > - <widget class="QComboBox" name="ialignCO" > - <property name="toolTip" > - <string>Vertical alignment of the content inside the box</string> - </property> - <item> - <property name="text" > - <string>Top</string> - </property> - </item> - <item> - <property name="text" > - <string>Middle</string> - </property> - </item> - <item> - <property name="text" > - <string>Bottom</string> - </property> - </item> - <item> - <property name="text" > - <string>Stretch</string> - </property> - </item> - </widget> + <item> + <property name="text" > + <string>Right</string> + </property> </item> - <item row="0" column="1" > - <widget class="QLabel" name="ialignLA" > - <property name="toolTip" > - <string>Vertical alignment of the content inside the box</string> - </property> - <property name="text" > - <string>Vertical</string> - </property> - </widget> + <item> + <property name="text" > + <string>Stretch</string> + </property> </item> - </layout> - </widget> - </item> - <item row="5" column="0" colspan="3" > - <layout class="QHBoxLayout" > - <property name="margin" > - <number>0</number> - </property> - <property name="spacing" > - <number>6</number> - </property> - <item> - <widget class="QPushButton" name="restorePB" > - <property name="toolTip" > - <string/> + </widget> + </item> + <item row="0" column="2" > + <widget class="QLabel" name="halignLA" > + <property name="toolTip" > + <string>Horizontal alignment of the content inside the box</string> + </property> + <property name="text" > + <string>Horizontal</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QComboBox" name="valignCO" > + <property name="toolTip" > + <string>Vertical alignment of the box (with regard to baseline)</string> + </property> + <item> + <property name="text" > + <string>Top</string> </property> + </item> + <item> <property name="text" > - <string>&Restore</string> + <string>Middle</string> </property> - <property name="autoDefault" > - <bool>false</bool> + </item> + <item> + <property name="text" > + <string>Bottom</string> </property> - <property name="default" > - <bool>false</bool> + </item> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="valignLA" > + <property name="toolTip" > + <string>Vertical alignment of the box (with regard to baseline)</string> + </property> + <property name="text" > + <string>&Box:</string> + </property> + <property name="buddy" > + <cstring>valignCO</cstring> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Co&ntent:</string> + </property> + <property name="buddy" > + <cstring>ialignCO</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QComboBox" name="ialignCO" > + <property name="toolTip" > + <string>Vertical alignment of the content inside the box</string> + </property> + <item> + <property name="text" > + <string>Top</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" > - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="okPB" > - <property name="toolTip" > - <string/> - </property> + </item> + <item> <property name="text" > - <string>&OK</string> + <string>Middle</string> </property> - <property name="default" > - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="applyPB" > - <property name="toolTip" > - <string/> - </property> + </item> + <item> <property name="text" > - <string>&Apply</string> + <string>Bottom</string> </property> - <property name="autoDefault" > - <bool>false</bool> - </property> - <property name="default" > - <bool>false</bool> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="closePB" > + </item> + <item> <property name="text" > - <string>&Close</string> + <string>Stretch</string> </property> - <property name="autoDefault" > - <bool>false</bool> - </property> - <property name="default" > - <bool>false</bool> - </property> - </widget> - </item> - </layout> - </item> - </layout> + </item> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="ialignLA" > + <property name="toolTip" > + <string>Vertical alignment of the content inside the box</string> + </property> + <property name="text" > + <string>Vertical</string> + </property> + </widget> + </item> + </layout> + </widget> </widget> - <pixmapfunction></pixmapfunction> - <includes> - <include location="local" >qt_helpers.h</include> - </includes> <customwidgets> <customwidget> <class>LengthCombo</class> <extends>QComboBox</extends> <header>LengthCombo.h</header> - <container>0</container> - <pixmap></pixmap> </customwidget> </customwidgets> <tabstops> @@ -380,6 +416,7 @@ <tabstop>innerBoxCO</tabstop> <tabstop>widthED</tabstop> <tabstop>widthUnitsLC</tabstop> + <tabstop>heightCB</tabstop> <tabstop>heightED</tabstop> <tabstop>heightUnitsLC</tabstop> <tabstop>ialignCO</tabstop> @@ -390,6 +427,9 @@ <tabstop>closePB</tabstop> <tabstop>applyPB</tabstop> </tabstops> + <includes> + <include location="local" >qt_helpers.h</include> + </includes> <resources/> <connections/> </ui> Index: insets/InsetBox.cpp =================================================================== --- insets/InsetBox.cpp (revision 20474) +++ insets/InsetBox.cpp (working copy) @@ -332,15 +332,21 @@ os << "[" << params_.pos << "]"; if (params_.height_special == "none") { - // FIXME UNICODE - os << '[' << from_ascii(params_.height.asLatexString()) - << ']'; + // set no optional argument when the value is zero + if (params_.height.value() != 0) { + // FIXME UNICODE + os << "[" << from_ascii(params_.height.asLatexString()) + << "]"; + } } else { // Special heights - // FIXME UNICODE - os << "[" << params_.height.value() - << '\\' << from_utf8(params_.height_special) - << ']'; + // set no optional argument when the value is zero + if (params_.height.value() != 0) { + // FIXME UNICODE + os << "[" << params_.height.value() + << "\\" << from_utf8(params_.height_special) + << "]"; + } } if (params_.inner_pos != params_.pos) os << "[" << params_.inner_pos << "]";