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