2 * \file FormParagraph.C
3 * Copyright 2001 the LyX Team
4 * Read the file COPYING
14 #include "FormParagraph.h"
18 #include "QtLyXView.h"
22 using Liason::setMinibuffer;
25 FormParagraph::FormParagraph(LyXView *v, Dialogs *d)
26 : dialog_(0), lv_(v), d_(d), h_(0)
28 d->showLayoutParagraph.connect(slot(this, &FormParagraph::show));
32 FormParagraph::~FormParagraph()
38 void FormParagraph::update(bool switched)
45 if (!lv_->view()->available())
48 Buffer *buf = lv_->view()->buffer();
50 if (readonly != buf->isReadonly()) {
51 readonly = buf->isReadonly();
52 dialog_->setReadOnly(readonly);
57 if (lv_->view()->theLockingInset())
58 text = lv_->view()->theLockingInset()->getLyXText(lv_->view());
61 text = lv_->view()->text;
63 Paragraph const * par = text->cursor.par();
65 int align = par->GetAlign();
67 if (align==LYX_ALIGN_LAYOUT)
68 align = textclasslist.Style(buf->params.textclass, par->GetLayout()).align;
71 // Just remove this and change physpar to par
72 Paragraph const * physpar = par;
74 if (physpar->params.spaceTop().kind() == VSpace::LENGTH) {
75 LyXGlueLength above = physpar->params.spaceTop().length();
76 lyxerr[Debug::GUI] << "Reading above space : \""
77 << physpar->params.spaceTop().length().asString() << "\"" << endl;
79 dialog_->setAboveLength(above.value(), above.plusValue(), above.minusValue(),
80 above.unit(), above.plusUnit(), above.minusUnit());
82 dialog_->setAboveLength(0.0, 0.0, 0.0, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE);
84 if (physpar->params.spaceBottom().kind() == VSpace::LENGTH) {
85 LyXGlueLength below = physpar->params.spaceBottom().length();
86 lyxerr[Debug::GUI] << "Reading below space : \""
87 << physpar->params.spaceBottom().length().asString() << "\"" << endl;
89 dialog_->setBelowLength(below.value(), below.plusValue(), below.minusValue(),
90 below.unit(), below.plusUnit(), below.minusUnit());
92 dialog_->setBelowLength(0.0, 0.0, 0.0, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE);
94 dialog_->setLabelWidth(text->cursor.par()->GetLabelWidthString().c_str());
95 dialog_->setAlign(align);
97 dialog_->setChecks(physpar->params.lineTop(),
98 physpar->params.lineBottom(),
99 physpar->params.pagebreakTop(),
100 physpar->params.pagebreakBottom(),
101 physpar->params.noindent());
103 dialog_->setSpace(physpar->params.spaceTop().kind(),
104 physpar->params.spaceBottom().kind(),
105 physpar->params.spaceTop().keep(),
106 physpar->params.spaceBottom().keep());
108 if (par->params.spaceTop().kind() == VSpace::LENGTH) {
109 LyXGlueLength above = par->params.spaceTop().length();
110 lyxerr[Debug::GUI] << "Reading above space : \""
111 << par->params.spaceTop().length().asString() << "\"" << endl;
113 dialog_->setAboveLength(above.value(), above.plusValue(),
115 above.unit(), above.plusUnit(),
118 dialog_->setAboveLength(0.0, 0.0, 0.0,
119 LyXLength::UNIT_NONE,
120 LyXLength::UNIT_NONE,
121 LyXLength::UNIT_NONE);
123 if (par->params.spaceBottom().kind() == VSpace::LENGTH) {
124 LyXGlueLength below = par->params.spaceBottom().length();
125 lyxerr[Debug::GUI] << "Reading below space : \""
126 << below.asString() << "\"" << endl;
128 dialog_->setBelowLength(below.value(),
135 dialog_->setBelowLength(0.0, 0.0, 0.0,
136 LyXLength::UNIT_NONE,
137 LyXLength::UNIT_NONE,
138 LyXLength::UNIT_NONE);
140 dialog_->setLabelWidth(text->cursor.par()->GetLabelWidthString());
141 dialog_->setAlign(align);
143 dialog_->setChecks(par->params.lineTop(),
144 par->params.lineBottom(),
145 par->params.pagebreakTop(),
146 par->params.pagebreakBottom(),
147 par->params.noindent());
149 dialog_->setSpace(par->params.spaceTop().kind(),
150 par->params.spaceBottom().kind(),
151 par->params.spaceTop().keep(),
152 par->params.spaceBottom().keep());
157 void FormParagraph::apply()
165 if (dialog_->getSpaceAboveKind() == VSpace::LENGTH)
166 spaceabove = VSpace(dialog_->getAboveLength());
168 spaceabove = VSpace(dialog_->getSpaceAboveKind());
170 if (dialog_->getSpaceBelowKind() == VSpace::LENGTH)
171 spacebelow = VSpace(dialog_->getBelowLength());
173 spacebelow = VSpace(dialog_->getSpaceBelowKind());
175 spaceabove.setKeep(dialog_->getAboveKeep());
176 spacebelow.setKeep(dialog_->getBelowKeep());
178 lyxerr[Debug::GUI] << "Setting above space \""
179 << LyXGlueLength(spaceabove.length().asString()).asString() << "\"" << endl;
180 lyxerr[Debug::GUI] << "Setting below space \""
181 << LyXGlueLength(spacebelow.length().asString()).asString() << "\"" << endl;
183 lv_->view()->text->SetParagraph(lv_->view(),
184 dialog_->getLineAbove(), dialog_->getLineBelow(),
185 dialog_->getPagebreakAbove(), dialog_->getPagebreakBelow(),
186 spaceabove, spacebelow, dialog_->getAlign(),
187 dialog_->getLabelWidth(), dialog_->getNoIndent());
189 lv_->view()->update(lv_->view()->text,
193 lv_->buffer()->markDirty();
194 setMinibuffer(lv_, _("Paragraph layout set"));
198 void FormParagraph::show()
201 dialog_ = new ParaDialog(this, 0,
202 _("LyX: Paragraph Options"), false);
204 if (!dialog_->isVisible())
205 h_ = d_->hideBufferDependent
206 .connect(slot(this, &FormParagraph::hide));
209 dialog_->setActiveWindow();
216 void FormParagraph::close()
222 void FormParagraph::hide()