X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiVSpace.cpp;h=70d2ba7e6e4f7ffc642969da6645207bf8024ccf;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=df7c13da94fdd50d97df71c9bf4b5a8ed02c3f97;hpb=212386be8a1573fb52b5da718961835816a3c8e2;p=lyx.git diff --git a/src/frontends/qt4/GuiVSpace.cpp b/src/frontends/qt4/GuiVSpace.cpp index df7c13da94..70d2ba7e6e 100644 --- a/src/frontends/qt4/GuiVSpace.cpp +++ b/src/frontends/qt4/GuiVSpace.cpp @@ -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. */ @@ -21,47 +21,36 @@ #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 "ControlVSpace.h" -#include "frontend_helpers.h" +#include "insets/InsetVSpace.h" +#include "support/gettext.h" #include "support/lstrings.h" #include -#include #include #include #include - -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))); @@ -70,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); @@ -95,12 +92,6 @@ void GuiVSpaceDialog::enableCustom(int selection) } -///////////////////////////////////////////////////////////////////// -// -// GuiVSpace -// -///////////////////////////////////////////////////////////////////// - static void setWidgetsFromVSpace(VSpace const & space, QComboBox * spacing, QLineEdit * value, @@ -109,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); @@ -148,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); @@ -180,65 +144,49 @@ static VSpace setVSpaceFromWidgets(int spacing, } -GuiVSpace::GuiVSpace(GuiDialog & parent) - : GuiView(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::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"