/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: cfgitem.hxx,v $ * $Revision: 1.14 $ * * 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 * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifdef _MSC_VER #pragma hdrstop #endif #ifndef _MATH_CFGITEM_HXX_ #define _MATH_CFGITEM_HXX_ #include #include #include #include #include #include #include #include #include #include #include using namespace com::sun::star; class SmSym; class SmFormat; class Font; struct SmCfgOther; ///////////////////////////////////////////////////////////////// struct SmFontFormat { String aName; INT16 nCharSet; INT16 nFamily; INT16 nPitch; INT16 nWeight; INT16 nItalic; SmFontFormat(); SmFontFormat( const Font &rFont ); const Font GetFont() const; BOOL operator == ( const SmFontFormat &rFntFmt ) const; }; struct SmFntFmtListEntry { String aId; SmFontFormat aFntFmt; SmFntFmtListEntry( const String &rId, const SmFontFormat &rFntFmt ); }; SV_DECL_OBJARR( SmFntFmtListEntryArr, SmFntFmtListEntry, 8, 8 ) class SmFontFormatList { SmFntFmtListEntryArr aEntries; BOOL bModified; // disallow copy-constructor and assignment-operator for now SmFontFormatList( const SmFontFormatList & ); SmFontFormatList & operator = ( const SmFontFormatList & ); public: SmFontFormatList(); void Clear(); void AddFontFormat( const String &rFntFmtId, const SmFontFormat &rFntFmt ); void RemoveFontFormat( const String &rFntFmtId ); const SmFontFormat * GetFontFormat( const String &rFntFmtId ) const; const SmFontFormat * GetFontFormat( USHORT nPos ) const; const String GetFontFormatId( const SmFontFormat &rFntFmt ) const; const String GetFontFormatId( const SmFontFormat &rFntFmt, BOOL bAdd ); const String GetFontFormatId( USHORT nPos ) const; const String GetNewFontFormatId() const; USHORT GetCount() const { return aEntries.Count(); } BOOL IsModified() const { return bModified; } void SetModified( BOOL bVal ) { bModified = bVal; } }; ///////////////////////////////////////////////////////////////// class SmMathConfig : public utl::ConfigItem { SmFormat * pFormat; SmCfgOther * pOther; SmFontFormatList * pFontFormatList; SmSymSetManager * pSymSetMgr; BOOL bIsOtherModified; BOOL bIsFormatModified; // disallow copy-constructor and assignment-operator for now SmMathConfig( const SmMathConfig & ); SmMathConfig & operator = ( const SmMathConfig & ); void StripFontFormatList( const std::vector< SmSym > &rSymbols ); void Save(); void ReadSymbol( SmSym &rSymbol, const rtl::OUString &rSymbolName, const rtl::OUString &rBaseNode ) const; void ReadFontFormat( SmFontFormat &rFontFormat, const rtl::OUString &rSymbolName, const rtl::OUString &rBaseNode ) const; void SetOtherIfNotEqual( BOOL &rbItem, BOOL bNewVal ); protected: void LoadOther(); void SaveOther(); void LoadFormat(); void SaveFormat(); void LoadFontFormatList(); void SaveFontFormatList(); void SetOtherModified( BOOL bVal ); inline BOOL IsOtherModified() const { return bIsOtherModified; } void SetFormatModified( BOOL bVal ); inline BOOL IsFormatModified() const { return bIsFormatModified; } void SetFontFormatListModified( BOOL bVal ); inline BOOL IsFontFormatListModified() const { return pFontFormatList ? pFontFormatList->IsModified(): FALSE; } SmFontFormatList & GetFontFormatList(); const SmFontFormatList & GetFontFormatList() const { return ((SmMathConfig *) this)->GetFontFormatList(); } public: SmMathConfig(); virtual ~SmMathConfig(); // utl::ConfigItem virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString > &rPropertyNames ); virtual void Commit(); // make some protected functions of utl::ConfigItem public //using utl::ConfigItem::GetNodeNames; //using utl::ConfigItem::GetProperties; //using utl::ConfigItem::PutProperties; //using utl::ConfigItem::SetSetProperties; //using utl::ConfigItem::ReplaceSetProperties; //using utl::ConfigItem::GetReadOnlyStates; SmSymSetManager & GetSymSetManager(); void GetSymbols( std::vector< SmSym > &rSymbols ) const; void SetSymbols( const std::vector< SmSym > &rNewSymbols ); const SmFormat & GetStandardFormat() const; void SetStandardFormat( const SmFormat &rFormat, BOOL bSaveFontFormatList = FALSE ); BOOL IsPrintTitle() const; void SetPrintTitle( BOOL bVal ); BOOL IsPrintFormulaText() const; void SetPrintFormulaText( BOOL bVal ); BOOL IsPrintFrame() const; void SetPrintFrame( BOOL bVal ); SmPrintSize GetPrintSize() const; void SetPrintSize( SmPrintSize eSize ); USHORT GetPrintZoomFactor() const; void SetPrintZoomFactor( USHORT nVal ); BOOL IsIgnoreSpacesRight() const; void SetIgnoreSpacesRight( BOOL bVal ); BOOL IsAutoRedraw() const; void SetAutoRedraw( BOOL bVal ); BOOL IsShowFormulaCursor() const; void SetShowFormulaCursor( BOOL bVal ); }; ///////////////////////////////////////////////////////////////// #endif