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 LyXParagraph 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;
70 LyXParagraph const * physpar = par;
72 if (physpar->params.spaceTop().kind() == VSpace::LENGTH) {
73 LyXGlueLength above = physpar->params.spaceTop().length();
74 lyxerr[Debug::GUI] << "Reading above space : \""
75 << physpar->params.spaceTop().length().asString() << "\"" << endl;
77 dialog_->setAboveLength(above.value(), above.plusValue(), above.minusValue(),
78 above.unit(), above.plusUnit(), above.minusUnit());
80 dialog_->setAboveLength(0.0, 0.0, 0.0, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE);
82 if (physpar->params.spaceBottom().kind() == VSpace::LENGTH) {
83 LyXGlueLength below = physpar->params.spaceBottom().length();
84 lyxerr[Debug::GUI] << "Reading below space : \""
85 << physpar->params.spaceBottom().length().asString() << "\"" << endl;
87 dialog_->setBelowLength(below.value(), below.plusValue(), below.minusValue(),
88 below.unit(), below.plusUnit(), below.minusUnit());
90 dialog_->setBelowLength(0.0, 0.0, 0.0, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE);
92 dialog_->setLabelWidth(text->cursor.par()->GetLabelWidthString().c_str());
93 dialog_->setAlign(align);
95 dialog_->setChecks(physpar->params.lineTop(),
96 physpar->params.lineBottom(),
97 physpar->params.pagebreakTop(),
98 physpar->params.pagebreakBottom(),
99 physpar->params.noindent());
101 dialog_->setSpace(physpar->params.spaceTop().kind(),
102 physpar->params.spaceBottom().kind(),
103 physpar->params.spaceTop().keep(),
104 physpar->params.spaceBottom().keep());
108 void FormParagraph::apply()
116 if (dialog_->getSpaceAboveKind() == VSpace::LENGTH)
117 spaceabove = VSpace(dialog_->getAboveLength());
119 spaceabove = VSpace(dialog_->getSpaceAboveKind());
121 if (dialog_->getSpaceBelowKind() == VSpace::LENGTH)
122 spacebelow = VSpace(dialog_->getBelowLength());
124 spacebelow = VSpace(dialog_->getSpaceBelowKind());
126 spaceabove.setKeep(dialog_->getAboveKeep());
127 spacebelow.setKeep(dialog_->getBelowKeep());
129 lyxerr[Debug::GUI] << "Setting above space \""
130 << LyXGlueLength(spaceabove.length().asString()).asString() << "\"" << endl;
131 lyxerr[Debug::GUI] << "Setting below space \""
132 << LyXGlueLength(spacebelow.length().asString()).asString() << "\"" << endl;
134 lv_->view()->text->SetParagraph(lv_->view(),
135 dialog_->getLineAbove(), dialog_->getLineBelow(),
136 dialog_->getPagebreakAbove(), dialog_->getPagebreakBelow(),
137 spaceabove, spacebelow, dialog_->getAlign(),
138 dialog_->getLabelWidth(), dialog_->getNoIndent());
140 lv_->view()->update(lv_->view()->text,
144 lv_->buffer()->markDirty();
145 setMinibuffer(lv_, _("Paragraph layout set"));
149 void FormParagraph::show()
152 dialog_ = new ParaDialog(this, 0,
153 _("LyX: Paragraph Options"), false);
155 if (!dialog_->isVisible())
156 h_ = d_->hideBufferDependent
157 .connect(slot(this, &FormParagraph::hide));
160 dialog_->setActiveWindow();
167 void FormParagraph::close()
173 void FormParagraph::hide()