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 #ifdef SW_DLLIMPLEMENTATION 27 #undef SW_DLLIMPLEMENTATION 28 #endif 29 30 31 32 #ifndef _VIEW_HXX 33 #include <view.hxx> 34 #endif 35 #include <wrtsh.hxx> 36 #include <cption.hxx> 37 #include <fldmgr.hxx> 38 #include <expfld.hxx> 39 #include <numrule.hxx> 40 #include <poolfmt.hxx> 41 #include <docsh.hxx> 42 #include <frmfmt.hxx> 43 #include <calc.hxx> 44 #include <uitool.hxx> 45 #include <doc.hxx> 46 #include <modcfg.hxx> 47 #include <swmodule.hxx> 48 #include <com/sun/star/frame/XStorable.hpp> 49 #include <com/sun/star/text/GraphicCrop.hpp> 50 #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp> 51 #include <com/sun/star/text/XTextTableCursor.hpp> 52 #include <com/sun/star/text/XTextTablesSupplier.hpp> 53 #include <com/sun/star/text/TableColumnSeparator.hpp> 54 #include <com/sun/star/text/XTextTable.hpp> 55 #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp> 56 #include <com/sun/star/text/XTextEmbeddedObject.hpp> 57 #include <com/sun/star/text/XTextFramesSupplier.hpp> 58 #include <com/sun/star/text/XTextFrame.hpp> 59 60 #ifndef _FRMUI_HRC 61 #include <frmui.hrc> 62 #endif 63 #ifndef _CPTION_HRC 64 #include <cption.hrc> 65 #endif 66 #include <SwStyleNameMapper.hxx> 67 using namespace ::com::sun::star; 68 69 extern String* GetOldGrfCat(); 70 extern String* GetOldTabCat(); 71 extern String* GetOldFrmCat(); 72 extern String* GetOldDrwCat(); 73 74 class SwSequenceOptionDialog : public SvxStandardDialog 75 { 76 FixedLine aFlHeader; 77 FixedText aFtLevel; 78 ListBox aLbLevel; 79 FixedText aFtDelim; 80 Edit aEdDelim; 81 82 FixedLine aFlCatAndFrame; 83 FixedText aFtCharStyle; 84 ListBox aLbCharStyle; 85 CheckBox aApplyBorderAndShadowCB; 86 87 //#i61007# order of captions 88 FixedLine aFlCaptionOrder; 89 FixedText aFtCaptionOrder; 90 ListBox aLbCaptionOrder; 91 92 OKButton aOKButton; 93 CancelButton aCancelButton; 94 HelpButton aHelpButton; 95 96 SwView& rView; 97 String aFldTypeName; 98 99 public: 100 SwSequenceOptionDialog( Window *pParent, SwView &rV, 101 const String& rSeqFldType ); 102 virtual ~SwSequenceOptionDialog(); 103 virtual void Apply(); 104 105 bool IsApplyBorderAndShadow( void ) { return aApplyBorderAndShadowCB.IsChecked(); } 106 void SetApplyBorderAndShadow( bool bSet ) { aApplyBorderAndShadowCB.Check(bSet); } 107 108 //#i61007# order of captions 109 bool IsOrderNumberingFirst() const {return aLbCaptionOrder.GetSelectEntryPos() == 1;} 110 void SetOrderNumberingFirst(bool bSet) { aLbCaptionOrder.SelectEntryPos( bSet ? 1 : 0 ); } 111 112 void SetCharacterStyle(const String& rStyle); 113 String GetCharacterStyle() const; 114 }; 115 116 SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) : 117 118 SvxStandardDialog( pParent, SW_RES(DLG_CAPTION) ), 119 120 aTextText (this, SW_RES(TXT_TEXT )), 121 aTextEdit (this, SW_RES(EDT_TEXT )), 122 aSettingsFL (this, SW_RES(FL_SETTINGS)), 123 aCategoryText (this, SW_RES(TXT_CATEGORY)), 124 aCategoryBox (this, SW_RES(BOX_CATEGORY)), 125 aFormatText (this, SW_RES(TXT_FORMAT )), 126 aFormatBox (this, SW_RES(BOX_FORMAT )), 127 aNumberingSeparatorFT(this, SW_RES(FT_NUM_SEP )), 128 aNumberingSeparatorED(this, SW_RES(ED_NUM_SEP )), 129 aSepText (this, SW_RES(TXT_SEP )), 130 aSepEdit (this, SW_RES(EDT_SEP )), 131 aPosText (this, SW_RES(TXT_POS )), 132 aPosBox (this, SW_RES(BOX_POS )), 133 aOKButton (this, SW_RES(BTN_OK )), 134 aCancelButton (this, SW_RES(BTN_CANCEL )), 135 aHelpButton (this, SW_RES(BTN_HELP )), 136 aAutoCaptionButton(this, SW_RES(BTN_AUTOCAPTION)), 137 aOptionButton (this, SW_RES(BTN_OPTION )), 138 sNone( SW_RES( STR_CATEGORY_NONE )), 139 aPrevWin (this, SW_RES(WIN_SAMPLE )), 140 rView( rV ), 141 pMgr( new SwFldMgr(rView.GetWrtShellPtr()) ), 142 bCopyAttributes( sal_False ), 143 bOrderNumberingFirst( SW_MOD()->GetModuleConfig()->IsCaptionOrderNumberingFirst() ) 144 { 145 //#i61007# order of captions 146 if( bOrderNumberingFirst ) 147 ApplyCaptionOrder(); 148 SwWrtShell &rSh = rView.GetWrtShell(); 149 uno::Reference< frame::XModel > xModel = rView.GetDocShell()->GetBaseModel(); 150 151 eType = rSh.GetSelectionType(); 152 if ( eType & nsSelectionType::SEL_OLE ) 153 { 154 eType = nsSelectionType::SEL_GRF; 155 uno::Reference< text::XTextEmbeddedObjectsSupplier > xObjs(xModel, uno::UNO_QUERY); 156 xNameAccess = xObjs->getEmbeddedObjects(); 157 } 158 159 Link aLk = LINK( this, SwCaptionDialog, ModifyHdl ); 160 aCategoryBox.SetModifyHdl( aLk ); 161 aTextEdit .SetModifyHdl( aLk ); 162 aNumberingSeparatorED.SetModifyHdl ( aLk ); 163 aSepEdit .SetModifyHdl( aLk ); 164 165 aLk = LINK(this, SwCaptionDialog, SelectHdl); 166 aCategoryBox.SetSelectHdl( aLk ); 167 aFormatBox .SetSelectHdl( aLk ); 168 aOptionButton.SetClickHdl( LINK( this, SwCaptionDialog, OptionHdl ) ); 169 aAutoCaptionButton.SetClickHdl(LINK(this, SwCaptionDialog, CaptionHdl)); 170 171 aCategoryBox.InsertEntry( sNone ); 172 sal_uInt16 i, nCount = pMgr->GetFldTypeCount(); 173 for (i = 0; i < nCount; i++) 174 { 175 SwFieldType *pType = pMgr->GetFldType( USHRT_MAX, i ); 176 if( pType->Which() == RES_SETEXPFLD && 177 ((SwSetExpFieldType *) pType)->GetType() & nsSwGetSetExpType::GSE_SEQ ) 178 aCategoryBox.InsertEntry(pType->GetName()); 179 } 180 181 String* pString = 0; 182 sal_uInt16 nPoolId = 0; 183 if (eType & nsSelectionType::SEL_GRF) 184 { 185 nPoolId = RES_POOLCOLL_LABEL_ABB; 186 pString = ::GetOldGrfCat(); 187 bCopyAttributes = sal_True; 188 sObjectName = rSh.GetFlyName(); 189 //if not OLE 190 if(!xNameAccess.is()) 191 { 192 uno::Reference< text::XTextGraphicObjectsSupplier > xGraphics(xModel, uno::UNO_QUERY); 193 xNameAccess = xGraphics->getGraphicObjects(); 194 } 195 196 } 197 else if( eType & nsSelectionType::SEL_TBL ) 198 { 199 nPoolId = RES_POOLCOLL_LABEL_TABLE; 200 pString = ::GetOldTabCat(); 201 uno::Reference< text::XTextTablesSupplier > xTables(xModel, uno::UNO_QUERY); 202 xNameAccess = xTables->getTextTables(); 203 sObjectName = rSh.GetTableFmt()->GetName(); 204 } 205 else if( eType & nsSelectionType::SEL_FRM ) 206 { 207 nPoolId = RES_POOLCOLL_LABEL_FRAME; 208 pString = ::GetOldFrmCat(); 209 uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY); 210 xNameAccess = xFrms->getTextFrames(); 211 sObjectName = rSh.GetFlyName(); 212 } 213 else if( eType == nsSelectionType::SEL_TXT ) 214 { 215 nPoolId = RES_POOLCOLL_LABEL_FRAME; 216 pString = ::GetOldFrmCat(); 217 } 218 else if( eType & nsSelectionType::SEL_DRW ) 219 { 220 nPoolId = RES_POOLCOLL_LABEL_DRAWING; 221 pString = ::GetOldDrwCat(); 222 } 223 if( nPoolId ) 224 { 225 if( pString && pString->Len()) 226 aCategoryBox.SetText( *pString ); 227 else 228 aCategoryBox.SetText( 229 SwStyleNameMapper::GetUIName( nPoolId, aEmptyStr )); 230 } 231 232 // aFormatBox 233 sal_uInt16 nSelFmt = SVX_NUM_ARABIC; 234 nCount = pMgr->GetFldTypeCount(); 235 SwFieldType* pFldType; 236 for ( i = nCount; i; ) 237 if( ( pFldType = pMgr->GetFldType(USHRT_MAX, --i))->GetName() == 238 aCategoryBox.GetText() ) 239 { 240 nSelFmt = (sal_uInt16)((SwSetExpFieldType*)pFldType)->GetSeqFormat(); 241 break; 242 } 243 244 245 nCount = pMgr->GetFormatCount(TYP_SEQFLD, sal_False); 246 for ( i = 0; i < nCount; ++i ) 247 { 248 aFormatBox.InsertEntry( pMgr->GetFormatStr(TYP_SEQFLD, i) ); 249 sal_uInt16 nFmtId = pMgr->GetFormatId(TYP_SEQFLD, i); 250 aFormatBox.SetEntryData( i, reinterpret_cast<void*>( nFmtId ) ); 251 if( nFmtId == nSelFmt ) 252 aFormatBox.SelectEntryPos( i ); 253 } 254 255 // aPosBox 256 switch (eType) 257 { 258 case nsSelectionType::SEL_GRF: 259 case nsSelectionType::SEL_TBL: 260 case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM: 261 case nsSelectionType::SEL_TBL | nsSelectionType::SEL_TXT: 262 case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM | nsSelectionType::SEL_TXT: 263 case nsSelectionType::SEL_DRW: 264 case nsSelectionType::SEL_DRW | nsSelectionType::SEL_BEZ: 265 aPosBox.InsertEntry(SW_RESSTR(STR_ABOVE)); 266 aPosBox.InsertEntry(SW_RESSTR(STR_CP_BELOW)); 267 break; 268 case nsSelectionType::SEL_FRM: 269 case nsSelectionType::SEL_TXT: 270 aPosBox.InsertEntry(SW_RESSTR(STR_BEGINNING)); 271 aPosBox.InsertEntry(SW_RESSTR(STR_END )); 272 break; 273 } 274 aPosBox.SelectEntryPos(1); 275 if (eType & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_DRW)) 276 { 277 aPosText.Enable( sal_False ); 278 aPosBox.Enable( sal_False ); 279 } 280 281 aCategoryBox.GetModifyHdl().Call(&aCategoryBox); 282 283 FreeResource(); 284 285 CheckButtonWidth(); 286 aTextEdit.GrabFocus(); 287 DrawSample(); 288 } 289 290 void SwCaptionDialog::Apply() 291 { 292 InsCaptionOpt aOpt; 293 aOpt.UseCaption() = sal_True; 294 String aName( aCategoryBox.GetText() ); 295 if ( aName == sNone ) 296 aOpt.SetCategory( aEmptyStr ); 297 else 298 { 299 aName.EraseLeadingChars( ' ' ); 300 aName.EraseTrailingChars( ' ' ); 301 aOpt.SetCategory( aName ); 302 } 303 aOpt.SetNumType( (sal_uInt16)(sal_uIntPtr)aFormatBox.GetEntryData( aFormatBox.GetSelectEntryPos() ) ); 304 aOpt.SetSeparator( aSepEdit.IsEnabled() ? aSepEdit.GetText() : String() ); 305 aOpt.SetNumSeparator( aNumberingSeparatorED.GetText() ); 306 aOpt.SetCaption( aTextEdit.GetText() ); 307 aOpt.SetPos( aPosBox.GetSelectEntryPos() ); 308 aOpt.IgnoreSeqOpts() = sal_True; 309 aOpt.CopyAttributes() = bCopyAttributes; 310 aOpt.SetCharacterStyle( sCharacterStyle ); 311 rView.InsertCaption( &aOpt ); 312 } 313 314 IMPL_LINK_INLINE_START( SwCaptionDialog, OptionHdl, Button*, pButton ) 315 { 316 String sFldTypeName = aCategoryBox.GetText(); 317 if(sFldTypeName == sNone) 318 sFldTypeName = aEmptyStr; 319 SwSequenceOptionDialog aDlg( pButton, rView, sFldTypeName ); 320 aDlg.SetApplyBorderAndShadow(bCopyAttributes); 321 aDlg.SetCharacterStyle( sCharacterStyle ); 322 aDlg.SetOrderNumberingFirst( bOrderNumberingFirst ); 323 aDlg.Execute(); 324 bCopyAttributes = aDlg.IsApplyBorderAndShadow(); 325 sCharacterStyle = aDlg.GetCharacterStyle(); 326 //#i61007# order of captions 327 if( bOrderNumberingFirst != aDlg.IsOrderNumberingFirst() ) 328 { 329 bOrderNumberingFirst = aDlg.IsOrderNumberingFirst(); 330 SW_MOD()->GetModuleConfig()->SetCaptionOrderNumberingFirst(bOrderNumberingFirst); 331 ApplyCaptionOrder(); 332 } 333 DrawSample(); 334 return 0; 335 } 336 IMPL_LINK_INLINE_END( SwCaptionDialog, OptionHdl, Button*, EMPTYARG ) 337 338 IMPL_LINK_INLINE_START( SwCaptionDialog, SelectHdl, ListBox *, EMPTYARG ) 339 { 340 DrawSample(); 341 return 0; 342 } 343 IMPL_LINK_INLINE_END( SwCaptionDialog, SelectHdl, ListBox *, EMPTYARG ) 344 345 346 347 IMPL_LINK( SwCaptionDialog, ModifyHdl, Edit *, EMPTYARG ) 348 { 349 SwWrtShell &rSh = rView.GetWrtShell(); 350 String sFldTypeName = aCategoryBox.GetText(); 351 sal_Bool bCorrectFldName = sFldTypeName.Len() > 0; 352 sal_Bool bNone = sFldTypeName == sNone; 353 SwFieldType* pType = (bCorrectFldName && !bNone) 354 ? rSh.GetFldType( RES_SETEXPFLD, sFldTypeName ) 355 : 0; 356 aOKButton.Enable( bCorrectFldName && 357 (!pType || 358 ((SwSetExpFieldType*)pType)->GetType() == nsSwGetSetExpType::GSE_SEQ) 359 && 0 != sFldTypeName.Len() ); 360 aOptionButton.Enable( aOKButton.IsEnabled() && !bNone ); 361 aFormatText.Enable( !bNone ); 362 aFormatBox.Enable( !bNone ); 363 aSepText.Enable( !bNone ); 364 aSepEdit.Enable( !bNone ); 365 DrawSample(); 366 return 0; 367 } 368 369 IMPL_LINK(SwCaptionDialog, CaptionHdl, PushButton*, EMPTYARG) 370 { 371 SfxItemSet aSet( rView.GetDocShell()->GetDoc()->GetAttrPool() ); 372 SwCaptionOptDlg aDlg( this, aSet ); 373 aDlg.Execute(); 374 375 return 0; 376 } 377 378 void SwCaptionDialog::DrawSample() 379 { 380 String aStr; 381 String sCaption = aTextEdit.GetText(); 382 383 // Nummer 384 String sFldTypeName = aCategoryBox.GetText(); 385 sal_Bool bNone = sFldTypeName == sNone; 386 if( !bNone ) 387 { 388 sal_uInt16 nNumFmt = (sal_uInt16)(sal_uIntPtr)aFormatBox.GetEntryData( 389 aFormatBox.GetSelectEntryPos() ); 390 if( SVX_NUM_NUMBER_NONE != nNumFmt ) 391 { 392 // Kategorie 393 //#i61007# order of captions 394 if( !bOrderNumberingFirst ) 395 { 396 aStr += sFldTypeName; 397 if ( aStr.Len() > 0 ) 398 aStr += ' '; 399 } 400 401 SwWrtShell &rSh = rView.GetWrtShell(); 402 SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType( 403 RES_SETEXPFLD, sFldTypeName ); 404 if( pFldType && pFldType->GetOutlineLvl() < MAXLEVEL ) 405 { 406 sal_Int8 nLvl = pFldType->GetOutlineLvl(); 407 SwNumberTree::tNumberVector aNumVector; 408 for( sal_Int8 i = 0; i <= nLvl; ++i ) 409 aNumVector.push_back(1); 410 411 String sNumber( rSh.GetOutlineNumRule()-> 412 MakeNumString(aNumVector, sal_False )); 413 if( sNumber.Len() ) 414 (aStr += sNumber) += pFldType->GetDelimiter(); 415 } 416 417 switch( nNumFmt ) 418 { 419 case SVX_NUM_CHARS_UPPER_LETTER: aStr += 'A'; break; 420 case SVX_NUM_CHARS_UPPER_LETTER_N: aStr += 'A'; break; 421 case SVX_NUM_CHARS_LOWER_LETTER: aStr += 'a'; break; 422 case SVX_NUM_CHARS_LOWER_LETTER_N: aStr += 'a'; break; 423 case SVX_NUM_ROMAN_UPPER: aStr += 'I'; break; 424 case SVX_NUM_ROMAN_LOWER: aStr += 'i'; break; 425 //case ARABIC: 426 default: aStr += '1'; break; 427 } 428 //#i61007# order of captions 429 if( bOrderNumberingFirst ) 430 { 431 aStr += aNumberingSeparatorED.GetText(); 432 aStr += sFldTypeName; 433 } 434 435 } 436 if( sCaption.Len() > 0 ) 437 { 438 aStr += aSepEdit.GetText(); 439 } 440 } 441 aStr += sCaption; 442 // do preview! 443 aPrevWin.SetPreviewText( aStr ); 444 } 445 446 void SwCaptionDialog::CheckButtonWidth() 447 { 448 // check if the text of the AutoCaption button is to wide 449 const long nOffset = 10; 450 String sText = aAutoCaptionButton.GetText(); 451 long nTxtW = aAutoCaptionButton.GetTextWidth( sText ); 452 if ( sText.Search( '~' ) == STRING_NOTFOUND ) 453 nTxtW += nOffset; 454 long nBtnW = aAutoCaptionButton.GetSizePixel().Width(); 455 if ( nTxtW > nBtnW ) 456 { 457 // then broaden all buttons 458 Size aNewSize; 459 long nDelta = Max( ( nTxtW - nBtnW ), nOffset ); 460 Button* pBtns[] = 461 { 462 &aOKButton, &aCancelButton, &aHelpButton, &aAutoCaptionButton, &aOptionButton 463 }; 464 Button** pCurrent = pBtns; 465 for ( sal_uInt32 i = 0; i < sizeof( pBtns ) / sizeof( pBtns[ 0 ] ); ++i, ++pCurrent ) 466 { 467 aNewSize = (*pCurrent)->GetSizePixel(); 468 aNewSize.Width() += nDelta; 469 (*pCurrent)->SetSizePixel( aNewSize ); 470 } 471 // and the dialog 472 aNewSize = GetOutputSizePixel(); 473 aNewSize.Width() += nDelta; 474 SetOutputSizePixel( aNewSize ); 475 } 476 } 477 478 SwCaptionDialog::~SwCaptionDialog() 479 { 480 delete pMgr; 481 } 482 /* */ 483 484 485 SwSequenceOptionDialog::SwSequenceOptionDialog( Window *pParent, SwView &rV, 486 const String& rSeqFldType ) 487 : SvxStandardDialog( pParent, SW_RES(DLG_SEQUENCE_OPTION) ), 488 aFlHeader (this, SW_RES(FL_HEADER )), 489 aFtLevel (this, SW_RES(FT_LEVEL )), 490 aLbLevel (this, SW_RES(LB_LEVEL )), 491 aFtDelim (this, SW_RES(FT_SEPARATOR )), 492 aEdDelim (this, SW_RES(ED_SEPARATOR )), 493 aFlCatAndFrame (this, SW_RES(FL_CATANDFRAME)), 494 aFtCharStyle (this, SW_RES(FT_CHARSTYLE )), 495 aLbCharStyle (this, SW_RES(LB_CHARSTYLE )), 496 aApplyBorderAndShadowCB(this, SW_RES(CB_APPLYBAS)), 497 aFlCaptionOrder(this, SW_RES( FL_ORDER )), //#i61007# order of captions 498 aFtCaptionOrder(this, SW_RES( FT_ORDER )), 499 aLbCaptionOrder(this, SW_RES( LB_ORDER )), 500 aOKButton (this, SW_RES(BTN_OK )), 501 aCancelButton (this, SW_RES(BTN_CANCEL )), 502 aHelpButton (this, SW_RES(BTN_HELP )), 503 504 rView( rV ), 505 aFldTypeName( rSeqFldType ) 506 { 507 FreeResource(); 508 SwWrtShell &rSh = rView.GetWrtShell(); 509 510 for( sal_uInt16 n = 0; n < MAXLEVEL; ++n ) 511 aLbLevel.InsertEntry( String::CreateFromInt32(n+1) ); 512 513 SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType( 514 RES_SETEXPFLD, aFldTypeName ); 515 516 sal_Unicode nLvl = MAXLEVEL; 517 String sDelim( String::CreateFromAscii( ": " ) ); 518 if( pFldType ) 519 { 520 sDelim = pFldType->GetDelimiter(); 521 nLvl = pFldType->GetOutlineLvl(); 522 } 523 524 aLbLevel.SelectEntryPos( nLvl < MAXLEVEL ? nLvl + 1 : 0 ); 525 aEdDelim.SetText( sDelim ); 526 527 ::FillCharStyleListBox( aLbCharStyle, rView.GetDocShell(), sal_True, sal_True ); 528 aLbCharStyle.SelectEntryPos( 0 ); 529 } 530 531 SwSequenceOptionDialog::~SwSequenceOptionDialog() 532 { 533 } 534 535 void SwSequenceOptionDialog::Apply() 536 { 537 SwWrtShell &rSh = rView.GetWrtShell(); 538 SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType( 539 RES_SETEXPFLD, aFldTypeName ); 540 541 sal_Int8 nLvl = (sal_Int8)( aLbLevel.GetSelectEntryPos() - 1); 542 sal_Unicode cDelim = aEdDelim.GetText().GetChar(0); 543 544 sal_Bool bUpdate = sal_True; 545 if( pFldType ) 546 { 547 pFldType->SetDelimiter( cDelim ); 548 pFldType->SetOutlineLvl( nLvl ); 549 } 550 else if( aFldTypeName.Len() && nLvl < MAXLEVEL ) 551 { 552 // dann muessen wir das mal einfuegen 553 SwSetExpFieldType aFldType( rSh.GetDoc(), aFldTypeName, nsSwGetSetExpType::GSE_SEQ ); 554 aFldType.SetDelimiter( cDelim ); 555 aFldType.SetOutlineLvl( nLvl ); 556 rSh.InsertFldType( aFldType ); 557 } 558 else 559 bUpdate = sal_False; 560 561 if( bUpdate ) 562 rSh.UpdateExpFlds(); 563 } 564 565 /*-- 24.08.2004 16:13:53--------------------------------------------------- 566 567 -----------------------------------------------------------------------*/ 568 String SwSequenceOptionDialog::GetCharacterStyle() const 569 { 570 String sRet; 571 if(aLbCharStyle.GetSelectEntryPos()) 572 sRet = aLbCharStyle.GetSelectEntry(); 573 return sRet; 574 } 575 576 /*-- 24.08.2004 16:14:00--------------------------------------------------- 577 578 -----------------------------------------------------------------------*/ 579 void SwSequenceOptionDialog::SetCharacterStyle(const String& rStyle) 580 { 581 aLbCharStyle.SelectEntryPos(0); 582 aLbCharStyle.SelectEntry(rStyle); 583 } 584 585 long SwCaptionDialog::CategoryBox::PreNotify( NotifyEvent& rNEvt ) 586 { 587 long nHandled = 0; 588 if( rNEvt.GetType() == EVENT_KEYINPUT && 589 rNEvt.GetKeyEvent()->GetCharCode() ) 590 { 591 const KeyEvent* pEvent = rNEvt.GetKeyEvent(); 592 const KeyCode& rKeyCode = pEvent->GetKeyCode(); 593 sal_uInt16 nTmpCode = rKeyCode.GetFullCode() & ~KEY_ALLMODTYPE; 594 595 if(nTmpCode != KEY_BACKSPACE && nTmpCode != KEY_RETURN 596 && nTmpCode != KEY_TAB && nTmpCode != KEY_ESCAPE) 597 { 598 String sKey( pEvent->GetCharCode() ), sName( GetText() ); 599 Selection aSel( GetSelection() ); 600 aSel.Justify(); 601 if( aSel.Len() ) 602 sName.Erase( (xub_StrLen)aSel.Min(), (xub_StrLen)aSel.Len() ); 603 sName.Insert( sKey, (xub_StrLen)aSel.Min() ); 604 if( !SwCalc::IsValidVarName( sName )) 605 nHandled = 1; 606 } 607 } 608 if(!nHandled) 609 nHandled = ComboBox::PreNotify( rNEvt ); 610 return nHandled; 611 } 612 /*-- 01.11.2007 10:45:51--------------------------------------------------- 613 //#i61007# order of captions 614 -----------------------------------------------------------------------*/ 615 void lcl_MoveH( Window& rWin, sal_Int32 nMove ) 616 { 617 Point aPos( rWin.GetPosPixel() ); 618 aPos.Y() += nMove; 619 rWin.SetPosPixel(aPos); 620 } 621 void SwCaptionDialog::ApplyCaptionOrder() 622 { 623 //have the settings changed? 624 bool bVisible = aNumberingSeparatorED.IsVisible() != 0; 625 if( bOrderNumberingFirst != bVisible ) 626 { 627 sal_Int32 nDiff = aPosBox.GetPosPixel().Y() - aSepEdit.GetPosPixel().Y(); 628 629 aNumberingSeparatorFT.Show( bOrderNumberingFirst ); 630 aNumberingSeparatorED.Show( bOrderNumberingFirst ); 631 if( !bOrderNumberingFirst ) 632 { 633 nDiff = -nDiff; 634 } 635 lcl_MoveH( aCategoryText, 2 * nDiff); 636 lcl_MoveH( aFormatText, -nDiff ); 637 lcl_MoveH( aFormatBox, -nDiff ); 638 lcl_MoveH( aCategoryBox, 2 * nDiff); 639 lcl_MoveH( aSepText, nDiff ); 640 lcl_MoveH( aSepEdit, nDiff ); 641 lcl_MoveH( aPosText, nDiff ); 642 lcl_MoveH( aPosBox, nDiff ); 643 lcl_MoveH( aPrevWin, nDiff ); 644 Size aDlgSize( GetSizePixel() ); 645 aDlgSize.Height() += nDiff; 646 SetSizePixel( aDlgSize ); 647 } 648 } 649