From 49fa9137398c3c54495c6ab432cc05ee0cf727ec Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Sun, 10 May 2015 13:02:00 +0200 Subject: [PATCH] GuiBox: Factor out enabling/disabling to checkedWidgets. Part of: #9541. --- src/frontends/qt4/GuiBox.cpp | 139 +++++++++++++---------------------- 1 file changed, 51 insertions(+), 88 deletions(-) diff --git a/src/frontends/qt4/GuiBox.cpp b/src/frontends/qt4/GuiBox.cpp index affc6cf464..66912e851d 100644 --- a/src/frontends/qt4/GuiBox.cpp +++ b/src/frontends/qt4/GuiBox.cpp @@ -115,37 +115,10 @@ void GuiBox::on_innerBoxCO_activated(int /* index */) QString itype = innerBoxCO->itemData(innerBoxCO->currentIndex()).toString(); // handle parbox and minipage the same way - bool const ibox = - (itype != "none" - && itype != "makebox"); - QString const outer = - typeCO->itemData(typeCO->currentIndex()).toString(); - valignCO->setEnabled(ibox); - ialignCO->setEnabled(ibox); + bool const ibox = (itype != "none" && itype != "makebox"); if (heightCB->isChecked() && !ibox) heightCB->setChecked(false); - heightCB->setEnabled(ibox); - // the width can only be selected for makebox or framebox - widthCB->setEnabled(itype == "makebox" - || (outer == "Boxed" && itype == "none")); widthCB->setChecked(!widthED->text().isEmpty()); - // except for frameless and boxed, the width cannot be specified if - // there is no inner box - bool const width_enabled = - ibox || outer == "Frameless" || outer == "Boxed"; - // enable if width_enabled, except if checkbaox is active but unset - widthED->setEnabled(width_enabled || (widthCB->isEnabled() && widthCB->isChecked())); - widthUnitsLC->setEnabled(width_enabled || (widthCB->isEnabled() && widthCB->isChecked())); - if (!widthCB->isChecked() && widthCB->isEnabled()) { - widthED->setEnabled(false); - widthUnitsLC->setEnabled(false); - } - // halign is only allowed without inner box and if a width is used and if - // pagebreak is not used - halignCO->setEnabled(!pagebreakCB->isChecked() && widthCB->isChecked() - && ((!ibox && outer == "Boxed") || itype == "makebox")); - // pagebreak is only allowed for Boxed without inner box - pagebreakCB->setEnabled(!ibox && outer == "Boxed"); setSpecial(ibox); changed(); } @@ -163,38 +136,13 @@ void GuiBox::on_typeCO_activated(int index) itype = innerBoxCO->itemData(innerBoxCO->currentIndex()).toString(); // handle parbox and minipage the same way - bool const ibox = - (itype != "none" - && itype != "makebox"); + bool const ibox = (itype != "none" && itype != "makebox"); if (frameless && itype != "makebox") { - valignCO->setEnabled(ibox); - ialignCO->setEnabled(ibox); if (heightCB->isChecked() && !ibox) heightCB->setChecked(false); - heightCB->setEnabled(ibox); setSpecial(ibox); } - // the width can only be selected for makebox or framebox - widthCB->setEnabled(itype == "makebox" - || (type == "Boxed" && itype == "none")); - widthCB->setChecked(itype != "none" && !widthCB->isEnabled()); - // except for frameless and boxed, the width cannot be specified if - // there is no inner box - bool const width_enabled = - itype != "none" || frameless || type == "Boxed"; - // enable if width_enabled, except if checkbaox is active but unset - widthED->setEnabled(width_enabled || (widthCB->isEnabled() && widthCB->isChecked())); - widthUnitsLC->setEnabled(width_enabled || (widthCB->isEnabled() && widthCB->isChecked())); - if (!widthCB->isChecked() && widthCB->isEnabled()) { - widthED->setEnabled(false); - widthUnitsLC->setEnabled(false); - } - // halign is only allowed without inner box and if a width is used and if - // pagebreak is not used - halignCO->setEnabled(!pagebreakCB->isChecked() && widthCB->isChecked() - && ((itype == "none" && type == "Boxed") || itype == "makebox")); - // pagebreak is only allowed for Boxed without inner box - pagebreakCB->setEnabled(type == "Boxed" && itype == "none"); + widthCB->setChecked(itype != "none"); if (type != "Boxed") pagebreakCB->setChecked(false); changed(); @@ -215,21 +163,12 @@ void GuiBox::initDialog() void GuiBox::on_widthCB_stateChanged(int) { - if (widthCB->isEnabled()) { - widthED->setEnabled(widthCB->isChecked()); - widthUnitsLC->setEnabled(widthCB->isChecked()); - halignCO->setEnabled(widthCB->isChecked()); - } changed(); } -void GuiBox::on_heightCB_stateChanged(int state) +void GuiBox::on_heightCB_stateChanged(int /*state*/) { - bool const enable = (innerBoxCO->currentText() != qt_("None")) - && (state == Qt::Checked); - heightED->setEnabled(enable); - heightUnitsLC->setEnabled(enable); changed(); } @@ -237,22 +176,12 @@ void GuiBox::on_heightCB_stateChanged(int state) void GuiBox::on_pagebreakCB_stateChanged() { bool pbreak = (pagebreakCB->checkState() == Qt::Checked); - innerBoxCO->setEnabled(!pbreak); - widthCB->setEnabled(!pbreak); if (pbreak) widthCB->setChecked(!pbreak); - widthED->setEnabled(!pbreak); - widthUnitsLC->setEnabled(!pbreak); if (!pbreak) { on_typeCO_activated(typeCO->currentIndex()); return; } - valignCO->setEnabled(false); - ialignCO->setEnabled(false); - halignCO->setEnabled(false); - heightCB->setEnabled(false); - heightED->setEnabled(false); - heightUnitsLC->setEnabled(false); setSpecial(false); changed(); } @@ -413,20 +342,54 @@ docstring GuiBox::dialogToParams() const bool GuiBox::checkWidgets(bool readonly) const { - pagebreakCB->setEnabled(!readonly); typeCO->setEnabled(!readonly); - innerBoxCO->setEnabled(!readonly); - valignCO->setEnabled(!readonly); - ialignCO->setEnabled(!readonly); - halignCO->setEnabled(!readonly); - valignCO->setEnabled(!readonly); - ialignCO->setEnabled(!readonly); - widthCB->setEnabled(!readonly); - widthED->setReadOnly(readonly); - widthUnitsLC->setEnabled(!readonly); - heightED->setReadOnly(readonly); - heightUnitsLC->setEnabled(!readonly); - heightCB->setEnabled(!readonly); + + if (readonly) { + pagebreakCB->setEnabled(false); + innerBoxCO->setEnabled(false); + valignCO->setEnabled(false); + ialignCO->setEnabled(false); + halignCO->setEnabled(false); + widthCB->setEnabled(false); + widthED->setEnabled(false); + widthUnitsLC->setEnabled(false); + heightED->setEnabled(false); + heightUnitsLC->setEnabled(false); + heightCB->setEnabled(false); + } else { + QString const outer = + typeCO->itemData(typeCO->currentIndex()).toString(); + QString const itype = + innerBoxCO->itemData(innerBoxCO->currentIndex()).toString(); + bool const ibox = (itype != "none" && itype != "makebox"); + // pagebreak is only allowed for Boxed without inner box + pagebreakCB->setEnabled(!ibox && outer == "Boxed"); + innerBoxCO->setEnabled(!pagebreakCB->isChecked()); + valignCO->setEnabled(ibox); + ialignCO->setEnabled(ibox); + // halign is only allowed without inner box and if a width is used and if + // pagebreak is not used + halignCO->setEnabled(!pagebreakCB->isChecked() && widthCB->isChecked() + && ((!ibox && outer == "Boxed") || itype == "makebox")); + // the width can only be selected for makebox or framebox + widthCB->setEnabled(itype == "makebox" + || (outer == "Boxed" + && !ibox && !pagebreakCB->isChecked())); + // except for frameless and boxed, the width cannot be specified if + // there is no inner box + bool const width_enabled = + ibox || outer == "Frameless" || outer == "Boxed"; + // enable if width_enabled, except if checkbox is active but unset + widthED->setEnabled(width_enabled || (widthCB->isEnabled() && widthCB->isChecked())); + widthUnitsLC->setEnabled(width_enabled || (widthCB->isEnabled() && widthCB->isChecked())); + if (!widthCB->isChecked() && widthCB->isEnabled()) { + widthED->setEnabled(false); + widthUnitsLC->setEnabled(false); + } + heightED->setEnabled(itype != "none" && heightCB->isChecked()); + heightUnitsLC->setEnabled(itype != "none" && heightCB->isChecked()); + heightCB->setEnabled(ibox); + } return InsetParamsWidget::checkWidgets(); } -- 2.39.2