3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
9 * \author Angus Leeming
10 * \author Edwin Leuven
11 * \author Jürgen Spitzmüller
13 * Full author contact details are available in file CREDITS.
19 #include "ControlVSpace.h"
21 #include "QVSpaceDialog.h"
23 #include "lyxrc.h" // to set the default length values
24 #include "qt_helpers.h"
25 #include "helper_funcs.h"
30 #include "support/lstrings.h"
31 #include "support/tostr.h"
33 #include <qcombobox.h>
34 #include <qlineedit.h>
35 #include <qcheckbox.h>
36 #include <qpushbutton.h>
37 #include "lengthcombo.h"
45 void setWidgetsFromVSpace(VSpace const & space,
52 switch (space.kind()) {
56 case VSpace::SMALLSKIP:
72 spacing->setCurrentItem(item);
73 keep->setChecked(space.keep());
75 LyXLength::UNIT default_unit =
76 (lyxrc.default_papersize > 3) ? LyXLength::CM : LyXLength::IN;
77 bool const custom_vspace = space.kind() == VSpace::LENGTH;
79 value->setEnabled(true);
80 unit->setEnabled(true);
81 string length = space.length().asString();
82 lengthToWidgets(value, unit, length, default_unit);
84 lengthToWidgets(value, unit, "", default_unit);
85 value->setEnabled(false);
86 unit->setEnabled(false);
91 VSpace setVSpaceFromWidgets(int spacing,
96 VSpace space = VSpace(VSpace::DEFSKIP);
100 space = VSpace(VSpace::DEFSKIP);
103 space = VSpace(VSpace::SMALLSKIP);
106 space = VSpace(VSpace::MEDSKIP);
109 space = VSpace(VSpace::BIGSKIP);
112 space = VSpace(VSpace::VFILL);
115 space = VSpace(LyXGlueLength(
116 widgetsToLength(value, unit)));
127 typedef QController<ControlVSpace, QView<QVSpaceDialog> > base_class;
129 QVSpace::QVSpace(Dialog & parent)
130 : base_class(parent, _("LyX: Vertical Space Settings"))
134 void QVSpace::build_dialog()
137 dialog_.reset(new QVSpaceDialog(this));
139 // Manage the ok, apply, restore and cancel/close buttons
140 bcview().setOK(dialog_->okPB);
141 bcview().setApply(dialog_->applyPB);
142 bcview().setCancel(dialog_->closePB);
144 // disable for read-only documents
145 bcview().addReadOnly(dialog_->spacingCO);
146 bcview().addReadOnly(dialog_->valueLE);
147 bcview().addReadOnly(dialog_->unitCO);
148 bcview().addReadOnly(dialog_->keepCB);
150 // remove the %-items from the unit choice
151 dialog_->unitCO->noPercents();
155 void QVSpace::apply()
158 // If a vspace choice is "Length" but there's no text in
159 // the input field, do not insert a vspace at all.
160 if (dialog_->spacingCO->currentItem() == 6
161 && dialog_->valueLE->text().isEmpty())
165 setVSpaceFromWidgets(dialog_->spacingCO->currentItem(),
168 dialog_->keepCB->isChecked());
170 controller().params() = space;
174 void QVSpace::update_contents()
176 setWidgetsFromVSpace(controller().params(),