office-gobmx/rsc/inc/rscdb.hxx
2011-08-31 10:43:24 +01:00

358 lines
16 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* 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.
*
* 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).
*
* 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.
*
************************************************************************/
#ifndef _RSCDB_HXX
#define _RSCDB_HXX
#include <rscall.h>
#include <rsckey.hxx>
#include <rscconst.hxx>
#include <rscflag.hxx>
#include <rscrange.hxx>
#include <rscstr.hxx>
#include <rscarray.hxx>
#include <rscdef.hxx>
#include <vector>
#include <map>
class RscError;
class RscTupel;
class RscCont;
class RscCmdLine;
struct WriteRcContext
{
FILE * fOutput;
rtl::OString aOutputRc;
rtl::OString aOutputSysList;
RscCmdLine* pCmdLine;
};
/****************** R s c T y p C o n ************************************/
// Liste die alle Basistypen enthaelt
typedef ::std::vector< RscTop* > RscBaseList;
// Tabelle fuer Systemabhaengige Resourcen
struct RscSysEntry
{
sal_uInt32 nKey;
sal_uInt32 nRscTyp;
ByteString aFileName;
sal_uInt32 nTyp;
sal_uInt32 nRefId;
};
typedef ::std::vector< RscSysEntry* > RscSysList;
class RscTypCont
{
CharSet nSourceCharSet;
sal_uInt32 nMachineId; // Globaler Maschinentyp
RSCBYTEORDER_TYPE nByteOrder; // Intel oder
ByteString aLanguage; // output language
std::vector< sal_uInt32 > aLangFallbacks; // language fallback list (entry 0 is language itself)
ByteString aSearchPath; // Suchen der Bitmap, Icon, Pointer
ByteString aSysSearchPath; // aSearchPath plus language specific paths
sal_uInt32 nUniqueId; // eindeutiger Id fuer Systemresourcen
sal_uLong nFilePos; // Position in der Datei ( MTF )
sal_uInt32 nPMId; // eindeutiger Id fuer PM-Rseourcefile
// muss groesser als RSC_VERSIONCONTROL_ID sein
RscTop * pRoot; // Zeiger auf die Wurzel vom Typenbaum
RSCINST aVersion; // Versionskontrollinstanz
RscBaseList aBaseLst; // Liste der einfachen Resourceklasse
RscSysList aSysLst; // Liste der Systemresourcen
Atom nWinBitVarId; // Name der Winbitvariablen
Atom nBorderId;
Atom nHideId;
Atom nClipChildrenId;
Atom nSizeableId;
Atom nMoveableId;
Atom nMinimizeId;
Atom nMaximizeId;
Atom nCloseableId;
Atom nStdPopupId;
Atom nAppId;
Atom nTabstopId;
Atom nGroupId;
Atom nSysmodalId;
Atom nLeftId;
Atom nCenterId;
Atom nRightId;
Atom nTopId;
Atom nVCenterId;
Atom nBottomId;
Atom nHScrollId;
Atom nVScrollId;
Atom nSortId;
Atom nDefaultId;
Atom nSVLookId;
Atom nRepeatId;
Atom nDropDownId;
Atom nPassWordId;
Atom nReadOnlyId;
Atom nAutoSizeId;
Atom nSpinId;
Atom nTabControlId;
Atom nSimpleModeId;
Atom nDragId;
Atom nScrollId;
Atom nZoomableId;
Atom nHideWhenDeactivateId;
Atom nAutoHScrollId;
Atom nAutoVScrollId;
Atom nDDExtraWidthId;
Atom nWordBreakId;
Atom nLeftLabelId;
Atom nHasLinesId;
Atom nHasButtonsId;
Atom nRectStyleId;
Atom nLineSpacingId;
Atom nSmallStyleId;
Atom nEnableResizingId;
Atom nDockableId;
Atom nScaleId;
Atom nIgnoreTabId;
Atom nNoSplitDrawId;
Atom nTopImageId;
Atom nNoLabelId;
Atom nVertId;
Atom nSysWinId;
void Init(); // Initialisiert Klassen und Tabelle
void SETCONST( RscConst *, const char *, sal_uInt32 );
void SETCONST( RscConst *, Atom, sal_uInt32 );
RscEnum * InitLangType();
RscEnum * InitFieldUnitsType();
RscEnum * InitTimeFieldFormat();
RscEnum * InitColor();
RscEnum * InitMapUnit();
RscEnum * InitKey();
RscEnum * InitTriState();
RscEnum * InitMessButtons();
RscEnum * InitMessDefButton();
RscTupel * InitGeometry();
RscArray * InitLangGeometry( RscTupel * pGeo );
RscArray * InitSystemGeometry( RscTupel * pGeo );
RscCont * InitStringList();
RscArray * InitLangStringList( RscCont * pStrLst );
RscTupel * InitStringTupel();
RscTupel * InitStringLongTupel();
RscCont * InitStringTupelList( RscTupel * pStringTupel );
RscCont * InitStringLongTupelList( RscTupel * pStringLongTupel );
RscArray * InitLangStringTupelList( RscCont * pStrTupelLst );
RscArray * InitLangStringLongTupelList( RscCont * pStrLongTupelLst );
RscTop * InitClassMgr();
RscTop * InitClassString( RscTop * pSuper );
RscTop * InitClassBitmap( RscTop * pSuper );
RscTop * InitClassColor( RscTop * pSuper, RscEnum * pColor );
RscTop * InitClassImage( RscTop * pSuper, RscTop *pClassBitmap,
RscTop * pClassColor );
RscTop * InitClassImageList( RscTop * pSuper, RscTop *pClassBitmap,
RscTop * pClassColor, RscCont * pStrLst );
RscTop * InitClassWindow( RscTop * pSuper, RscEnum * pMapUnit,
RscArray * pLangGeo );
RscTop * InitClassSystemWindow( RscTop * pSuper );
RscTop * InitClassWorkWindow( RscTop * pSuper );
RscTop * InitClassModalDialog( RscTop * pSuper );
RscTop * InitClassModelessDialog( RscTop * pSuper );
RscTop * InitClassControl( RscTop * pSuper );
RscTop * InitClassCheckBox( RscTop * pSuper );
RscTop * InitClassPushButton( RscTop * pSuper );
RscTop * InitClassTriStateBox( RscTop * pSuper, RscEnum * pTriState );
RscTop * InitClassMenuButton( RscTop * pSuper, RscTop * pClasMenu );
RscTop * InitClassImageButton( RscTop * pSuper, RscTop * pClassImage,
RscEnum * pTriState );
RscTop * InitClassEdit( RscTop * pSuper );
RscTop * InitClassMultiLineEdit( RscTop * pSuper );
RscTop * InitClassScrollBar( RscTop * pSuper );
RscTop * InitClassListBox( RscTop * pSuper, RscArray * pStrLst );
RscTop * InitClassMultiListBox( RscTop * pSuper );
RscTop * InitClassComboBox( RscTop * pSuper, RscArray * pStrLst );
RscTop * InitClassFixedText( RscTop * pSuper );
RscTop * InitClassFixedBitmap( RscTop * pSuper, RscTop * pClassBitmap );
RscTop * InitClassFixedImage( RscTop * pSuper, RscTop * pClassImage );
RscTop * InitClassRadioButton( RscTop * pSuper );
RscTop * InitClassImageRadioButton( RscTop * pSuper, RscTop * pClassImage );
RscTop * InitClassKeyCode( RscTop * pSuper, RscEnum * pKey );
RscTop * InitClassAccelItem( RscTop * pSuper, RscTop * pKeyCode );
RscTop * InitClassAccel( RscTop * pSuper, RscTop * pClassAccelItem );
RscTop * InitClassMenuItem( RscTop * pSuper, RscTop * pClassBitmap,
RscTop * pClassKeyCode );
RscTop * InitClassMenu( RscTop * pSuper, RscTop * pMenuItem );
RscTop * InitClassMessBox( RscTop * pSuper,
RscEnum * pMessButtons,
RscEnum * pMessDefButton );
RscTop * InitClassSplitter( RscTop * pSuper );
RscTop * InitClassSplitWindow( RscTop * pSuper );
RscTop * InitClassTime( RscTop * pSuper );
RscTop * InitClassDate( RscTop * pSuper );
RscTop * InitClassPatternFormatter( RscTop * pSuper );
RscTop * InitClassNumericFormatter( RscTop * pSuper );
RscTop * InitClassMetricFormatter( RscTop * pSuper,
RscEnum * pFieldUnits );
RscTop * InitClassCurrencyFormatter( RscTop * pSuper,
RscEnum * pFieldUnits );
RscTop * InitClassDateFormatter( RscTop * pSuper, RscTop * pClassDate );
RscTop * InitClassTimeFormatter( RscTop * pSuper, RscTop * pClassTime,
RscEnum * pTimeFieldFormat );
RscTop * InitClassSpinField( RscTop * pSuper );
RscTop * InitClassPatternField( RscTop * pSuper );
RscTop * InitClassNumericField( RscTop * pSuper );
RscTop * InitClassMetricField( RscTop * pSuper );
RscTop * InitClassCurrencyField( const char * pClassName, sal_uInt32 nRT,
RscTop * pSuper );
RscTop * InitClassDateField( RscTop * pSuper, RscTop * pClassDate );
RscTop * InitClassTimeField( RscTop * pSuper, RscTop * pClassTime );
RscTop * InitClassPatternBox( RscTop * pSuper );
RscTop * InitClassNumericBox( RscTop * pSuper );
RscTop * InitClassMetricBox( RscTop * pSuper );
RscTop * InitClassCurrencyBox( const char * pClassName, sal_uInt32 nRT,
RscTop * pSuper );
RscTop * InitClassDateBox( RscTop * pSuper, RscTop * pClassDate );
RscTop * InitClassTimeBox( RscTop * pSuper, RscTop * pClassTime );
RscTop * InitClassDockingWindow( RscTop * pSuper,
RscEnum * pMapUnit );
RscTop * InitClassToolBoxItem( RscTop * pSuper, RscTop * pClassBitmap,
RscTop * pClassImage,
RscEnum * pTriState );
RscTop * InitClassToolBox( RscTop * pSuper, RscTop * pClassToolBoxItem,
RscTop * pClassImageList );
RscTop * InitClassStatusBar( RscTop * pSuper );
RscTop * InitClassMoreButton( RscTop * pSuper, RscEnum * pMapUnit );
RscTop * InitClassFloatingWindow( RscTop * pSuper,
RscEnum * pMapUnit );
RscTop * InitClassTabControlItem( RscTop * pSuper,
RscTop * pClassTabPage );
RscTop * InitClassTabControl( RscTop * pSuper,
RscTop * pClassTabControlItem );
RscTop * InitClassSfxStyleFamilyItem( RscTop * pSuper,
RscTop * pClassBitmap,
RscTop * pClassImage,
RscArray * pStrLst );
RscTop * InitClassSfxTemplateDialog( RscTop * pSuper,
RscTop * pStyleFamily );
RscTop * InitClassSfxSlotInfo( RscTop * pSuper );
void InsWinBit( RscTop * pClass, const ByteString & rName,
Atom nVal );
void WriteInc( FILE * fOutput, sal_uLong lKey );
public:
RscBool aBool;
RscRange aShort;
RscRange aUShort;
RscLongRange aLong;
RscLongEnumRange aEnumLong;
RscIdRange aIdUShort;
RscIdRange aIdNoZeroUShort;
RscBreakRange aNoZeroShort;
RscRange a1to12Short;
RscRange a0to23Short;
RscRange a1to31Short;
RscRange a0to59Short;
RscRange a0to99Short;
RscRange a0to9999Short;
RscIdRange aIdLong;
RscString aString;
RscString aStringLiteral;
RscFlag aWinBits;
RscLangEnum aLangType;
RscLangArray aLangString;
RscLangArray aLangShort;
Atom nAcceleratorType;
RscError* pEH; // Fehlerhandler
RscNameTable aNmTb; // Tabelle fuer Namen
RscFileTab aFileTab; // Tabelle der Dateinamen
sal_uInt32 nFlags;
std::map<sal_uInt64, sal_uLong> aIdTranslator; //Ordnet Resourcetypen und Id's einen Id zu
//(unter PM), oder eine Dateiposition (MTF)
RscTypCont( RscError *, RSCBYTEORDER_TYPE, const ByteString & rSearchPath, sal_uInt32 nFlags );
~RscTypCont();
Atom AddLanguage( const char* );
sal_Bool IsPreload() const
{ return (nFlags & PRELOAD_FLAG) ? sal_True : sal_False; }
sal_Bool IsSmart() const
{ return (nFlags & SMART_FLAG) ? sal_True : sal_False; }
sal_Bool IsSysResTest() const
{ return (nFlags & NOSYSRESTEST_FLAG) ? sal_False : sal_True; }
sal_Bool IsSrsDefault() const
{ return (nFlags & SRSDEFAULT_FLAG) ? sal_True : sal_False; }
rtl::OString ChangeLanguage(const rtl::OString & rNewLang);
const std::vector< sal_uInt32 >& GetFallbacks() const
{ return aLangFallbacks; }
RSCBYTEORDER_TYPE GetByteOrder() const { return nByteOrder; }
CharSet GetSourceCharSet() const { return nSourceCharSet; }
CharSet SetSourceCharSet( CharSet aCharSet )
{
CharSet aOld = nSourceCharSet;
nSourceCharSet = aCharSet;
return aOld;
}
void SetSearchPath( const ByteString & rStr) { aSearchPath = rStr; }
ByteString GetSearchPath() const { return aSearchPath; }
void SetSysSearchPath( const ByteString& rStr ) { aSysSearchPath = rStr; }
ByteString GetSysSearchPath() const { return aSysSearchPath; }
void InsertType( RscTop * pType )
{
aBaseLst.push_back( pType );
}
RscTop * SearchType( Atom nTypId );
// loescht alle Resourceobjekte diese Datei
void Delete( sal_uLong lFileKey );
RscTop * GetRoot() { return( pRoot ); };
sal_uInt32 PutSysName( sal_uInt32 nRscTyp, char * pName, sal_uInt32 nConst,
sal_uInt32 nId, sal_Bool bFirst );
void ClearSysNames();
ERRTYPE WriteRc( WriteRcContext& rContext );
void WriteSrc( FILE * fOutput, sal_uLong nFileIndex,
CharSet nCharSet, sal_Bool bName = sal_True );
ERRTYPE WriteHxx( FILE * fOutput, sal_uLong nFileKey);
ERRTYPE WriteCxx( FILE * fOutput, sal_uLong nFileKey,
const ByteString & rHxxName );
void WriteSyntax( FILE * fOutput );
void WriteRcCtor( FILE * fOutput );
sal_uInt32 PutTranslatorKey( sal_uInt64 nKey );
void IncFilePos( sal_uLong nOffset ){ nFilePos += nOffset; }
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */