]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiVSpace.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiVSpace.cpp
index 8828accd77c0aadffd8dfb63bbe03b9eb544b47a..70d2ba7e6e4f7ffc642969da6645207bf8024ccf 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 "FuncRequest.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(GuiView & lv)
+       : GuiDialog(lv, "vspace", qt_("Vertical Space Settings"))
 {
        setupUi(this);
 
-       connect(okPB, SIGNAL(clicked()), form_, SLOT(slotOK()));
-       connect(applyPB, SIGNAL(clicked()), form_, SLOT(slotApply()));
-       connect(closePB, SIGNAL(clicked()), form_, SLOT(slotClose()));
+       connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK()));
+       connect(applyPB, SIGNAL(clicked()), this, SLOT(slotApply()));
+       connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
 
-       connect(spacingCO, SIGNAL(highlighted(const QString &)),
+       connect(spacingCO, SIGNAL(highlighted(QString)),
                this, SLOT(change_adaptor()));
-       connect(valueLE, SIGNAL(textChanged(const QString &)),
+       connect(valueLE, SIGNAL(textChanged(QString)),
                this, SLOT(change_adaptor()));
        connect(spacingCO, SIGNAL(activated(int)),
                this, SLOT(enableCustom(int)));
@@ -72,24 +59,32 @@ GuiVSpaceDialog::GuiVSpaceDialog(GuiVSpace * form)
        connect(unitCO, SIGNAL(selectionChanged(lyx::Length::UNIT)),
                this, SLOT(change_adaptor()));
 
-       valueLE->setValidator(unsignedLengthValidator(valueLE));
-}
+       valueLE->setValidator(unsignedGlueLengthValidator(valueLE));
 
+       // Manage the ok, apply, restore and cancel/close buttons
+       bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
+       bc().setOK(okPB);
+       bc().setApply(applyPB);
+       bc().setCancel(closePB);
 
-void GuiVSpaceDialog::closeEvent(QCloseEvent * e)
-{
-       form_->slotWMHide();
-       e->accept();
+       // disable for read-only documents
+       bc().addReadOnly(spacingCO);
+       bc().addReadOnly(valueLE);
+       bc().addReadOnly(unitCO);
+       bc().addReadOnly(keepCB);
+
+       // initialize the length validator
+       bc().addCheckedLineEdit(valueLE, valueL);
 }
 
 
-void GuiVSpaceDialog::change_adaptor()
+void GuiVSpace::change_adaptor()
 {
-       form_->changed();
+       changed();
 }
 
 
-void GuiVSpaceDialog::enableCustom(int selection)
+void GuiVSpace::enableCustom(int selection)
 {
        bool const enable = selection == 5;
        valueLE->setEnabled(enable);
@@ -97,12 +92,6 @@ void GuiVSpaceDialog::enableCustom(int selection)
 }
 
 
-/////////////////////////////////////////////////////////////////////
-//
-// GuiVSpace
-//
-/////////////////////////////////////////////////////////////////////
-
 static void setWidgetsFromVSpace(VSpace const & space,
                          QComboBox * spacing,
                          QLineEdit * value,
@@ -111,30 +100,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 +126,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 +144,49 @@ static VSpace setVSpaceFromWidgets(int spacing,
 }
 
 
-GuiVSpace::GuiVSpace(Dialog & parent)
-       : GuiView<GuiVSpaceDialog>(parent, _("Vertical Space Settings"))
-{}
-
-
-void GuiVSpace::build_dialog()
+void GuiVSpace::applyView()
 {
-       // 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);
+       // If a vspace choice is "Length" but there's no text in
+       // the input field, do not insert a vspace at all.
+       if (spacingCO->currentIndex() == 5 && valueLE->text().isEmpty())
+               return;
 
-       // disable for read-only documents
-       bcview().addReadOnly(dialog_->spacingCO);
-       bcview().addReadOnly(dialog_->valueLE);
-       bcview().addReadOnly(dialog_->unitCO);
-       bcview().addReadOnly(dialog_->keepCB);
+       params_ = setVSpaceFromWidgets(spacingCO->currentIndex(),
+                       valueLE, unitCO, keepCB->isChecked()); 
+}
 
-       // initialize the length validator
-       addCheckedLineEdit(bcview(), dialog_->valueLE, dialog_->valueL);
 
-       // remove the %-items from the unit choice
-       dialog_->unitCO->noPercents();
+void GuiVSpace::updateContents()
+{
+       setWidgetsFromVSpace(params_, spacingCO, valueLE, unitCO, keepCB);
 }
 
 
-void GuiVSpace::apply()
+bool GuiVSpace::initialiseParams(string const & data)
 {
-       // 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;
+       InsetVSpace::string2params(data, params_);
+       setButtonsValid(true);
+       return true;
+}
 
-       VSpace const space =
-               setVSpaceFromWidgets(dialog_->spacingCO->currentIndex(),
-                                    dialog_->valueLE,
-                                    dialog_->unitCO,
-                                    dialog_->keepCB->isChecked());
 
-       controller().params() = space;
+void GuiVSpace::clearParams()
+{
+       params_ = VSpace();
 }
 
 
-void GuiVSpace::update_contents()
+void GuiVSpace::dispatchParams()
 {
-       setWidgetsFromVSpace(controller().params(),
-                            dialog_->spacingCO,
-                            dialog_->valueLE,
-                            dialog_->unitCO,
-                            dialog_->keepCB);
+       dispatch(FuncRequest(getLfun(), InsetVSpace::params2string(params_)));
 }
 
+
+Dialog * createGuiVSpace(GuiView & lv) { return new GuiVSpace(lv); }
+
+
 } // namespace frontend
 } // namespace lyx
 
 
-#include "GuiVSpace_moc.cpp"
+#include "moc_GuiVSpace.cpp"