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_sc.hxx" 26 27 // System - Includes --------------------------------------------------------- 28 29 30 31 // INCLUDE ------------------------------------------------------------------- 32 33 #include "global.hxx" 34 #include "reffact.hxx" 35 #include "document.hxx" 36 #include "docfunc.hxx" 37 #include "scresid.hxx" 38 #include "globstr.hrc" 39 #include "namedlg.hrc" 40 41 #define _NAMEDLG_CXX 42 #include "namedlg.hxx" 43 #undef _NAMEDLG_CXX 44 #include <vcl/msgbox.hxx> 45 46 47 48 // defines ------------------------------------------------------------------- 49 50 #define ABS_SREF SCA_VALID \ 51 | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE 52 #define ABS_DREF ABS_SREF \ 53 | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE 54 #define ABS_SREF3D ABS_SREF | SCA_TAB_3D 55 #define ABS_DREF3D ABS_DREF | SCA_TAB_3D 56 57 const sal_uInt16 SHEETNAMEPOS = 33; 58 59 //============================================================================ 60 // Hilfsklasse: Merken der aktuellen Bereichsoptionen, 61 // wenn ein Name in der ComboBox gefunden wird. 62 63 struct SaveData 64 { 65 SaveData() 66 : bCriteria(sal_False),bPrintArea(sal_False), 67 bColHeader(sal_False),bRowHeader(sal_False), 68 bDirty(sal_False) {} 69 70 void Clear() 71 { 72 aStrSymbol.Erase(); 73 bCriteria = bPrintArea = 74 bColHeader = bRowHeader = sal_False; 75 bDirty = sal_True; 76 } 77 78 String aStrSymbol; 79 sal_Bool bCriteria:1; 80 sal_Bool bPrintArea:1; 81 sal_Bool bColHeader:1; 82 sal_Bool bRowHeader:1; 83 sal_Bool bDirty:1; 84 }; 85 86 static SaveData* pSaveObj = NULL; 87 88 #define SAVE_DATA() \ 89 pSaveObj->aStrSymbol = aEdAssign.GetText(); \ 90 pSaveObj->bCriteria = aBtnCriteria.IsChecked(); \ 91 pSaveObj->bPrintArea = aBtnPrintArea.IsChecked(); \ 92 pSaveObj->bColHeader = aBtnColHeader.IsChecked(); \ 93 pSaveObj->bRowHeader = aBtnRowHeader.IsChecked(); \ 94 pSaveObj->bDirty = sal_True; 95 96 #define RESTORE_DATA() \ 97 if ( pSaveObj->bDirty ) \ 98 { \ 99 aEdAssign.SetText( pSaveObj->aStrSymbol ); \ 100 aBtnCriteria.Check( pSaveObj->bCriteria ); \ 101 aBtnPrintArea.Check( pSaveObj->bPrintArea ); \ 102 aBtnColHeader.Check( pSaveObj->bColHeader ); \ 103 aBtnRowHeader.Check( pSaveObj->bRowHeader ); \ 104 pSaveObj->bDirty = sal_False; \ 105 } 106 107 #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute(); 108 109 110 //============================================================================ 111 // class ScNameDlg 112 113 //---------------------------------------------------------------------------- 114 115 ScNameDlg::ScNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, 116 ScViewData* ptrViewData, 117 const ScAddress& aCursorPos ) 118 119 : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_NAMES ), 120 // 121 aFlName ( this, ScResId( FL_NAME ) ), 122 aEdName ( this, ScResId( ED_NAME ) ), 123 aLBNames ( this, ScResId( LB_NAMES ) ), 124 // 125 aFlAssign ( this, ScResId( FL_ASSIGN ) ), 126 aEdAssign ( this, this, ScResId( ED_ASSIGN ) ), 127 aRbAssign ( this, ScResId( RB_ASSIGN ), &aEdAssign, this ), 128 // 129 aFlType ( this, ScResId( FL_TYPE ) ), 130 aBtnPrintArea ( this, ScResId( BTN_PRINTAREA ) ), 131 aBtnColHeader ( this, ScResId( BTN_COLHEADER ) ), 132 aBtnCriteria ( this, ScResId( BTN_CRITERIA ) ), 133 aBtnRowHeader ( this, ScResId( BTN_ROWHEADER ) ), 134 // 135 aBtnOk ( this, ScResId( BTN_OK ) ), 136 aBtnCancel ( this, ScResId( BTN_CANCEL ) ), 137 aBtnHelp ( this, ScResId( BTN_HELP ) ), 138 aBtnAdd ( this, ScResId( BTN_ADD ) ), 139 aBtnRemove ( this, ScResId( BTN_REMOVE ) ), 140 aBtnMore ( this, ScResId( BTN_MORE ) ), 141 // 142 bSaved (sal_False), 143 aStrAdd ( ScResId( STR_ADD ) ), 144 aStrModify ( ScResId( STR_MODIFY ) ), 145 errMsgInvalidSym( ScResId( STR_INVALIDSYMBOL ) ), 146 // 147 pViewData ( ptrViewData ), 148 pDoc ( ptrViewData->GetDocument() ), 149 aLocalRangeName ( *(pDoc->GetRangeName()) ), 150 theCursorPos ( aCursorPos ), // zum Berechnen der Referenzen 151 aSelectedRangeScope(MAXTABCOUNT) 152 { 153 pSaveObj = new SaveData; 154 Init(); 155 FreeResource(); 156 157 aRbAssign.SetAccessibleRelationMemberOf(&aFlAssign); 158 } 159 160 161 //---------------------------------------------------------------------------- 162 163 __EXPORT ScNameDlg::~ScNameDlg() 164 { 165 DELETEZ( pSaveObj ); 166 } 167 168 169 //---------------------------------------------------------------------------- 170 171 void __EXPORT ScNameDlg::Init() 172 { 173 String aAreaStr; 174 ScRange aRange; 175 176 DBG_ASSERT( pViewData && pDoc, "ViewData oder Document nicht gefunden!" ); 177 178 aBtnOk.SetClickHdl ( LINK( this, ScNameDlg, OkBtnHdl ) ); 179 aBtnCancel.SetClickHdl ( LINK( this, ScNameDlg, CancelBtnHdl ) ); 180 aBtnAdd.SetClickHdl ( LINK( this, ScNameDlg, AddBtnHdl ) ); 181 aBtnRemove.SetClickHdl ( LINK( this, ScNameDlg, RemoveBtnHdl ) ); 182 aEdAssign.SetGetFocusHdl( LINK( this, ScNameDlg, AssignGetFocusHdl ) ); 183 aEdAssign.SetModifyHdl ( LINK( this, ScNameDlg, EdModifyHdl ) ); 184 aEdName.SetModifyHdl ( LINK( this, ScNameDlg, EdModifyHdl ) ); 185 aLBNames.SetSelectHdl ( LINK( this, ScNameDlg, NameSelectHdl ) ); 186 187 aBtnCriteria .Hide(); 188 aBtnPrintArea.Hide(); 189 aBtnColHeader.Hide(); 190 aBtnRowHeader.Hide(); 191 192 aBtnMore.AddWindow( &aFlType ); 193 aBtnMore.AddWindow( &aBtnCriteria ); 194 aBtnMore.AddWindow( &aBtnPrintArea ); 195 aBtnMore.AddWindow( &aBtnColHeader ); 196 aBtnMore.AddWindow( &aBtnRowHeader ); 197 198 UpdateNames(); 199 200 pViewData->GetSimpleArea( aRange ); 201 aRange.Format( aAreaStr, ABS_DREF3D, pDoc, 202 ScAddress::Details(pDoc->GetAddressConvention(), 0, 0) ); 203 204 theCurSel = Selection( 0, SELECTION_MAX ); 205 aEdAssign.GrabFocus(); 206 aEdAssign.SetText( aAreaStr ); 207 aEdAssign.SetSelection( theCurSel ); 208 aEdName.GrabFocus(); 209 210 aBtnAdd.Disable(); 211 aBtnRemove.Disable(); 212 //if ( aEdName.GetEntryCount() > 0 ) 213 if ( aLBNames.GetEntryCount() > 0 ) 214 aBtnAdd.SetText( aStrAdd ); 215 UpdateChecks(); 216 EdModifyHdl( 0 ); 217 218 bSaved=sal_True; 219 SAVE_DATA() 220 221 //@BugID 54702 222 //SFX_APPWINDOW->Disable(sal_False); //! allgemeine Methode im ScAnyRefDlg 223 } 224 225 //---------------------------------------------------------------------------- 226 sal_Bool ScNameDlg::IsRefInputMode() const 227 { 228 return aEdAssign.IsEnabled(); 229 } 230 231 void ScNameDlg::RefInputDone( sal_Bool bForced) 232 { 233 ScAnyRefDlg::RefInputDone(bForced); 234 EdModifyHdl(&aEdAssign); 235 } 236 //---------------------------------------------------------------------------- 237 // Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als 238 // neue Selektion im Referenz-Edit angezeigt wird. 239 240 241 void ScNameDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) 242 { 243 if ( aEdAssign.IsEnabled() ) 244 { 245 if ( rRef.aStart != rRef.aEnd ) 246 RefInputStart(&aEdAssign); 247 String aRefStr; 248 rRef.Format( aRefStr, ABS_DREF3D, pDocP, 249 ScAddress::Details(pDocP->GetAddressConvention(), 0, 0) ); 250 aEdAssign.SetRefString( aRefStr ); 251 } 252 } 253 254 255 //---------------------------------------------------------------------------- 256 sal_Bool __EXPORT ScNameDlg::Close() 257 { 258 return DoClose( ScNameDlgWrapper::GetChildWindowId() ); 259 } 260 261 262 //---------------------------------------------------------------------------- 263 264 void ScNameDlg::SetActive() 265 { 266 aEdAssign.GrabFocus(); 267 RefInputDone(); 268 } 269 270 271 //---------------------------------------------------------------------------- 272 273 void __EXPORT ScNameDlg::UpdateChecks() 274 { 275 sal_uInt16 nCurPos=0; 276 277 if(aLocalRangeName.SearchName( aEdName.GetText(), nCurPos, aSelectedRangeScope)) 278 { 279 ScRangeData* pData=(ScRangeData*)(aLocalRangeName.At( nCurPos )); 280 aBtnCriteria .Check( pData->HasType( RT_CRITERIA ) ); 281 aBtnPrintArea.Check( pData->HasType( RT_PRINTAREA ) ); 282 aBtnColHeader.Check( pData->HasType( RT_COLHEADER ) ); 283 aBtnRowHeader.Check( pData->HasType( RT_ROWHEADER ) ); 284 } 285 286 // Falls Edit-Feld leer ist: Typ-CheckBoxen deaktivieren: 287 288 if ( aEdName.GetText().Len() != 0 ) 289 { 290 if ( !aFlType.IsEnabled() ) 291 { 292 aFlType.Enable(); 293 aBtnCriteria .Enable(); 294 aBtnPrintArea.Enable(); 295 aBtnColHeader.Enable(); 296 aBtnRowHeader.Enable(); 297 aFlAssign.Enable(); 298 aEdAssign.Enable(); 299 aRbAssign.Enable(); 300 } 301 } 302 else if ( aFlType.IsEnabled() ) 303 { 304 aFlType.Disable(); 305 aBtnCriteria.Disable(); 306 aBtnPrintArea.Disable(); 307 aBtnColHeader.Disable(); 308 aBtnRowHeader.Disable(); 309 aFlAssign.Disable(); 310 aEdAssign.Disable(); 311 aRbAssign.Disable(); 312 } 313 } 314 315 316 //---------------------------------------------------------------------------- 317 318 void __EXPORT ScNameDlg::UpdateNames() 319 { 320 sal_uInt16 nRangeCount = aLocalRangeName.GetCount(); 321 322 //aEdName.SetUpdateMode( FALSE ); 323 aLBNames.SetUpdateMode( false ); 324 //----------------------------------------------------------- 325 //USHORT nNamePos = aEdName.GetTopEntry(); 326 //aEdName.Clear(); 327 sal_uInt16 nNamePos = aLBNames.GetTopEntry(); 328 aLBNames.Clear(); 329 330 aEdAssign.SetText( EMPTY_STRING ); 331 332 if ( nRangeCount > 0 ) 333 { 334 ScRangeData* pRangeData = NULL; 335 String aString; 336 SCTAB tabIndex = 0; 337 338 for ( sal_uInt16 i=0; i<nRangeCount; i++ ) 339 { 340 pRangeData = (ScRangeData*)(aLocalRangeName.At( i )); 341 if ( pRangeData ) 342 { 343 if ( !pRangeData->HasType( RT_DATABASE ) 344 && !pRangeData->HasType( RT_SHARED ) ) 345 { 346 pRangeData->GetName( aString ); 347 if ( (tabIndex = pRangeData->GetRangeScope() ) != MAXTABCOUNT) 348 { 349 String tabName; 350 pDoc->GetName(tabIndex,tabName); 351 if (aString.Len() < SHEETNAMEPOS) 352 aString.Expand(SHEETNAMEPOS); 353 else 354 aString.AppendAscii( " "); 355 aString.AppendAscii( "("); 356 aString += tabName; 357 aString.AppendAscii( ")"); 358 } 359 360 //aEdName.InsertEntry( aString ); 361 aLBNames.InsertEntry( aString ); 362 } 363 } 364 } 365 } 366 else 367 { 368 aBtnAdd.SetText( aStrAdd ); 369 aBtnAdd.Disable(); 370 aBtnRemove.Disable(); 371 } 372 //----------------------------------------------------------- 373 //aEdName.SetUpdateMode( TRUE ); 374 //aEdName.SetTopEntry(nNamePos); 375 //aEdName.Invalidate(); 376 aLBNames.SetUpdateMode( true ); 377 aLBNames.SetTopEntry(nNamePos); 378 aLBNames.Invalidate(); 379 } 380 381 382 //---------------------------------------------------------------------------- 383 384 void __EXPORT ScNameDlg::CalcCurTableAssign( String& aAssign, sal_uInt16 nCurPos ) 385 { 386 ScRangeData* pRangeData = (ScRangeData*)(aLocalRangeName.At( nCurPos )); 387 388 if ( pRangeData ) 389 { 390 rtl::OUStringBuffer sBuffer; 391 pRangeData->UpdateSymbol( sBuffer, theCursorPos ); 392 aAssign = sBuffer; 393 } 394 else 395 { 396 aAssign.Erase(); 397 } 398 } 399 400 401 //---------------------------------------------------------------------------- 402 // Handler: 403 // ======== 404 405 IMPL_LINK( ScNameDlg, OkBtnHdl, void *, EMPTYARG ) 406 { 407 if ( aBtnAdd.IsEnabled() ) 408 AddBtnHdl( 0 ); 409 410 if ( !aBtnAdd.IsEnabled() && !aBtnRemove.IsEnabled() ) 411 { 412 ScDocShell* pDocSh = pViewData->GetDocShell(); 413 ScDocFunc aFunc(*pDocSh); 414 aFunc.ModifyRangeNames( aLocalRangeName, sal_False ); 415 Close(); 416 } 417 return 0; 418 } 419 420 421 //---------------------------------------------------------------------------- 422 423 IMPL_LINK_INLINE_START( ScNameDlg, CancelBtnHdl, void *, EMPTYARG ) 424 { 425 Close(); 426 return 0; 427 } 428 IMPL_LINK_INLINE_END( ScNameDlg, CancelBtnHdl, void *, EMPTYARG ) 429 430 431 //---------------------------------------------------------------------------- 432 433 IMPL_LINK( ScNameDlg, AddBtnHdl, void *, EMPTYARG ) 434 { 435 sal_Bool bAdded = sal_False; 436 String aNewEntry = aEdName.GetText(); 437 //USHORT nNamePos = aEdName.GetTopEntry(); 438 sal_uInt16 nNamePos = aLBNames.GetTopEntry(); 439 aNewEntry.EraseLeadingChars( ' ' ); 440 aNewEntry.EraseTrailingChars( ' ' ); 441 442 if ( aNewEntry.Len() > 0 ) 443 { 444 if ( ScRangeData::IsNameValid( aNewEntry, pDoc ) ) 445 { 446 if ( pDoc ) 447 { 448 ScRangeData* pNewEntry = NULL; 449 RangeType nType = RT_NAME; 450 sal_uInt16 nFoundAt = 0; 451 String theSymbol = aEdAssign.GetText(); 452 String aStrPos; 453 String aStrArea; 454 455 pNewEntry = new ScRangeData( pDoc, 456 aNewEntry, 457 theSymbol, 458 theCursorPos, 459 nType ); 460 if (aBtnAdd.GetText() == aStrModify) 461 pNewEntry->SetRangeScope(aSelectedRangeScope); 462 else 463 aSelectedRangeScope = MAXTABCOUNT; 464 if (pNewEntry) 465 { 466 nType = nType 467 | (aBtnRowHeader .IsChecked() ? RT_ROWHEADER : RangeType(0)) 468 | (aBtnColHeader .IsChecked() ? RT_COLHEADER : RangeType(0)) 469 | (aBtnPrintArea .IsChecked() ? RT_PRINTAREA : RangeType(0)) 470 | (aBtnCriteria .IsChecked() ? RT_CRITERIA : RangeType(0)); 471 pNewEntry->AddType(nType); 472 } 473 474 // theSymbol gueltig? 475 // (= konnte theSymbol im ScRangeData-Ctor 476 // in ein Token-Array uebersetzt werden?) 477 if ( 0 == pNewEntry->GetErrCode() ) 478 { 479 // Eintrag bereits vorhanden? Dann vorher entfernen (=Aendern) 480 if ( aLocalRangeName.SearchName( aNewEntry, nFoundAt, aSelectedRangeScope ) ) 481 { // alten Index uebernehmen 482 pNewEntry->SetIndex( 483 ((ScRangeData*)(aLocalRangeName.At(nFoundAt)))->GetIndex() ); 484 aLocalRangeName.AtFree( nFoundAt ); 485 } 486 else 487 pSaveObj->Clear(); 488 489 if ( !aLocalRangeName.Insert( pNewEntry ) ) 490 delete pNewEntry; 491 492 UpdateNames(); 493 bSaved=sal_False; 494 RESTORE_DATA() 495 aEdName.SetText(EMPTY_STRING); 496 aEdName.GrabFocus(); 497 UpdateChecks(); 498 aBtnAdd.SetText( aStrAdd ); 499 aBtnAdd.Disable(); 500 aBtnRemove.Disable(); 501 502 //@BugID 54702 raus mit dem Sch. 503 //SFX_APPWINDOW->Disable(sal_False); //! allgemeine Methode im ScAnyRefDlg 504 505 bAdded = sal_True; 506 } 507 else // theSymbol ungueltig 508 { 509 delete pNewEntry; 510 ERRORBOX( errMsgInvalidSym ); 511 theCurSel = Selection( 0, SELECTION_MAX ); 512 aEdAssign.GrabFocus(); 513 } 514 } 515 } 516 else 517 { 518 ERRORBOX( ScGlobal::GetRscString(STR_INVALIDNAME) ); 519 aEdName.SetSelection( Selection( 0, SELECTION_MAX ) ); 520 aEdName.GrabFocus(); 521 } 522 } 523 524 //aEdName.SetTopEntry(nNamePos); 525 aLBNames.SetTopEntry(nNamePos); 526 return bAdded; 527 } 528 529 530 //---------------------------------------------------------------------------- 531 532 IMPL_LINK( ScNameDlg, RemoveBtnHdl, void *, EMPTYARG ) 533 { 534 sal_uInt16 nRemoveAt = 0; 535 const String aStrEntry = aEdName.GetText(); 536 537 if ( aLocalRangeName.SearchName( aStrEntry, nRemoveAt, aSelectedRangeScope ) ) 538 { 539 String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY ); 540 String aMsg = aStrDelMsg.GetToken( 0, '#' ); 541 542 aMsg += aStrEntry; 543 aMsg += aStrDelMsg.GetToken( 1, '#' ); 544 545 if ( RET_YES == 546 QueryBox( this, WinBits( WB_YES_NO | WB_DEF_YES ), aMsg ).Execute() ) 547 { 548 aLocalRangeName.AtFree( nRemoveAt ); 549 UpdateNames(); 550 UpdateChecks(); 551 bSaved=sal_False; 552 RESTORE_DATA() 553 theCurSel = Selection( 0, SELECTION_MAX ); 554 aEdName.SetText(EMPTY_STRING); 555 aBtnAdd.SetText( aStrAdd ); 556 aBtnAdd.Disable(); 557 aBtnRemove.Disable(); 558 } 559 } 560 return 0; 561 } 562 563 564 //---------------------------------------------------------------------------- 565 566 IMPL_LINK( ScNameDlg, NameSelectHdl, void *, EMPTYARG ) 567 { 568 sal_uInt16 nAtPos; 569 String rangeName = aLBNames.GetSelectEntry(); 570 if ( ')' == rangeName.GetChar(rangeName.Len()-1) ) 571 { 572 xub_StrLen sheetNamePos = rangeName.Search('('); 573 String sheetName(rangeName, sheetNamePos+1, rangeName.Len()-2-sheetNamePos); 574 pDoc->GetTable(sheetName,aSelectedRangeScope); 575 rangeName.Erase(sheetNamePos); 576 rangeName.EraseTrailingChars(); 577 578 } 579 else 580 aSelectedRangeScope = MAXTABCOUNT; 581 582 //if ( aLocalRangeName.SearchName( aEdName.GetText(), nAtPos ) ) 583 if ( aLocalRangeName.SearchName( rangeName, nAtPos, aSelectedRangeScope ) ) 584 { 585 String aSymbol; 586 ScRangeData* pData = (ScRangeData*)(aLocalRangeName.At( nAtPos )); 587 588 if ( pData ) 589 { 590 pData->GetSymbol( aSymbol ); 591 CalcCurTableAssign( aSymbol, nAtPos ); 592 aEdAssign.SetText( aSymbol ); 593 aBtnAdd.SetText( aStrModify ); 594 aEdName.SetText(rangeName); 595 theCurSel = Selection( 0, SELECTION_MAX ); 596 aBtnAdd.SetText( aStrModify ); 597 aBtnAdd.Enable(); 598 aBtnRemove.Enable(); 599 } 600 } 601 UpdateChecks(); 602 return 0; 603 } 604 605 606 //---------------------------------------------------------------------------- 607 608 IMPL_LINK( ScNameDlg, EdModifyHdl, Edit *, pEd ) 609 { 610 String theName = aEdName.GetText(); 611 String theSymbol = aEdAssign.GetText(); 612 bool bNameFound = (LISTBOX_ENTRY_NOTFOUND 613 != aLBNames.GetEntryPos( theName )); 614 615 if ( pEd == &aEdName ) 616 { 617 if ( theName.Len() == 0 ) 618 { 619 if ( aBtnAdd.GetText() != aStrAdd ) 620 aBtnAdd.SetText( aStrAdd ); 621 aBtnAdd.Disable(); 622 aBtnRemove.Disable(); 623 aFlAssign.Disable(); 624 aEdAssign.Disable(); 625 aRbAssign.Disable(); 626 //@BugID 54702 raus mit dem Sch. 627 //SFX_APPWINDOW->Disable(sal_False); //! allgemeine Methode im ScAnyRefDlg 628 } 629 else 630 { 631 /* 632 if ( bNameFound ) 633 { 634 if ( aBtnAdd.GetText() != aStrModify ) 635 aBtnAdd.SetText( aStrModify ); 636 637 aBtnRemove.Enable(); 638 639 if(!bSaved) 640 { 641 bSaved=TRUE; 642 SAVE_DATA() 643 } 644 NameSelectHdl( 0 ); 645 } 646 else 647 { 648 if ( aBtnAdd.GetText() != aStrAdd ) 649 aBtnAdd.SetText( aStrAdd ); 650 aBtnRemove.Disable(); 651 652 bSaved=FALSE; 653 RESTORE_DATA() 654 } 655 */ 656 657 if ( aBtnAdd.GetText() != aStrAdd ) 658 aBtnAdd.SetText( aStrAdd ); 659 theSymbol = aEdAssign.GetText(); 660 661 if ( theSymbol.Len() > 0 ) 662 aBtnAdd.Enable(); 663 else 664 aBtnAdd.Disable(); 665 666 aFlAssign.Enable(); 667 aEdAssign.Enable(); 668 aRbAssign.Enable(); 669 aBtnRemove.Disable(); 670 //@BugID 54702 raus mit dem Sch. 671 //SFX_APPWINDOW->Enable(); 672 } 673 UpdateChecks(); 674 theCurSel = Selection( 0, SELECTION_MAX ); 675 } 676 else if ( pEd == &aEdAssign ) 677 { 678 if ( (theName.Len()>0) && (theSymbol.Len()>0) ) 679 { 680 aBtnAdd.Enable(); 681 if ( bNameFound ) 682 aBtnRemove.Enable(); 683 } 684 else 685 { 686 aBtnAdd.Disable(); 687 aBtnRemove.Disable(); 688 } 689 } 690 return 0; 691 } 692 693 //------------------------------------------------------------------------ 694 695 IMPL_LINK_INLINE_START( ScNameDlg, AssignGetFocusHdl, void *, EMPTYARG ) 696 { 697 EdModifyHdl( &aEdAssign ); 698 return 0; 699 } 700 IMPL_LINK_INLINE_END( ScNameDlg, AssignGetFocusHdl, void *, EMPTYARG ) 701 702 703