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 //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 368 SwTemplateDlg::~SwTemplateDlg() 369 { 370 } 371 372 /*-------------------------------------------------------------------- 373 Beschreibung: 374 --------------------------------------------------------------------*/ 375 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 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 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