Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : #ifndef _SVX_PARAGRPH_HXX
20 : #define _SVX_PARAGRPH_HXX
21 :
22 : #include <vcl/button.hxx>
23 : #include <vcl/fixed.hxx>
24 : #include <sfx2/tabdlg.hxx>
25 : #include <svx/relfld.hxx> // SvxRelativeField
26 : #include <svx/paraprev.hxx> // Preview
27 : #include <svx/frmdirlbox.hxx>
28 : #include <vcl/lstbox.hxx>
29 : #include <svx/flagsdef.hxx>
30 :
31 : // forward ---------------------------------------------------------------
32 :
33 : class SvxLineSpacingItem;
34 :
35 : // class SvxStdParagraphTabPage ------------------------------------------
36 :
37 : /* {k:\svx\prototyp\dialog\parastd.bmp}
38 :
39 : [Description]
40 : With this TabPage standard attributes of a paragraph can be set
41 : (indention, distance, alignment, line spacing).
42 :
43 : [Items]
44 : <SvxAdjustItem><SID_ATTR_PARA_ADJUST>
45 : <SvxLineSpacingItem><SID_ATTR_PARA_LINESPACE>
46 : <SvxULSpaceItem><SID_ATTR_ULSPACE>
47 : <SvxLRSpaceItem><SID_ATTR_LRSPACE>
48 : */
49 :
50 0 : class SvxStdParagraphTabPage: public SfxTabPage
51 : {
52 : using TabPage::DeactivatePage;
53 :
54 : private:
55 : SvxStdParagraphTabPage( Window* pParent, const SfxItemSet& rSet );
56 :
57 : FixedLine aIndentFrm;
58 : // indention
59 : FixedText aLeftLabel;
60 : SvxRelativeField aLeftIndent;
61 :
62 : FixedText aRightLabel;
63 : SvxRelativeField aRightIndent;
64 :
65 : FixedText aFLineLabel;
66 : SvxRelativeField aFLineIndent;
67 : CheckBox aAutoCB;
68 :
69 : FixedLine aDistFrm;
70 :
71 : // distance
72 : FixedText aTopLabel;
73 : SvxRelativeField aTopDist;
74 : FixedText aBottomLabel;
75 : SvxRelativeField aBottomDist;
76 : CheckBox aContextualCB;
77 :
78 : // line spacing
79 : FixedLine aLineDistFrm;
80 : ListBox aLineDist;
81 : FixedText aLineDistAtLabel;
82 : MetricField aLineDistAtPercentBox;
83 : MetricField aLineDistAtMetricBox;
84 : String sAbsDist;
85 : SvxParaPrevWindow aExampleWin;
86 :
87 : // only writer
88 : FixedLine aRegisterFL;
89 : CheckBox aRegisterCB;
90 :
91 : Edit* pActLineDistFld;
92 : long nAbst;
93 : long nWidth;
94 : long nMinFixDist;
95 : sal_Bool bRelativeMode;
96 : sal_Bool bNegativeIndents;
97 :
98 : #ifdef _SVX_PARAGRPH_CXX
99 : void SetLineSpacing_Impl( const SvxLineSpacingItem& rAttr );
100 : void Init_Impl();
101 : void UpdateExample_Impl( sal_Bool bAll = sal_False );
102 :
103 : DECL_LINK( LineDistHdl_Impl, ListBox* );
104 : DECL_LINK(ModifyHdl_Impl, void *);
105 : DECL_LINK( AutoHdl_Impl, CheckBox* );
106 : #endif
107 :
108 : protected:
109 : virtual int DeactivatePage( SfxItemSet* pSet = 0 );
110 :
111 : public:
112 : DECL_LINK(ELRLoseFocusHdl, void *);
113 :
114 : static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet );
115 : static sal_uInt16* GetRanges();
116 :
117 : virtual sal_Bool FillItemSet( SfxItemSet& rSet );
118 : virtual void Reset( const SfxItemSet& rSet );
119 :
120 :
121 : void SetPageWidth( sal_uInt16 nPageWidth );
122 : void EnableRelativeMode();
123 : void EnableRegisterMode();
124 : void EnableContextualMode();
125 : void EnableAutoFirstLine();
126 : void EnableAbsLineDist(long nMinTwip);
127 : void EnableNegativeMode();
128 : virtual void PageCreated(SfxAllItemSet aSet);
129 : };
130 :
131 : // class SvxParaAlignTabPage ------------------------------------------------
132 :
133 : class SvxParaAlignTabPage : public SfxTabPage
134 : {
135 : using TabPage::DeactivatePage;
136 :
137 : // alignment
138 : FixedLine aAlignFrm;
139 : RadioButton aLeft;
140 : RadioButton aRight;
141 : RadioButton aCenter;
142 : RadioButton aJustify;
143 : FixedText aLastLineFT;
144 : ListBox aLastLineLB;
145 : CheckBox aExpandCB;
146 :
147 : CheckBox aSnapToGridCB;
148 :
149 : //preview
150 : SvxParaPrevWindow aExampleWin;
151 : //vertical alignment
152 : FixedLine aVertAlignFL;
153 :
154 : FixedText aVertAlignFT;
155 : ListBox aVertAlignLB;
156 :
157 : FixedLine aPropertiesFL;
158 : FixedText aTextDirectionFT;
159 : svx::FrameDirectionListBox aTextDirectionLB;
160 :
161 : #ifdef _SVX_PARAGRPH_CXX
162 : DECL_LINK(AlignHdl_Impl, void *);
163 : DECL_LINK(LastLineHdl_Impl, void *);
164 : DECL_LINK(TextDirectionHdl_Impl, void *);
165 :
166 : void UpdateExample_Impl( sal_Bool bAll = sal_False );
167 : #endif
168 :
169 : SvxParaAlignTabPage( Window* pParent, const SfxItemSet& rSet );
170 : virtual ~SvxParaAlignTabPage();
171 :
172 : protected:
173 : virtual int DeactivatePage( SfxItemSet* pSet = 0 );
174 :
175 : public:
176 : static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet );
177 : static sal_uInt16* GetRanges();
178 :
179 : virtual sal_Bool FillItemSet( SfxItemSet& rSet );
180 : virtual void Reset( const SfxItemSet& rSet );
181 :
182 : void EnableJustifyExt();
183 : virtual void PageCreated(SfxAllItemSet aSet);
184 : };
185 :
186 : // class SvxExtParagraphTabPage ------------------------------------------
187 :
188 : /* {k:\svx\prototyp\dialog\paraext.bmp}
189 :
190 : [Description]
191 : With this TabPage special attributes of a paragraph can be set
192 : (hyphenation, pagebreak, orphan, widow, ...).
193 :
194 : [Items]
195 : <SvxHyphenZoneItem><SID_ATTR_PARA_HYPHENZONE>
196 : <SvxFmtBreakItem><SID_ATTR_PARA_PAGEBREAK>
197 : <SvxFmtSplitItem><SID_ATTR_PARA_SPLIT>
198 : <SvxWidowsItem><SID_ATTR_PARA_WIDOWS>
199 : <SvxOrphansItem><SID_ATTR_PARA_ORPHANS>
200 : */
201 :
202 : class SvxExtParagraphTabPage: public SfxTabPage
203 : {
204 : using TabPage::DeactivatePage;
205 :
206 : public:
207 : virtual ~SvxExtParagraphTabPage();
208 :
209 : static SfxTabPage* Create( Window* pParent,
210 : const SfxItemSet& rSet );
211 : static sal_uInt16* GetRanges();
212 :
213 : virtual sal_Bool FillItemSet( SfxItemSet& rSet );
214 : virtual void Reset( const SfxItemSet& rSet );
215 :
216 : void DisablePageBreak();
217 :
218 : protected:
219 : virtual int DeactivatePage( SfxItemSet* pSet = 0 );
220 :
221 : private:
222 : SvxExtParagraphTabPage( Window* pParent, const SfxItemSet& rSet );
223 :
224 : // hyphenation
225 : FixedLine aExtFL;
226 : TriStateBox aHyphenBox;
227 : FixedText aBeforeText;
228 : NumericField aExtHyphenBeforeBox;
229 : FixedText aAfterText;
230 : NumericField aExtHyphenAfterBox;
231 : FixedText aMaxHyphenLabel;
232 : NumericField aMaxHyphenEdit;
233 :
234 : // pagebreak
235 : FixedLine aBreaksFL;
236 : TriStateBox aPageBreakBox;
237 : FixedText aBreakTypeFT;
238 : ListBox aBreakTypeLB;
239 : FixedText aBreakPositionFT;
240 : ListBox aBreakPositionLB;
241 : TriStateBox aApplyCollBtn;
242 : ListBox aApplyCollBox;
243 : FixedText aPagenumText;
244 : NumericField aPagenumEdit;
245 :
246 : FixedLine aExtendFL;
247 :
248 : // paragraph division
249 : TriStateBox aKeepTogetherBox;
250 : TriStateBox aKeepParaBox;
251 :
252 : // orphan/widow
253 : TriStateBox aOrphanBox;
254 : NumericField aOrphanRowNo;
255 : FixedText aOrphanRowLabel;
256 :
257 : TriStateBox aWidowBox;
258 : NumericField aWidowRowNo;
259 : FixedText aWidowRowLabel;
260 :
261 : sal_Bool bPageBreak;
262 : sal_Bool bHtmlMode;
263 : sal_uInt16 nStdPos;
264 :
265 : #ifdef _SVX_PARAGRPH_CXX
266 : DECL_LINK(PageBreakHdl_Impl, void *);
267 : DECL_LINK(KeepTogetherHdl_Impl, void *);
268 : DECL_LINK(WidowHdl_Impl, void *);
269 : DECL_LINK(OrphanHdl_Impl, void *);
270 : DECL_LINK(HyphenClickHdl_Impl, void *);
271 : DECL_LINK(ApplyCollClickHdl_Impl, void *);
272 : DECL_LINK( PageBreakPosHdl_Impl, ListBox* );
273 : DECL_LINK( PageBreakTypeHdl_Impl, ListBox* );
274 : #endif
275 : virtual void PageCreated(SfxAllItemSet aSet);
276 : };
277 :
278 : //--------------------------------------------------------------------------
279 : class SvxAsianTabPage : public SfxTabPage
280 : {
281 : FixedLine aOptionsFL;
282 :
283 : TriStateBox aForbiddenRulesCB;
284 : TriStateBox aHangingPunctCB;
285 :
286 : TriStateBox aScriptSpaceCB;
287 :
288 : SvxAsianTabPage( Window* pParent, const SfxItemSet& rSet );
289 :
290 : #ifdef _SVX_PARAGRPH_CXX
291 : DECL_LINK( ClickHdl_Impl, TriStateBox* );
292 : #endif
293 : public:
294 : ~SvxAsianTabPage();
295 :
296 :
297 : static SfxTabPage* Create( Window* pParent,
298 : const SfxItemSet& rSet );
299 : static sal_uInt16* GetRanges();
300 :
301 : virtual sal_Bool FillItemSet( SfxItemSet& rSet );
302 : virtual void Reset( const SfxItemSet& rSet );
303 :
304 : };
305 :
306 : #endif // #ifndef _SVX_PARAGRPH_HXX
307 :
308 :
309 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|