1b3f79822SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file 5b3f79822SAndrew Rist * distributed with this work for additional information 6b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the 8b3f79822SAndrew Rist * "License"); you may not use this file except in compliance 9b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing, 14b3f79822SAndrew Rist * software distributed under the License is distributed on an 15b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16b3f79822SAndrew Rist * KIND, either express or implied. See the License for the 17b3f79822SAndrew Rist * specific language governing permissions and limitations 18b3f79822SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20b3f79822SAndrew Rist *************************************************************/ 21b3f79822SAndrew Rist 22b3f79822SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sc.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir // System - Includes --------------------------------------------------------- 28cdf0e10cSrcweir 29cdf0e10cSrcweir 30cdf0e10cSrcweir 31cdf0e10cSrcweir // INCLUDE ------------------------------------------------------------------- 32cdf0e10cSrcweir 33cdf0e10cSrcweir #include <vcl/msgbox.hxx> 34cdf0e10cSrcweir 35cdf0e10cSrcweir #include "reffact.hxx" 36cdf0e10cSrcweir #include "document.hxx" 37cdf0e10cSrcweir #include "scresid.hxx" 38cdf0e10cSrcweir #include "globstr.hrc" 39cdf0e10cSrcweir #include "dbnamdlg.hrc" 40cdf0e10cSrcweir #include "rangenam.hxx" // IsNameValid 41cdf0e10cSrcweir 42cdf0e10cSrcweir #define _DBNAMDLG_CXX 43cdf0e10cSrcweir #include "dbnamdlg.hxx" 44cdf0e10cSrcweir #undef _DBNAMDLG_CXX 45cdf0e10cSrcweir 46cdf0e10cSrcweir 47cdf0e10cSrcweir //============================================================================ 48cdf0e10cSrcweir 49cdf0e10cSrcweir #define ABS_SREF SCA_VALID \ 50cdf0e10cSrcweir | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE 51cdf0e10cSrcweir #define ABS_DREF ABS_SREF \ 52cdf0e10cSrcweir | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE 53cdf0e10cSrcweir #define ABS_SREF3D ABS_SREF | SCA_TAB_3D 54cdf0e10cSrcweir #define ABS_DREF3D ABS_DREF | SCA_TAB_3D 55cdf0e10cSrcweir 56cdf0e10cSrcweir //---------------------------------------------------------------------------- 57cdf0e10cSrcweir 58cdf0e10cSrcweir class DBSaveData; 59cdf0e10cSrcweir 60cdf0e10cSrcweir static DBSaveData* pSaveObj = NULL; 61cdf0e10cSrcweir 62cdf0e10cSrcweir #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute() 63cdf0e10cSrcweir #define QUERYBOX(m) QueryBox(this,WinBits(WB_YES_NO|WB_DEF_YES),m).Execute() 64cdf0e10cSrcweir 65cdf0e10cSrcweir //============================================================================ 66cdf0e10cSrcweir // class DBSaveData 67cdf0e10cSrcweir 68cdf0e10cSrcweir class DBSaveData 69cdf0e10cSrcweir { 70cdf0e10cSrcweir public: 71cdf0e10cSrcweir DBSaveData( Edit& rEd, CheckBox& rHdr, CheckBox& rSize, CheckBox& rFmt, 72cdf0e10cSrcweir CheckBox& rStrip, ScRange& rArea ) 73cdf0e10cSrcweir : rEdAssign(rEd), 74cdf0e10cSrcweir rBtnHeader(rHdr), rBtnSize(rSize), rBtnFormat(rFmt), rBtnStrip(rStrip), 75cdf0e10cSrcweir rCurArea(rArea), 76cdf0e10cSrcweir bHeader(sal_False), bSize(sal_False), bFormat(sal_False), bDirty(sal_False) {} 77cdf0e10cSrcweir void Save(); 78cdf0e10cSrcweir void Restore(); 79cdf0e10cSrcweir 80cdf0e10cSrcweir private: 81cdf0e10cSrcweir Edit& rEdAssign; 82cdf0e10cSrcweir CheckBox& rBtnHeader; 83cdf0e10cSrcweir CheckBox& rBtnSize; 84cdf0e10cSrcweir CheckBox& rBtnFormat; 85cdf0e10cSrcweir CheckBox& rBtnStrip; 86cdf0e10cSrcweir ScRange& rCurArea; 87cdf0e10cSrcweir String aStr; 88cdf0e10cSrcweir ScRange aArea; 89cdf0e10cSrcweir sal_Bool bHeader:1; 90cdf0e10cSrcweir sal_Bool bSize:1; 91cdf0e10cSrcweir sal_Bool bFormat:1; 92cdf0e10cSrcweir sal_Bool bStrip:1; 93cdf0e10cSrcweir sal_Bool bDirty:1; 94cdf0e10cSrcweir }; 95cdf0e10cSrcweir 96cdf0e10cSrcweir 97cdf0e10cSrcweir 98cdf0e10cSrcweir //---------------------------------------------------------------------------- 99cdf0e10cSrcweir 100cdf0e10cSrcweir void DBSaveData::Save() 101cdf0e10cSrcweir { 102cdf0e10cSrcweir aArea = rCurArea; 103cdf0e10cSrcweir aStr = rEdAssign.GetText(); 104cdf0e10cSrcweir bHeader = rBtnHeader.IsChecked(); 105cdf0e10cSrcweir bSize = rBtnSize.IsChecked(); 106cdf0e10cSrcweir bFormat = rBtnFormat.IsChecked(); 107cdf0e10cSrcweir bStrip = rBtnStrip.IsChecked(); 108cdf0e10cSrcweir bDirty = sal_True; 109cdf0e10cSrcweir } 110cdf0e10cSrcweir 111cdf0e10cSrcweir 112cdf0e10cSrcweir //---------------------------------------------------------------------------- 113cdf0e10cSrcweir 114cdf0e10cSrcweir void DBSaveData::Restore() 115cdf0e10cSrcweir { 116cdf0e10cSrcweir if ( bDirty ) 117cdf0e10cSrcweir { 118cdf0e10cSrcweir rCurArea = aArea; 119cdf0e10cSrcweir rEdAssign.SetText( aStr ); 120cdf0e10cSrcweir rBtnHeader.Check ( bHeader ); 121cdf0e10cSrcweir rBtnSize.Check ( bSize ); 122cdf0e10cSrcweir rBtnFormat.Check ( bFormat ); 123cdf0e10cSrcweir rBtnStrip.Check ( bStrip ); 124cdf0e10cSrcweir bDirty = sal_False; 125cdf0e10cSrcweir } 126cdf0e10cSrcweir } 127cdf0e10cSrcweir 128cdf0e10cSrcweir 129cdf0e10cSrcweir //============================================================================ 130cdf0e10cSrcweir // class ScDbNameDlg 131cdf0e10cSrcweir 132cdf0e10cSrcweir //---------------------------------------------------------------------------- 133cdf0e10cSrcweir 134cdf0e10cSrcweir ScDbNameDlg::ScDbNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, 135cdf0e10cSrcweir ScViewData* ptrViewData ) 136cdf0e10cSrcweir 137cdf0e10cSrcweir : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_DBNAMES ), 138cdf0e10cSrcweir // 139cdf0e10cSrcweir aFlName ( this, ScResId( FL_NAME ) ), 140cdf0e10cSrcweir aEdName ( this, ScResId( ED_NAME ) ), 141cdf0e10cSrcweir 142cdf0e10cSrcweir aFlAssign ( this, ScResId( FL_ASSIGN ) ), 143cdf0e10cSrcweir aEdAssign ( this, this, ScResId( ED_DBAREA ) ), 144cdf0e10cSrcweir aRbAssign ( this, ScResId( RB_DBAREA ), &aEdAssign, this ), 145cdf0e10cSrcweir 146cdf0e10cSrcweir aFlOptions ( this, ScResId( FL_OPTIONS ) ), 147cdf0e10cSrcweir aBtnHeader ( this, ScResId( BTN_HEADER ) ), 148cdf0e10cSrcweir aBtnDoSize ( this, ScResId( BTN_SIZE ) ), 149cdf0e10cSrcweir aBtnKeepFmt ( this, ScResId( BTN_FORMAT ) ), 150cdf0e10cSrcweir aBtnStripData ( this, ScResId( BTN_STRIPDATA ) ), 151cdf0e10cSrcweir aFTSource ( this, ScResId( FT_SOURCE ) ), 152cdf0e10cSrcweir aFTOperations ( this, ScResId( FT_OPERATIONS ) ), 153cdf0e10cSrcweir 154cdf0e10cSrcweir aBtnOk ( this, ScResId( BTN_OK ) ), 155cdf0e10cSrcweir aBtnCancel ( this, ScResId( BTN_CANCEL ) ), 156cdf0e10cSrcweir aBtnHelp ( this, ScResId( BTN_HELP ) ), 157cdf0e10cSrcweir aBtnAdd ( this, ScResId( BTN_ADD ) ), 158cdf0e10cSrcweir aBtnRemove ( this, ScResId( BTN_REMOVE ) ), 159cdf0e10cSrcweir aBtnMore ( this, ScResId( BTN_MORE ) ), 160cdf0e10cSrcweir 161cdf0e10cSrcweir aStrAdd ( ScResId( STR_ADD ) ), 162cdf0e10cSrcweir aStrModify ( ScResId( STR_MODIFY ) ), 163cdf0e10cSrcweir aStrNoName ( ScGlobal::GetRscString(STR_DB_NONAME) ), 164cdf0e10cSrcweir aStrInvalid ( ScResId( STR_DB_INVALID ) ), 165cdf0e10cSrcweir // 166cdf0e10cSrcweir pViewData ( ptrViewData ), 167cdf0e10cSrcweir pDoc ( ptrViewData->GetDocument() ), 168cdf0e10cSrcweir bRefInputMode ( sal_False ), 169cdf0e10cSrcweir aAddrDetails ( pDoc->GetAddressConvention(), 0, 0 ), 170cdf0e10cSrcweir aLocalDbCol ( *(pDoc->GetDBCollection()) ) 171cdf0e10cSrcweir { 172cdf0e10cSrcweir // WB_NOLABEL can't be set in resource... 173cdf0e10cSrcweir aFTSource.SetStyle( aFTSource.GetStyle() | WB_NOLABEL ); 174cdf0e10cSrcweir aFTOperations.SetStyle( aFTOperations.GetStyle() | WB_NOLABEL ); 175cdf0e10cSrcweir 176cdf0e10cSrcweir // damit die Strings in der Resource bei den FixedTexten bleiben koennen: 177cdf0e10cSrcweir aStrSource = aFTSource.GetText(); 178cdf0e10cSrcweir aStrOperations = aFTOperations.GetText(); 179cdf0e10cSrcweir 180cdf0e10cSrcweir pSaveObj = new DBSaveData( aEdAssign, aBtnHeader, 181cdf0e10cSrcweir aBtnDoSize, aBtnKeepFmt, aBtnStripData, theCurArea ); 182cdf0e10cSrcweir Init(); 183cdf0e10cSrcweir FreeResource(); 184cdf0e10cSrcweir aRbAssign.SetAccessibleRelationMemberOf(&aFlAssign); 185cdf0e10cSrcweir } 186cdf0e10cSrcweir 187cdf0e10cSrcweir 188cdf0e10cSrcweir //---------------------------------------------------------------------------- 189cdf0e10cSrcweir 190cdf0e10cSrcweir __EXPORT ScDbNameDlg::~ScDbNameDlg() 191cdf0e10cSrcweir { 192cdf0e10cSrcweir DELETEZ( pSaveObj ); 193cdf0e10cSrcweir 194cdf0e10cSrcweir ScRange* pEntry = (ScRange*)aRemoveList.First(); 195cdf0e10cSrcweir while ( pEntry ) 196cdf0e10cSrcweir { 197cdf0e10cSrcweir aRemoveList.Remove( pEntry ); 198cdf0e10cSrcweir delete pEntry; 199cdf0e10cSrcweir pEntry = (ScRange*)aRemoveList.Next(); 200cdf0e10cSrcweir } 201cdf0e10cSrcweir } 202cdf0e10cSrcweir 203cdf0e10cSrcweir 204cdf0e10cSrcweir //---------------------------------------------------------------------------- 205cdf0e10cSrcweir 206cdf0e10cSrcweir void ScDbNameDlg::Init() 207cdf0e10cSrcweir { 208cdf0e10cSrcweir aBtnHeader.Check( sal_True ); // Default: mit Spaltenkoepfen 209cdf0e10cSrcweir 210cdf0e10cSrcweir aBtnMore.AddWindow( &aFlOptions ); 211cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnHeader ); 212cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnDoSize ); 213cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnKeepFmt ); 214cdf0e10cSrcweir aBtnMore.AddWindow( &aBtnStripData ); 215cdf0e10cSrcweir aBtnMore.AddWindow( &aFTSource ); 216cdf0e10cSrcweir aBtnMore.AddWindow( &aFTOperations ); 217cdf0e10cSrcweir 218cdf0e10cSrcweir String theAreaStr; 219cdf0e10cSrcweir SCCOL nStartCol = 0; 220cdf0e10cSrcweir SCROW nStartRow = 0; 221cdf0e10cSrcweir SCTAB nStartTab = 0; 222cdf0e10cSrcweir SCCOL nEndCol = 0; 223cdf0e10cSrcweir SCROW nEndRow = 0; 224cdf0e10cSrcweir SCTAB nEndTab = 0; 225cdf0e10cSrcweir 226cdf0e10cSrcweir aBtnOk.SetClickHdl ( LINK( this, ScDbNameDlg, OkBtnHdl ) ); 227cdf0e10cSrcweir aBtnCancel.SetClickHdl ( LINK( this, ScDbNameDlg, CancelBtnHdl ) ); 228cdf0e10cSrcweir aBtnAdd.SetClickHdl ( LINK( this, ScDbNameDlg, AddBtnHdl ) ); 229cdf0e10cSrcweir aBtnRemove.SetClickHdl ( LINK( this, ScDbNameDlg, RemoveBtnHdl ) ); 230cdf0e10cSrcweir aEdName.SetModifyHdl ( LINK( this, ScDbNameDlg, NameModifyHdl ) ); 231cdf0e10cSrcweir aEdAssign.SetModifyHdl ( LINK( this, ScDbNameDlg, AssModifyHdl ) ); 232cdf0e10cSrcweir UpdateNames(); 233cdf0e10cSrcweir 234cdf0e10cSrcweir if ( pViewData && pDoc ) 235cdf0e10cSrcweir { 236cdf0e10cSrcweir ScDBCollection* pDBColl = pDoc->GetDBCollection(); 237cdf0e10cSrcweir ScDBData* pDBData = NULL; 238cdf0e10cSrcweir 239cdf0e10cSrcweir pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab, 240cdf0e10cSrcweir nEndCol, nEndRow, nEndTab ); 241cdf0e10cSrcweir 242cdf0e10cSrcweir theCurArea = ScRange( ScAddress( nStartCol, nStartRow, nStartTab ), 243cdf0e10cSrcweir ScAddress( nEndCol, nEndRow, nEndTab ) ); 244cdf0e10cSrcweir 245cdf0e10cSrcweir theCurArea.Format( theAreaStr, ABS_DREF3D, pDoc, aAddrDetails ); 246cdf0e10cSrcweir 247cdf0e10cSrcweir if ( pDBColl ) 248cdf0e10cSrcweir { 249cdf0e10cSrcweir // Feststellen, ob definierter DB-Bereich markiert wurde: 250cdf0e10cSrcweir pDBData = pDBColl->GetDBAtCursor( nStartCol, nStartRow, nStartTab, sal_True ); 251cdf0e10cSrcweir if ( pDBData ) 252cdf0e10cSrcweir { 253cdf0e10cSrcweir String theDbName; 254cdf0e10cSrcweir ScAddress& rStart = theCurArea.aStart; 255cdf0e10cSrcweir ScAddress& rEnd = theCurArea.aEnd; 256cdf0e10cSrcweir SCCOL nCol1; 257cdf0e10cSrcweir SCCOL nCol2; 258cdf0e10cSrcweir SCROW nRow1; 259cdf0e10cSrcweir SCROW nRow2; 260cdf0e10cSrcweir SCTAB nTab; 261cdf0e10cSrcweir 262cdf0e10cSrcweir pDBData->GetArea( nTab, nCol1, nRow1, nCol2, nRow2 ); 263cdf0e10cSrcweir 264cdf0e10cSrcweir if ( (rStart.Tab() == nTab) 265cdf0e10cSrcweir && (rStart.Col() == nCol1) && (rStart.Row() == nRow1) 266cdf0e10cSrcweir && (rEnd.Col() == nCol2) && (rEnd.Row() == nRow2 ) ) 267cdf0e10cSrcweir { 268cdf0e10cSrcweir pDBData->GetName( theDbName ); 269*57b4fa3cSWang Lei //if ( theDbName != aStrNoName ) 270*57b4fa3cSWang Lei if ( !pDBData->IsBuildin() ) 271cdf0e10cSrcweir aEdName.SetText( theDbName ); 272cdf0e10cSrcweir else 273cdf0e10cSrcweir aEdName.SetText( EMPTY_STRING ); 274cdf0e10cSrcweir aBtnHeader.Check( pDBData->HasHeader() ); 275cdf0e10cSrcweir aBtnDoSize.Check( pDBData->IsDoSize() ); 276cdf0e10cSrcweir aBtnKeepFmt.Check( pDBData->IsKeepFmt() ); 277cdf0e10cSrcweir aBtnStripData.Check( pDBData->IsStripData() ); 278cdf0e10cSrcweir SetInfoStrings( pDBData ); 279cdf0e10cSrcweir } 280cdf0e10cSrcweir } 281cdf0e10cSrcweir } 282cdf0e10cSrcweir } 283cdf0e10cSrcweir 284cdf0e10cSrcweir aEdAssign.SetText( theAreaStr ); 285cdf0e10cSrcweir aEdName.GrabFocus(); 286cdf0e10cSrcweir bSaved=sal_True; 287cdf0e10cSrcweir pSaveObj->Save(); 288cdf0e10cSrcweir NameModifyHdl( 0 ); 289cdf0e10cSrcweir } 290cdf0e10cSrcweir 291cdf0e10cSrcweir 292cdf0e10cSrcweir void ScDbNameDlg::SetInfoStrings( const ScDBData* pDBData ) 293cdf0e10cSrcweir { 294cdf0e10cSrcweir String aSource = aStrSource; 295cdf0e10cSrcweir if (pDBData) 296cdf0e10cSrcweir { 297cdf0e10cSrcweir aSource += ' '; 298cdf0e10cSrcweir aSource += pDBData->GetSourceString(); 299cdf0e10cSrcweir } 300cdf0e10cSrcweir aFTSource.SetText( aSource ); 301cdf0e10cSrcweir 302cdf0e10cSrcweir String aOper = aStrOperations; 303cdf0e10cSrcweir if (pDBData) 304cdf0e10cSrcweir { 305cdf0e10cSrcweir aOper += ' '; 306cdf0e10cSrcweir aOper += pDBData->GetOperations(); 307cdf0e10cSrcweir } 308cdf0e10cSrcweir aFTOperations.SetText( aOper ); 309cdf0e10cSrcweir } 310cdf0e10cSrcweir 311cdf0e10cSrcweir //---------------------------------------------------------------------------- 312cdf0e10cSrcweir // Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als 313cdf0e10cSrcweir // neue Selektion im Referenz-Fenster angezeigt wird. 314cdf0e10cSrcweir 315cdf0e10cSrcweir void ScDbNameDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) 316cdf0e10cSrcweir { 317cdf0e10cSrcweir if ( aEdAssign.IsEnabled() ) 318cdf0e10cSrcweir { 319cdf0e10cSrcweir if ( rRef.aStart != rRef.aEnd ) 320cdf0e10cSrcweir RefInputStart( &aEdAssign ); 321cdf0e10cSrcweir 322cdf0e10cSrcweir theCurArea = rRef; 323cdf0e10cSrcweir 324cdf0e10cSrcweir String aRefStr; 325cdf0e10cSrcweir theCurArea.Format( aRefStr, ABS_DREF3D, pDocP, aAddrDetails ); 326cdf0e10cSrcweir aEdAssign.SetRefString( aRefStr ); 327cdf0e10cSrcweir aBtnHeader.Enable(); 328cdf0e10cSrcweir aBtnDoSize.Enable(); 329cdf0e10cSrcweir aBtnKeepFmt.Enable(); 330cdf0e10cSrcweir aBtnStripData.Enable(); 331cdf0e10cSrcweir aFTSource.Enable(); 332cdf0e10cSrcweir aFTOperations.Enable(); 333cdf0e10cSrcweir aBtnAdd.Enable(); 334cdf0e10cSrcweir bSaved=sal_True; 335cdf0e10cSrcweir pSaveObj->Save(); 336cdf0e10cSrcweir } 337cdf0e10cSrcweir } 338cdf0e10cSrcweir 339cdf0e10cSrcweir 340cdf0e10cSrcweir //---------------------------------------------------------------------------- 341cdf0e10cSrcweir 342cdf0e10cSrcweir sal_Bool __EXPORT ScDbNameDlg::Close() 343cdf0e10cSrcweir { 344cdf0e10cSrcweir return DoClose( ScDbNameDlgWrapper::GetChildWindowId() ); 345cdf0e10cSrcweir } 346cdf0e10cSrcweir 347cdf0e10cSrcweir //------------------------------------------------------------------------ 348cdf0e10cSrcweir 349cdf0e10cSrcweir void ScDbNameDlg::SetActive() 350cdf0e10cSrcweir { 351cdf0e10cSrcweir aEdAssign.GrabFocus(); 352cdf0e10cSrcweir 353cdf0e10cSrcweir // kein NameModifyHdl, weil sonst Bereiche nicht geaendert werden koennen 354cdf0e10cSrcweir // (nach dem Aufziehen der Referenz wuerde der alte Inhalt wieder angezeigt) 355cdf0e10cSrcweir // (der ausgewaehlte DB-Name hat sich auch nicht veraendert) 356cdf0e10cSrcweir 357cdf0e10cSrcweir RefInputDone(); 358cdf0e10cSrcweir } 359cdf0e10cSrcweir 360cdf0e10cSrcweir //------------------------------------------------------------------------ 361cdf0e10cSrcweir 362cdf0e10cSrcweir void ScDbNameDlg::UpdateNames() 363cdf0e10cSrcweir { 364cdf0e10cSrcweir sal_uInt16 nNameCount = aLocalDbCol.GetCount(); 365cdf0e10cSrcweir 366cdf0e10cSrcweir aEdName.SetUpdateMode( sal_False ); 367cdf0e10cSrcweir //----------------------------------------------------------- 368cdf0e10cSrcweir aEdName.Clear(); 369cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 370cdf0e10cSrcweir 371cdf0e10cSrcweir if ( nNameCount > 0 ) 372cdf0e10cSrcweir { 373cdf0e10cSrcweir ScDBData* pDbData = NULL; 374cdf0e10cSrcweir String aString; 375cdf0e10cSrcweir 376cdf0e10cSrcweir for ( sal_uInt16 i=0; i<nNameCount; i++ ) 377cdf0e10cSrcweir { 378cdf0e10cSrcweir pDbData = (ScDBData*)(aLocalDbCol.At( i )); 379cdf0e10cSrcweir if ( pDbData ) 380cdf0e10cSrcweir { 381cdf0e10cSrcweir pDbData->GetName( aString ); 382*57b4fa3cSWang Lei //if ( aString != aStrNoName ) 383*57b4fa3cSWang Lei if ( !pDbData->IsBuildin() ) 384cdf0e10cSrcweir aEdName.InsertEntry( aString ); 385cdf0e10cSrcweir } 386cdf0e10cSrcweir } 387cdf0e10cSrcweir } 388cdf0e10cSrcweir else 389cdf0e10cSrcweir { 390cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd ); 391cdf0e10cSrcweir aBtnAdd.Disable(); 392cdf0e10cSrcweir aBtnRemove.Disable(); 393cdf0e10cSrcweir } 394cdf0e10cSrcweir //----------------------------------------------------------- 395cdf0e10cSrcweir aEdName.SetUpdateMode( sal_True ); 396cdf0e10cSrcweir aEdName.Invalidate(); 397cdf0e10cSrcweir } 398cdf0e10cSrcweir 399cdf0e10cSrcweir //------------------------------------------------------------------------ 400cdf0e10cSrcweir 401cdf0e10cSrcweir void ScDbNameDlg::UpdateDBData( const String& rStrName ) 402cdf0e10cSrcweir { 403cdf0e10cSrcweir String theArea; 404cdf0e10cSrcweir sal_uInt16 nAt; 405cdf0e10cSrcweir ScDBData* pData; 406cdf0e10cSrcweir 407cdf0e10cSrcweir aLocalDbCol.SearchName( rStrName, nAt ); 408cdf0e10cSrcweir pData = (ScDBData*)(aLocalDbCol.At( nAt )); 409cdf0e10cSrcweir 410cdf0e10cSrcweir if ( pData ) 411cdf0e10cSrcweir { 412cdf0e10cSrcweir SCCOL nColStart = 0; 413cdf0e10cSrcweir SCROW nRowStart = 0; 414cdf0e10cSrcweir SCCOL nColEnd = 0; 415cdf0e10cSrcweir SCROW nRowEnd = 0; 416cdf0e10cSrcweir SCTAB nTab = 0; 417cdf0e10cSrcweir 418cdf0e10cSrcweir pData->GetArea( nTab, nColStart, nRowStart, nColEnd, nRowEnd ); 419cdf0e10cSrcweir theCurArea = ScRange( ScAddress( nColStart, nRowStart, nTab ), 420cdf0e10cSrcweir ScAddress( nColEnd, nRowEnd, nTab ) ); 421cdf0e10cSrcweir theCurArea.Format( theArea, ABS_DREF3D, pDoc, aAddrDetails ); 422cdf0e10cSrcweir aEdAssign.SetText( theArea ); 423cdf0e10cSrcweir aBtnAdd.SetText( aStrModify ); 424cdf0e10cSrcweir aBtnHeader.Check( pData->HasHeader() ); 425cdf0e10cSrcweir aBtnDoSize.Check( pData->IsDoSize() ); 426cdf0e10cSrcweir aBtnKeepFmt.Check( pData->IsKeepFmt() ); 427cdf0e10cSrcweir aBtnStripData.Check( pData->IsStripData() ); 428cdf0e10cSrcweir SetInfoStrings( pData ); 429cdf0e10cSrcweir } 430cdf0e10cSrcweir 431cdf0e10cSrcweir aBtnAdd.SetText( aStrModify ); 432cdf0e10cSrcweir aBtnAdd.Enable(); 433cdf0e10cSrcweir aBtnRemove.Enable(); 434cdf0e10cSrcweir aBtnHeader.Enable(); 435cdf0e10cSrcweir aBtnDoSize.Enable(); 436cdf0e10cSrcweir aBtnKeepFmt.Enable(); 437cdf0e10cSrcweir aBtnStripData.Enable(); 438cdf0e10cSrcweir aFTSource.Enable(); 439cdf0e10cSrcweir aFTOperations.Enable(); 440cdf0e10cSrcweir } 441cdf0e10cSrcweir 442cdf0e10cSrcweir //------------------------------------------------------------------------ 443cdf0e10cSrcweir 444cdf0e10cSrcweir 445cdf0e10cSrcweir sal_Bool ScDbNameDlg::IsRefInputMode() const 446cdf0e10cSrcweir { 447cdf0e10cSrcweir return bRefInputMode; 448cdf0e10cSrcweir } 449cdf0e10cSrcweir 450cdf0e10cSrcweir //------------------------------------------------------------------------ 451cdf0e10cSrcweir // Handler: 452cdf0e10cSrcweir // ======== 453cdf0e10cSrcweir 454cdf0e10cSrcweir IMPL_LINK( ScDbNameDlg, OkBtnHdl, void *, EMPTYARG ) 455cdf0e10cSrcweir { 456cdf0e10cSrcweir AddBtnHdl( 0 ); 457cdf0e10cSrcweir 458cdf0e10cSrcweir // Der View die Aenderungen und die Remove-Liste uebergeben: 459cdf0e10cSrcweir // beide werden nur als Referenz uebergeben, so dass an dieser 460cdf0e10cSrcweir // Stelle keine Speicherleichen entstehen koennen: 461cdf0e10cSrcweir if ( pViewData ) 462cdf0e10cSrcweir pViewData->GetView()-> 463cdf0e10cSrcweir NotifyCloseDbNameDlg( aLocalDbCol, aRemoveList ); 464cdf0e10cSrcweir 465cdf0e10cSrcweir Close(); 466cdf0e10cSrcweir return 0; 467cdf0e10cSrcweir } 468cdf0e10cSrcweir 469cdf0e10cSrcweir //------------------------------------------------------------------------ 470cdf0e10cSrcweir 471cdf0e10cSrcweir IMPL_LINK_INLINE_START( ScDbNameDlg, CancelBtnHdl, void *, EMPTYARG ) 472cdf0e10cSrcweir { 473cdf0e10cSrcweir Close(); 474cdf0e10cSrcweir return 0; 475cdf0e10cSrcweir } 476cdf0e10cSrcweir IMPL_LINK_INLINE_END( ScDbNameDlg, CancelBtnHdl, void *, EMPTYARG ) 477cdf0e10cSrcweir 478cdf0e10cSrcweir //------------------------------------------------------------------------ 479cdf0e10cSrcweir 480cdf0e10cSrcweir IMPL_LINK( ScDbNameDlg, AddBtnHdl, void *, EMPTYARG ) 481cdf0e10cSrcweir { 482cdf0e10cSrcweir String aNewName = aEdName.GetText(); 483cdf0e10cSrcweir String aNewArea = aEdAssign.GetText(); 484cdf0e10cSrcweir 485cdf0e10cSrcweir aNewName.EraseLeadingChars( ' ' ); 486cdf0e10cSrcweir aNewName.EraseTrailingChars( ' ' ); 487cdf0e10cSrcweir 488cdf0e10cSrcweir if ( aNewName.Len() > 0 && aNewArea.Len() > 0 ) 489cdf0e10cSrcweir { 490cdf0e10cSrcweir if ( ScRangeData::IsNameValid( aNewName, pDoc ) ) 491cdf0e10cSrcweir { 492cdf0e10cSrcweir // weil jetzt editiert werden kann, muss erst geparst werden 493cdf0e10cSrcweir ScRange aTmpRange; 494cdf0e10cSrcweir String aText = aEdAssign.GetText(); 495cdf0e10cSrcweir if ( aTmpRange.ParseAny( aText, pDoc, aAddrDetails ) & SCA_VALID ) 496cdf0e10cSrcweir { 497cdf0e10cSrcweir theCurArea = aTmpRange; 498cdf0e10cSrcweir ScAddress aStart = theCurArea.aStart; 499cdf0e10cSrcweir ScAddress aEnd = theCurArea.aEnd; 500cdf0e10cSrcweir 501cdf0e10cSrcweir ScDBData* pOldEntry = NULL; 502cdf0e10cSrcweir sal_uInt16 nFoundAt = 0; 503cdf0e10cSrcweir if ( aLocalDbCol.SearchName( aNewName, nFoundAt ) ) 504cdf0e10cSrcweir pOldEntry = aLocalDbCol[nFoundAt]; 505cdf0e10cSrcweir if (pOldEntry) 506cdf0e10cSrcweir { 507cdf0e10cSrcweir // Bereich veraendern 508cdf0e10cSrcweir 509cdf0e10cSrcweir pOldEntry->MoveTo( aStart.Tab(), aStart.Col(), aStart.Row(), 510cdf0e10cSrcweir aEnd.Col(), aEnd.Row() ); 511cdf0e10cSrcweir pOldEntry->SetByRow( sal_True ); 512cdf0e10cSrcweir pOldEntry->SetHeader( aBtnHeader.IsChecked() ); 513cdf0e10cSrcweir pOldEntry->SetDoSize( aBtnDoSize.IsChecked() ); 514cdf0e10cSrcweir pOldEntry->SetKeepFmt( aBtnKeepFmt.IsChecked() ); 515cdf0e10cSrcweir pOldEntry->SetStripData( aBtnStripData.IsChecked() ); 516cdf0e10cSrcweir } 517cdf0e10cSrcweir else 518cdf0e10cSrcweir { 519cdf0e10cSrcweir // neuen Bereich einfuegen 520cdf0e10cSrcweir 521cdf0e10cSrcweir ScDBData* pNewEntry = new ScDBData( aNewName, aStart.Tab(), 522cdf0e10cSrcweir aStart.Col(), aStart.Row(), 523cdf0e10cSrcweir aEnd.Col(), aEnd.Row(), 524cdf0e10cSrcweir sal_True, aBtnHeader.IsChecked() ); 525cdf0e10cSrcweir pNewEntry->SetDoSize( aBtnDoSize.IsChecked() ); 526cdf0e10cSrcweir pNewEntry->SetKeepFmt( aBtnKeepFmt.IsChecked() ); 527cdf0e10cSrcweir pNewEntry->SetStripData( aBtnStripData.IsChecked() ); 528cdf0e10cSrcweir 529cdf0e10cSrcweir if ( !aLocalDbCol.Insert( pNewEntry ) ) 530cdf0e10cSrcweir delete pNewEntry; 531cdf0e10cSrcweir } 532cdf0e10cSrcweir 533cdf0e10cSrcweir UpdateNames(); 534cdf0e10cSrcweir 535cdf0e10cSrcweir aEdName.SetText( EMPTY_STRING ); 536cdf0e10cSrcweir aEdName.GrabFocus(); 537cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd ); 538cdf0e10cSrcweir aBtnAdd.Disable(); 539cdf0e10cSrcweir aBtnRemove.Disable(); 540cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 541cdf0e10cSrcweir aBtnHeader.Check( sal_True ); // Default: mit Spaltenkoepfen 542cdf0e10cSrcweir aBtnDoSize.Check( sal_False ); 543cdf0e10cSrcweir aBtnKeepFmt.Check( sal_False ); 544cdf0e10cSrcweir aBtnStripData.Check( sal_False ); 545cdf0e10cSrcweir SetInfoStrings( NULL ); // leer 546cdf0e10cSrcweir theCurArea = ScRange(); 547cdf0e10cSrcweir bSaved=sal_True; 548cdf0e10cSrcweir pSaveObj->Save(); 549cdf0e10cSrcweir NameModifyHdl( 0 ); 550cdf0e10cSrcweir } 551cdf0e10cSrcweir else 552cdf0e10cSrcweir { 553cdf0e10cSrcweir ERRORBOX( aStrInvalid ); 554cdf0e10cSrcweir aEdAssign.SetSelection( Selection( 0, SELECTION_MAX ) ); 555cdf0e10cSrcweir aEdAssign.GrabFocus(); 556cdf0e10cSrcweir } 557cdf0e10cSrcweir } 558cdf0e10cSrcweir else 559cdf0e10cSrcweir { 560cdf0e10cSrcweir ERRORBOX( ScGlobal::GetRscString(STR_INVALIDNAME) ); 561cdf0e10cSrcweir aEdName.SetSelection( Selection( 0, SELECTION_MAX ) ); 562cdf0e10cSrcweir aEdName.GrabFocus(); 563cdf0e10cSrcweir } 564cdf0e10cSrcweir } 565cdf0e10cSrcweir return 0; 566cdf0e10cSrcweir } 567cdf0e10cSrcweir 568cdf0e10cSrcweir //------------------------------------------------------------------------ 569cdf0e10cSrcweir 570cdf0e10cSrcweir IMPL_LINK( ScDbNameDlg, RemoveBtnHdl, void *, EMPTYARG ) 571cdf0e10cSrcweir { 572cdf0e10cSrcweir sal_uInt16 nRemoveAt = 0; 573cdf0e10cSrcweir const String aStrEntry = aEdName.GetText(); 574cdf0e10cSrcweir 575cdf0e10cSrcweir if ( aLocalDbCol.SearchName( aStrEntry, nRemoveAt ) ) 576cdf0e10cSrcweir { 577cdf0e10cSrcweir String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY ); 578cdf0e10cSrcweir String aMsg = aStrDelMsg.GetToken( 0, '#' ); 579cdf0e10cSrcweir 580cdf0e10cSrcweir aMsg += aStrEntry; 581cdf0e10cSrcweir aMsg += aStrDelMsg.GetToken( 1, '#' ); 582cdf0e10cSrcweir 583cdf0e10cSrcweir if ( RET_YES == QUERYBOX(aMsg) ) 584cdf0e10cSrcweir { 585cdf0e10cSrcweir ScDBData* pEntry = (ScDBData*)aLocalDbCol.At(nRemoveAt); 586cdf0e10cSrcweir 587cdf0e10cSrcweir if ( pEntry ) 588cdf0e10cSrcweir { 589cdf0e10cSrcweir SCTAB nTab; 590cdf0e10cSrcweir SCCOL nColStart, nColEnd; 591cdf0e10cSrcweir SCROW nRowStart, nRowEnd; 592cdf0e10cSrcweir pEntry->GetArea( nTab, nColStart, nRowStart, nColEnd, nRowEnd ); 593cdf0e10cSrcweir aRemoveList.Insert( 594cdf0e10cSrcweir new ScRange( ScAddress( nColStart, nRowStart, nTab ), 595cdf0e10cSrcweir ScAddress( nColEnd, nRowEnd, nTab ) ) ); 596cdf0e10cSrcweir } 597cdf0e10cSrcweir aLocalDbCol.AtFree( nRemoveAt ); 598cdf0e10cSrcweir 599cdf0e10cSrcweir UpdateNames(); 600cdf0e10cSrcweir 601cdf0e10cSrcweir aEdName.SetText( EMPTY_STRING ); 602cdf0e10cSrcweir aEdName.GrabFocus(); 603cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd ); 604cdf0e10cSrcweir aBtnAdd.Disable(); 605cdf0e10cSrcweir aBtnRemove.Disable(); 606cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 607cdf0e10cSrcweir theCurArea = ScRange(); 608cdf0e10cSrcweir aBtnHeader.Check( sal_True ); // Default: mit Spaltenkoepfen 609cdf0e10cSrcweir aBtnDoSize.Check( sal_False ); 610cdf0e10cSrcweir aBtnKeepFmt.Check( sal_False ); 611cdf0e10cSrcweir aBtnStripData.Check( sal_False ); 612cdf0e10cSrcweir SetInfoStrings( NULL ); // leer 613cdf0e10cSrcweir bSaved=sal_False; 614cdf0e10cSrcweir pSaveObj->Restore(); 615cdf0e10cSrcweir NameModifyHdl( 0 ); 616cdf0e10cSrcweir } 617cdf0e10cSrcweir } 618cdf0e10cSrcweir return 0; 619cdf0e10cSrcweir } 620cdf0e10cSrcweir 621cdf0e10cSrcweir //------------------------------------------------------------------------ 622cdf0e10cSrcweir 623cdf0e10cSrcweir IMPL_LINK( ScDbNameDlg, NameModifyHdl, void *, EMPTYARG ) 624cdf0e10cSrcweir { 625cdf0e10cSrcweir String theName = aEdName.GetText(); 626cdf0e10cSrcweir sal_Bool bNameFound = (COMBOBOX_ENTRY_NOTFOUND 627cdf0e10cSrcweir != aEdName.GetEntryPos( theName )); 628cdf0e10cSrcweir 629cdf0e10cSrcweir if ( theName.Len() == 0 ) 630cdf0e10cSrcweir { 631cdf0e10cSrcweir if ( aBtnAdd.GetText() != aStrAdd ) 632cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd ); 633cdf0e10cSrcweir aBtnAdd .Disable(); 634cdf0e10cSrcweir aBtnRemove .Disable(); 635cdf0e10cSrcweir aFlAssign .Disable(); 636cdf0e10cSrcweir aBtnHeader .Disable(); 637cdf0e10cSrcweir aBtnDoSize .Disable(); 638cdf0e10cSrcweir aBtnKeepFmt .Disable(); 639cdf0e10cSrcweir aBtnStripData.Disable(); 640cdf0e10cSrcweir aFTSource .Disable(); 641cdf0e10cSrcweir aFTOperations.Disable(); 642cdf0e10cSrcweir aEdAssign .Disable(); 643cdf0e10cSrcweir aRbAssign .Disable(); 644cdf0e10cSrcweir //bSaved=sal_False; 645cdf0e10cSrcweir //pSaveObj->Restore(); 646cdf0e10cSrcweir //@BugID 54702 Enablen/Disablen nur noch in Basisklasse 647cdf0e10cSrcweir //SFX_APPWINDOW->Disable(sal_False); //! allgemeine Methode im ScAnyRefDlg 648cdf0e10cSrcweir bRefInputMode = sal_False; 649cdf0e10cSrcweir } 650cdf0e10cSrcweir else 651cdf0e10cSrcweir { 652cdf0e10cSrcweir if ( bNameFound ) 653cdf0e10cSrcweir { 654cdf0e10cSrcweir if ( aBtnAdd.GetText() != aStrModify ) 655cdf0e10cSrcweir aBtnAdd.SetText( aStrModify ); 656cdf0e10cSrcweir 657cdf0e10cSrcweir if(!bSaved) 658cdf0e10cSrcweir { 659cdf0e10cSrcweir bSaved=sal_True; 660cdf0e10cSrcweir pSaveObj->Save(); 661cdf0e10cSrcweir } 662cdf0e10cSrcweir UpdateDBData( theName ); 663cdf0e10cSrcweir } 664cdf0e10cSrcweir else 665cdf0e10cSrcweir { 666cdf0e10cSrcweir if ( aBtnAdd.GetText() != aStrAdd ) 667cdf0e10cSrcweir aBtnAdd.SetText( aStrAdd ); 668cdf0e10cSrcweir 669cdf0e10cSrcweir bSaved=sal_False; 670cdf0e10cSrcweir pSaveObj->Restore(); 671cdf0e10cSrcweir 672cdf0e10cSrcweir if ( aEdAssign.GetText().Len() > 0 ) 673cdf0e10cSrcweir { 674cdf0e10cSrcweir aBtnAdd.Enable(); 675cdf0e10cSrcweir aBtnHeader.Enable(); 676cdf0e10cSrcweir aBtnDoSize.Enable(); 677cdf0e10cSrcweir aBtnKeepFmt.Enable(); 678cdf0e10cSrcweir aBtnStripData.Enable(); 679cdf0e10cSrcweir aFTSource.Enable(); 680cdf0e10cSrcweir aFTOperations.Enable(); 681cdf0e10cSrcweir } 682cdf0e10cSrcweir else 683cdf0e10cSrcweir { 684cdf0e10cSrcweir aBtnAdd.Disable(); 685cdf0e10cSrcweir aBtnHeader.Disable(); 686cdf0e10cSrcweir aBtnDoSize.Disable(); 687cdf0e10cSrcweir aBtnKeepFmt.Disable(); 688cdf0e10cSrcweir aBtnStripData.Disable(); 689cdf0e10cSrcweir aFTSource.Disable(); 690cdf0e10cSrcweir aFTOperations.Disable(); 691cdf0e10cSrcweir } 692cdf0e10cSrcweir aBtnRemove.Disable(); 693cdf0e10cSrcweir } 694cdf0e10cSrcweir 695cdf0e10cSrcweir aFlAssign.Enable(); 696cdf0e10cSrcweir aEdAssign.Enable(); 697cdf0e10cSrcweir aRbAssign.Enable(); 698cdf0e10cSrcweir 699cdf0e10cSrcweir //@BugID 54702 Enablen/Disablen nur noch in Basisklasse 700cdf0e10cSrcweir //SFX_APPWINDOW->Enable(); 701cdf0e10cSrcweir bRefInputMode = sal_True; 702cdf0e10cSrcweir } 703cdf0e10cSrcweir return 0; 704cdf0e10cSrcweir } 705cdf0e10cSrcweir 706cdf0e10cSrcweir //------------------------------------------------------------------------ 707cdf0e10cSrcweir 708cdf0e10cSrcweir IMPL_LINK( ScDbNameDlg, AssModifyHdl, void *, EMPTYARG ) 709cdf0e10cSrcweir { 710cdf0e10cSrcweir // hier parsen fuer Save() etc. 711cdf0e10cSrcweir 712cdf0e10cSrcweir ScRange aTmpRange; 713cdf0e10cSrcweir String aText = aEdAssign.GetText(); 714cdf0e10cSrcweir if ( aTmpRange.ParseAny( aText, pDoc, aAddrDetails ) & SCA_VALID ) 715cdf0e10cSrcweir theCurArea = aTmpRange; 716cdf0e10cSrcweir 717cdf0e10cSrcweir return 0; 718cdf0e10cSrcweir } 719cdf0e10cSrcweir 720cdf0e10cSrcweir 721