office-gobmx/sc/inc/scextopt.hxx
2000-09-28 08:28:36 +00:00

287 lines
8.6 KiB
C++

/*************************************************************************
*
* $RCSfile: scextopt.hxx,v $
*
* $Revision: 1.2 $
*
* last change: $Author: gt $ $Date: 2000-09-28 09:28:03 $
*
* 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): _______________________________________
*
*
************************************************************************/
#ifndef _SCEXTOPT_HXX
#define _SCEXTOPT_HXX
#ifndef SC_SCGLOB_HXX
#include "global.hxx"
#endif
#ifndef _LIST_HXX
#include <tools/list.hxx>
#endif
#ifndef _STRING_HXX
#include <tools/string.hxx>
#endif
class ColRowSettings;
// ACHTUNG1: einzelne Einstellungen sollten stimmen
// -> Absicherung nur ueber Assertions
// ACHTUNG2: Plausibilitaet der Einstellungen untereinander ist nicht
// gewaehrleistet
struct ScExtTabOptions
{
// Split -Info
UINT16 nTabNum;
UINT16 nSplitX; // horiz. Pos. in Twips, 0 = kein Split
UINT16 nSplitY; // vert. Pos. ~
UINT16 nLeftSplitCol; // linke sichtbare Col im rechten Teil
UINT16 nTopSplitRow; // obere sichtbare Row im unteren Teil
UINT16 nActPane; // 0: ur, 1: or, 2: ul, 3: ol
ScRange aLastSel; // letzte Selektion
BOOL bValidSel;
ScRange aDim; // original Excel-Groesse
BOOL bValidDim;
BOOL bFrozen; // = TRUE -> nSplitX / nSplitY Anzahl
// sichtbarer Col/Row links bzw. oben
inline ScExtTabOptions( void );
inline ScExtTabOptions( const ScRange& rLastSel );
inline ScExtTabOptions( const ScExtTabOptions& rCpy );
inline void operator =( const ScExtTabOptions& rCpy );
void SetSelection( const ScRange& rSelection );
void SetDimension( const ScRange& rDim );
};
class CodenameList : protected List
{
// Code: colrowst.cxx
private:
protected:
public:
inline CodenameList( void );
CodenameList( const CodenameList& );
virtual ~CodenameList();
inline void Append( const String& );
inline const String* First( void );
inline const String* Next( void );
inline const String* Act( void ) const;
List::Count;
};
class ScExtDocOptions
{
// Code: colrowst.cxx
private:
friend ColRowSettings;
// Window -Info
ScExtTabOptions** ppExtTabOpts;
String* pCodenameWB;
CodenameList* pCodenames;
public:
UINT32 nLinkCnt; // Zaehlt die Rekursionstufe beim Laden
// von externen Dokumenten
UINT16 nActTab; // aktuelle Tabelle
UINT16 nVisLeftCol; // linke Col des sichtbaren Tabellenteils
UINT16 nVisTopRow; // rechte Row des sichtbaren Tabellenteils
Color* pGridCol; // Farbe Grid und Row-/Col-Heading
UINT16 nZoom; // in %
// Cursor
UINT16 nCurCol; // aktuelle Cursor-Position
UINT16 nCurRow;
double fColScale; // <= 0 -> invalid
// -------------------------------------------------------------------
ScExtDocOptions( void );
~ScExtDocOptions();
ScExtDocOptions& operator =( const ScExtDocOptions& rCpy );
void SetGridCol( BYTE nR, BYTE nG, BYTE nB );
void SetActTab( UINT16 nTab );
void SetVisCorner( UINT16 nCol, UINT16 nRow );
void SetCursor( UINT16 nCol, UINT16 nRow );
void SetZoom( UINT16 nZaehler, UINT16 nNenner );
void Add( const ColRowSettings& rCRS );
inline const ScExtTabOptions* GetExtTabOptions( const UINT16 nTabNum ) const;
inline const String* GetCodename( void ) const; // for Workbook globals
inline CodenameList* GetCodenames( void ); // for tables
void SetCodename( const String& ); // -> Workbook globals
void AddCodename( const String& ); // -> tables
};
inline CodenameList::CodenameList( void )
{
}
inline void CodenameList::Append( const String& r )
{
List::Insert( new String( r ), LIST_APPEND );
}
inline const String* CodenameList::First( void )
{
return ( const String* ) List::First();
}
inline const String* CodenameList::Next( void )
{
return ( const String* ) List::Next();
}
inline const String* CodenameList::Act( void ) const
{
return ( const String* ) List::GetCurObject();
}
inline ScExtTabOptions::ScExtTabOptions( void )
{
nSplitX = nSplitY = nLeftSplitCol = nTopSplitRow = nActPane = 0;
bFrozen = bValidSel = bValidDim = FALSE;
}
inline ScExtTabOptions::ScExtTabOptions( const ScRange& rLastSel ) : aLastSel( rLastSel )
{
nTabNum = nSplitX = nSplitY = nLeftSplitCol = nTopSplitRow = nActPane = 0;
bFrozen = bValidDim = FALSE;
bValidSel = TRUE;
}
inline ScExtTabOptions::ScExtTabOptions( const ScExtTabOptions& rCpy )
{
nTabNum = rCpy.nTabNum;
nSplitX = rCpy.nSplitX;
nSplitY = rCpy.nSplitY;
nLeftSplitCol = rCpy.nLeftSplitCol;
nTopSplitRow = rCpy.nTopSplitRow;
nActPane = rCpy.nActPane;
aLastSel = rCpy.aLastSel;
aDim = rCpy.aDim;
bFrozen = rCpy.bFrozen;
bValidSel = rCpy.bValidSel;
bValidDim = rCpy.bValidDim;
}
inline void ScExtTabOptions::operator =( const ScExtTabOptions& rCpy )
{
nTabNum = rCpy.nTabNum;
nSplitX = rCpy.nSplitX;
nSplitY = rCpy.nSplitY;
nLeftSplitCol = rCpy.nLeftSplitCol;
nTopSplitRow = rCpy.nTopSplitRow;
nActPane = rCpy.nActPane;
aLastSel = rCpy.aLastSel;
aDim = rCpy.aDim;
bFrozen = rCpy.bFrozen;
bValidSel = rCpy.bValidSel;
bValidDim = rCpy.bValidDim;
}
inline const ScExtTabOptions* ScExtDocOptions::GetExtTabOptions( const UINT16 nTab ) const
{
if( nTab <= MAXTAB )
return ppExtTabOpts[ nTab ];
else
return NULL;
}
inline const String* ScExtDocOptions::GetCodename( void ) const
{
return pCodenameWB;
}
inline CodenameList* ScExtDocOptions::GetCodenames( void )
{
return pCodenames;
}
#endif