Files
libreoffice/sc/source/ui/undo/undoutil.cxx
Jens-Heiner Rechtien 9ae5a91f79 initial import
2000-09-18 16:07:07 +00:00

230 lines
7.2 KiB
C++

/*************************************************************************
*
* $RCSfile: undoutil.cxx,v $
*
* $Revision: 1.1.1.1 $
*
* last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
// System - Includes -----------------------------------------------------
#ifdef PCH
#include "ui_pch.hxx"
#endif
#pragma hdrstop
#ifndef PCH
#include <segmentc.hxx>
#endif
// INCLUDE ---------------------------------------------------------------
#include "undoutil.hxx"
#include "docsh.hxx"
#include "tabvwsh.hxx"
#include "document.hxx"
#include "dbcolect.hxx"
#include "globstr.hrc"
#include "global.hxx"
// STATIC DATA -----------------------------------------------------------
SEG_EOFGLOBALS()
#pragma SEG_FUNCDEF(undoutil_01)
void ScUndoUtil::MarkSimpleBlock( ScDocShell* pDocShell,
USHORT nStartX, USHORT nStartY, USHORT nStartZ,
USHORT nEndX, USHORT nEndY, USHORT nEndZ )
{
ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
if (pViewShell)
{
USHORT nViewTab = pViewShell->GetViewData()->GetTabNo();
if ( nViewTab < nStartZ || nViewTab > nEndZ )
pViewShell->SetTabNo( nStartZ );
pViewShell->DoneBlockMode();
pViewShell->MoveCursorAbs( nStartX, nStartY, SC_FOLLOW_JUMP, FALSE, FALSE );
pViewShell->InitOwnBlockMode();
pViewShell->GetViewData()->GetMarkData().
SetMarkArea( ScRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ) );
}
}
#pragma SEG_FUNCDEF(undoutil_02)
void ScUndoUtil::MarkSimpleBlock( ScDocShell* pDocShell,
const ScTripel& rBlockStart,
const ScTripel& rBlockEnd )
{
MarkSimpleBlock( pDocShell, rBlockStart.GetCol(), rBlockStart.GetRow(), rBlockStart.GetTab(),
rBlockEnd.GetCol(), rBlockEnd.GetRow(), rBlockEnd.GetTab() );
}
#pragma SEG_FUNCDEF(undoutil_05)
void ScUndoUtil::MarkSimpleBlock( ScDocShell* pDocShell,
const ScRange& rRange )
{
MarkSimpleBlock( pDocShell, rRange.aStart.Col(), rRange.aStart.Row(), rRange.aStart.Tab(),
rRange.aEnd.Col(), rRange.aEnd.Row(), rRange.aEnd.Tab() );
}
#pragma SEG_FUNCDEF(undoutil_03)
ScDBData* ScUndoUtil::GetOldDBData( ScDBData* pUndoData, ScDocument* pDoc, USHORT nTab,
USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 )
{
ScDBData* pRet = pDoc->GetDBAtArea( nTab, nCol1, nRow1, nCol2, nRow2 );
if (!pRet)
{
BOOL bWasTemp = FALSE;
if ( pUndoData )
{
String aName;
pUndoData->GetName( aName );
if ( aName == ScGlobal::GetRscString( STR_DB_NONAME ) )
bWasTemp = TRUE;
}
if (!bWasTemp)
DBG_ERROR("Undo: DB-Bereich nicht gefunden");
USHORT nIndex;
ScDBCollection* pColl = pDoc->GetDBCollection();
if (pColl->SearchName( ScGlobal::GetRscString( STR_DB_NONAME ), nIndex ))
pRet = (*pColl)[nIndex];
else
{
pRet = new ScDBData( ScGlobal::GetRscString( STR_DB_NONAME ), nTab,
nCol1,nRow1, nCol2,nRow2, TRUE,
pDoc->HasColHeader( nCol1,nRow1,nCol2,nRow2,nTab ) );
pColl->Insert( pRet );
}
}
return pRet;
}
#pragma SEG_FUNCDEF(undoutil_04)
void ScUndoUtil::PaintMore( ScDocShell* pDocShell,
const ScRange& rRange )
{
USHORT nCol1 = rRange.aStart.Col();
USHORT nRow1 = rRange.aStart.Row();
USHORT nCol2 = rRange.aEnd.Col();
USHORT nRow2 = rRange.aEnd.Row();
if (nCol1) --nCol1;
if (nRow1) --nRow1;
if (nCol2<MAXCOL) ++nCol2;
if (nRow2<MAXROW) ++nRow2;
pDocShell->PostPaint( nCol1,nRow1,rRange.aStart.Tab(),
nCol2,nRow2,rRange.aEnd.Tab(), PAINT_GRID );
}
/*------------------------------------------------------------------------
$Log: not supported by cvs2svn $
Revision 1.11 2000/09/17 14:09:28 willem.vandorp
OpenOffice header added.
Revision 1.10 2000/08/31 16:38:40 willem.vandorp
Header and footer replaced
Revision 1.9 1996/09/04 17:48:18 RJ
MarkSimpleBlock mit ScRange-Parameter
Rev 1.8 04 Sep 1996 19:48:18 RJ
MarkSimpleBlock mit ScRange-Parameter
Rev 1.7 19 Aug 1996 21:29:56 NN
Markierungen werden nicht mehr am Dokument gehalten
Rev 1.6 16 Aug 1996 13:52:14 RJ
kleine Umstellung in ::MarkSimpleBlock
Rev 1.5 10 Apr 1996 11:14:54 NN
MarkSimpleBlock: Tabelle umstellen
Rev 1.4 10 Oct 1995 12:21:26 NN
PaintMore
Rev 1.3 03 Feb 1995 09:45:34 GT
Umstellung auf Resource-Strings
Rev 1.2 19 Jan 1995 18:51:20 NN
GetOldDBArea
Rev 1.1 18 Jan 1995 15:06:08 TRI
Pragmas zur Segementierung eingebaut
Rev 1.0 12 Jan 1995 12:19:10 NN
Initial revision.
------------------------------------------------------------------------*/
#pragma SEG_EOFMODULE