commit 49fa9137398c3c54495c6ab432cc05ee0cf727ec
Author: Juergen Spitzmueller <[email protected]>
Date:   Sun May 10 13:02:00 2015 +0200

    GuiBox: Factor out enabling/disabling to checkedWidgets.
    
    Part of: #9541.

diff --git a/src/frontends/qt4/GuiBox.cpp b/src/frontends/qt4/GuiBox.cpp
index affc6cf..66912e8 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();
 }

Reply via email to