]> git.lyx.org Git - lyx.git/blob - src/frontends/kde/FormParagraph.C
initalize memeber vars
[lyx.git] / src / frontends / kde / FormParagraph.C
1 /**
2  * \file FormParagraph.C
3  * Copyright 2001 the LyX Team
4  * Read the file COPYING
5  *
6  * \author John Levon
7  */
8
9 #include <config.h>
10
11 #include "paradlg.h"
12
13 #include "Dialogs.h"
14 #include "FormParagraph.h"
15 #include "Liason.h"
16 #include "gettext.h"
17 #include "buffer.h"
18 #include "QtLyXView.h"
19 #include "lyxtext.h"
20 #include "debug.h"
21
22 using Liason::setMinibuffer;
23 using std::endl;
24
25 FormParagraph::FormParagraph(LyXView *v, Dialogs *d)
26         : dialog_(0), lv_(v), d_(d), h_(0)
27 {
28         d->showLayoutParagraph.connect(slot(this, &FormParagraph::show));
29 }
30
31
32 FormParagraph::~FormParagraph()
33 {
34         delete dialog_;
35 }
36
37
38 void FormParagraph::update(bool switched)
39 {
40         if (switched) {
41                 hide();
42                 return;
43         }
44
45         if (!lv_->view()->available())
46                 return;
47
48         Buffer *buf = lv_->view()->buffer();
49         
50         if (readonly != buf->isReadonly()) {
51                 readonly = buf->isReadonly();
52                 dialog_->setReadOnly(readonly);
53         }
54
55         LyXText * text = 0;
56
57         if (lv_->view()->theLockingInset())
58                 text = lv_->view()->theLockingInset()->getLyXText(lv_->view());
59
60         if (!text)
61                 text = lv_->view()->text;
62
63         Paragraph const * par = text->cursor.par();
64
65         int align = par->GetAlign();
66         
67         if (align==LYX_ALIGN_LAYOUT)
68                 align = textclasslist.Style(buf->params.textclass, par->GetLayout()).align;
69
70 #if 0
71         // Just remove this and change physpar to par
72         Paragraph const * physpar = par;
73
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;
78  
79                 dialog_->setAboveLength(above.value(), above.plusValue(), above.minusValue(),
80                         above.unit(), above.plusUnit(), above.minusUnit());
81         } else
82                 dialog_->setAboveLength(0.0, 0.0, 0.0, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE);
83
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;
88
89                 dialog_->setBelowLength(below.value(), below.plusValue(), below.minusValue(),
90                         below.unit(), below.plusUnit(), below.minusUnit());
91         } else
92                 dialog_->setBelowLength(0.0, 0.0, 0.0, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE, LyXLength::UNIT_NONE);
93
94         dialog_->setLabelWidth(text->cursor.par()->GetLabelWidthString().c_str());
95         dialog_->setAlign(align);
96
97         dialog_->setChecks(physpar->params.lineTop(),
98                            physpar->params.lineBottom(),
99                            physpar->params.pagebreakTop(),
100                            physpar->params.pagebreakBottom(),
101                            physpar->params.noindent());
102  
103         dialog_->setSpace(physpar->params.spaceTop().kind(),
104                           physpar->params.spaceBottom().kind(),
105                           physpar->params.spaceTop().keep(),
106                           physpar->params.spaceBottom().keep());
107 #else
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;
112  
113                 dialog_->setAboveLength(above.value(), above.plusValue(),
114                                         above.minusValue(),
115                                         above.unit(), above.plusUnit(),
116                                         above.minusUnit());
117         } else
118                 dialog_->setAboveLength(0.0, 0.0, 0.0,
119                                         LyXLength::UNIT_NONE,
120                                         LyXLength::UNIT_NONE,
121                                         LyXLength::UNIT_NONE);
122
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;
127
128                 dialog_->setBelowLength(below.value(),
129                                         below.plusValue(),
130                                         below.minusValue(),
131                                         below.unit(),
132                                         below.plusUnit(),
133                                         below.minusUnit());
134         } else
135                 dialog_->setBelowLength(0.0, 0.0, 0.0,
136                                         LyXLength::UNIT_NONE,
137                                         LyXLength::UNIT_NONE,
138                                         LyXLength::UNIT_NONE);
139
140         dialog_->setLabelWidth(text->cursor.par()->GetLabelWidthString());
141         dialog_->setAlign(align);
142
143         dialog_->setChecks(par->params.lineTop(),
144                            par->params.lineBottom(),
145                            par->params.pagebreakTop(),
146                            par->params.pagebreakBottom(),
147                            par->params.noindent());
148  
149         dialog_->setSpace(par->params.spaceTop().kind(),
150                           par->params.spaceBottom().kind(),
151                           par->params.spaceTop().keep(),
152                           par->params.spaceBottom().keep());
153 #endif
154 }
155
156
157 void FormParagraph::apply()
158 {
159         if (readonly)
160                 return;
161
162         VSpace spaceabove;
163         VSpace spacebelow;
164
165         if (dialog_->getSpaceAboveKind() == VSpace::LENGTH)
166                 spaceabove = VSpace(dialog_->getAboveLength());
167         else
168                 spaceabove = VSpace(dialog_->getSpaceAboveKind());
169
170         if (dialog_->getSpaceBelowKind() == VSpace::LENGTH)
171                 spacebelow = VSpace(dialog_->getBelowLength());
172         else
173                 spacebelow = VSpace(dialog_->getSpaceBelowKind());
174
175         spaceabove.setKeep(dialog_->getAboveKeep());
176         spacebelow.setKeep(dialog_->getBelowKeep());
177
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;
182
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());
188
189         lv_->view()->update(lv_->view()->text, 
190                             BufferView::SELECT |
191                             BufferView::FITCUR |
192                             BufferView::CHANGE);
193         lv_->buffer()->markDirty();
194         setMinibuffer(lv_, _("Paragraph layout set"));
195 }
196
197
198 void FormParagraph::show()
199 {
200         if (!dialog_)
201                 dialog_ = new ParaDialog(this, 0,
202                                          _("LyX: Paragraph Options"), false);
203
204         if (!dialog_->isVisible())
205                 h_ = d_->hideBufferDependent
206                         .connect(slot(this, &FormParagraph::hide));
207
208         dialog_->raise();
209         dialog_->setActiveWindow();
210         update();
211          
212         dialog_->show();
213 }
214
215
216 void FormParagraph::close()
217 {
218         h_.disconnect();
219 }
220
221
222 void FormParagraph::hide()
223 {
224         dialog_->hide();
225         close();
226 }