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 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 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!"); 203 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!"); 204 AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) ); 205 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!"); 206 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!"); 207 AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) ); 208 209 AddTabPage( TP_CONDCOLL, SwCondCollPage::Create, 210 SwCondCollPage::GetRanges ); 211 if( (!bNewStyle && RES_CONDTXTFMTCOLL != ((SwDocStyleSheet&)rBase).GetCollection()->Which()) 212 || nHtmlMode & HTMLMODE_ON ) 213 RemoveTabPage(TP_CONDCOLL); 214 215 SvtCJKOptions aCJKOptions; 216 if(nHtmlMode & HTMLMODE_ON) 217 { 218 SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get(); 219 if (!pHtmlOpt->IsPrintLayoutExtension()) 220 RemoveTabPage(TP_PARA_EXT); 221 RemoveTabPage(TP_PARA_ASIAN); 222 RemoveTabPage(TP_TABULATOR); 223 RemoveTabPage(TP_NUMPARA); 224 RemoveTabPage(TP_CHAR_TWOLN); 225 if(!(nHtmlMode & HTMLMODE_FULL_STYLES)) 226 { 227 RemoveTabPage(TP_BACKGROUND); 228 RemoveTabPage(TP_DROPCAPS); 229 } 230 if(!(nHtmlMode & HTMLMODE_PARA_BORDER)) 231 RemoveTabPage(TP_BORDER); 232 } 233 else 234 { 235 if(!aCJKOptions.IsAsianTypographyEnabled()) 236 RemoveTabPage(TP_PARA_ASIAN); 237 if(!aCJKOptions.IsDoubleLinesEnabled()) 238 RemoveTabPage(TP_CHAR_TWOLN); 239 } 240 } 241 break; 242 // Rahmenvorlagen 243 case SFX_STYLE_FAMILY_FRAME: 244 { 245 AddTabPage(TP_FRM_STD, SwFrmPage::Create, 246 SwFrmPage::GetRanges ); 247 AddTabPage(TP_FRM_ADD, SwFrmAddPage::Create, 248 SwFrmAddPage::GetRanges ); 249 AddTabPage(TP_FRM_WRAP, SwWrapTabPage::Create, 250 SwWrapTabPage::GetRanges ); 251 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!"); 252 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!"); 253 AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) ); 254 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!"); 255 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!"); 256 AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) ); 257 258 AddTabPage(TP_COLUMN, SwColumnPage::Create, 259 SwColumnPage::GetRanges ); 260 261 AddTabPage( TP_MACRO_ASSIGN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_MACROASSIGN), 0); 262 263 break; 264 } 265 // Seitenvorlagen 266 case SFX_STYLE_FAMILY_PAGE: 267 { 268 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!"); 269 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!"); 270 AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) ); 271 AddTabPage(TP_HEADER_PAGE, String(SW_RES(STR_PAGE_HEADER)), 272 SvxHeaderPage::Create, 273 SvxHeaderPage::GetRanges ); 274 AddTabPage(TP_FOOTER_PAGE, String(SW_RES(STR_PAGE_FOOTER)), 275 SvxFooterPage::Create, 276 SvxFooterPage::GetRanges ); 277 if ( nSlot == FN_FORMAT_PAGE_COLUMN_DLG ) 278 { 279 SetCurPageId(TP_COLUMN); 280 } 281 else if ( nSlot == FN_FORMAT_PAGE_SETTING_DLG ) 282 { 283 SetCurPageId(TP_PAGE_STD); 284 } 285 286 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), "GetTabPageCreatorFunc fail!"); 287 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ), "GetTabPageRangesFunc fail!"); 288 AddTabPage(TP_PAGE_STD, String(SW_RES(STR_PAGE_STD)), 289 pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), 290 pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ), 291 sal_False, 292 1 ); // nach der Verwalten-Page 293 if(!pActShell || 0 == ::GetHtmlMode(pWrtShell->GetView().GetDocShell())) 294 { 295 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!"); 296 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!"); 297 AddTabPage(TP_BORDER, String(SW_RES(STR_PAGE_BORDER)), 298 pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) ); 299 AddTabPage(TP_COLUMN, String(SW_RES(STR_PAGE_COLUMN)), 300 SwColumnPage::Create, 301 SwColumnPage::GetRanges ); 302 AddTabPage(TP_FOOTNOTE_PAGE, String(SW_RES(STR_PAGE_FOOTNOTE)), 303 SwFootNotePage::Create, 304 SwFootNotePage::GetRanges ); 305 AddTabPage(TP_TEXTGRID_PAGE, String(SW_RES(STR_PAGE_TEXTGRID)), 306 SwTextGridPage::Create, 307 SwTextGridPage::GetRanges ); 308 SvtCJKOptions aCJKOptions; 309 if(!aCJKOptions.IsAsianTypographyEnabled()) 310 RemoveTabPage(TP_TEXTGRID_PAGE); 311 } 312 313 314 } 315 break; 316 // Numerierungsvorlagen 317 case SFX_STYLE_FAMILY_PSEUDO: 318 { 319 AddTabPage( RID_SVXPAGE_PICK_SINGLE_NUM ); 320 AddTabPage( RID_SVXPAGE_PICK_BULLET ); 321 AddTabPage( RID_SVXPAGE_PICK_NUM ); 322 AddTabPage( RID_SVXPAGE_PICK_BMP); 323 AddTabPage( RID_SVXPAGE_NUM_OPTIONS ); 324 AddTabPage( RID_SVXPAGE_NUM_POSITION ); 325 326 327 /* const SfxPoolItem* pItem; 328 if(SFX_ITEM_SET == rBase.GetItemSet().GetItemState( 329 FN_PARAM_ACT_NUMBER, sal_False, &pItem )) 330 { 331 // pActNum = (ActNumberFormat*)((const SwPtrItem*)pItem)->GetValue(); 332 } 333 */ 334 } 335 break; 336 337 default: 338 ASSERT(!this, "Falsche Familie"); 339 340 } 341 } 342 343 /*-------------------------------------------------------------------- 344 Beschreibung: 345 --------------------------------------------------------------------*/ 346 347 SwTemplateDlg::~SwTemplateDlg() 348 { 349 } 350 351 /*-------------------------------------------------------------------- 352 Beschreibung: 353 --------------------------------------------------------------------*/ 354 355 short SwTemplateDlg::Ok() 356 { 357 short nRet = SfxTabDialog::Ok(); 358 if( RET_OK == nRet ) 359 { 360 const SfxPoolItem *pOutItem, *pExItem; 361 if( SFX_ITEM_SET == pExampleSet->GetItemState( 362 SID_ATTR_NUMBERING_RULE, sal_False, &pExItem ) && 363 ( !GetOutputItemSet() || 364 SFX_ITEM_SET != GetOutputItemSet()->GetItemState( 365 SID_ATTR_NUMBERING_RULE, sal_False, &pOutItem ) || 366 *pExItem != *pOutItem )) 367 { 368 if( GetOutputItemSet() ) 369 ((SfxItemSet*)GetOutputItemSet())->Put( *pExItem ); 370 else 371 nRet = RET_CANCEL; 372 } 373 } 374 else 375 //JP 09.01.98 Bug #46446#: 376 // das ist der Ok - Handler also muss auf OK defaultet werden! 377 nRet = RET_OK; 378 return nRet; 379 } 380 381 /*-------------------------------------------------------------------- 382 Beschreibung: 383 --------------------------------------------------------------------*/ 384 385 const SfxItemSet* SwTemplateDlg::GetRefreshedSet() 386 { 387 SfxItemSet* pInSet = GetInputSetImpl(); 388 pInSet->ClearItem(); 389 pInSet->SetParent( &GetStyleSheet().GetItemSet() ); 390 return pInSet; 391 } 392 393 /*-------------------------------------------------------------------- 394 Beschreibung: 395 --------------------------------------------------------------------*/ 396 397 void SwTemplateDlg::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) 398 { 399 //Namen der Vorlagen und Metric setzen 400 String sNumCharFmt, sBulletCharFmt; 401 SwStyleNameMapper::FillUIName( RES_POOLCHR_NUM_LEVEL, sNumCharFmt); 402 SwStyleNameMapper::FillUIName( RES_POOLCHR_BUL_LEVEL, sBulletCharFmt); 403 SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); 404 405 switch( nId ) 406 { 407 case TP_CHAR_STD: 408 { 409 ASSERT(::GetActiveView(), "keine View aktiv"); 410 411 SvxFontListItem aFontListItem( *( (SvxFontListItem*)::GetActiveView()-> 412 GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) ) ); 413 414 aSet.Put (SvxFontListItem( aFontListItem.GetFontList(), SID_ATTR_CHAR_FONTLIST)); 415 sal_uInt32 nFlags = 0; 416 if(rPage.GetItemSet().GetParent() && 0 == (nHtmlMode & HTMLMODE_ON )) 417 nFlags = SVX_RELATIVE_MODE; 418 if( SFX_STYLE_FAMILY_CHAR == nType ) 419 nFlags = nFlags|SVX_PREVIEW_CHARACTER; 420 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlags)); 421 rPage.PageCreated(aSet); 422 } 423 break; 424 425 case TP_CHAR_EXT: 426 { 427 sal_uInt32 nFlags = SVX_ENABLE_FLASH; 428 if( SFX_STYLE_FAMILY_CHAR == nType ) 429 nFlags = nFlags|SVX_PREVIEW_CHARACTER; 430 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlags)); 431 rPage.PageCreated(aSet); 432 } 433 break; 434 435 case TP_CHAR_POS: 436 if( SFX_STYLE_FAMILY_CHAR == nType ) 437 { 438 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_PREVIEW_CHARACTER)); 439 rPage.PageCreated(aSet); 440 } 441 break; 442 443 case TP_CHAR_TWOLN: 444 if( SFX_STYLE_FAMILY_CHAR == nType ) 445 { 446 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_PREVIEW_CHARACTER)); 447 rPage.PageCreated(aSet); 448 } 449 break; 450 451 case TP_PARA_STD: 452 { 453 if( rPage.GetItemSet().GetParent() ) 454 { 455 aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_ABSLINEDIST,MM50/10)); 456 aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_FLAGSET,0x000F)); 457 rPage.PageCreated(aSet); 458 } 459 460 } 461 break; 462 case TP_NUMPARA: 463 { 464 //-->#outlinelevel added by zhaojianwei 465 // handle if the current paragraph style is assigned to a list level of outline style, 466 SwTxtFmtColl* pTmpColl = pWrtShell->FindTxtFmtCollByName( GetStyleSheet().GetName() ); 467 if( pTmpColl && pTmpColl->IsAssignedToListLevelOfOutlineStyle() ) 468 { 469 ((SwParagraphNumTabPage&)rPage).DisableOutline() ; 470 ((SwParagraphNumTabPage&)rPage).DisableNumbering(); 471 }//<-end 472 ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox(); 473 SfxStyleSheetBasePool* pPool = pWrtShell->GetView().GetDocShell()->GetStyleSheetPool(); 474 pPool->SetSearchMask(SFX_STYLE_FAMILY_PSEUDO, SFXSTYLEBIT_ALL); 475 const SfxStyleSheetBase* pBase = pPool->First(); 476 SvStringsSortDtor aNames; 477 while(pBase) 478 { 479 aNames.Insert(new String(pBase->GetName())); 480 pBase = pPool->Next(); 481 } 482 for(sal_uInt16 i = 0; i < aNames.Count(); i++) 483 rBox.InsertEntry(*aNames.GetObject(i)); 484 } 485 break; 486 case TP_PARA_ALIGN: 487 { 488 aSet.Put(SfxBoolItem(SID_SVXPARAALIGNTABPAGE_ENABLEJUSTIFYEXT,sal_True)); 489 rPage.PageCreated(aSet); 490 } 491 break; 492 493 case TP_FRM_STD: 494 ((SwFrmPage&)rPage).SetNewFrame( sal_True ); 495 ((SwFrmPage&)rPage).SetFormatUsed( sal_True ); 496 break; 497 498 case TP_FRM_ADD: 499 ((SwFrmAddPage&)rPage).SetFormatUsed(sal_True); 500 ((SwFrmAddPage&)rPage).SetNewFrame(sal_True); 501 break; 502 503 case TP_FRM_WRAP: 504 ((SwWrapTabPage&)rPage).SetFormatUsed( sal_True, sal_False ); 505 break; 506 507 case TP_COLUMN: 508 if( nType == SFX_STYLE_FAMILY_FRAME ) 509 ((SwColumnPage&)rPage).SetFrmMode(sal_True); 510 ((SwColumnPage&)rPage).SetFormatUsed( sal_True ); 511 break; 512 513 case TP_BACKGROUND: 514 { 515 sal_Int32 nFlagType = 0; 516 if( SFX_STYLE_FAMILY_PARA == nType ) 517 nFlagType |= SVX_SHOW_PARACTL; 518 if( SFX_STYLE_FAMILY_CHAR != nType ) 519 nFlagType |= SVX_SHOW_SELECTOR; 520 if( SFX_STYLE_FAMILY_FRAME == nType ) 521 nFlagType |= SVX_ENABLE_TRANSPARENCY; 522 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlagType)); 523 rPage.PageCreated(aSet); 524 } 525 break; 526 case TP_CONDCOLL: 527 ((SwCondCollPage&)rPage).SetCollection( 528 ((SwDocStyleSheet&)GetStyleSheet()).GetCollection(), bNewStyle ); 529 break; 530 531 case TP_PAGE_STD: 532 if(0 == (nHtmlMode & HTMLMODE_ON )) 533 { 534 List aList; 535 String* pNew = new String; 536 SwStyleNameMapper::FillUIName( RES_POOLCOLL_TEXT, *pNew ); 537 aList.Insert( pNew, (sal_uLong)0 ); 538 if( pWrtShell ) 539 { 540 SfxStyleSheetBasePool* pStyleSheetPool = pWrtShell-> 541 GetView().GetDocShell()->GetStyleSheetPool(); 542 pStyleSheetPool->SetSearchMask(SFX_STYLE_FAMILY_PARA); 543 SfxStyleSheetBase *pFirstStyle = pStyleSheetPool->First(); 544 while(pFirstStyle) 545 { 546 aList.Insert( new String(pFirstStyle->GetName()), 547 aList.Count()); 548 pFirstStyle = pStyleSheetPool->Next(); 549 } 550 } 551 aSet.Put (SfxStringListItem(SID_COLLECT_LIST, &aList)); 552 rPage.PageCreated(aSet); 553 for( sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i ) 554 delete (String*)aList.Remove(i); 555 } 556 break; 557 558 case TP_MACRO_ASSIGN: 559 { 560 SfxAllItemSet aNewSet(*aSet.GetPool()); 561 aNewSet.Put( SwMacroAssignDlg::AddEvents(MACASSGN_ALLFRM) ); 562 if ( pWrtShell ) 563 rPage.SetFrame( pWrtShell->GetView().GetViewFrame()->GetFrame().GetFrameInterface() ); 564 rPage.PageCreated(aNewSet); 565 break; 566 } 567 568 case RID_SVXPAGE_PICK_NUM: 569 { 570 aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt)); 571 aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt)); 572 rPage.PageCreated(aSet); 573 } 574 break; 575 case RID_SVXPAGE_NUM_OPTIONS: 576 { 577 578 aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt)); 579 aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt)); 580 // Zeichenvorlagen sammeln 581 ListBox rCharFmtLB(this); 582 rCharFmtLB.Clear(); 583 rCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone ); 584 SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell(); 585 ::FillCharStyleListBox(rCharFmtLB, pDocShell); 586 List aList; 587 for(sal_uInt16 j = 0; j < rCharFmtLB.GetEntryCount(); j++) 588 { 589 590 aList.Insert( new XubString(rCharFmtLB.GetEntry(j)), LIST_APPEND ); 591 } 592 aSet.Put( SfxStringListItem( SID_CHAR_FMT_LIST_BOX,&aList ) ) ; 593 FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell)); 594 aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric))); 595 rPage.PageCreated(aSet); 596 for( sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i ) 597 delete (XubString*)aList.Remove(i); 598 aList.Clear(); 599 } 600 break; 601 case RID_SVXPAGE_NUM_POSITION: 602 { 603 SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell(); 604 FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell)); 605 606 aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric))); 607 rPage.PageCreated(aSet); 608 } 609 break; 610 case RID_SVXPAGE_PICK_BULLET : 611 { 612 aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt)); 613 rPage.PageCreated(aSet); 614 } 615 break; 616 case TP_HEADER_PAGE: 617 if(0 == (nHtmlMode & HTMLMODE_ON )) 618 ((SvxHeaderPage&)rPage).EnableDynamicSpacing(); 619 break; 620 case TP_FOOTER_PAGE: 621 if(0 == (nHtmlMode & HTMLMODE_ON )) 622 ((SvxFooterPage&)rPage).EnableDynamicSpacing(); 623 break; 624 case TP_BORDER : 625 if( SFX_STYLE_FAMILY_PARA == nType ) 626 { 627 aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_PARA)); 628 } 629 else if( SFX_STYLE_FAMILY_FRAME == nType ) 630 { 631 aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_FRAME)); 632 } 633 rPage.PageCreated(aSet); 634 635 break; 636 } 637 } 638 639 640 641