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 _SWUI_CNTTAB_HXX
20 : #define _SWUI_CNTTAB_HXX
21 :
22 : #include <svx/stddlg.hxx>
23 :
24 : #include <vcl/button.hxx>
25 :
26 : #include <vcl/edit.hxx>
27 :
28 : #include <vcl/fixed.hxx>
29 :
30 : #include <vcl/field.hxx>
31 : #include <vcl/lstbox.hxx>
32 : #include <sfx2/tabdlg.hxx>
33 :
34 : #include "tox.hxx"
35 : #include <toxmgr.hxx>
36 : #include <svx/checklbx.hxx>
37 : #include <svtools/treelistbox.hxx>
38 : #include <vcl/menubtn.hxx>
39 : #include <svx/langbox.hxx>
40 : #include <cnttab.hxx>
41 : #include <vector>
42 :
43 : class SwWrtShell;
44 : class SwTOXMgr;
45 : namespace com{namespace sun{namespace star{
46 : namespace text{
47 : class XTextSection;
48 : class XDocumentIndex;
49 : }
50 : }}}
51 :
52 0 : struct SwIndexSections_Impl
53 : {
54 : com::sun::star::uno::Reference< com::sun::star::text::XTextSection > xContainerSection;
55 : com::sun::star::uno::Reference< com::sun::star::text::XDocumentIndex > xDocumentIndex;
56 : };
57 :
58 : class SwOneExampleFrame;
59 :
60 : struct SwIndexSections_Impl;
61 :
62 : class SwMultiTOXTabDialog : public SfxTabDialog
63 : {
64 : Window aExampleContainerWIN;
65 : Window aExampleWIN;
66 : CheckBox aShowExampleCB;
67 : SwTOXMgr* pMgr;
68 : SwWrtShell& rSh;
69 :
70 : SwOneExampleFrame* pExampleFrame;
71 :
72 : SwTOXDescription** pDescArr; //
73 : SwForm** pFormArr; //
74 : SwIndexSections_Impl** pxIndexSectionsArr;
75 :
76 : SwTOXBase* pParamTOXBase;
77 :
78 : CurTOXType eCurrentTOXType;
79 :
80 : String sUserDefinedIndex;
81 : sal_uInt16 nTypeCount;
82 : sal_uInt16 nInitialTOXType;
83 :
84 : sal_Bool bEditTOX;
85 : sal_Bool bExampleCreated;
86 : sal_Bool bGlobalFlag;
87 :
88 : virtual short Ok();
89 : SwTOXDescription* CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX);
90 :
91 : DECL_LINK(CreateExample_Hdl, void* );
92 : DECL_LINK(ShowPreviewHdl, CheckBox*);
93 :
94 : public:
95 : SwMultiTOXTabDialog(Window* pParent, const SfxItemSet& rSet,
96 : SwWrtShell &rShell,
97 : SwTOXBase* pCurTOX, sal_uInt16 nToxType = USHRT_MAX,
98 : sal_Bool bGlobal = sal_False);
99 : ~SwMultiTOXTabDialog();
100 :
101 : virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage );
102 :
103 : SwForm* GetForm(CurTOXType eType);
104 :
105 0 : CurTOXType GetCurrentTOXType() const { return eCurrentTOXType;}
106 0 : void SetCurrentTOXType(CurTOXType eSet)
107 : {
108 0 : eCurrentTOXType = eSet;
109 0 : }
110 :
111 : void UpdateExample();
112 0 : sal_Bool IsTOXEditMode() const { return bEditTOX;}
113 :
114 0 : SwWrtShell& GetWrtShell() {return rSh;}
115 :
116 : SwTOXDescription& GetTOXDescription(CurTOXType eTOXTypes);
117 : void CreateOrUpdateExample(
118 : TOXTypes nTOXIndex, sal_uInt16 nPage = 0, sal_uInt16 nCurLevel = USHRT_MAX);
119 :
120 : static sal_Bool IsNoNum(SwWrtShell& rSh, const String& rName);
121 : };
122 :
123 : class IndexEntryResource;
124 : class IndexEntrySupplierWrapper;
125 :
126 : class SwTOXSelectTabPage : public SfxTabPage
127 : {
128 : FixedLine aTypeTitleFL;
129 : FixedText aTitleFT;
130 : Edit aTitleED;
131 : FixedText aTypeFT;
132 : ListBox aTypeLB;
133 : CheckBox aReadOnlyCB;
134 :
135 : FixedLine aAreaFL;
136 : FixedText aAreaFT;
137 : ListBox aAreaLB;
138 : FixedText aLevelFT; //content, user
139 : NumericField aLevelNF; //content, user
140 :
141 : //content
142 : FixedLine aCreateFromFL; // content, user, illustration
143 : CheckBox aFromHeadingsCB;
144 : CheckBox aAddStylesCB;
145 : PushButton aAddStylesPB;
146 : Point aAddStylesPosDef;
147 : Point aAddStylesPosUser;
148 : //user
149 : CheckBox aFromTablesCB;
150 : CheckBox aFromFramesCB;
151 : CheckBox aFromGraphicsCB;
152 : CheckBox aFromOLECB;
153 : CheckBox aLevelFromChapterCB;
154 :
155 : //illustration + table
156 : RadioButton aFromCaptionsRB;
157 : RadioButton aFromObjectNamesRB;
158 :
159 : //illustration and tables
160 : FixedText aCaptionSequenceFT;
161 : ListBox aCaptionSequenceLB;
162 : FixedText aDisplayTypeFT;
163 : ListBox aDisplayTypeLB;
164 :
165 : //all but illustration and table
166 : CheckBox aTOXMarksCB;
167 :
168 : //
169 :
170 : //index only
171 : FixedLine aIdxOptionsFL;
172 : CheckBox aCollectSameCB;
173 : CheckBox aUseFFCB;
174 : CheckBox aUseDashCB;
175 : CheckBox aCaseSensitiveCB;
176 : CheckBox aInitialCapsCB;
177 : CheckBox aKeyAsEntryCB;
178 : CheckBox aFromFileCB;
179 : MenuButton aAutoMarkPB;
180 :
181 : // object only
182 : SwOLENames aFromNames;
183 : SvxCheckListBox aFromObjCLB;
184 : FixedLine aFromObjFL;
185 :
186 : CheckBox aSequenceCB;
187 : FixedText aBracketFT;
188 : ListBox aBracketLB;
189 : FixedLine aAuthorityFormatFL;
190 :
191 : //all
192 : FixedLine aSortOptionsFL;
193 : FixedText aLanguageFT;
194 : SvxLanguageBox aLanguageLB;
195 : FixedText aSortAlgorithmFT;
196 : ListBox aSortAlgorithmLB;
197 :
198 : IndexEntryResource* pIndexRes;
199 :
200 : Point aCBLeftPos1;
201 : Point aCBLeftPos2;
202 : Point aCBLeftPos3;
203 :
204 : String aStyleArr[MAXLEVEL];
205 : String sAutoMarkURL;
206 : String sAutoMarkType;
207 : String sAddStyleUser;
208 : String sAddStyleContent;
209 :
210 : const IndexEntrySupplierWrapper* pIndexEntryWrapper;
211 :
212 : sal_Bool bFirstCall;
213 :
214 : DECL_LINK(TOXTypeHdl, ListBox* );
215 : DECL_LINK(AddStylesHdl, PushButton* );
216 : DECL_LINK(MenuEnableHdl, Menu*);
217 : DECL_LINK(MenuExecuteHdl, Menu*);
218 : DECL_LINK(LanguageHdl, ListBox*);
219 :
220 : DECL_LINK(CheckBoxHdl, CheckBox* );
221 : DECL_LINK(RadioButtonHdl, void *);
222 : DECL_LINK(ModifyHdl, void*);
223 :
224 : void ApplyTOXDescription();
225 : void FillTOXDescription();
226 :
227 : using SfxTabPage::ActivatePage;
228 : using SfxTabPage::DeactivatePage;
229 :
230 : public:
231 : SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrSet);
232 : ~SwTOXSelectTabPage();
233 :
234 : virtual sal_Bool FillItemSet( SfxItemSet& );
235 : virtual void Reset( const SfxItemSet& );
236 :
237 : virtual void ActivatePage( const SfxItemSet& );
238 : virtual int DeactivatePage( SfxItemSet* pSet = 0 );
239 :
240 : static SfxTabPage* Create( Window* pParent,
241 : const SfxItemSet& rAttrSet);
242 :
243 : void SelectType(TOXTypes eSet); //preset TOXType, GlobalDoc
244 : void SetWrtShell(SwWrtShell& rSh);
245 : };
246 :
247 : class SwTOXEdit;
248 : class SwTOXButton;
249 : class SwTOXEntryTabPage;
250 :
251 : class SwTokenWindow : public Window
252 : {
253 : typedef std::vector<Control*>::iterator ctrl_iterator;
254 : typedef std::vector<Control*>::const_iterator ctrl_const_iterator;
255 : typedef std::vector<Control*>::reverse_iterator ctrl_reverse_iterator;
256 : typedef std::vector<Control*>::const_reverse_iterator ctrl_const_reverse_iterator;
257 :
258 : ImageButton aLeftScrollWin;
259 : Window aCtrlParentWin;
260 : ImageButton aRightScrollWin;
261 : std::vector<Control*> aControlList;
262 : SwForm* pForm;
263 : sal_uInt16 nLevel;
264 : sal_Bool bValid;
265 : String aButtonTexts[TOKEN_END]; // Text of the buttons
266 : String aButtonHelpTexts[TOKEN_END]; // QuickHelpText of the buttons
267 : String sCharStyle;
268 : Link aButtonSelectedHdl;
269 : Control* pActiveCtrl;
270 : Link aModifyHdl;
271 :
272 : SwTOXEntryTabPage* m_pParent;
273 :
274 : DECL_LINK(EditResize, Edit*);
275 : DECL_LINK(NextItemHdl, SwTOXEdit* );
276 : DECL_LINK(TbxFocusHdl, SwTOXEdit* );
277 : DECL_LINK(NextItemBtnHdl, SwTOXButton* );
278 : DECL_LINK(TbxFocusBtnHdl, SwTOXButton* );
279 : DECL_LINK(ScrollHdl, ImageButton* );
280 :
281 : void SetActiveControl(Control* pSet);
282 :
283 : Control* InsertItem(const String& rText, const SwFormToken& aToken);
284 : void AdjustPositions();
285 : void AdjustScrolling();
286 : void MoveControls(long nOffset);
287 :
288 : public:
289 : SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId);
290 : ~SwTokenWindow();
291 :
292 : void SetForm(SwForm& rForm, sal_uInt16 nLevel);
293 0 : sal_uInt16 GetLastLevel()const {return nLevel;};
294 :
295 0 : sal_Bool IsValid() const {return bValid;}
296 :
297 0 : void SetInvalid() {bValid = sal_False;}
298 :
299 : String GetPattern() const;
300 :
301 0 : void SetButtonSelectedHdl(const Link& rLink)
302 0 : { aButtonSelectedHdl = rLink;}
303 :
304 0 : void SetModifyHdl(const Link& rLink){aModifyHdl = rLink;}
305 :
306 0 : Control* GetActiveControl()
307 0 : { return pActiveCtrl;}
308 :
309 : void InsertAtSelection(const String& rText, const SwFormToken& aToken);
310 : void RemoveControl(SwTOXButton* pDel, sal_Bool bInternalCall = sal_False);
311 :
312 : sal_Bool Contains(FormTokenType) const;
313 :
314 : sal_Bool DetermineLinkStart();
315 :
316 : //helper for pattern buttons and edits
317 : sal_Bool CreateQuickHelp(Control* pCtrl,
318 : const SwFormToken& rToken, const HelpEvent& );
319 :
320 : virtual void Resize();
321 : virtual void GetFocus();
322 : };
323 :
324 : class SwTOXEntryTabPage;
325 :
326 0 : class SwIdxTreeListBox : public SvTreeListBox
327 : {
328 : SwTOXEntryTabPage* pParent;
329 :
330 : virtual void RequestHelp( const HelpEvent& rHEvt );
331 : public:
332 : SwIdxTreeListBox(SwTOXEntryTabPage* pPar, const ResId& rResId);
333 : };
334 :
335 : class SwTOXEntryTabPage : public SfxTabPage
336 : {
337 : FixedText aLevelFT;
338 : SwIdxTreeListBox aLevelLB;
339 :
340 : FixedLine aEntryFL;
341 : FixedText aTokenFT;
342 : SwTokenWindow aTokenWIN;
343 : PushButton aAllLevelsPB;
344 :
345 : PushButton aEntryNoPB;
346 : PushButton aEntryPB;
347 : PushButton aTabPB;
348 : PushButton aChapterInfoPB;
349 : PushButton aPageNoPB;
350 : PushButton aHyperLinkPB;
351 :
352 : ListBox aAuthFieldsLB;
353 : PushButton aAuthInsertPB;
354 : PushButton aAuthRemovePB;
355 :
356 : FixedText aCharStyleFT;
357 : ListBox aCharStyleLB; // character style of the current token
358 : PushButton aEditStylePB;
359 :
360 : FixedText aChapterEntryFT;
361 : ListBox aChapterEntryLB; // type of chapter info
362 :
363 : FixedText aNumberFormatFT;
364 : ListBox aNumberFormatLB; //!< format for numbering (E#)
365 :
366 : FixedText aEntryOutlineLevelFT; //!< Fixed text, for i53420
367 : NumericField aEntryOutlineLevelNF; //!< level to evaluate outline level to, for i53420
368 : FixedText aFillCharFT;
369 : ComboBox aFillCharCB; // fill char for tab stop
370 : FixedText aTabPosFT;
371 : MetricField aTabPosMF; // tab stop position
372 : CheckBox aAutoRightCB;
373 : FixedLine aFormatFL;
374 :
375 : CheckBox aRelToStyleCB; // position relative to the right margin of the para style
376 : FixedText aMainEntryStyleFT;
377 : ListBox aMainEntryStyleLB; // character style of main entries in indexes
378 : CheckBox aAlphaDelimCB;
379 : CheckBox aCommaSeparatedCB;
380 :
381 : RadioButton aSortDocPosRB;
382 : RadioButton aSortContentRB;
383 : FixedLine aSortingFL;
384 :
385 : FixedText aFirstKeyFT;
386 : ListBox aFirstKeyLB;
387 : ImageRadioButton aFirstSortUpRB;
388 : ImageRadioButton aFirstSortDownRB;
389 :
390 : FixedText aSecondKeyFT;
391 : ListBox aSecondKeyLB;
392 : ImageRadioButton aSecondSortUpRB;
393 : ImageRadioButton aSecondSortDownRB;
394 :
395 : FixedText aThirdKeyFT;
396 : ListBox aThirdKeyLB;
397 : ImageRadioButton aThirdSortUpRB;
398 : ImageRadioButton aThirdSortDownRB;
399 :
400 : FixedLine aSortKeyFL;
401 :
402 : String sDelimStr;
403 : String sLevelStr;
404 : String sAuthTypeStr;
405 :
406 : String sNoCharStyle;
407 : String sNoCharSortKey;
408 : Point aButtonPositions[5];
409 : SwForm* m_pCurrentForm;
410 :
411 : Point aRelToStylePos;
412 : Point aRelToStyleIdxPos;
413 : Size aLevelFLSize;
414 :
415 : CurTOXType aLastTOXType;
416 : sal_Bool bInLevelHdl;
417 :
418 : Point aChapterEntryFTPosition; //!< holds position of ChapterEntryFT control,
419 : //to be used in moving the element among different tokens
420 : Point aEntryOutlineLevelFTPosition;//!< holds position ofrEntryOutlineLevelFT control
421 : sal_Int32 nBiasToEntryPoint;
422 :
423 : DECL_LINK(StyleSelectHdl, ListBox*);
424 : DECL_LINK(EditStyleHdl, PushButton*);
425 : DECL_LINK(InsertTokenHdl, PushButton*);
426 : DECL_LINK(LevelHdl, SvTreeListBox*);
427 : DECL_LINK(AutoRightHdl, CheckBox*);
428 : DECL_LINK(TokenSelectedHdl, SwFormToken*);
429 : DECL_LINK(TabPosHdl, MetricField*);
430 : DECL_LINK(FillCharHdl, ComboBox*);
431 : DECL_LINK(RemoveInsertAuthHdl, PushButton*);
432 : DECL_LINK(SortKeyHdl, RadioButton*);
433 : DECL_LINK(ChapterInfoHdl, ListBox*);
434 : DECL_LINK(ChapterInfoOutlineHdl, NumericField*);
435 : DECL_LINK(NumberFormatHdl, ListBox*);
436 :
437 : DECL_LINK(AllLevelsHdl, void *);
438 :
439 : void EnableButtons();
440 : void WriteBackLevel();
441 : void UpdateDescriptor();
442 : DECL_LINK(ModifyHdl, void*);
443 :
444 : using SfxTabPage::ActivatePage;
445 : using SfxTabPage::DeactivatePage;
446 :
447 : public:
448 : SwTOXEntryTabPage(Window* pParent, const SfxItemSet& rAttrSet);
449 : ~SwTOXEntryTabPage();
450 :
451 : virtual sal_Bool FillItemSet( SfxItemSet& );
452 : virtual void Reset( const SfxItemSet& );
453 : virtual void ActivatePage( const SfxItemSet& );
454 : virtual int DeactivatePage( SfxItemSet* pSet = 0 );
455 :
456 : static SfxTabPage* Create( Window* pParent,
457 : const SfxItemSet& rAttrSet);
458 : void SetWrtShell(SwWrtShell& rSh);
459 :
460 : String GetLevelHelp(sal_uInt16 nLevel) const;
461 :
462 : void PreTokenButtonRemoved(const SwFormToken& rToken);
463 : };
464 :
465 : class SwTOXStylesTabPage : public SfxTabPage
466 : {
467 : FixedLine aFormatFL;
468 : FixedText aLevelFT2;
469 : ListBox aLevelLB;
470 : ImageButton aAssignBT;
471 : FixedText aTemplateFT;
472 : ListBox aParaLayLB;
473 : PushButton aStdBT;
474 : PushButton aEditStyleBT;
475 :
476 : SwForm* m_pCurrentForm;
477 :
478 : DECL_LINK( EditStyleHdl, Button *);
479 : DECL_LINK(StdHdl, void *);
480 : DECL_LINK(EnableSelectHdl, void *);
481 : DECL_LINK(DoubleClickHdl, void *);
482 : DECL_LINK(AssignHdl, void *);
483 : void Modify();
484 :
485 0 : SwForm& GetForm()
486 : {
487 0 : SwMultiTOXTabDialog* pDlg = (SwMultiTOXTabDialog*)GetTabDialog();
488 0 : return *pDlg->GetForm(pDlg->GetCurrentTOXType());
489 : }
490 :
491 : using SfxTabPage::ActivatePage;
492 : using SfxTabPage::DeactivatePage;
493 :
494 : public:
495 : SwTOXStylesTabPage(Window* pParent, const SfxItemSet& rAttrSet);
496 : ~SwTOXStylesTabPage();
497 :
498 : virtual sal_Bool FillItemSet( SfxItemSet& );
499 : virtual void Reset( const SfxItemSet& );
500 :
501 : virtual void ActivatePage( const SfxItemSet& );
502 : virtual int DeactivatePage( SfxItemSet* pSet = 0 );
503 :
504 : static SfxTabPage* Create( Window* pParent,
505 : const SfxItemSet& rAttrSet);
506 :
507 : };
508 :
509 : #endif // _SWUI_CNTTAB_HXX
510 :
511 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|