]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiVSpace.cpp
Complete the removal of the embedding stuff. Maybe. It's hard to be sure we got every...
[lyx.git] / src / frontends / qt4 / GuiVSpace.cpp
index 568fc507097ffcf06d8ad0891b95b59f2ddbff26..e5abcd2117301b0866959f19e0935490d1b8600f 100644 (file)
 
 #include "LyXRC.h" // to set the default length values
 #include "Spacing.h"
-#include "VSpace.h"
+#include "FuncRequest.h"
 
-#include "ControlVSpace.h"
-#include "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)));
@@ -71,23 +61,34 @@ GuiVSpaceDialog::GuiVSpaceDialog(GuiVSpace * form)
                this, SLOT(change_adaptor()));
 
        valueLE->setValidator(unsignedLengthValidator(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);
+
+       // remove the %-items from the unit choice
+       unitCO->noPercents();
 }
 
 
-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);
@@ -95,12 +96,6 @@ void GuiVSpaceDialog::enableCustom(int selection)
 }
 
 
-/////////////////////////////////////////////////////////////////////
-//
-// GuiVSpace
-//
-/////////////////////////////////////////////////////////////////////
-
 static void setWidgetsFromVSpace(VSpace const & space,
                          QComboBox * spacing,
                          QLineEdit * value,
@@ -109,24 +104,12 @@ 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());
@@ -148,31 +131,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);
@@ -180,63 +149,47 @@ static VSpace setVSpaceFromWidgets(int spacing,
 }
 
 
-GuiVSpace::GuiVSpace(GuiDialog & 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
-       bc().setOK(dialog_->okPB);
-       bc().setApply(dialog_->applyPB);
-       bc().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
-       bc().addReadOnly(dialog_->spacingCO);
-       bc().addReadOnly(dialog_->valueLE);
-       bc().addReadOnly(dialog_->unitCO);
-       bc().addReadOnly(dialog_->keepCB);
+       params_ = setVSpaceFromWidgets(spacingCO->currentIndex(),
+                       valueLE, unitCO, keepCB->isChecked()); 
+}
 
-       // initialize the length validator
-       bc().addCheckedLineEdit(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::applyView()
+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