]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiVSpace.cpp
Fix the tab ordering of PanelStack and PrefsUi.
[lyx.git] / src / frontends / qt4 / GuiVSpace.cpp
index 8828accd77c0aadffd8dfb63bbe03b9eb544b47a..dc08bc0c3188f630b2f7b55d82eb09f1f771054e 100644 (file)
@@ -3,12 +3,12 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author André Pönitz
- * \author Jürgen Vigna
+ * \author André Pönitz
+ * \author Jürgen Vigna
  * \author Rob Lahaye
  * \author Angus Leeming
  * \author Edwin Leuven
- * \author Jürgen Spitzmüller
+ * \author Jürgen Spitzmüller
  *
  * Full author contact details are available in file CREDITS.
  */
 #include <config.h>
 
 #include "GuiVSpace.h"
-#include "Qt2BC.h"
 
-#include "CheckedLineEdit.h"
 #include "LengthCombo.h"
 #include "qt_helpers.h"
 #include "Validator.h"
 
-#include "LyXRC.h" // to set the default length values
 #include "Spacing.h"
 #include "VSpace.h"
 
-#include "controllers/ControlVSpace.h"
-#include "controllers/frontend_helpers.h"
+#include "insets/InsetVSpace.h"
 
+#include "support/gettext.h"
 #include "support/lstrings.h"
 
 #include <QCheckBox>
-#include <QCloseEvent>
 #include <QLineEdit>
 #include <QPushButton>
 #include <QValidator>
 
-
-using std::string;
+using namespace std;
 
 namespace lyx {
 namespace frontend {
 
-
-/////////////////////////////////////////////////////////////////////
-//
-// GuiVSpaceDialog
-//
-/////////////////////////////////////////////////////////////////////
-
-
-GuiVSpaceDialog::GuiVSpaceDialog(GuiVSpace * form)
-       : form_(form)
+GuiVSpace::GuiVSpace(QWidget * parent) : InsetParamsWidget(parent)
 {
        setupUi(this);
 
-       connect(okPB, SIGNAL(clicked()), form_, SLOT(slotOK()));
-       connect(applyPB, SIGNAL(clicked()), form_, SLOT(slotApply()));
-       connect(closePB, SIGNAL(clicked()), form_, SLOT(slotClose()));
-
-       connect(spacingCO, SIGNAL(highlighted(const QString &)),
-               this, SLOT(change_adaptor()));
-       connect(valueLE, SIGNAL(textChanged(const QString &)),
-               this, SLOT(change_adaptor()));
-       connect(spacingCO, SIGNAL(activated(int)),
-               this, SLOT(enableCustom(int)));
+       connect(valueLE, SIGNAL(textChanged(QString)),
+               this, SIGNAL(changed()));
        connect(keepCB, SIGNAL(clicked()),
-               this, SLOT(change_adaptor()));
+               this, SIGNAL(changed()));
        connect(unitCO, SIGNAL(selectionChanged(lyx::Length::UNIT)),
-               this, SLOT(change_adaptor()));
+               this, SIGNAL(changed()));
 
-       valueLE->setValidator(unsignedLengthValidator(valueLE));
-}
-
-
-void GuiVSpaceDialog::closeEvent(QCloseEvent * e)
-{
-       form_->slotWMHide();
-       e->accept();
-}
+       connect(spacingCO, SIGNAL(activated(int)),
+               this, SLOT(enableCustom(int)));
 
+       valueLE->setValidator(unsignedGlueLengthValidator(valueLE));
 
-void GuiVSpaceDialog::change_adaptor()
-{
-       form_->changed();
+       // initialize the length validator
+       addCheckedWidget(valueLE, valueL);
 }
 
 
-void GuiVSpaceDialog::enableCustom(int selection)
+void GuiVSpace::enableCustom(int selection)
 {
        bool const enable = selection == 5;
        valueLE->setEnabled(enable);
@@ -97,12 +68,6 @@ void GuiVSpaceDialog::enableCustom(int selection)
 }
 
 
-/////////////////////////////////////////////////////////////////////
-//
-// GuiVSpace
-//
-/////////////////////////////////////////////////////////////////////
-
 static void setWidgetsFromVSpace(VSpace const & space,
                          QComboBox * spacing,
                          QLineEdit * value,
@@ -111,30 +76,17 @@ static void setWidgetsFromVSpace(VSpace const & space,
 {
        int item = 0;
        switch (space.kind()) {
-       case VSpace::DEFSKIP:
-               item = 0;
-               break;
-       case VSpace::SMALLSKIP:
-               item = 1;
-               break;
-       case VSpace::MEDSKIP:
-               item = 2;
-               break;
-       case VSpace::BIGSKIP:
-               item = 3;
-               break;
-       case VSpace::VFILL:
-               item = 4;
-               break;
-       case VSpace::LENGTH:
-               item = 5;
-               break;
+               case VSpace::DEFSKIP:   item = 0; break;
+               case VSpace::SMALLSKIP: item = 1; break;
+               case VSpace::MEDSKIP:   item = 2; break;
+               case VSpace::BIGSKIP:   item = 3; break;
+               case VSpace::VFILL:     item = 4; break;
+               case VSpace::LENGTH:    item = 5; break;
        }
        spacing->setCurrentIndex(item);
        keep->setChecked(space.keep());
 
-       Length::UNIT default_unit =
-                       (lyxrc.default_papersize > 3) ? Length::CM : Length::IN;
+       Length::UNIT const default_unit = Length::defaultUnit();
        bool const custom_vspace = space.kind() == VSpace::LENGTH;
        if (custom_vspace) {
                value->setEnabled(true);
@@ -150,31 +102,17 @@ static void setWidgetsFromVSpace(VSpace const & space,
 
 
 static VSpace setVSpaceFromWidgets(int spacing,
-                           QLineEdit * value,
-                           LengthCombo * unit,
-                           bool keep)
+       QLineEdit * value, LengthCombo * unit, bool keep)
 {
        VSpace space;
 
        switch (spacing) {
-       case 0:
-               space = VSpace(VSpace::DEFSKIP);
-               break;
-       case 1:
-               space = VSpace(VSpace::SMALLSKIP);
-               break;
-       case 2:
-               space = VSpace(VSpace::MEDSKIP);
-               break;
-       case 3:
-               space = VSpace(VSpace::BIGSKIP);
-               break;
-       case 4:
-               space = VSpace(VSpace::VFILL);
-               break;
-       case 5:
-               space = VSpace(GlueLength(widgetsToLength(value, unit)));
-               break;
+               case 0: space = VSpace(VSpace::DEFSKIP); break;
+               case 1: space = VSpace(VSpace::SMALLSKIP); break;
+               case 2: space = VSpace(VSpace::MEDSKIP); break;
+               case 3: space = VSpace(VSpace::BIGSKIP); break;
+               case 4: space = VSpace(VSpace::VFILL); break;
+               case 5: space = VSpace(GlueLength(widgetsToLength(value, unit))); break;
        }
 
        space.setKeep(keep);
@@ -182,65 +120,28 @@ static VSpace setVSpaceFromWidgets(int spacing,
 }
 
 
-GuiVSpace::GuiVSpace(Dialog & parent)
-       : GuiView<GuiVSpaceDialog>(parent, _("Vertical Space Settings"))
-{}
-
-
-void GuiVSpace::build_dialog()
-{
-       // the tabbed folder
-       dialog_.reset(new GuiVSpaceDialog(this));
-
-       // Manage the ok, apply, restore and cancel/close buttons
-       bcview().setOK(dialog_->okPB);
-       bcview().setApply(dialog_->applyPB);
-       bcview().setCancel(dialog_->closePB);
-
-       // disable for read-only documents
-       bcview().addReadOnly(dialog_->spacingCO);
-       bcview().addReadOnly(dialog_->valueLE);
-       bcview().addReadOnly(dialog_->unitCO);
-       bcview().addReadOnly(dialog_->keepCB);
-
-       // initialize the length validator
-       addCheckedLineEdit(bcview(), dialog_->valueLE, dialog_->valueL);
-
-       // remove the %-items from the unit choice
-       dialog_->unitCO->noPercents();
-}
-
-
-void GuiVSpace::apply()
+docstring GuiVSpace::dialogToParams() const
 {
-       // spacing
        // If a vspace choice is "Length" but there's no text in
        // the input field, do not insert a vspace at all.
-       if (dialog_->spacingCO->currentIndex() == 5
-           && dialog_->valueLE->text().isEmpty())
-               return;
-
-       VSpace const space =
-               setVSpaceFromWidgets(dialog_->spacingCO->currentIndex(),
-                                    dialog_->valueLE,
-                                    dialog_->unitCO,
-                                    dialog_->keepCB->isChecked());
+       if (spacingCO->currentIndex() == 5 && valueLE->text().isEmpty())
+               return docstring();
 
-       controller().params() = space;
+       VSpace const params = setVSpaceFromWidgets(spacingCO->currentIndex(),
+                       valueLE, unitCO, keepCB->isChecked());
+       return from_ascii(InsetVSpace::params2string(params));
 }
 
 
-void GuiVSpace::update_contents()
+void GuiVSpace::paramsToDialog(Inset const * inset)
 {
-       setWidgetsFromVSpace(controller().params(),
-                            dialog_->spacingCO,
-                            dialog_->valueLE,
-                            dialog_->unitCO,
-                            dialog_->keepCB);
+       InsetVSpace const * vs = static_cast<InsetVSpace const *>(inset);
+       VSpace const & params = vs->space();
+       setWidgetsFromVSpace(params, spacingCO, valueLE, unitCO, keepCB);
 }
 
 } // namespace frontend
 } // namespace lyx
 
 
-#include "GuiVSpace_moc.cpp"
+#include "moc_GuiVSpace.cpp"