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 INCLUDED_CUI_SOURCE_INC_CHARDLG_HXX
20 : #define INCLUDED_CUI_SOURCE_INC_CHARDLG_HXX
21 :
22 : #include <svtools/ctrlbox.hxx>
23 : #include <svtools/stdctrl.hxx>
24 : #include <sfx2/tabdlg.hxx>
25 : #include <svx/fntctrl.hxx>
26 : #include <svx/checklbx.hxx>
27 : #include <svx/langbox.hxx>
28 : #include <vcl/layout.hxx>
29 :
30 : // forward ---------------------------------------------------------------
31 :
32 : class SvxFontListItem;
33 : class FontList;
34 :
35 : // class SvxCharBasePage -------------------------------------------------
36 :
37 : class SvxCharBasePage : public SfxTabPage
38 : {
39 : protected:
40 : VclPtr<SvxFontPrevWindow> m_pPreviewWin;
41 :
42 : bool m_bPreviewBackgroundToCharacter;
43 :
44 : SvxCharBasePage(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription, const SfxItemSet& rItemset);
45 :
46 : void SetPrevFontWidthScale( const SfxItemSet& rSet );
47 : void SetPrevFontEscapement( sal_uInt8 nProp, sal_uInt8 nEscProp, short nEsc );
48 :
49 : inline SvxFont& GetPreviewFont();
50 : inline SvxFont& GetPreviewCJKFont();
51 : inline SvxFont& GetPreviewCTLFont();
52 :
53 : public:
54 : virtual ~SvxCharBasePage();
55 : virtual void dispose() SAL_OVERRIDE;
56 :
57 : using SfxTabPage::ActivatePage;
58 : using SfxTabPage::DeactivatePage;
59 :
60 : virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
61 :
62 : };
63 :
64 : // class SvxCharNamePage -------------------------------------------------
65 :
66 : struct SvxCharNamePage_Impl;
67 :
68 : class SvxCharNamePage : public SvxCharBasePage
69 : {
70 : friend class VclPtr<SvxCharNamePage>;
71 :
72 : private:
73 : static const sal_uInt16 pNameRanges[];
74 : VclPtr<VclContainer> m_pWestFrame;
75 : VclPtr<FixedText> m_pWestFontNameFT;
76 : VclPtr<FontNameBox> m_pWestFontNameLB;
77 : VclPtr<FixedText> m_pWestFontStyleFT;
78 : VclPtr<FontStyleBox> m_pWestFontStyleLB;
79 : VclPtr<FixedText> m_pWestFontSizeFT;
80 : VclPtr<FontSizeBox> m_pWestFontSizeLB;
81 : VclPtr<FixedText> m_pWestFontLanguageFT;
82 : VclPtr<SvxLanguageComboBox> m_pWestFontLanguageLB;
83 : VclPtr<FixedText> m_pWestFontTypeFT;
84 :
85 : VclPtr<VclContainer> m_pEastFrame;
86 : VclPtr<FixedText> m_pEastFontNameFT;
87 : VclPtr<FontNameBox> m_pEastFontNameLB;
88 : VclPtr<FixedText> m_pEastFontStyleFT;
89 : VclPtr<FontStyleBox> m_pEastFontStyleLB;
90 : VclPtr<FixedText> m_pEastFontSizeFT;
91 : VclPtr<FontSizeBox> m_pEastFontSizeLB;
92 : VclPtr<FixedText> m_pEastFontLanguageFT;
93 : VclPtr<SvxLanguageBox> m_pEastFontLanguageLB;
94 : VclPtr<FixedText> m_pEastFontTypeFT;
95 :
96 : VclPtr<VclContainer> m_pCTLFrame;
97 : VclPtr<FixedText> m_pCTLFontNameFT;
98 : VclPtr<FontNameBox> m_pCTLFontNameLB;
99 : VclPtr<FixedText> m_pCTLFontStyleFT;
100 : VclPtr<FontStyleBox> m_pCTLFontStyleLB;
101 : VclPtr<FixedText> m_pCTLFontSizeFT;
102 : VclPtr<FontSizeBox> m_pCTLFontSizeLB;
103 : VclPtr<FixedText> m_pCTLFontLanguageFT;
104 : VclPtr<SvxLanguageBox> m_pCTLFontLanguageLB;
105 : VclPtr<FixedText> m_pCTLFontTypeFT;
106 :
107 : SvxCharNamePage_Impl* m_pImpl;
108 :
109 : SvxCharNamePage( vcl::Window* pParent, const SfxItemSet& rSet );
110 :
111 : void Initialize();
112 : const FontList* GetFontList() const;
113 : void UpdatePreview_Impl();
114 : void FillStyleBox_Impl( const FontNameBox* rBox );
115 : void FillSizeBox_Impl( const FontNameBox* rBox );
116 :
117 : enum LanguageGroup
118 : {
119 : /** Language for western text.
120 : */
121 : Western = 0,
122 :
123 : /** Language for asian text.
124 : */
125 : Asian,
126 :
127 : /** Language for ctl text.
128 : */
129 : Ctl
130 : };
131 :
132 : void Reset_Impl( const SfxItemSet& rSet, LanguageGroup eLangGrp );
133 : bool FillItemSet_Impl( SfxItemSet& rSet, LanguageGroup eLangGrp );
134 :
135 : DECL_LINK_TYPED(UpdateHdl_Impl, Idle *, void);
136 : DECL_LINK( FontModifyHdl_Impl, void* );
137 :
138 : public:
139 : using SfxTabPage::ActivatePage;
140 : using SfxTabPage::DeactivatePage;
141 :
142 : virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
143 : virtual sfxpg DeactivatePage( SfxItemSet* pSet = 0 ) SAL_OVERRIDE;
144 :
145 : public:
146 : virtual ~SvxCharNamePage();
147 : virtual void dispose() SAL_OVERRIDE;
148 :
149 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent, const SfxItemSet* rSet );
150 0 : static const sal_uInt16* GetRanges() { return pNameRanges; }
151 :
152 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
153 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
154 :
155 : void SetFontList( const SvxFontListItem& rItem );
156 : void EnableRelativeMode();
157 : void EnableSearchMode();
158 : /// the writer uses SID_ATTR_BRUSH as font background
159 : void SetPreviewBackgroundToCharacter();
160 :
161 : void DisableControls( sal_uInt16 nDisable );
162 : virtual void PageCreated(const SfxAllItemSet& aSet) SAL_OVERRIDE;
163 : };
164 :
165 : // class SvxCharEffectsPage ----------------------------------------------
166 :
167 : class SvxCharEffectsPage : public SvxCharBasePage
168 : {
169 : friend class VclPtr<SvxCharEffectsPage>;
170 :
171 : private:
172 : static const sal_uInt16 pEffectsRanges[];
173 : VclPtr<FixedText> m_pFontColorFT;
174 : VclPtr<ColorListBox> m_pFontColorLB;
175 :
176 : VclPtr<FixedText> m_pEffectsFT;
177 : VclPtr<ListBox> m_pEffectsLB;
178 :
179 : VclPtr<FixedText> m_pReliefFT;
180 : VclPtr<ListBox> m_pReliefLB;
181 :
182 : VclPtr<TriStateBox> m_pOutlineBtn;
183 : VclPtr<TriStateBox> m_pShadowBtn;
184 : VclPtr<TriStateBox> m_pBlinkingBtn;
185 : VclPtr<TriStateBox> m_pHiddenBtn;
186 :
187 : VclPtr<ListBox> m_pOverlineLB;
188 : VclPtr<FixedText> m_pOverlineColorFT;
189 : VclPtr<ColorListBox> m_pOverlineColorLB;
190 :
191 : VclPtr<ListBox> m_pStrikeoutLB;
192 :
193 : VclPtr<ListBox> m_pUnderlineLB;
194 : VclPtr<FixedText> m_pUnderlineColorFT;
195 : VclPtr<ColorListBox> m_pUnderlineColorLB;
196 :
197 : VclPtr<CheckBox> m_pIndividualWordsBtn;
198 :
199 : VclPtr<FixedText> m_pEmphasisFT;
200 : VclPtr<ListBox> m_pEmphasisLB;
201 :
202 : VclPtr<FixedText> m_pPositionFT;
203 : VclPtr<ListBox> m_pPositionLB;
204 :
205 : sal_uInt16 m_nHtmlMode;
206 :
207 : OUString m_aTransparentColorName;
208 :
209 : SvxCharEffectsPage( vcl::Window* pParent, const SfxItemSet& rSet );
210 :
211 : void Initialize();
212 : void UpdatePreview_Impl();
213 : void SetCaseMap_Impl( SvxCaseMap eCaseMap );
214 : void ResetColor_Impl( const SfxItemSet& rSet );
215 : bool FillItemSetColor_Impl( SfxItemSet& rSet );
216 :
217 : DECL_LINK( SelectHdl_Impl, ListBox* );
218 : DECL_LINK(CbClickHdl_Impl, void *);
219 : DECL_LINK(TristClickHdl_Impl, void *);
220 : DECL_LINK(UpdatePreview_Impl, void *);
221 : DECL_LINK( ColorBoxSelectHdl_Impl, ColorListBox* );
222 :
223 : public:
224 : virtual ~SvxCharEffectsPage();
225 : virtual void dispose() SAL_OVERRIDE;
226 :
227 : using SfxTabPage::DeactivatePage;
228 : virtual sfxpg DeactivatePage( SfxItemSet* pSet = 0 ) SAL_OVERRIDE;
229 :
230 : public:
231 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent, const SfxItemSet* rSet );
232 0 : static const sal_uInt16* GetRanges() { return pEffectsRanges; }
233 :
234 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
235 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
236 :
237 : void DisableControls( sal_uInt16 nDisable );
238 : void EnableFlash();
239 : /// the writer uses SID_ATTR_BRUSH as font background
240 : void SetPreviewBackgroundToCharacter();
241 : virtual void PageCreated(const SfxAllItemSet& aSet) SAL_OVERRIDE;
242 : };
243 :
244 : // class SvxCharPositionPage ---------------------------------------------
245 :
246 :
247 : class SvxCharPositionPage : public SvxCharBasePage
248 : {
249 : friend class VclPtr<SvxCharPositionPage>;
250 : static const sal_uInt16 pPositionRanges[];
251 :
252 : private:
253 : VclPtr<RadioButton> m_pHighPosBtn;
254 : VclPtr<RadioButton> m_pNormalPosBtn;
255 : VclPtr<RadioButton> m_pLowPosBtn;
256 : VclPtr<FixedText> m_pHighLowFT;
257 : VclPtr<MetricField> m_pHighLowMF;
258 : VclPtr<CheckBox> m_pHighLowRB;
259 : VclPtr<FixedText> m_pFontSizeFT;
260 : VclPtr<MetricField> m_pFontSizeMF;
261 :
262 : VclPtr<VclContainer> m_pRotationContainer;
263 :
264 : VclPtr<FixedText> m_pScalingFT;
265 : VclPtr<FixedText> m_pScalingAndRotationFT;
266 : VclPtr<RadioButton> m_p0degRB;
267 : VclPtr<RadioButton> m_p90degRB;
268 : VclPtr<RadioButton> m_p270degRB;
269 : VclPtr<CheckBox> m_pFitToLineCB;
270 :
271 : VclPtr<MetricField> m_pScaleWidthMF;
272 :
273 : VclPtr<ListBox> m_pKerningLB;
274 : VclPtr<FixedText> m_pKerningFT;
275 : VclPtr<MetricField> m_pKerningMF;
276 : VclPtr<CheckBox> m_pPairKerningBtn;
277 :
278 : short m_nSuperEsc;
279 : short m_nSubEsc;
280 :
281 : sal_uInt16 m_nScaleWidthItemSetVal;
282 : sal_uInt16 m_nScaleWidthInitialVal;
283 :
284 : sal_uInt8 m_nSuperProp;
285 : sal_uInt8 m_nSubProp;
286 :
287 : SvxCharPositionPage( vcl::Window* pParent, const SfxItemSet& rSet );
288 :
289 : void Initialize();
290 : void UpdatePreview_Impl( sal_uInt8 nProp, sal_uInt8 nEscProp, short nEsc );
291 : void SetEscapement_Impl( sal_uInt16 nEsc );
292 :
293 : DECL_LINK( PositionHdl_Impl, RadioButton* );
294 : DECL_LINK( RotationHdl_Impl, RadioButton* );
295 : DECL_LINK( FontModifyHdl_Impl, void *);
296 : DECL_LINK( AutoPositionHdl_Impl, CheckBox* );
297 : DECL_LINK( FitToLineHdl_Impl, CheckBox* );
298 : DECL_LINK( KerningSelectHdl_Impl, void *);
299 : DECL_LINK( KerningModifyHdl_Impl, void *);
300 : DECL_LINK( LoseFocusHdl_Impl, MetricField* );
301 : DECL_LINK( ScaleWidthModifyHdl_Impl, void *);
302 :
303 : public:
304 : virtual ~SvxCharPositionPage();
305 : virtual void dispose() SAL_OVERRIDE;
306 :
307 : using SfxTabPage::ActivatePage;
308 : using SfxTabPage::DeactivatePage;
309 :
310 : virtual sfxpg DeactivatePage( SfxItemSet* pSet = 0 ) SAL_OVERRIDE;
311 : virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
312 :
313 : public:
314 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent, const SfxItemSet* rSet );
315 0 : static const sal_uInt16* GetRanges() { return pPositionRanges; }
316 :
317 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
318 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
319 : virtual void FillUserData() SAL_OVERRIDE;
320 : /// the writer uses SID_ATTR_BRUSH as font background
321 : void SetPreviewBackgroundToCharacter();
322 : virtual void PageCreated(const SfxAllItemSet& aSet) SAL_OVERRIDE;
323 : };
324 :
325 : // class SvxCharTwoLinesPage ---------------------------------------------
326 :
327 : class SvxCharTwoLinesPage : public SvxCharBasePage
328 : {
329 : friend class VclPtr<SvxCharTwoLinesPage>;
330 : private:
331 : static const sal_uInt16 pTwoLinesRanges[];
332 : VclPtr<CheckBox> m_pTwoLinesBtn;
333 : VclPtr<VclContainer> m_pEnclosingFrame;
334 : VclPtr<ListBox> m_pStartBracketLB;
335 : VclPtr<ListBox> m_pEndBracketLB;
336 :
337 : sal_uInt16 m_nStartBracketPosition;
338 : sal_uInt16 m_nEndBracketPosition;
339 :
340 : SvxCharTwoLinesPage(vcl::Window* pParent, const SfxItemSet& rSet);
341 :
342 : void UpdatePreview_Impl();
343 : void Initialize();
344 : void SelectCharacter( ListBox* pBox );
345 : void SetBracket( sal_Unicode cBracket, bool bStart );
346 :
347 : DECL_LINK(TwoLinesHdl_Impl, void *);
348 : DECL_LINK( CharacterMapHdl_Impl, ListBox* );
349 :
350 : public:
351 : virtual ~SvxCharTwoLinesPage();
352 : virtual void dispose() SAL_OVERRIDE;
353 :
354 : using SfxTabPage::ActivatePage;
355 : using SfxTabPage::DeactivatePage;
356 :
357 : virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
358 : virtual sfxpg DeactivatePage( SfxItemSet* pSet = 0 ) SAL_OVERRIDE;
359 :
360 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent, const SfxItemSet* rSet );
361 0 : static const sal_uInt16* GetRanges() { return pTwoLinesRanges; }
362 :
363 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
364 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
365 : /// the writer uses SID_ATTR_BRUSH as font background
366 : void SetPreviewBackgroundToCharacter();
367 : virtual void PageCreated(const SfxAllItemSet& aSet) SAL_OVERRIDE;
368 : };
369 :
370 : #endif // INCLUDED_CUI_SOURCE_INC_CHARDLG_HXX
371 :
372 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|