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
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26
27 #ifdef SW_DLLIMPLEMENTATION
28 #undef SW_DLLIMPLEMENTATION
29 #endif
30
31
32 #include <hintids.hxx>
33
34 #ifndef _SVSTDARR_STRINGSSORTDTOR
35 #define _SVSTDARR_STRINGSSORTDTOR
36 #include <svl/svstdarr.hxx>
37 #endif
38 #include <vcl/msgbox.hxx>
39 #include <sfx2/viewfrm.hxx>
40 #include <svx/hdft.hxx>
41 #include <editeng/flstitem.hxx>
42 #include <svx/htmlmode.hxx>
43 #include <svtools/htmlcfg.hxx>
44 #include <svl/cjkoptions.hxx>
45 #include <numpara.hxx>
46 #include <fmtclds.hxx>
47 #include <swtypes.hxx>
48 #include <swmodule.hxx>
49 #include <errhdl.hxx> // fuer Create-Methoden
50 #include <wrtsh.hxx>
51 #ifndef _VIEW_HXX
52 #include <view.hxx>
53 #endif
54 #include <wdocsh.hxx>
55 #include <viewopt.hxx>
56 #include <pgfnote.hxx>
57 #ifndef _PGFGRID_HXX
58 #include <pggrid.hxx>
59 #endif
60 #ifndef _TMPDLG_HXX
61 #include <tmpdlg.hxx> // der Dialog
62 #endif
63 #include <column.hxx> // Spalten
64 #include <drpcps.hxx> // Initialen
65 #include <frmpage.hxx> // Rahmen
66 #include <wrap.hxx> // Rahmen
67 #include <frmmgr.hxx> // Rahmen
68 #include <ccoll.hxx> // CondColl
69 #include <swuiccoll.hxx>
70 #include <docstyle.hxx> //
71 #include <fmtcol.hxx> //
72 #include <macassgn.hxx> //
73 #include <poolfmt.hxx>
74 #include <uitool.hxx>
75 #include <shellres.hxx>
76
77 #ifndef _CMDID_H
78 #include <cmdid.h>
79 #endif
80 #ifndef _HELPID_H
81 #include <helpid.h>
82 #endif
83 #ifndef _GLOBALS_HRC
84 #include <globals.hrc>
85 #endif
86 #ifndef _FMTUI_HRC
87 #include <fmtui.hrc>
88 #endif
89 #include <SwStyleNameMapper.hxx>
90 #include <svx/svxids.hrc>
91 #include <svl/stritem.hxx>
92 #include <svl/aeitem.hxx>
93 #include <svl/slstitm.hxx>
94 #include <svl/eitem.hxx>
95 #include <svl/intitem.hxx>
96 #include <svx/svxdlg.hxx>
97 #include <svx/dialogs.hrc>
98 #include <svx/flagsdef.hxx>
99
100 extern SW_DLLPUBLIC SwWrtShell* GetActiveWrtShell();
101
102 /*--------------------------------------------------------------------
103 Beschreibung: Der Traeger des Dialoges
104 --------------------------------------------------------------------*/
105
SwTemplateDlg(Window * pParent,SfxStyleSheetBase & rBase,sal_uInt16 nRegion,const sal_uInt16 nSlot,SwWrtShell * pActShell,sal_Bool bNew)106 SwTemplateDlg::SwTemplateDlg(Window* pParent,
107 SfxStyleSheetBase& rBase,
108 sal_uInt16 nRegion,
109 const sal_uInt16 nSlot,
110 SwWrtShell* pActShell,
111 sal_Bool bNew ) :
112 SfxStyleDialog( pParent,
113 SW_RES(DLG_TEMPLATE_BASE + nRegion),
114 rBase,
115 sal_False,
116 0 ),
117 nType( nRegion ),
118 pWrtShell(pActShell),
119 bNewStyle(bNew)
120 {
121 FreeResource();
122
123 nHtmlMode = ::GetHtmlMode(pWrtShell->GetView().GetDocShell());
124 SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
125 DBG_ASSERT(pFact, "Dialogdiet fail!");
126 // TabPages zusammenfieseln
127 switch( nRegion )
128 {
129 // Zeichenvorlagen
130 case SFX_STYLE_FAMILY_CHAR:
131 {
132 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!");
133 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) , "GetTabPageRangesFunc fail!");
134 AddTabPage(TP_CHAR_STD, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) );
135
136 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!");
137 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) , "GetTabPageRangesFunc fail!");
138 AddTabPage(TP_CHAR_EXT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) );
139
140 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), "GetTabPageCreatorFunc fail!");
141 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) , "GetTabPageRangesFunc fail!");
142 AddTabPage(TP_CHAR_POS, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) );
143
144 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), "GetTabPageCreatorFunc fail!");
145 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) , "GetTabPageRangesFunc fail!");
146 AddTabPage(TP_CHAR_TWOLN, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) );
147
148 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
149 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) , "GetTabPageRangesFunc fail!");
150 AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
151
152 SvtCJKOptions aCJKOptions;
153 if(nHtmlMode & HTMLMODE_ON || !aCJKOptions.IsDoubleLinesEnabled())
154 RemoveTabPage(TP_CHAR_TWOLN);
155 }
156 break;
157 // Absatzvorlagen
158 case SFX_STYLE_FAMILY_PARA:
159 {
160 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_STD_PARAGRAPH), "GetTabPageCreatorFunc fail!");
161 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_STD_PARAGRAPH), "GetTabPageRangesFunc fail!");
162 AddTabPage( TP_PARA_STD, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_STD_PARAGRAPH), pFact->GetTabPageRangesFunc(RID_SVXPAGE_STD_PARAGRAPH) );
163
164 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), "GetTabPageCreatorFunc fail!");
165 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), "GetTabPageRangesFunc fail!");
166 AddTabPage( TP_PARA_ALIGN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), pFact->GetTabPageRangesFunc(RID_SVXPAGE_ALIGN_PARAGRAPH) );
167
168 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_EXT_PARAGRAPH), "GetTabPageCreatorFunc fail!");
169 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_EXT_PARAGRAPH), "GetTabPageRangesFunc fail!");
170 AddTabPage( TP_PARA_EXT, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_EXT_PARAGRAPH), pFact->GetTabPageRangesFunc(RID_SVXPAGE_EXT_PARAGRAPH) );
171
172 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageCreatorFunc fail!");
173 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageRangesFunc fail!");
174 AddTabPage( TP_PARA_ASIAN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN) );
175
176 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!");
177 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageRangesFunc fail!");
178 AddTabPage(TP_CHAR_STD, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) );
179
180 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!");
181 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageRangesFunc fail!");
182 AddTabPage(TP_CHAR_EXT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) );
183
184 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), "GetTabPageCreatorFunc fail!");
185 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) , "GetTabPageRangesFunc fail!");
186 AddTabPage(TP_CHAR_POS, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) );
187
188 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), "GetTabPageCreatorFunc fail!");
189 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) , "GetTabPageRangesFunc fail!");
190 AddTabPage(TP_CHAR_TWOLN, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) );
191
192
193 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_TABULATOR), "GetTabPageCreatorFunc fail!");
194 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_TABULATOR), "GetTabPageRangesFunc fail!");
195 AddTabPage( TP_TABULATOR, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_TABULATOR), pFact->GetTabPageRangesFunc(RID_SVXPAGE_TABULATOR) );
196
197
198 AddTabPage(TP_NUMPARA, SwParagraphNumTabPage::Create,
199 SwParagraphNumTabPage::GetRanges);
200 AddTabPage(TP_DROPCAPS, SwDropCapsPage::Create,
201 SwDropCapsPage::GetRanges );
202 //UUUU remove?
203 //DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
204 //DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
205 //AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
206
207 //UUUU add Area and Transparence TabPages
208 AddTabPage(RID_SVXPAGE_AREA);
209 AddTabPage(RID_SVXPAGE_TRANSPARENCE);
210
211 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
212 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
213 AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
214
215 AddTabPage( TP_CONDCOLL, SwCondCollPage::Create,
216 SwCondCollPage::GetRanges );
217 if( (!bNewStyle && RES_CONDTXTFMTCOLL != ((SwDocStyleSheet&)rBase).GetCollection()->Which())
218 || nHtmlMode & HTMLMODE_ON )
219 RemoveTabPage(TP_CONDCOLL);
220
221 SvtCJKOptions aCJKOptions;
222 if(nHtmlMode & HTMLMODE_ON)
223 {
224 SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get();
225 if (!pHtmlOpt->IsPrintLayoutExtension())
226 RemoveTabPage(TP_PARA_EXT);
227 RemoveTabPage(TP_PARA_ASIAN);
228 RemoveTabPage(TP_TABULATOR);
229 RemoveTabPage(TP_NUMPARA);
230 RemoveTabPage(TP_CHAR_TWOLN);
231 if(!(nHtmlMode & HTMLMODE_FULL_STYLES))
232 {
233 RemoveTabPage(TP_BACKGROUND);
234 RemoveTabPage(TP_DROPCAPS);
235 }
236 if(!(nHtmlMode & HTMLMODE_PARA_BORDER))
237 RemoveTabPage(TP_BORDER);
238 }
239 else
240 {
241 if(!aCJKOptions.IsAsianTypographyEnabled())
242 RemoveTabPage(TP_PARA_ASIAN);
243 if(!aCJKOptions.IsDoubleLinesEnabled())
244 RemoveTabPage(TP_CHAR_TWOLN);
245 }
246 }
247 break;
248 // Rahmenvorlagen
249 case SFX_STYLE_FAMILY_FRAME:
250 {
251 AddTabPage(TP_FRM_STD, SwFrmPage::Create,
252 SwFrmPage::GetRanges );
253 AddTabPage(TP_FRM_ADD, SwFrmAddPage::Create,
254 SwFrmAddPage::GetRanges );
255 AddTabPage(TP_FRM_WRAP, SwWrapTabPage::Create,
256 SwWrapTabPage::GetRanges );
257
258 //UUUU remove?
259 //DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
260 //DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
261
262 //UUUU remove?
263 //AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
264
265 //UUUU add Area and Transparence TabPages
266 AddTabPage(RID_SVXPAGE_AREA);
267 AddTabPage(RID_SVXPAGE_TRANSPARENCE);
268
269 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
270 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
271 AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
272
273 AddTabPage(TP_COLUMN, SwColumnPage::Create,
274 SwColumnPage::GetRanges );
275
276 AddTabPage( TP_MACRO_ASSIGN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_MACROASSIGN), 0);
277
278 break;
279 }
280 // Seitenvorlagen
281 case SFX_STYLE_FAMILY_PAGE:
282 {
283 //UUUU remove?
284 //DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
285 //DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
286 //AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
287
288 //UUUU add Area and Transparence TabPages
289 AddTabPage(RID_SVXPAGE_AREA);
290 AddTabPage(RID_SVXPAGE_TRANSPARENCE);
291
292 AddTabPage(TP_HEADER_PAGE, String(SW_RES(STR_PAGE_HEADER)),
293 SvxHeaderPage::Create,
294 SvxHeaderPage::GetRanges );
295 AddTabPage(TP_FOOTER_PAGE, String(SW_RES(STR_PAGE_FOOTER)),
296 SvxFooterPage::Create,
297 SvxFooterPage::GetRanges );
298 if ( nSlot == FN_FORMAT_PAGE_COLUMN_DLG )
299 {
300 SetCurPageId(TP_COLUMN);
301 }
302 else if ( nSlot == FN_FORMAT_PAGE_SETTING_DLG )
303 {
304 SetCurPageId(TP_PAGE_STD);
305 }
306
307 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), "GetTabPageCreatorFunc fail!");
308 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ), "GetTabPageRangesFunc fail!");
309 AddTabPage(TP_PAGE_STD, String(SW_RES(STR_PAGE_STD)),
310 pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ),
311 pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ),
312 sal_False,
313 1 ); // nach der Verwalten-Page
314 if(!pActShell || 0 == ::GetHtmlMode(pWrtShell->GetView().GetDocShell()))
315 {
316 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
317 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
318 AddTabPage(TP_BORDER, String(SW_RES(STR_PAGE_BORDER)),
319 pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
320 AddTabPage(TP_COLUMN, String(SW_RES(STR_PAGE_COLUMN)),
321 SwColumnPage::Create,
322 SwColumnPage::GetRanges );
323 AddTabPage(TP_FOOTNOTE_PAGE, String(SW_RES(STR_PAGE_FOOTNOTE)),
324 SwFootNotePage::Create,
325 SwFootNotePage::GetRanges );
326 AddTabPage(TP_TEXTGRID_PAGE, String(SW_RES(STR_PAGE_TEXTGRID)),
327 SwTextGridPage::Create,
328 SwTextGridPage::GetRanges );
329 SvtCJKOptions aCJKOptions;
330 if(!aCJKOptions.IsAsianTypographyEnabled())
331 RemoveTabPage(TP_TEXTGRID_PAGE);
332 }
333
334
335 }
336 break;
337 // Numerierungsvorlagen
338 case SFX_STYLE_FAMILY_PSEUDO:
339 {
340 AddTabPage( RID_SVXPAGE_PICK_SINGLE_NUM );
341 AddTabPage( RID_SVXPAGE_PICK_BULLET );
342 AddTabPage( RID_SVXPAGE_PICK_NUM );
343 AddTabPage( RID_SVXPAGE_PICK_BMP);
344 AddTabPage( RID_SVXPAGE_NUM_OPTIONS );
345 AddTabPage( RID_SVXPAGE_NUM_POSITION );
346
347
348 /* const SfxPoolItem* pItem;
349 if(SFX_ITEM_SET == rBase.GetItemSet().GetItemState(
350 FN_PARAM_ACT_NUMBER, sal_False, &pItem ))
351 {
352 // pActNum = (ActNumberFormat*)((const SwPtrItem*)pItem)->GetValue();
353 }
354 */
355 }
356 break;
357
358 default:
359 ASSERT(sal_False, "Wrong family");
360
361 }
362 }
363
364 /*--------------------------------------------------------------------
365 Beschreibung:
366 --------------------------------------------------------------------*/
367
~SwTemplateDlg()368 SwTemplateDlg::~SwTemplateDlg()
369 {
370 }
371
372 /*--------------------------------------------------------------------
373 Beschreibung:
374 --------------------------------------------------------------------*/
375
Ok()376 short SwTemplateDlg::Ok()
377 {
378 short nRet = SfxTabDialog::Ok();
379 if( RET_OK == nRet )
380 {
381 const SfxPoolItem *pOutItem, *pExItem;
382 if( SFX_ITEM_SET == pExampleSet->GetItemState(
383 SID_ATTR_NUMBERING_RULE, sal_False, &pExItem ) &&
384 ( !GetOutputItemSet() ||
385 SFX_ITEM_SET != GetOutputItemSet()->GetItemState(
386 SID_ATTR_NUMBERING_RULE, sal_False, &pOutItem ) ||
387 *pExItem != *pOutItem ))
388 {
389 if( GetOutputItemSet() )
390 ((SfxItemSet*)GetOutputItemSet())->Put( *pExItem );
391 else
392 nRet = RET_CANCEL;
393 }
394 }
395 else
396 //JP 09.01.98 Bug #46446#:
397 // das ist der Ok - Handler also muss auf OK defaultet werden!
398 nRet = RET_OK;
399 return nRet;
400 }
401
402 /*--------------------------------------------------------------------
403 Beschreibung:
404 --------------------------------------------------------------------*/
405
GetRefreshedSet()406 const SfxItemSet* SwTemplateDlg::GetRefreshedSet()
407 {
408 SfxItemSet* pInSet = GetInputSetImpl();
409 pInSet->ClearItem();
410 pInSet->SetParent( &GetStyleSheet().GetItemSet() );
411 return pInSet;
412 }
413
414 /*--------------------------------------------------------------------
415 Beschreibung:
416 --------------------------------------------------------------------*/
417
PageCreated(sal_uInt16 nId,SfxTabPage & rPage)418 void SwTemplateDlg::PageCreated(sal_uInt16 nId,SfxTabPage &rPage)
419 {
420 //Namen der Vorlagen und Metric setzen
421 String sNumCharFmt,sBulletCharFmt;
422 SwStyleNameMapper::FillUIName(RES_POOLCHR_NUM_LEVEL,sNumCharFmt);
423 SwStyleNameMapper::FillUIName(RES_POOLCHR_BUL_LEVEL,sBulletCharFmt);
424 SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
425
426 switch(nId)
427 {
428 case TP_CHAR_STD:
429 {
430 ASSERT(::GetActiveView(),"keine View aktiv");
431
432 SvxFontListItem aFontListItem(*((SvxFontListItem*)::GetActiveView()->
433 GetDocShell()->GetItem(SID_ATTR_CHAR_FONTLIST)));
434
435 aSet.Put(SvxFontListItem(aFontListItem.GetFontList(),SID_ATTR_CHAR_FONTLIST));
436 sal_uInt32 nFlags = 0;
437 if(rPage.GetItemSet().GetParent() && 0 == (nHtmlMode & HTMLMODE_ON))
438 nFlags = SVX_RELATIVE_MODE;
439 if(SFX_STYLE_FAMILY_CHAR == nType)
440 nFlags = nFlags | SVX_PREVIEW_CHARACTER;
441 aSet.Put(SfxUInt32Item(SID_FLAG_TYPE,nFlags));
442 rPage.PageCreated(aSet);
443 break;
444 }
445
446 case TP_CHAR_EXT:
447 {
448 sal_uInt32 nFlags = SVX_ENABLE_FLASH;
449 if(SFX_STYLE_FAMILY_CHAR == nType)
450 nFlags = nFlags | SVX_PREVIEW_CHARACTER;
451 aSet.Put(SfxUInt32Item(SID_FLAG_TYPE,nFlags));
452 rPage.PageCreated(aSet);
453 break;
454 }
455
456 case TP_CHAR_POS:
457 {
458 if(SFX_STYLE_FAMILY_CHAR == nType)
459 {
460 aSet.Put(SfxUInt32Item(SID_FLAG_TYPE,SVX_PREVIEW_CHARACTER));
461 rPage.PageCreated(aSet);
462 }
463 break;
464 }
465
466 case TP_CHAR_TWOLN:
467 {
468 if(SFX_STYLE_FAMILY_CHAR == nType)
469 {
470 aSet.Put(SfxUInt32Item(SID_FLAG_TYPE,SVX_PREVIEW_CHARACTER));
471 rPage.PageCreated(aSet);
472 }
473 break;
474 }
475
476 case TP_PARA_STD:
477 {
478 if(rPage.GetItemSet().GetParent())
479 {
480 aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_ABSLINEDIST,MM50 / 10));
481 aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_FLAGSET,0x000F));
482 rPage.PageCreated(aSet);
483 }
484
485 break;
486 }
487
488 case TP_NUMPARA:
489 {
490 //-->#outlinelevel added by zhaojianwei
491 // handle if the current paragraph style is assigned to a list level of outline style,
492 SwTxtFmtColl* pTmpColl = pWrtShell->FindTxtFmtCollByName(GetStyleSheet().GetName());
493 if(pTmpColl && pTmpColl->IsAssignedToListLevelOfOutlineStyle())
494 {
495 ((SwParagraphNumTabPage&)rPage).DisableOutline();
496 ((SwParagraphNumTabPage&)rPage).DisableNumbering();
497 }//<-end
498 ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox();
499 SfxStyleSheetBasePool* pPool = pWrtShell->GetView().GetDocShell()->GetStyleSheetPool();
500 pPool->SetSearchMask(SFX_STYLE_FAMILY_PSEUDO,SFXSTYLEBIT_ALL);
501 const SfxStyleSheetBase* pBase = pPool->First();
502 SvStringsSortDtor aNames;
503 while(pBase)
504 {
505 aNames.Insert(new String(pBase->GetName()));
506 pBase = pPool->Next();
507 }
508 for(sal_uInt16 i = 0; i < aNames.Count(); i++)
509 rBox.InsertEntry(*aNames.GetObject(i));
510 break;
511 }
512
513 case TP_PARA_ALIGN:
514 {
515 aSet.Put(SfxBoolItem(SID_SVXPARAALIGNTABPAGE_ENABLEJUSTIFYEXT,sal_True));
516 rPage.PageCreated(aSet);
517 break;
518 }
519
520 case TP_FRM_STD:
521 {
522 ((SwFrmPage&)rPage).SetNewFrame(sal_True);
523 ((SwFrmPage&)rPage).SetFormatUsed(sal_True);
524 break;
525 }
526
527 case TP_FRM_ADD:
528 {
529 ((SwFrmAddPage&)rPage).SetFormatUsed(sal_True);
530 ((SwFrmAddPage&)rPage).SetNewFrame(sal_True);
531 break;
532 }
533
534 case TP_FRM_WRAP:
535 {
536 ((SwWrapTabPage&)rPage).SetFormatUsed(sal_True,sal_False);
537 break;
538 }
539
540 case TP_COLUMN:
541 {
542 if(nType == SFX_STYLE_FAMILY_FRAME)
543 ((SwColumnPage&)rPage).SetFrmMode(sal_True);
544 ((SwColumnPage&)rPage).SetFormatUsed(sal_True);
545 break;
546 }
547
548 //UUUU do not remove; many other style dialog combinations still use the SfxTabPage
549 // for the SvxBrushItem (see RID_SVXPAGE_BACKGROUND)
550 case TP_BACKGROUND:
551 {
552 sal_Int32 nFlagType = 0;
553 if(SFX_STYLE_FAMILY_PARA == nType)
554 nFlagType |= SVX_SHOW_PARACTL;
555 if(SFX_STYLE_FAMILY_CHAR != nType)
556 nFlagType |= SVX_SHOW_SELECTOR;
557 if(SFX_STYLE_FAMILY_FRAME == nType)
558 nFlagType |= SVX_ENABLE_TRANSPARENCY;
559 aSet.Put(SfxUInt32Item(SID_FLAG_TYPE,nFlagType));
560 rPage.PageCreated(aSet);
561 break;
562 }
563
564 case TP_CONDCOLL:
565 {
566 ((SwCondCollPage&)rPage).SetCollection(
567 ((SwDocStyleSheet&)GetStyleSheet()).GetCollection(),bNewStyle);
568 break;
569 }
570
571 case TP_PAGE_STD:
572 {
573 if(0 == (nHtmlMode & HTMLMODE_ON))
574 {
575 List aList;
576 String* pNew = new String;
577 SwStyleNameMapper::FillUIName(RES_POOLCOLL_TEXT,*pNew);
578 aList.Insert(pNew,(sal_uLong)0);
579
580 if(pWrtShell)
581 {
582 SfxStyleSheetBasePool* pStyleSheetPool = pWrtShell->GetView().GetDocShell()->GetStyleSheetPool();
583 pStyleSheetPool->SetSearchMask(SFX_STYLE_FAMILY_PARA);
584 SfxStyleSheetBase *pFirstStyle = pStyleSheetPool->First();
585
586 while(pFirstStyle)
587 {
588 aList.Insert(new String(pFirstStyle->GetName()), aList.Count());
589 pFirstStyle = pStyleSheetPool->Next();
590 }
591 }
592
593 //UUUU set DrawingLayer FillStyles active
594 aSet.Put(SfxBoolItem(SID_DRAWINGLAYER_FILLSTYLES, true));
595 aSet.Put(SfxStringListItem(SID_COLLECT_LIST, &aList));
596 rPage.PageCreated(aSet);
597
598 for(sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i)
599 {
600 delete (String*)aList.Remove(i);
601 }
602 }
603
604 break;
605 }
606
607 case TP_MACRO_ASSIGN:
608 {
609 SfxAllItemSet aNewSet(*aSet.GetPool());
610 aNewSet.Put(SwMacroAssignDlg::AddEvents(MACASSGN_ALLFRM));
611 if(pWrtShell)
612 rPage.SetFrame(pWrtShell->GetView().GetViewFrame()->GetFrame().GetFrameInterface());
613 rPage.PageCreated(aNewSet);
614 break;
615 }
616
617 case RID_SVXPAGE_PICK_NUM:
618 {
619 aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
620 aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
621 rPage.PageCreated(aSet);
622 break;
623 }
624
625 case RID_SVXPAGE_NUM_OPTIONS:
626 {
627 aSet.Put(SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
628 aSet.Put(SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
629 // Zeichenvorlagen sammeln
630 ListBox rCharFmtLB(this);
631 rCharFmtLB.Clear();
632 rCharFmtLB.InsertEntry(ViewShell::GetShellRes()->aStrNone);
633 SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
634 ::FillCharStyleListBox(rCharFmtLB,pDocShell);
635 List aList;
636 for(sal_uInt16 j = 0; j < rCharFmtLB.GetEntryCount(); j++)
637 {
638
639 aList.Insert(new XubString(rCharFmtLB.GetEntry(j)),LIST_APPEND);
640 }
641 aSet.Put(SfxStringListItem(SID_CHAR_FMT_LIST_BOX,&aList));
642 FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell,pDocShell));
643 aSet.Put(SfxAllEnumItem(SID_METRIC_ITEM,static_cast<sal_uInt16>(eMetric)));
644 rPage.PageCreated(aSet);
645 for(sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i)
646 delete (XubString*)aList.Remove(i);
647 aList.Clear();
648 break;
649 }
650
651 case RID_SVXPAGE_NUM_POSITION:
652 {
653 SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
654 FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell,pDocShell));
655
656 aSet.Put(SfxAllEnumItem(SID_METRIC_ITEM,static_cast<sal_uInt16>(eMetric)));
657 rPage.PageCreated(aSet);
658 break;
659 }
660
661 case RID_SVXPAGE_PICK_BULLET:
662 {
663 aSet.Put(SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
664 rPage.PageCreated(aSet);
665 break;
666 }
667
668 case TP_HEADER_PAGE:
669 {
670 if(0 == (nHtmlMode & HTMLMODE_ON))
671 {
672 static_cast< SvxHeaderPage& >(rPage).EnableDynamicSpacing();
673 }
674
675 //UUUU set DrawingLayer FillStyles active
676 aSet.Put(SfxBoolItem(SID_DRAWINGLAYER_FILLSTYLES, true));
677 rPage.PageCreated(aSet);
678
679 break;
680 }
681
682 case TP_FOOTER_PAGE:
683 {
684 if(0 == (nHtmlMode & HTMLMODE_ON))
685 {
686 static_cast< SvxFooterPage& >(rPage).EnableDynamicSpacing();
687 }
688
689 //UUUU set DrawingLayer FillStyles active
690 aSet.Put(SfxBoolItem(SID_DRAWINGLAYER_FILLSTYLES, true));
691 rPage.PageCreated(aSet);
692
693 break;
694 }
695
696 case TP_BORDER:
697 {
698 if(SFX_STYLE_FAMILY_PARA == nType)
699 {
700 aSet.Put(SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_PARA));
701 }
702 else if(SFX_STYLE_FAMILY_FRAME == nType)
703 {
704 aSet.Put(SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_FRAME));
705 }
706 rPage.PageCreated(aSet);
707 break;
708 }
709
710 //UUUU inits for Area and Transparency TabPages
711 // The selection attribute lists (XPropertyList derivates, e.g. XColorList for
712 // the color table) need to be added as items (e.g. SvxColorTableItem) to make
713 // these pages find the needed attributes for fill style suggestions.
714 // These are added in SwDocStyleSheet::GetItemSet() for the SFX_STYLE_FAMILY_PARA on
715 // demand, but could also be directly added from the DrawModel.
716 case RID_SVXPAGE_AREA:
717 {
718 aSet.Put(GetStyleSheet().GetItemSet());
719
720 // add flag for direct graphic content selection
721 aSet.Put(SfxBoolItem(SID_OFFER_IMPORT, true));
722
723 rPage.PageCreated(aSet);
724 break;
725 }
726
727 case RID_SVXPAGE_TRANSPARENCE:
728 {
729 rPage.PageCreated(GetStyleSheet().GetItemSet());
730 break;
731 }
732 }
733 }
734
735 // eof
736