2000-09-18 16:07:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* $RCSfile: docsh5.cxx,v $
|
2008-09-30 05:48:28 +00:00
|
|
|
* $Revision: 1.20.30.2 $
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
* only, as published by the Free Software Foundation.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Lesser General Public License version 3 for more details
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 21:12:43 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
* for a copy of the LGPLv3 License.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-07-21 12:40:49 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_sc.hxx"
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
// System - Includes -----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "scitems.hxx"
|
|
|
|
#include <vcl/svapp.hxx>
|
|
|
|
#include <vcl/msgbox.hxx>
|
|
|
|
#include <vcl/waitobj.hxx>
|
|
|
|
#include <sfx2/app.hxx>
|
|
|
|
#include <sfx2/bindings.hxx>
|
|
|
|
#include <svtools/smplhint.hxx>
|
|
|
|
|
2002-08-08 12:05:31 +00:00
|
|
|
#include <com/sun/star/sdbc/XResultSet.hpp>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// INCLUDE ---------------------------------------------------------------
|
|
|
|
|
|
|
|
#include "docsh.hxx"
|
|
|
|
#include "global.hxx"
|
|
|
|
#include "globstr.hrc"
|
|
|
|
#include "undodat.hxx"
|
|
|
|
#include "undotab.hxx"
|
|
|
|
#include "undoblk.hxx"
|
|
|
|
//#include "pivot.hxx"
|
|
|
|
#include "dpobject.hxx"
|
|
|
|
#include "dpshttab.hxx"
|
|
|
|
#include "dbdocfun.hxx"
|
|
|
|
#include "consoli.hxx"
|
|
|
|
#include "dbcolect.hxx"
|
|
|
|
#include "olinetab.hxx"
|
|
|
|
#include "patattr.hxx"
|
|
|
|
#include "attrib.hxx"
|
|
|
|
#include "docpool.hxx"
|
|
|
|
#include "uiitems.hxx"
|
|
|
|
#include "sc.hrc"
|
|
|
|
#include "waitoff.hxx"
|
2001-05-11 16:11:53 +00:00
|
|
|
#include "sizedev.hxx"
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
//
|
|
|
|
// ehemalige viewfunc/dbfunc Methoden
|
|
|
|
//
|
|
|
|
|
|
|
|
void ScDocShell::ErrorMessage( USHORT nGlobStrId )
|
|
|
|
{
|
|
|
|
//! StopMarking an der (aktiven) View?
|
|
|
|
|
2007-02-27 12:07:51 +00:00
|
|
|
Window* pParent = GetActiveDialogParent();
|
2000-09-18 16:07:07 +00:00
|
|
|
ScWaitCursorOff aWaitOff( pParent );
|
|
|
|
BOOL bFocus = pParent && pParent->HasFocus();
|
|
|
|
|
|
|
|
if(nGlobStrId==STR_PROTECTIONERR)
|
|
|
|
{
|
|
|
|
if(IsReadOnly())
|
|
|
|
{
|
|
|
|
nGlobStrId=STR_READONLYERR;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
InfoBox aBox( pParent, ScGlobal::GetRscString( nGlobStrId ) );
|
|
|
|
aBox.Execute();
|
|
|
|
if (bFocus)
|
|
|
|
pParent->GrabFocus();
|
|
|
|
}
|
|
|
|
|
2000-10-09 09:26:00 +00:00
|
|
|
BOOL ScDocShell::IsEditable() const
|
|
|
|
{
|
|
|
|
// import into read-only document is possible - must be extended if other filters use api
|
|
|
|
|
|
|
|
return !IsReadOnly() || aDocument.IsImportingXML();
|
|
|
|
}
|
|
|
|
|
2007-02-27 12:07:51 +00:00
|
|
|
void ScDocShell::DBAreaDeleted( SCTAB nTab, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW /* nY2 */ )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
ScDocShellModificator aModificator( *this );
|
|
|
|
aDocument.RemoveFlagsTab( nX1, nY1, nX2, nY1, nTab, SC_MF_AUTO );
|
|
|
|
PostPaint( nX1, nY1, nTab, nX2, nY1, nTab, PAINT_GRID );
|
2004-07-23 09:52:25 +00:00
|
|
|
// No SetDocumentModified, as the unnamed database range might have to be restored later.
|
|
|
|
// The UNO hint is broadcast directly instead, to keep UNO objects in valid state.
|
|
|
|
aDocument.BroadcastUno( SfxSimpleHint( SFX_HINT_DATACHANGED ) );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
ScDBData* lcl_GetDBNearCursor( ScDBCollection* pColl, SCCOL nCol, SCROW nRow, SCTAB nTab )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
//! nach document/dbcolect verschieben
|
|
|
|
|
|
|
|
if (!pColl)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
ScDBData* pNoNameData = NULL;
|
|
|
|
ScDBData* pNearData = NULL;
|
|
|
|
USHORT nCount = pColl->GetCount();
|
|
|
|
String aNoName = ScGlobal::GetRscString( STR_DB_NONAME );
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB nAreaTab;
|
|
|
|
SCCOL nStartCol, nEndCol;
|
|
|
|
SCROW nStartRow, nEndRow;
|
2000-09-18 16:07:07 +00:00
|
|
|
for (USHORT i = 0; i < nCount; i++)
|
|
|
|
{
|
|
|
|
ScDBData* pDB = (*pColl)[i];
|
|
|
|
pDB->GetArea( nAreaTab, nStartCol, nStartRow, nEndCol, nEndRow );
|
|
|
|
if ( nTab == nAreaTab && nCol+1 >= nStartCol && nCol <= nEndCol+1 &&
|
|
|
|
nRow+1 >= nStartRow && nRow <= nEndRow+1 )
|
|
|
|
{
|
|
|
|
if ( pDB->GetName() == aNoName )
|
|
|
|
pNoNameData = pDB;
|
|
|
|
else if ( nCol < nStartCol || nCol > nEndCol || nRow < nStartRow || nRow > nEndRow )
|
|
|
|
{
|
|
|
|
if (!pNearData)
|
|
|
|
pNearData = pDB; // ersten angrenzenden Bereich merken
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return pDB; // nicht "unbenannt" und Cursor steht wirklich drin
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (pNearData)
|
|
|
|
return pNearData; // angrenzender, wenn nichts direkt getroffen
|
|
|
|
return pNoNameData; // "unbenannt" nur zurueck, wenn sonst nichts gefunden
|
|
|
|
}
|
|
|
|
|
|
|
|
ScDBData* ScDocShell::GetDBData( const ScRange& rMarked, ScGetDBMode eMode, BOOL bForceMark )
|
|
|
|
{
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCCOL nCol = rMarked.aStart.Col();
|
|
|
|
SCROW nRow = rMarked.aStart.Row();
|
|
|
|
SCTAB nTab = rMarked.aStart.Tab();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCCOL nStartCol = nCol;
|
|
|
|
SCROW nStartRow = nRow;
|
|
|
|
SCTAB nStartTab = nTab;
|
|
|
|
SCCOL nEndCol = rMarked.aEnd.Col();
|
|
|
|
SCROW nEndRow = rMarked.aEnd.Row();
|
|
|
|
SCTAB nEndTab = rMarked.aEnd.Tab();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// Wegen #49655# nicht einfach GetDBAtCursor: Der zusammenhaengende Datenbereich
|
|
|
|
// fuer "unbenannt" (GetDataArea) kann neben dem Cursor legen, also muss auch ein
|
|
|
|
// benannter DB-Bereich dort gesucht werden.
|
|
|
|
|
|
|
|
ScDBData* pData = aDocument.GetDBAtArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
|
|
|
|
if (!pData)
|
|
|
|
pData = lcl_GetDBNearCursor( aDocument.GetDBCollection(), nCol, nRow, nTab );
|
|
|
|
|
|
|
|
BOOL bSelected = ( bForceMark || rMarked.aStart != rMarked.aEnd );
|
|
|
|
|
|
|
|
BOOL bUseThis = FALSE;
|
|
|
|
if (pData)
|
|
|
|
{
|
|
|
|
// Bereich nehmen, wenn nichts anderes markiert
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB nDummy;
|
|
|
|
SCCOL nOldCol1;
|
|
|
|
SCROW nOldRow1;
|
|
|
|
SCCOL nOldCol2;
|
|
|
|
SCROW nOldRow2;
|
2000-09-18 16:07:07 +00:00
|
|
|
pData->GetArea( nDummy, nOldCol1,nOldRow1, nOldCol2,nOldRow2 );
|
|
|
|
BOOL bIsNoName = ( pData->GetName() == ScGlobal::GetRscString( STR_DB_NONAME ) );
|
|
|
|
|
|
|
|
if (!bSelected)
|
|
|
|
{
|
|
|
|
bUseThis = TRUE;
|
|
|
|
if ( bIsNoName && eMode == SC_DB_MAKE )
|
|
|
|
{
|
|
|
|
// wenn nichts markiert, "unbenannt" auf zusammenhaengenden Bereich anpassen
|
|
|
|
nStartCol = nCol;
|
|
|
|
nStartRow = nRow;
|
|
|
|
nEndCol = nStartCol;
|
|
|
|
nEndRow = nStartRow;
|
|
|
|
aDocument.GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow, FALSE );
|
|
|
|
if ( nOldCol1 != nStartCol || nOldCol2 != nEndCol || nOldRow1 != nStartRow )
|
|
|
|
bUseThis = FALSE; // passt gar nicht
|
|
|
|
else if ( nOldRow2 != nEndRow )
|
|
|
|
{
|
|
|
|
// Bereich auf neue End-Zeile erweitern
|
|
|
|
pData->SetArea( nTab, nOldCol1,nOldRow1, nOldCol2,nEndRow );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ( nOldCol1 == nStartCol && nOldRow1 == nStartRow &&
|
|
|
|
nOldCol2 == nEndCol && nOldRow2 == nEndRow ) // genau markiert?
|
|
|
|
bUseThis = TRUE;
|
|
|
|
else
|
|
|
|
bUseThis = FALSE; // immer Markierung nehmen (Bug 11964)
|
|
|
|
}
|
|
|
|
|
|
|
|
// fuer Import nie "unbenannt" nehmen
|
|
|
|
|
|
|
|
if ( bUseThis && eMode == SC_DB_IMPORT && bIsNoName )
|
|
|
|
bUseThis = FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( bUseThis )
|
|
|
|
{
|
|
|
|
pData->GetArea( nStartTab, nStartCol,nStartRow, nEndCol,nEndRow );
|
|
|
|
nEndTab = nStartTab;
|
|
|
|
}
|
|
|
|
else if ( eMode == SC_DB_OLD )
|
|
|
|
{
|
|
|
|
pData = NULL; // nichts gefunden
|
|
|
|
nStartCol = nEndCol = nCol;
|
|
|
|
nStartRow = nEndRow = nRow;
|
|
|
|
nStartTab = nEndTab = nTab;
|
|
|
|
// bMark = FALSE; // nichts zu markieren
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ( bSelected )
|
|
|
|
{
|
|
|
|
// bMark = FALSE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{ // zusammenhaengender Bereich
|
|
|
|
nStartCol = nCol;
|
|
|
|
nStartRow = nRow;
|
|
|
|
nEndCol = nStartCol;
|
|
|
|
nEndRow = nStartRow;
|
|
|
|
aDocument.GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow, FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
BOOL bHasHeader = aDocument.HasColHeader( nStartCol,nStartRow, nEndCol,nEndRow, nTab );
|
|
|
|
|
|
|
|
ScDBData* pNoNameData;
|
|
|
|
USHORT nNoNameIndex;
|
|
|
|
ScDBCollection* pColl = aDocument.GetDBCollection();
|
|
|
|
if ( eMode != SC_DB_IMPORT &&
|
|
|
|
pColl->SearchName( ScGlobal::GetRscString( STR_DB_NONAME ), nNoNameIndex ) )
|
|
|
|
{
|
|
|
|
pNoNameData = (*pColl)[nNoNameIndex];
|
|
|
|
|
2004-07-23 09:52:25 +00:00
|
|
|
if ( !pOldAutoDBRange )
|
|
|
|
{
|
|
|
|
// store the old unnamed database range with its settings for undo
|
|
|
|
// (store at the first change, get the state before all changes)
|
|
|
|
pOldAutoDBRange = new ScDBData( *pNoNameData );
|
|
|
|
}
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCCOL nOldX1; // alten Bereich sauber wegnehmen
|
|
|
|
SCROW nOldY1; //! (UNDO ???)
|
|
|
|
SCCOL nOldX2;
|
|
|
|
SCROW nOldY2;
|
|
|
|
SCTAB nOldTab;
|
2000-09-18 16:07:07 +00:00
|
|
|
pNoNameData->GetArea( nOldTab, nOldX1, nOldY1, nOldX2, nOldY2 );
|
|
|
|
DBAreaDeleted( nOldTab, nOldX1, nOldY1, nOldX2, nOldY2 );
|
|
|
|
|
|
|
|
pNoNameData->SetSortParam( ScSortParam() ); // Parameter zuruecksetzen
|
|
|
|
pNoNameData->SetQueryParam( ScQueryParam() );
|
|
|
|
pNoNameData->SetSubTotalParam( ScSubTotalParam() );
|
|
|
|
|
|
|
|
pNoNameData->SetArea( nTab, nStartCol,nStartRow, nEndCol,nEndRow ); // neu setzen
|
|
|
|
pNoNameData->SetByRow( TRUE );
|
|
|
|
pNoNameData->SetHeader( bHasHeader );
|
|
|
|
pNoNameData->SetAutoFilter( FALSE );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ScDBCollection* pUndoColl = NULL;
|
|
|
|
|
|
|
|
String aNewName;
|
|
|
|
if (eMode==SC_DB_IMPORT)
|
|
|
|
{
|
|
|
|
aDocument.CompileDBFormula( TRUE ); // CreateFormulaString
|
|
|
|
pUndoColl = new ScDBCollection( *pColl ); // Undo fuer Import1-Bereich
|
|
|
|
|
|
|
|
String aImport = ScGlobal::GetRscString( STR_DBNAME_IMPORT );
|
|
|
|
long nCount = 0;
|
|
|
|
USHORT nDummy;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
++nCount;
|
|
|
|
aNewName = aImport;
|
|
|
|
aNewName += String::CreateFromInt32( nCount );
|
|
|
|
}
|
|
|
|
while (pColl->SearchName( aNewName, nDummy ));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
aNewName = ScGlobal::GetRscString( STR_DB_NONAME );
|
|
|
|
pNoNameData = new ScDBData( aNewName, nTab,
|
|
|
|
nStartCol,nStartRow, nEndCol,nEndRow,
|
|
|
|
TRUE, bHasHeader );
|
|
|
|
pColl->Insert( pNoNameData );
|
|
|
|
|
|
|
|
if ( pUndoColl )
|
|
|
|
{
|
|
|
|
aDocument.CompileDBFormula( FALSE ); // CompileFormulaString
|
|
|
|
|
|
|
|
ScDBCollection* pRedoColl = new ScDBCollection( *pColl );
|
|
|
|
GetUndoManager()->AddUndoAction( new ScUndoDBData( this, pUndoColl, pRedoColl ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
// neuen Bereich am Sba anmelden nicht mehr noetig
|
|
|
|
|
|
|
|
// "Import1" etc am Navigator bekanntmachen
|
|
|
|
if (eMode==SC_DB_IMPORT)
|
|
|
|
SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
|
|
|
|
}
|
|
|
|
pData = pNoNameData;
|
|
|
|
}
|
|
|
|
|
|
|
|
// if (bMark)
|
|
|
|
// MarkRange( ScRange( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab ), FALSE );
|
|
|
|
|
|
|
|
return pData;
|
|
|
|
}
|
|
|
|
|
2004-07-23 09:52:25 +00:00
|
|
|
ScDBData* ScDocShell::GetOldAutoDBRange()
|
|
|
|
{
|
|
|
|
ScDBData* pRet = pOldAutoDBRange;
|
|
|
|
pOldAutoDBRange = NULL;
|
|
|
|
return pRet; // has to be deleted by caller!
|
|
|
|
}
|
|
|
|
|
|
|
|
void ScDocShell::CancelAutoDBRange()
|
|
|
|
{
|
|
|
|
// called when dialog is cancelled
|
|
|
|
if ( pOldAutoDBRange )
|
|
|
|
{
|
|
|
|
USHORT nNoNameIndex;
|
|
|
|
ScDBCollection* pColl = aDocument.GetDBCollection();
|
|
|
|
if ( pColl->SearchName( ScGlobal::GetRscString( STR_DB_NONAME ), nNoNameIndex ) )
|
|
|
|
{
|
|
|
|
ScDBData* pNoNameData = (*pColl)[nNoNameIndex];
|
|
|
|
|
|
|
|
SCCOL nRangeX1;
|
|
|
|
SCROW nRangeY1;
|
|
|
|
SCCOL nRangeX2;
|
|
|
|
SCROW nRangeY2;
|
|
|
|
SCTAB nRangeTab;
|
|
|
|
pNoNameData->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 );
|
|
|
|
DBAreaDeleted( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 );
|
|
|
|
|
|
|
|
*pNoNameData = *pOldAutoDBRange; // restore old settings
|
|
|
|
|
|
|
|
if ( pOldAutoDBRange->HasAutoFilter() )
|
|
|
|
{
|
|
|
|
// restore AutoFilter buttons
|
|
|
|
pOldAutoDBRange->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 );
|
|
|
|
aDocument.ApplyFlagsTab( nRangeX1, nRangeY1, nRangeX2, nRangeY1, nRangeTab, SC_MF_AUTO );
|
|
|
|
PostPaint( nRangeX1, nRangeY1, nRangeTab, nRangeX2, nRangeY1, nRangeTab, PAINT_GRID );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
delete pOldAutoDBRange;
|
|
|
|
pOldAutoDBRange = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// Hoehen anpassen
|
|
|
|
//! mit docfunc zusammenfassen
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
BOOL ScDocShell::AdjustRowHeight( SCROW nStartRow, SCROW nEndRow, SCTAB nTab )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2001-05-11 16:11:53 +00:00
|
|
|
ScSizeDeviceProvider aProv(this);
|
2000-09-18 16:07:07 +00:00
|
|
|
Fraction aZoom(1,1);
|
2001-05-11 16:11:53 +00:00
|
|
|
BOOL bChange = aDocument.SetOptimalHeight( nStartRow,nEndRow, nTab, 0, aProv.GetDevice(),
|
|
|
|
aProv.GetPPTX(),aProv.GetPPTY(), aZoom,aZoom, FALSE );
|
2000-09-18 16:07:07 +00:00
|
|
|
if (bChange)
|
|
|
|
PostPaint( 0,nStartRow,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID|PAINT_LEFT );
|
|
|
|
|
|
|
|
return bChange;
|
|
|
|
}
|
|
|
|
|
2001-02-09 19:03:36 +00:00
|
|
|
void ScDocShell::UpdateAllRowHeights()
|
|
|
|
{
|
|
|
|
// update automatic row heights
|
|
|
|
|
2001-05-11 16:11:53 +00:00
|
|
|
ScSizeDeviceProvider aProv(this);
|
2001-02-09 19:03:36 +00:00
|
|
|
Fraction aZoom(1,1);
|
2008-03-05 16:32:25 +00:00
|
|
|
aDocument.UpdateAllRowHeights( aProv.GetDevice(), aProv.GetPPTX(), aProv.GetPPTY(), aZoom, aZoom );
|
2001-02-09 19:03:36 +00:00
|
|
|
}
|
|
|
|
|
2008-09-30 05:48:28 +00:00
|
|
|
#if OLD_PIVOT_IMPLEMENTATION
|
2007-02-27 12:07:51 +00:00
|
|
|
void ScDocShell::PivotUpdate( ScPivot*, ScPivot*, BOOL, BOOL )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
DBG_ERRORFILE("PivotUpdate is obsolete!");
|
|
|
|
}
|
2008-09-30 05:48:28 +00:00
|
|
|
#endif
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
void ScDocShell::RefreshPivotTables( const ScRange& rSource )
|
|
|
|
{
|
|
|
|
//! rename to RefreshDataPilotTables?
|
|
|
|
|
|
|
|
ScDPCollection* pColl = aDocument.GetDPCollection();
|
|
|
|
if ( pColl )
|
|
|
|
{
|
|
|
|
// DataPilotUpdate doesn't modify the collection order like PivotUpdate did,
|
|
|
|
// so a simple loop can be used.
|
|
|
|
|
|
|
|
USHORT nCount = pColl->GetCount();
|
|
|
|
for ( USHORT i=0; i<nCount; i++ )
|
|
|
|
{
|
|
|
|
ScDPObject* pOld = (*pColl)[i];
|
|
|
|
if ( pOld )
|
|
|
|
{
|
|
|
|
const ScSheetSourceDesc* pSheetDesc = pOld->GetSheetDesc();
|
|
|
|
if ( pSheetDesc && pSheetDesc->aSourceRange.Intersects( rSource ) )
|
|
|
|
{
|
|
|
|
ScDPObject* pNew = new ScDPObject( *pOld );
|
|
|
|
ScDBDocFunc aFunc( *this );
|
|
|
|
aFunc.DataPilotUpdate( pOld, pNew, TRUE, FALSE );
|
|
|
|
delete pNew; // DataPilotUpdate copies settings from "new" object
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String lcl_GetAreaName( ScDocument* pDoc, ScArea* pArea )
|
|
|
|
{
|
|
|
|
String aName;
|
|
|
|
BOOL bOk = FALSE;
|
|
|
|
ScDBData* pData = pDoc->GetDBAtArea( pArea->nTab, pArea->nColStart, pArea->nRowStart,
|
|
|
|
pArea->nColEnd, pArea->nRowEnd );
|
|
|
|
if (pData)
|
|
|
|
{
|
|
|
|
pData->GetName( aName );
|
|
|
|
if ( aName != ScGlobal::GetRscString( STR_DB_NONAME ) )
|
|
|
|
bOk = TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!bOk)
|
|
|
|
pDoc->GetName( pArea->nTab, aName );
|
|
|
|
|
|
|
|
return aName;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ScDocShell::DoConsolidate( const ScConsolidateParam& rParam, BOOL bRecord )
|
|
|
|
{
|
|
|
|
ScConsData aData;
|
|
|
|
|
|
|
|
USHORT nPos;
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCCOL nColSize = 0;
|
|
|
|
SCROW nRowSize = 0;
|
2000-09-18 16:07:07 +00:00
|
|
|
BOOL bErr = FALSE;
|
|
|
|
for (nPos=0; nPos<rParam.nDataAreaCount; nPos++)
|
|
|
|
{
|
|
|
|
ScArea* pArea = rParam.ppDataAreas[nPos];
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
nColSize = Max( nColSize, SCCOL( pArea->nColEnd - pArea->nColStart + 1 ) );
|
|
|
|
nRowSize = Max( nRowSize, SCROW( pArea->nRowEnd - pArea->nRowStart + 1 ) );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// Test, ob Quelldaten verschoben wuerden
|
|
|
|
if (rParam.bReferenceData)
|
|
|
|
if (pArea->nTab == rParam.nTab && pArea->nRowEnd >= rParam.nRow)
|
|
|
|
bErr = TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (bErr)
|
|
|
|
{
|
2007-02-27 12:07:51 +00:00
|
|
|
InfoBox aBox( GetActiveDialogParent(),
|
2000-09-18 16:07:07 +00:00
|
|
|
ScGlobal::GetRscString( STR_CONSOLIDATE_ERR1 ) );
|
|
|
|
aBox.Execute();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ausfuehren
|
|
|
|
|
2007-02-27 12:07:51 +00:00
|
|
|
WaitObject aWait( GetActiveDialogParent() );
|
2000-09-18 16:07:07 +00:00
|
|
|
ScDocShellModificator aModificator( *this );
|
|
|
|
|
|
|
|
ScRange aOldDest;
|
|
|
|
ScDBData* pDestData = aDocument.GetDBAtCursor( rParam.nCol, rParam.nRow, rParam.nTab, TRUE );
|
|
|
|
if (pDestData)
|
|
|
|
pDestData->GetArea(aOldDest);
|
|
|
|
|
|
|
|
aData.SetSize( nColSize, nRowSize );
|
|
|
|
aData.SetFlags( rParam.eFunction, rParam.bByCol, rParam.bByRow, rParam.bReferenceData );
|
|
|
|
if ( rParam.bByCol || rParam.bByRow )
|
|
|
|
for (nPos=0; nPos<rParam.nDataAreaCount; nPos++)
|
|
|
|
{
|
|
|
|
ScArea* pArea = rParam.ppDataAreas[nPos];
|
|
|
|
aData.AddFields( &aDocument, pArea->nTab, pArea->nColStart, pArea->nRowStart,
|
|
|
|
pArea->nColEnd, pArea->nRowEnd );
|
|
|
|
}
|
|
|
|
aData.DoneFields();
|
|
|
|
for (nPos=0; nPos<rParam.nDataAreaCount; nPos++)
|
|
|
|
{
|
|
|
|
ScArea* pArea = rParam.ppDataAreas[nPos];
|
|
|
|
aData.AddData( &aDocument, pArea->nTab, pArea->nColStart, pArea->nRowStart,
|
|
|
|
pArea->nColEnd, pArea->nRowEnd );
|
|
|
|
aData.AddName( lcl_GetAreaName(&aDocument,pArea) );
|
|
|
|
}
|
|
|
|
|
|
|
|
aData.GetSize( nColSize, nRowSize );
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
if (bRecord && nColSize > 0 && nRowSize > 0)
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
ScDBData* pUndoData = pDestData ? new ScDBData(*pDestData) : NULL;
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB nDestTab = rParam.nTab;
|
2000-09-18 16:07:07 +00:00
|
|
|
ScArea aDestArea( rParam.nTab, rParam.nCol, rParam.nRow,
|
|
|
|
rParam.nCol+nColSize-1, rParam.nRow+nRowSize-1 );
|
|
|
|
if (rParam.bByCol) ++aDestArea.nColEnd;
|
|
|
|
if (rParam.bByRow) ++aDestArea.nRowEnd;
|
|
|
|
|
|
|
|
if (rParam.bReferenceData)
|
|
|
|
{
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB nTabCount = aDocument.GetTableCount();
|
|
|
|
SCROW nInsertCount = aData.GetInsertCount();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// alte Outlines
|
|
|
|
ScOutlineTable* pTable = aDocument.GetOutlineTable( nDestTab );
|
|
|
|
ScOutlineTable* pUndoTab = pTable ? new ScOutlineTable( *pTable ) : NULL;
|
|
|
|
|
|
|
|
ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
|
|
|
|
pUndoDoc->InitUndo( &aDocument, 0, nTabCount-1, FALSE, TRUE );
|
|
|
|
|
|
|
|
// Zeilenstatus
|
|
|
|
aDocument.CopyToDocument( 0,0,nDestTab, MAXCOL,MAXROW,nDestTab,
|
|
|
|
IDF_NONE, FALSE, pUndoDoc );
|
|
|
|
|
|
|
|
// alle Formeln
|
|
|
|
aDocument.CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTabCount-1,
|
|
|
|
IDF_FORMULA, FALSE, pUndoDoc );
|
|
|
|
|
|
|
|
// komplette Ausgangszeilen
|
|
|
|
aDocument.CopyToDocument( 0,aDestArea.nRowStart,nDestTab,
|
|
|
|
MAXCOL,aDestArea.nRowEnd,nDestTab,
|
|
|
|
IDF_ALL, FALSE, pUndoDoc );
|
|
|
|
|
|
|
|
// alten Ausgabebereich
|
|
|
|
if (pDestData)
|
|
|
|
aDocument.CopyToDocument( aOldDest, IDF_ALL, FALSE, pUndoDoc );
|
|
|
|
|
|
|
|
GetUndoManager()->AddUndoAction(
|
|
|
|
new ScUndoConsolidate( this, aDestArea, rParam, pUndoDoc,
|
|
|
|
TRUE, nInsertCount, pUndoTab, pUndoData ) );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
|
|
|
|
pUndoDoc->InitUndo( &aDocument, aDestArea.nTab, aDestArea.nTab );
|
|
|
|
|
|
|
|
aDocument.CopyToDocument( aDestArea.nColStart, aDestArea.nRowStart, aDestArea.nTab,
|
|
|
|
aDestArea.nColEnd, aDestArea.nRowEnd, aDestArea.nTab,
|
|
|
|
IDF_ALL, FALSE, pUndoDoc );
|
|
|
|
|
|
|
|
// alten Ausgabebereich
|
|
|
|
if (pDestData)
|
|
|
|
aDocument.CopyToDocument( aOldDest, IDF_ALL, FALSE, pUndoDoc );
|
|
|
|
|
|
|
|
GetUndoManager()->AddUndoAction(
|
|
|
|
new ScUndoConsolidate( this, aDestArea, rParam, pUndoDoc,
|
|
|
|
FALSE, 0, NULL, pUndoData ) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pDestData) // Zielbereich loeschen / anpassen
|
|
|
|
{
|
|
|
|
aDocument.DeleteAreaTab(aOldDest, IDF_CONTENTS);
|
|
|
|
pDestData->SetArea( rParam.nTab, rParam.nCol, rParam.nRow,
|
|
|
|
rParam.nCol + nColSize - 1, rParam.nRow + nRowSize - 1 );
|
|
|
|
pDestData->SetHeader( rParam.bByRow );
|
|
|
|
}
|
|
|
|
|
|
|
|
aData.OutputToDocument( &aDocument, rParam.nCol, rParam.nRow, rParam.nTab );
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCCOL nPaintStartCol = rParam.nCol;
|
|
|
|
SCROW nPaintStartRow = rParam.nRow;
|
|
|
|
SCCOL nPaintEndCol = nPaintStartCol + nColSize - 1;
|
|
|
|
SCROW nPaintEndRow = nPaintStartRow + nRowSize - 1;
|
2000-09-18 16:07:07 +00:00
|
|
|
USHORT nPaintFlags = PAINT_GRID;
|
|
|
|
if (rParam.bByCol)
|
|
|
|
++nPaintEndRow;
|
|
|
|
if (rParam.bByRow)
|
|
|
|
++nPaintEndCol;
|
|
|
|
if (rParam.bReferenceData)
|
|
|
|
{
|
|
|
|
nPaintStartCol = 0;
|
|
|
|
nPaintEndCol = MAXCOL;
|
|
|
|
nPaintEndRow = MAXROW;
|
|
|
|
nPaintFlags |= PAINT_LEFT | PAINT_SIZE;
|
|
|
|
}
|
|
|
|
if (pDestData)
|
|
|
|
{
|
|
|
|
if ( aOldDest.aEnd.Col() > nPaintEndCol )
|
|
|
|
nPaintEndCol = aOldDest.aEnd.Col();
|
|
|
|
if ( aOldDest.aEnd.Row() > nPaintEndRow )
|
|
|
|
nPaintEndRow = aOldDest.aEnd.Row();
|
|
|
|
}
|
|
|
|
PostPaint( nPaintStartCol, nPaintStartRow, rParam.nTab,
|
|
|
|
nPaintEndCol, nPaintEndRow, rParam.nTab, nPaintFlags );
|
|
|
|
aModificator.SetDocumentModified();
|
|
|
|
}
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
void ScDocShell::UseScenario( SCTAB nTab, const String& rName, BOOL bRecord )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
if (!aDocument.IsScenario(nTab))
|
|
|
|
{
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB nTabCount = aDocument.GetTableCount();
|
|
|
|
SCTAB nSrcTab = SCTAB_MAX;
|
|
|
|
SCTAB nEndTab = nTab;
|
2000-09-18 16:07:07 +00:00
|
|
|
String aCompare;
|
|
|
|
while ( nEndTab+1 < nTabCount && aDocument.IsScenario(nEndTab+1) )
|
|
|
|
{
|
|
|
|
++nEndTab;
|
|
|
|
if (nSrcTab > MAXTAB) // noch auf der Suche nach dem Szenario?
|
|
|
|
{
|
|
|
|
aDocument.GetName( nEndTab, aCompare );
|
|
|
|
if (aCompare == rName)
|
|
|
|
nSrcTab = nEndTab; // gefunden
|
|
|
|
}
|
|
|
|
}
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
if (ValidTab(nSrcTab))
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
if ( aDocument.TestCopyScenario( nSrcTab, nTab ) ) // Zellschutz testen
|
|
|
|
{
|
|
|
|
ScDocShellModificator aModificator( *this );
|
|
|
|
ScMarkData aScenMark;
|
|
|
|
aDocument.MarkScenario( nSrcTab, nTab, aScenMark );
|
|
|
|
ScRange aMultiRange;
|
|
|
|
aScenMark.GetMultiMarkArea( aMultiRange );
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCCOL nStartCol = aMultiRange.aStart.Col();
|
|
|
|
SCROW nStartRow = aMultiRange.aStart.Row();
|
|
|
|
SCCOL nEndCol = aMultiRange.aEnd.Col();
|
|
|
|
SCROW nEndRow = aMultiRange.aEnd.Row();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
if (bRecord)
|
|
|
|
{
|
|
|
|
ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
|
|
|
|
pUndoDoc->InitUndo( &aDocument, nTab,nEndTab ); // auch alle Szenarien
|
|
|
|
// angezeigte Tabelle:
|
|
|
|
aDocument.CopyToDocument( nStartCol,nStartRow,nTab,
|
|
|
|
nEndCol,nEndRow,nTab, IDF_ALL,TRUE, pUndoDoc, &aScenMark );
|
|
|
|
// Szenarien
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
for (SCTAB i=nTab+1; i<=nEndTab; i++)
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
pUndoDoc->SetScenario( i, TRUE );
|
|
|
|
String aComment;
|
|
|
|
Color aColor;
|
|
|
|
USHORT nScenFlags;
|
|
|
|
aDocument.GetScenarioData( i, aComment, aColor, nScenFlags );
|
|
|
|
pUndoDoc->SetScenarioData( i, aComment, aColor, nScenFlags );
|
|
|
|
BOOL bActive = aDocument.IsActiveScenario( i );
|
|
|
|
pUndoDoc->SetActiveScenario( i, bActive );
|
|
|
|
// Bei Zurueckkopier-Szenarios auch Inhalte
|
|
|
|
if ( nScenFlags & SC_SCENARIO_TWOWAY )
|
|
|
|
aDocument.CopyToDocument( 0,0,i, MAXCOL,MAXROW,i,
|
|
|
|
IDF_ALL,FALSE, pUndoDoc );
|
|
|
|
}
|
|
|
|
|
|
|
|
GetUndoManager()->AddUndoAction(
|
|
|
|
new ScUndoUseScenario( this, aScenMark,
|
|
|
|
ScArea( nTab,nStartCol,nStartRow,nEndCol,nEndRow ),
|
|
|
|
pUndoDoc, rName ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
aDocument.CopyScenario( nSrcTab, nTab );
|
|
|
|
aDocument.SetDirty();
|
|
|
|
|
|
|
|
// alles painten, weil in anderen Bereichen das aktive Szenario
|
|
|
|
// geaendert sein kann
|
|
|
|
//! nur, wenn sichtbare Rahmen vorhanden?
|
|
|
|
PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
|
|
|
|
aModificator.SetDocumentModified();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2007-02-27 12:07:51 +00:00
|
|
|
InfoBox aBox(GetActiveDialogParent(),
|
2000-09-18 16:07:07 +00:00
|
|
|
ScGlobal::GetRscString( STR_PROTECTIONERR ) );
|
|
|
|
aBox.Execute();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2007-02-27 12:07:51 +00:00
|
|
|
InfoBox aBox(GetActiveDialogParent(),
|
2000-09-18 16:07:07 +00:00
|
|
|
ScGlobal::GetRscString( STR_SCENARIO_NOTFOUND ) );
|
|
|
|
aBox.Execute();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
2008-01-29 14:41:57 +00:00
|
|
|
{
|
2000-09-18 16:07:07 +00:00
|
|
|
DBG_ERROR( "UseScenario auf Szenario-Blatt" );
|
2008-01-29 14:41:57 +00:00
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
void ScDocShell::ModifyScenario( SCTAB nTab, const String& rName, const String& rComment,
|
2000-09-18 16:07:07 +00:00
|
|
|
const Color& rColor, USHORT nFlags )
|
|
|
|
{
|
|
|
|
// Undo
|
|
|
|
String aOldName;
|
|
|
|
aDocument.GetName( nTab, aOldName );
|
|
|
|
String aOldComment;
|
|
|
|
Color aOldColor;
|
|
|
|
USHORT nOldFlags;
|
|
|
|
aDocument.GetScenarioData( nTab, aOldComment, aOldColor, nOldFlags );
|
|
|
|
GetUndoManager()->AddUndoAction(
|
|
|
|
new ScUndoScenarioFlags( this, nTab,
|
|
|
|
aOldName, rName, aOldComment, rComment,
|
|
|
|
aOldColor, rColor, nOldFlags, nFlags ) );
|
|
|
|
|
|
|
|
// ausfuehren
|
|
|
|
ScDocShellModificator aModificator( *this );
|
|
|
|
aDocument.RenameTab( nTab, rName );
|
|
|
|
aDocument.SetScenarioData( nTab, rComment, rColor, nFlags );
|
|
|
|
PostPaintGridAll();
|
|
|
|
aModificator.SetDocumentModified();
|
|
|
|
|
|
|
|
if ( rName != aOldName )
|
|
|
|
SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
|
|
|
|
|
2000-09-22 17:57:10 +00:00
|
|
|
SfxBindings* pBindings = GetViewBindings();
|
|
|
|
if (pBindings)
|
|
|
|
pBindings->Invalidate( SID_SELECT_SCENARIO );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB ScDocShell::MakeScenario( SCTAB nTab, const String& rName, const String& rComment,
|
2000-09-18 16:07:07 +00:00
|
|
|
const Color& rColor, USHORT nFlags,
|
|
|
|
ScMarkData& rMark, BOOL bRecord )
|
|
|
|
{
|
|
|
|
rMark.MarkToMulti();
|
|
|
|
if (rMark.IsMultiMarked())
|
|
|
|
{
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB nNewTab = nTab + 1;
|
2000-09-18 16:07:07 +00:00
|
|
|
while (aDocument.IsScenario(nNewTab))
|
|
|
|
++nNewTab;
|
|
|
|
|
|
|
|
BOOL bCopyAll = ( (nFlags & SC_SCENARIO_COPYALL) != 0 );
|
|
|
|
const ScMarkData* pCopyMark = NULL;
|
|
|
|
if (!bCopyAll)
|
|
|
|
pCopyMark = &rMark;
|
|
|
|
|
|
|
|
ScDocShellModificator aModificator( *this );
|
|
|
|
|
2008-07-11 06:09:32 +00:00
|
|
|
if (bRecord)
|
|
|
|
aDocument.BeginDrawUndo(); // drawing layer must do its own undo actions
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
if (aDocument.CopyTab( nTab, nNewTab, pCopyMark ))
|
|
|
|
{
|
|
|
|
if (bRecord)
|
|
|
|
{
|
|
|
|
GetUndoManager()->AddUndoAction(
|
2008-07-11 06:09:32 +00:00
|
|
|
new ScUndoMakeScenario( this, nTab, nNewTab,
|
2000-09-18 16:07:07 +00:00
|
|
|
rName, rComment, rColor, nFlags, rMark ));
|
|
|
|
}
|
|
|
|
|
|
|
|
aDocument.RenameTab( nNewTab, rName, FALSE ); // ohne Formel-Update
|
|
|
|
aDocument.SetScenario( nNewTab, TRUE );
|
|
|
|
aDocument.SetScenarioData( nNewTab, rComment, rColor, nFlags );
|
|
|
|
|
|
|
|
ScMarkData aDestMark = rMark;
|
|
|
|
aDestMark.SelectOneTable( nNewTab );
|
|
|
|
|
|
|
|
//! auf Filter / Buttons / Merging testen !
|
|
|
|
|
|
|
|
ScPatternAttr aProtPattern( aDocument.GetPool() );
|
|
|
|
aProtPattern.GetItemSet().Put( ScProtectionAttr( TRUE ) );
|
|
|
|
aDocument.ApplyPatternAreaTab( 0,0, MAXCOL,MAXROW, nNewTab, aProtPattern );
|
|
|
|
|
|
|
|
ScPatternAttr aPattern( aDocument.GetPool() );
|
|
|
|
aPattern.GetItemSet().Put( ScMergeFlagAttr( SC_MF_SCENARIO ) );
|
|
|
|
aPattern.GetItemSet().Put( ScProtectionAttr( TRUE ) );
|
|
|
|
aDocument.ApplySelectionPattern( aPattern, aDestMark );
|
|
|
|
|
|
|
|
if (!bCopyAll)
|
|
|
|
aDocument.SetVisible( nNewTab, FALSE );
|
|
|
|
|
|
|
|
// dies ist dann das aktive Szenario
|
|
|
|
aDocument.CopyScenario( nNewTab, nTab, TRUE ); // TRUE - nicht aus Szenario kopieren
|
|
|
|
|
|
|
|
if (nFlags & SC_SCENARIO_SHOWFRAME)
|
|
|
|
PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID ); // Rahmen painten
|
|
|
|
PostPaintExtras(); // Tabellenreiter
|
|
|
|
aModificator.SetDocumentModified();
|
|
|
|
|
|
|
|
SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
|
|
|
|
|
|
|
|
return nNewTab;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nTab;
|
|
|
|
}
|
|
|
|
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
BOOL ScDocShell::MoveTable( SCTAB nSrcTab, SCTAB nDestTab, BOOL bCopy, BOOL bRecord )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
ScDocShellModificator aModificator( *this );
|
|
|
|
|
2008-11-20 13:27:25 +00:00
|
|
|
// #i92477# be consistent with ScDocFunc::InsertTable: any index past the last sheet means "append"
|
|
|
|
if ( nDestTab >= aDocument.GetTableCount() )
|
|
|
|
nDestTab = SC_TAB_APPEND;
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
if (bCopy)
|
|
|
|
{
|
|
|
|
if (bRecord)
|
|
|
|
aDocument.BeginDrawUndo(); // drawing layer must do its own undo actions
|
|
|
|
|
|
|
|
if (!aDocument.CopyTab( nSrcTab, nDestTab ))
|
|
|
|
{
|
|
|
|
//! EndDrawUndo?
|
|
|
|
return FALSE;
|
|
|
|
}
|
2003-04-28 14:44:31 +00:00
|
|
|
else
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SCTAB nAdjSource = nSrcTab;
|
2003-04-28 14:44:31 +00:00
|
|
|
if ( nDestTab <= nSrcTab )
|
|
|
|
++nAdjSource; // new position of source table after CopyTab
|
|
|
|
|
|
|
|
if ( aDocument.IsTabProtected( nAdjSource ) )
|
CWS-TOOLING: integrate CWS scsheetprotection02
2009-06-18 16:48:14 +0200 kohei r273124 : #i102906# Fix a crasher when loading an xls document with unsupported
encrytpion.
2009-06-15 14:02:00 +0200 dr r272982 : #i10000# compiler warnings
2009-04-13 23:06:21 +0200 kohei r270740 : Renamed SetData() to SetDataFromDocument(), in order to resolve name clash
with the method of the same name in class Window. This caused a compiler
warning on Solaris Intel.
2009-04-13 04:09:59 +0200 kohei r270729 : CWS-TOOLING: rebase CWS scsheetprotection02 to trunk@270723 (milestone: DEV300:m46)
2009-02-23 16:13:45 +0100 kohei r268361 : added tabprotection.obj to the exception file list. Apparently the older
versions of boost::shared_ptr rely on C++ exceptions for its implementation.
2009-02-18 19:59:05 +0100 kohei r268253 : Switched to using ::boost::shared_ptr to wrap a pimpl class, because using
::std::auto_ptr in this header breaks the build on win32. The MSVC
implementation of ::std::auto_ptr has some weird quirks...
2009-02-17 21:47:13 +0100 kohei r268192 : fixed linkage issue due to library split.
2009-02-17 04:50:34 +0100 kohei r267842 : CWS-TOOLING: rebase CWS scsheetprotection02 to trunk@267171 (milestone: DEV300:m41)
2009-02-17 02:36:10 +0100 kohei r267841 : reverted the last commit, to re-surrect the removed src files.
2009-02-03 22:02:34 +0100 kohei r267342 : removed the src files to prevent them from being entered into the translation
process. The dialogs that need the strings are not yet enabled in the code,
so their removal will not cause any harm.
2009-01-14 12:24:29 +0100 dr r266280 : #i10000# wntmsci12 compiler warnings #4
2009-01-14 09:35:46 +0100 dr r266267 : #i10000# wntmsci12 compiler warnings #3
2009-01-13 15:42:07 +0100 dr r266231 : #i10000# wntmsci12 compiler warnings #2
2009-01-13 13:18:28 +0100 dr r266216 : #i10000# wntmsci12 compiler warnings
2009-01-07 03:59:11 +0100 kohei r265943 : remove the fscking compiler warnings.
2009-01-06 15:55:32 +0100 kohei r265925 : removed compiler warnings that caused the buildbot build to fail....
2009-01-05 23:24:59 +0100 kohei r265888 : Undoing my own local build fix to work around the libmoz... issue.
2008-12-30 21:39:58 +0100 kohei r265833 : Duh! Sheet protection was supposed to be disabled. :-/
2008-12-23 20:25:55 +0100 kohei r265792 : recovered the code block that was accidentally removed during cws rebase.
2008-12-23 19:03:19 +0100 kohei r265791 : fixed breakage in ods export filter due to rebase to m38.
2008-12-23 16:41:49 +0100 kohei r265787 : CWS-TOOLING: rebase CWS scsheetprotection02 to trunk@265758 (milestone: DEV300:m38)
2008-12-23 05:37:47 +0100 kohei r265768 : deliberately forget document and sheet passwords when importing from or
exporting to excel, to emulate the current behavior.
2008-12-23 05:12:59 +0100 kohei r265767 : removed commented-out unused method ScDocument::SetAutoFilterFlags().
2008-12-23 05:05:19 +0100 kohei r265766 : removed one duplicate method and made associated changes with the removal,
and a little more code cleanup.
2008-12-23 04:24:58 +0100 kohei r265765 : a typo in in-line comment
2008-12-23 04:23:08 +0100 kohei r265764 : remove fprintf statement that blatantly prints out document encryption
password to stdout. not a good practice.
2008-12-23 04:14:21 +0100 kohei r265763 : we actually don't want to clear all options, because if we do, then
we would no longer be able to select any cells on a protected sheet.
2008-12-23 04:07:10 +0100 kohei r265762 : * minor code cleanup (indentation inconsistencies & use of tab)
* fixed unprotecting a sheet with password to make it work again.
2008-12-23 03:22:50 +0100 kohei r265761 : reverted all the new functionalities to the existing ones, while keeping the new code in
as much as I could.
2008-12-22 23:11:08 +0100 kohei r265760 : in xls export filter, renamed two unknown records into records of known name.
2008-12-22 22:34:50 +0100 kohei r265759 : temporarily disable password capability on file export for MS Excel 97.
2008-12-22 17:01:21 +0100 kohei r265754 : CWS-TOOLING: rebase CWS scsheetprotection02 to trunk@264807 (milestone: DEV300:m37)
2008-11-26 03:12:58 +0100 kohei r264335 : recovered a method that was actually used.
2008-11-25 21:51:10 +0100 kohei r264334 : CWS-TOOLING: rebase CWS scsheetprotection02 to trunk@264325 (milestone: DEV300:m36)
2008-10-08 19:57:35 +0200 kohei r262094 : changed description string to make it less technical.
2008-10-01 05:56:58 +0200 kohei r261986 : migrated from the cvs-based cws.
2008-10-01 05:55:19 +0200 kohei r261985 : migrated from the cvs-based cws.
2008-10-01 05:55:00 +0200 kohei r261984 : migrated from the cvs-based cws.
2009-07-01 08:58:41 +00:00
|
|
|
aDocument.CopyTabProtection(nAdjSource, nDestTab);
|
2003-04-28 14:44:31 +00:00
|
|
|
|
|
|
|
if (bRecord)
|
|
|
|
{
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SvShorts aSrcList;
|
|
|
|
SvShorts aDestList;
|
2003-04-28 14:44:31 +00:00
|
|
|
aSrcList.Insert(nSrcTab,0);
|
|
|
|
aDestList.Insert(nDestTab,0);
|
|
|
|
GetUndoManager()->AddUndoAction(
|
|
|
|
new ScUndoCopyTab( this, aSrcList, aDestList ) );
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Broadcast( ScTablesHint( SC_TAB_COPIED, nSrcTab, nDestTab ) );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ( aDocument.GetChangeTrack() )
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
if ( nSrcTab<nDestTab && nDestTab!=SC_TAB_APPEND )
|
|
|
|
nDestTab--;
|
|
|
|
|
|
|
|
if ( nSrcTab == nDestTab )
|
|
|
|
{
|
|
|
|
//! allow only for api calls?
|
|
|
|
return TRUE; // nothing to do, but valid
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!aDocument.MoveTab( nSrcTab, nDestTab ))
|
|
|
|
return FALSE;
|
|
|
|
else if (bRecord)
|
|
|
|
{
|
INTEGRATION: CWS rowlimit (1.10.178); FILE MERGED
2004/04/29 16:31:42 er 1.10.178.6: RESYNC: (1.10-1.11); FILE MERGED
2004/03/25 21:36:02 er 1.10.178.5: #i1967# use ValidCol,ValidRow,ValidTab
2004/02/27 11:01:40 er 1.10.178.4: #i1967# type correctness
2004/02/25 01:17:53 er 1.10.178.3: #i1967# type correctness
2004/02/13 11:33:23 er 1.10.178.2: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004/01/14 15:50:12 er 1.10.178.1: #i1967# SCCOL,SCROW,SCTAB replace USHORT; SCsCOL,SCsROW,SCsTAB replace short
2004-06-04 10:24:25 +00:00
|
|
|
SvShorts aSrcList;
|
|
|
|
SvShorts aDestList;
|
2000-09-18 16:07:07 +00:00
|
|
|
aSrcList.Insert(nSrcTab,0);
|
|
|
|
aDestList.Insert(nDestTab,0);
|
|
|
|
GetUndoManager()->AddUndoAction(
|
|
|
|
new ScUndoMoveTab( this, aSrcList, aDestList ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
Broadcast( ScTablesHint( SC_TAB_MOVED, nSrcTab, nDestTab ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
PostPaintGridAll();
|
|
|
|
PostPaintExtras();
|
|
|
|
aModificator.SetDocumentModified();
|
|
|
|
SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-03-19 15:12:47 +00:00
|
|
|
IMPL_LINK( ScDocShell, RefreshDBDataHdl, ScRefreshTimer*, pRefreshTimer )
|
2001-04-21 19:31:39 +00:00
|
|
|
{
|
|
|
|
ScDBDocFunc aFunc(*this);
|
|
|
|
|
|
|
|
BOOL bContinue = TRUE;
|
2004-03-19 15:12:47 +00:00
|
|
|
ScDBData* pDBData = static_cast<ScDBData*>(pRefreshTimer);
|
2001-04-21 19:31:39 +00:00
|
|
|
ScImportParam aImportParam;
|
|
|
|
pDBData->GetImportParam( aImportParam );
|
|
|
|
if (aImportParam.bImport && !pDBData->HasImportSelection())
|
|
|
|
{
|
|
|
|
ScRange aRange;
|
|
|
|
pDBData->GetArea( aRange );
|
2002-08-12 15:56:31 +00:00
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> xResultSet;
|
2002-08-08 12:05:31 +00:00
|
|
|
bContinue = aFunc.DoImport( aRange.aStart.Tab(), aImportParam, xResultSet, NULL, TRUE, FALSE ); //! Api-Flag as parameter
|
2001-04-21 19:31:39 +00:00
|
|
|
// internal operations (sort, query, subtotal) only if no error
|
|
|
|
if (bContinue)
|
|
|
|
{
|
|
|
|
aFunc.RepeatDB( pDBData->GetName(), TRUE, TRUE );
|
|
|
|
RefreshPivotTables(aRange);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return bContinue != 0;
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|