#include "qt_helpers.h"
#include "Validator.h"
-#include "LyXRC.h" // to set the default length values
#include "Spacing.h"
-#include "FuncRequest.h"
+#include "VSpace.h"
#include "insets/InsetVSpace.h"
namespace lyx {
namespace frontend {
-GuiVSpace::GuiVSpace(GuiView & lv)
- : GuiDialog(lv, "vspace", qt_("Vertical Space Settings"))
+GuiVSpace::GuiVSpace(QWidget * parent) : InsetParamsWidget(parent)
{
setupUi(this);
- 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(QString)),
- this, SLOT(change_adaptor()));
connect(valueLE, SIGNAL(textChanged(QString)),
- this, SLOT(change_adaptor()));
- connect(spacingCO, SIGNAL(activated(int)),
- this, SLOT(enableCustom(int)));
+ 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));
-
- // Manage the ok, apply, restore and cancel/close buttons
- bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
- bc().setOK(okPB);
- bc().setApply(applyPB);
- bc().setCancel(closePB);
+ connect(spacingCO, SIGNAL(activated(int)),
+ this, SLOT(enableCustom(int)));
- // disable for read-only documents
- bc().addReadOnly(spacingCO);
- bc().addReadOnly(valueLE);
- bc().addReadOnly(unitCO);
- bc().addReadOnly(keepCB);
+ // Set up a signed glue length validator
+ LengthValidator * v = new LengthValidator(valueLE);
+ v->setBottom(GlueLength());
+ valueLE->setValidator(v);
// initialize the length validator
- bc().addCheckedLineEdit(valueLE, valueL);
-
- // remove the %-items from the unit choice
- unitCO->noPercents();
-}
-
-
-void GuiVSpace::change_adaptor()
-{
- changed();
+ addCheckedWidget(valueLE, valueL);
+ enableCustom(spacingCO->currentIndex());
}
{
bool const enable = selection == 5;
valueLE->setEnabled(enable);
+ if (enable)
+ valueLE->setFocus();
+ valueL->setEnabled(enable);
unitCO->setEnabled(enable);
+ changed();
}
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);
}
-void GuiVSpace::applyView()
+docstring GuiVSpace::dialogToParams() const
{
// 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;
-
- params_ = setVSpaceFromWidgets(spacingCO->currentIndex(),
- valueLE, unitCO, keepCB->isChecked());
-}
+ return docstring();
-
-void GuiVSpace::updateContents()
-{
- setWidgetsFromVSpace(params_, spacingCO, valueLE, unitCO, keepCB);
+ VSpace const params = setVSpaceFromWidgets(spacingCO->currentIndex(),
+ valueLE, unitCO, keepCB->isChecked());
+ return from_ascii(InsetVSpace::params2string(params));
}
-bool GuiVSpace::initialiseParams(string const & data)
+void GuiVSpace::paramsToDialog(Inset const * inset)
{
- InsetVSpace::string2params(data, params_);
- setButtonsValid(true);
- return true;
+ InsetVSpace const * vs = static_cast<InsetVSpace const *>(inset);
+ VSpace const & params = vs->space();
+ setWidgetsFromVSpace(params, spacingCO, valueLE, unitCO, keepCB);
+ enableCustom(spacingCO->currentIndex());
}
-void GuiVSpace::clearParams()
+bool GuiVSpace::checkWidgets(bool readonly) const
{
- params_ = VSpace();
-}
+ valueLE->setReadOnly(readonly);
+ keepCB->setEnabled(!readonly);
+ if (readonly) {
+ spacingCO->setEnabled(false);
+ unitCO->setEnabled(false);
+ } else {
+ bool const enable = (spacingCO->currentIndex() == 5);
+ valueLE->setEnabled(enable);
+ valueL->setEnabled(enable);
+ unitCO->setEnabled(enable);
+ }
-void GuiVSpace::dispatchParams()
-{
- dispatch(FuncRequest(getLfun(), InsetVSpace::params2string(params_)));
+ return InsetParamsWidget::checkWidgets();
}
-
-Dialog * createGuiVSpace(GuiView & lv) { return new GuiVSpace(lv); }
-
-
} // namespace frontend
} // namespace lyx