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 DIALOG_HXX
20 : #define DIALOG_HXX
21 :
22 : #include <vcl/image.hxx>
23 : #include <vcl/dialog.hxx>
24 : #include <vcl/fixed.hxx>
25 : #include <vcl/button.hxx>
26 : #include <vcl/layout.hxx>
27 : #include <sfx2/tabdlg.hxx>
28 : #include <vcl/combobox.hxx>
29 : #include <svx/charmap.hxx>
30 : #include <sfx2/basedlgs.hxx>
31 : #include <vcl/field.hxx>
32 : #include <vcl/menubtn.hxx>
33 : #include <vcl/scrbar.hxx>
34 : #include <vcl/ctrl.hxx>
35 : #include <vcl/menu.hxx>
36 : #include <vcl/outdev.hxx>
37 : #include <svtools/ctrlbox.hxx>
38 : #include <svtools/ctrltool.hxx>
39 : #include "utility.hxx"
40 : #include "format.hxx"
41 : #include "symbol.hxx"
42 :
43 : class SubsetMap;
44 : #define CATEGORY_NONE 0xFFFF
45 :
46 : /**************************************************************************/
47 :
48 : void SetFontStyle(const OUString &rStyleName, Font &rFont);
49 :
50 : /**************************************************************************/
51 :
52 0 : class SmPrintOptionsTabPage : public SfxTabPage
53 : {
54 : CheckBox* m_pTitle;
55 : CheckBox* m_pText;
56 : CheckBox* m_pFrame;
57 : RadioButton* m_pSizeNormal;
58 : RadioButton* m_pSizeScaled;
59 : RadioButton* m_pSizeZoomed;
60 : MetricField* m_pZoom;
61 : CheckBox* m_pNoRightSpaces;
62 : CheckBox* m_pSaveOnlyUsedSymbols;
63 :
64 : DECL_LINK(SizeButtonClickHdl, Button *);
65 :
66 : virtual sal_Bool FillItemSet(SfxItemSet& rSet);
67 : virtual void Reset(const SfxItemSet& rSet);
68 :
69 : public:
70 : static SfxTabPage* Create(Window *pWindow, const SfxItemSet &rSet);
71 :
72 : SmPrintOptionsTabPage(Window *pParent, const SfxItemSet &rOptions);
73 : };
74 :
75 : /**************************************************************************/
76 :
77 0 : class SmShowFont : public Control
78 : {
79 : virtual void Paint(const Rectangle&);
80 :
81 : public:
82 0 : SmShowFont(Window *pParent, const ResId& rResId) :
83 0 : Control(pParent, rResId)
84 : {
85 0 : }
86 :
87 : void SetFont(const Font& rFont);
88 : };
89 :
90 0 : class SmFontDialog : public ModalDialog
91 : {
92 : FixedText aFixedText1;
93 : ComboBox aFontBox;
94 : CheckBox aBoldCheckBox;
95 : CheckBox aItalicCheckBox;
96 : OKButton aOKButton1;
97 : HelpButton aHelpButton1;
98 : CancelButton aCancelButton1;
99 : SmShowFont aShowFont;
100 : FixedText aFixedText2;
101 :
102 : Font Face;
103 :
104 : DECL_LINK(FontSelectHdl, ComboBox *);
105 : DECL_LINK(FontModifyHdl, ComboBox *);
106 : DECL_LINK(AttrChangeHdl, CheckBox *);
107 : DECL_LINK(HelpButtonClickHdl, Button *);
108 :
109 : void InitColor_Impl();
110 :
111 : virtual void DataChanged( const DataChangedEvent& rDCEvt );
112 :
113 : public:
114 : SmFontDialog(Window * pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes, bool bFreeRes = true);
115 :
116 0 : const Font& GetFont() const { return Face; }
117 : void SetFont(const Font &rFont);
118 : };
119 :
120 : /**************************************************************************/
121 :
122 0 : class SmFontSizeDialog : public ModalDialog
123 : {
124 : MetricField* m_pBaseSize;
125 : MetricField* m_pTextSize;
126 : MetricField* m_pIndexSize;
127 : MetricField* m_pFunctionSize;
128 : MetricField* m_pOperatorSize;
129 : MetricField* m_pBorderSize;
130 : PushButton* m_pDefaultButton;
131 :
132 : DECL_LINK(DefaultButtonClickHdl, Button *);
133 :
134 : public:
135 : SmFontSizeDialog(Window *pParent);
136 :
137 : void ReadFrom(const SmFormat &rFormat);
138 : void WriteTo (SmFormat &rFormat) const;
139 : };
140 :
141 : /**************************************************************************/
142 :
143 0 : class SmFontTypeDialog : public ModalDialog
144 : {
145 : SmFontPickListBox* m_pVariableFont;
146 : SmFontPickListBox* m_pFunctionFont;
147 : SmFontPickListBox* m_pNumberFont;
148 : SmFontPickListBox* m_pTextFont;
149 : SmFontPickListBox* m_pSerifFont;
150 : SmFontPickListBox* m_pSansFont;
151 : SmFontPickListBox* m_pFixedFont;
152 : MenuButton* m_pMenuButton;
153 : PushButton* m_pDefaultButton;
154 :
155 : OutputDevice *pFontListDev;
156 :
157 : DECL_LINK(MenuSelectHdl, Menu *);
158 : DECL_LINK(DefaultButtonClickHdl, Button *);
159 : DECL_LINK(HelpButtonClickHdl, Button *);
160 :
161 : public:
162 : SmFontTypeDialog(Window *pParent, OutputDevice *pFntListDevice);
163 :
164 : void ReadFrom(const SmFormat &rFormat);
165 : void WriteTo (SmFormat &rFormat) const;
166 : };
167 :
168 : /**************************************************************************/
169 :
170 : #define NOCATEGORIES 10
171 :
172 : class SmCategoryDesc
173 : {
174 : OUString Name;
175 : OUString *Strings[4];
176 : Image *Graphics[4]; /* regular bitmaps */
177 : sal_uInt16 Minimum[4];
178 : sal_uInt16 Maximum[4];
179 : sal_uInt16 Value[4];
180 :
181 : public:
182 : SmCategoryDesc(VclBuilderContainer& rBuilder, sal_uInt16 nCategoryIdx);
183 : ~SmCategoryDesc();
184 :
185 0 : const OUString& GetName() const { return Name; }
186 0 : const OUString* GetString(sal_uInt16 Index) const { return Strings[Index]; }
187 0 : sal_uInt16 GetMinimum(sal_uInt16 Index) { return Minimum[Index]; }
188 0 : sal_uInt16 GetMaximum(sal_uInt16 Index) { return Maximum[Index]; }
189 0 : sal_uInt16 GetValue(sal_uInt16 Index) const { return Value[Index]; }
190 0 : void SetValue(sal_uInt16 Index, sal_uInt16 nVal) { Value[Index] = nVal;}
191 :
192 0 : const Image * GetGraphic(sal_uInt16 Index) const
193 : {
194 0 : return Graphics[Index];
195 : }
196 : };
197 :
198 :
199 : class SmDistanceDialog : public ModalDialog
200 : {
201 : VclFrame* m_pFrame;
202 : FixedText* m_pFixedText1;
203 : MetricField* m_pMetricField1;
204 : FixedText* m_pFixedText2;
205 : MetricField* m_pMetricField2;
206 : FixedText* m_pFixedText3;
207 : MetricField* m_pMetricField3;
208 : CheckBox* m_pCheckBox1;
209 : FixedText* m_pFixedText4;
210 : MetricField* m_pMetricField4;
211 : MenuButton* m_pMenuButton;
212 : PushButton* m_pDefaultButton;
213 : FixedImage* m_pBitmap;
214 :
215 : SmCategoryDesc *Categories[NOCATEGORIES];
216 : sal_uInt16 nActiveCategory;
217 : bool bScaleAllBrackets;
218 :
219 : DECL_LINK(GetFocusHdl, Control *);
220 : DECL_LINK(MenuSelectHdl, Menu *);
221 : DECL_LINK(DefaultButtonClickHdl, Button *);
222 : DECL_LINK(CheckBoxClickHdl, CheckBox *);
223 :
224 : using Window::SetHelpId;
225 : void SetHelpId(MetricField &rField, const OString& sHelpId);
226 : void SetCategory(sal_uInt16 Category);
227 :
228 : public:
229 : SmDistanceDialog(Window *pParent);
230 : ~SmDistanceDialog();
231 :
232 : void ReadFrom(const SmFormat &rFormat);
233 : void WriteTo (SmFormat &rFormat) /*const*/;
234 :
235 : // Window
236 : virtual void DataChanged( const DataChangedEvent &rEvt );
237 : };
238 :
239 :
240 : /**************************************************************************/
241 :
242 :
243 0 : class SmAlignDialog : public ModalDialog
244 : {
245 : RadioButton* m_pLeft;
246 : RadioButton* m_pCenter;
247 : RadioButton* m_pRight;
248 : PushButton* m_pDefaultButton;
249 :
250 : DECL_LINK(DefaultButtonClickHdl, Button *);
251 :
252 : public:
253 : SmAlignDialog(Window *pParent);
254 :
255 : void ReadFrom(const SmFormat &rFormat);
256 : void WriteTo (SmFormat &rFormat) const;
257 : };
258 :
259 : /**************************************************************************/
260 :
261 0 : class SmShowSymbolSetWindow : public Control
262 : {
263 : ScrollBar* m_pVScrollBar;
264 : SymbolPtrVec_t aSymbolSet;
265 : Link aSelectHdlLink;
266 : Link aDblClickHdlLink;
267 : sal_uInt16 nLen;
268 : sal_uInt16 nRows, nColumns;
269 : sal_uInt16 nXOffset, nYOffset;
270 : sal_uInt16 nSelectSymbol;
271 :
272 : void SetScrollBarRange();
273 : Point OffsetPoint(const Point &rPoint) const;
274 :
275 : virtual void Paint(const Rectangle&);
276 : virtual void MouseButtonDown(const MouseEvent& rMEvt);
277 : virtual void KeyInput(const KeyEvent& rKEvt);
278 : virtual void Resize();
279 : virtual Size GetOptimalSize() const;
280 :
281 : DECL_LINK( ScrollHdl, ScrollBar* );
282 : public:
283 : SmShowSymbolSetWindow(Window *pParent, WinBits nStyle);
284 : void setScrollbar(ScrollBar *pVScrollBar);
285 : void calccols();
286 : void SelectSymbol(sal_uInt16 nSymbol);
287 0 : sal_uInt16 GetSelectSymbol() const { return nSelectSymbol; }
288 : void SetSymbolSet(const SymbolPtrVec_t& rSymbolSet);
289 0 : void SetSelectHdl(const Link& rLink) { aSelectHdlLink = rLink; }
290 0 : void SetDblClickHdl(const Link& rLink) { aDblClickHdlLink = rLink; }
291 : };
292 :
293 0 : class SmShowSymbolSet : public VclHBox
294 : {
295 : SmShowSymbolSetWindow aSymbolWindow;
296 : ScrollBar aVScrollBar;
297 : Size aOutputSize;
298 :
299 : public:
300 : SmShowSymbolSet(Window *pParent);
301 :
302 0 : void SetSymbolSet(const SymbolPtrVec_t& rSymbolSet) { aSymbolWindow.SetSymbolSet(rSymbolSet); }
303 :
304 0 : void SelectSymbol(sal_uInt16 nSymbol) { aSymbolWindow.SelectSymbol(nSymbol); }
305 0 : sal_uInt16 GetSelectSymbol() const { return aSymbolWindow.GetSelectSymbol(); }
306 :
307 0 : void SetSelectHdl(const Link& rLink) { aSymbolWindow.SetSelectHdl(rLink); }
308 0 : void SetDblClickHdl(const Link& rLink) { aSymbolWindow.SetDblClickHdl(rLink); }
309 : };
310 :
311 : ////////////////////////////////////////////////////////////////////////////////
312 :
313 0 : class SmShowSymbol : public Control
314 : {
315 : Link aDblClickHdlLink;
316 :
317 : virtual void Paint(const Rectangle&);
318 : virtual void MouseButtonDown(const MouseEvent& rMEvt);
319 : virtual void Resize();
320 :
321 : void setFontSize(Font &rFont) const;
322 :
323 : public:
324 0 : SmShowSymbol(Window *pParent, WinBits nStyle)
325 0 : : Control(pParent, nStyle)
326 : {
327 0 : }
328 :
329 : void SetSymbol(const SmSym *pSymbol);
330 0 : void SetDblClickHdl(const Link &rLink) { aDblClickHdlLink = rLink; }
331 : };
332 :
333 : ////////////////////////////////////////////////////////////////////////////////
334 :
335 : class SmSymDefineDialog;
336 :
337 0 : class SmSymbolDialog : public ModalDialog
338 : {
339 : ListBox* m_pSymbolSets;
340 : SmShowSymbolSet* m_pSymbolSetDisplay;
341 : FixedText* m_pSymbolName;
342 : SmShowSymbol* m_pSymbolDisplay;
343 : PushButton* m_pGetBtn;
344 : PushButton* m_pEditBtn;
345 :
346 : SmViewShell &rViewSh;
347 : SmSymbolManager &rSymbolMgr;
348 :
349 : OUString aSymbolSetName;
350 : SymbolPtrVec_t aSymbolSet;
351 :
352 : OutputDevice *pFontListDev;
353 :
354 : DECL_LINK(SymbolSetChangeHdl, void*);
355 : DECL_LINK(SymbolChangeHdl, void*);
356 : DECL_LINK(SymbolDblClickHdl, void*);
357 : DECL_LINK(EditClickHdl, void*);
358 : DECL_LINK(GetClickHdl, void*);
359 :
360 : void FillSymbolSets(bool bDeleteText = true);
361 : void SetSymbolSetManager(SmSymbolManager &rMgr);
362 : const SmSym *GetSymbol() const;
363 : void InitColor_Impl();
364 :
365 : virtual void DataChanged( const DataChangedEvent& rDCEvt );
366 :
367 : public:
368 : SmSymbolDialog(Window * pParent, OutputDevice *pFntListDevice,
369 : SmSymbolManager &rSymbolMgr, SmViewShell &rViewShell);
370 :
371 : bool SelectSymbolSet(const OUString &rSymbolSetName);
372 : void SelectSymbol(sal_uInt16 nSymbolPos);
373 0 : sal_uInt16 GetSelectedSymbol() const { return m_pSymbolSetDisplay->GetSelectSymbol(); }
374 : };
375 :
376 : ////////////////////////////////////////////////////////////////////////////////
377 :
378 0 : class SmShowChar : public Control
379 : {
380 : virtual void Paint(const Rectangle&);
381 :
382 : public:
383 0 : SmShowChar(Window *pParent, const ResId& rResId)
384 0 : : Control(pParent, rResId)
385 : {
386 0 : }
387 :
388 : void SetSymbol( const SmSym *pSym );
389 : void SetSymbol( sal_UCS4 cChar, const Font &rFont );
390 : };
391 :
392 : ////////////////////////////////////////////////////////////////////////////////
393 :
394 : class SmSymDefineDialog : public ModalDialog
395 : {
396 : FixedText aOldSymbolText;
397 : ComboBox aOldSymbols;
398 : FixedText aOldSymbolSetText;
399 : ComboBox aOldSymbolSets;
400 : SvxShowCharSet aCharsetDisplay;
401 : FixedText aSymbolText;
402 : ComboBox aSymbols;
403 : FixedText aSymbolSetText;
404 : ComboBox aSymbolSets;
405 : FixedText aFontText;
406 : ListBox aFonts;
407 : FixedText aFontsSubsetFT;
408 : ListBox aFontsSubsetLB;
409 : FixedText aStyleText;
410 : FontStyleBox aStyles;
411 : FixedText aOldSymbolName;
412 : SmShowChar aOldSymbolDisplay;
413 : FixedText aOldSymbolSetName;
414 : FixedText aSymbolName;
415 : SmShowChar aSymbolDisplay;
416 : FixedText aSymbolSetName;
417 : OKButton aOkBtn;
418 : HelpButton aHelpBtn;
419 : CancelButton aCancelBtn;
420 : PushButton aAddBtn;
421 : PushButton aChangeBtn;
422 : PushButton aDeleteBtn;
423 : FixedImage aRightArrow;
424 : Image aRigthArrow_Im;
425 :
426 : SmSymbolManager aSymbolMgrCopy,
427 : &rSymbolMgr;
428 : const SmSym *pOrigSymbol;
429 :
430 : const SubsetMap *pSubsetMap;
431 : FontList *pFontList;
432 :
433 : DECL_LINK(OldSymbolChangeHdl, ComboBox *);
434 : DECL_LINK(OldSymbolSetChangeHdl, ComboBox *);
435 : DECL_LINK(ModifyHdl, ComboBox *);
436 : DECL_LINK(FontChangeHdl, ListBox *);
437 : DECL_LINK(SubsetChangeHdl, ListBox*);
438 : DECL_LINK(StyleChangeHdl, ComboBox *);
439 : DECL_LINK(CharHighlightHdl, void *);
440 : DECL_LINK(AddClickHdl, Button *);
441 : DECL_LINK(ChangeClickHdl, Button *);
442 : DECL_LINK(DeleteClickHdl, Button *);
443 : DECL_LINK(HelpButtonClickHdl, Button *);
444 :
445 : void FillSymbols(ComboBox &rComboBox, bool bDeleteText = true);
446 : void FillSymbolSets(ComboBox &rComboBox, bool bDeleteText = true);
447 : void FillFonts(bool bDeleteText = true);
448 : void FillStyles(bool bDeleteText = true);
449 :
450 : void SetSymbolSetManager(const SmSymbolManager &rMgr);
451 : void SetFont(const OUString &rFontName, const OUString &rStyleName);
452 : void SetOrigSymbol(const SmSym *pSymbol, const OUString &rSymbolSetName);
453 : void UpdateButtons();
454 :
455 : bool SelectSymbolSet(ComboBox &rComboBox, const OUString &rSymbolSetName,
456 : bool bDeleteText);
457 : bool SelectSymbol(ComboBox &rComboBox, const OUString &rSymbolName,
458 : bool bDeleteText);
459 : bool SelectFont(const OUString &rFontName, bool bApplyFont);
460 : bool SelectStyle(const OUString &rStyleName, bool bApplyFont);
461 :
462 : SmSym * GetSymbol(const ComboBox &rComboBox);
463 : const SmSym * GetSymbol(const ComboBox &rComboBox) const
464 : {
465 : return ((SmSymDefineDialog *) this)->GetSymbol(rComboBox);
466 : }
467 :
468 : void InitColor_Impl();
469 :
470 : virtual void DataChanged( const DataChangedEvent& rDCEvt );
471 :
472 : public:
473 : SmSymDefineDialog(Window *pParent, OutputDevice *pFntListDevice, SmSymbolManager &rMgr, bool bFreeRes = true);
474 : ~SmSymDefineDialog();
475 :
476 : using OutputDevice::SetFont;
477 :
478 : // Dialog
479 : virtual short Execute();
480 :
481 0 : bool SelectOldSymbolSet(const OUString &rSymbolSetName)
482 : {
483 0 : return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, false);
484 : }
485 :
486 0 : bool SelectOldSymbol(const OUString &rSymbolName)
487 : {
488 0 : return SelectSymbol(aOldSymbols, rSymbolName, false);
489 : }
490 :
491 0 : bool SelectSymbolSet(const OUString &rSymbolSetName)
492 : {
493 0 : return SelectSymbolSet(aSymbolSets, rSymbolSetName, false);
494 : }
495 :
496 0 : bool SelectSymbol(const OUString &rSymbolName)
497 : {
498 0 : return SelectSymbol(aSymbols, rSymbolName, false);
499 : }
500 :
501 0 : bool SelectFont(const OUString &rFontName) { return SelectFont(rFontName, true); }
502 0 : bool SelectStyle(const OUString &rStyleName) { return SelectStyle(rStyleName, true); };
503 : void SelectChar(sal_Unicode cChar);
504 : };
505 :
506 :
507 :
508 : #endif
509 :
510 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|