diff options
Diffstat (limited to 'starmath/source/cfgitem.hxx')
-rw-r--r-- | starmath/source/cfgitem.hxx | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/starmath/source/cfgitem.hxx b/starmath/source/cfgitem.hxx new file mode 100644 index 000000000000..8e3330a6466f --- /dev/null +++ b/starmath/source/cfgitem.hxx @@ -0,0 +1,210 @@ +/************************************************************************* + * + * 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. + * + ************************************************************************/ + +#ifdef _MSC_VER +#pragma hdrstop +#endif + +#ifndef _MATH_CFGITEM_HXX_ +#define _MATH_CFGITEM_HXX_ + +#include <deque> +#include <vector> + +#include <com/sun/star/beans/PropertyValues.hpp> +#include <com/sun/star/uno/Sequence.hxx> +#include <com/sun/star/uno/Any.h> + +#include <tools/solar.h> +#include <rtl/ustring.hxx> +#include <unotools/configitem.hxx> +#include <vcl/timer.hxx> + +#include <symbol.hxx> +#include <types.hxx> + +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 ); +}; + +class SmFontFormatList +{ + std::deque<SmFntFmtListEntry> 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( size_t nPos ) const; + const String GetFontFormatId( const SmFontFormat &rFntFmt ) const; + const String GetFontFormatId( const SmFontFormat &rFntFmt, BOOL bAdd ); + const String GetFontFormatId( size_t nPos ) const; + const String GetNewFontFormatId() const; + size_t GetCount() const { return aEntries.size(); } + + BOOL IsModified() const { return bModified; } + void SetModified( BOOL bVal ) { bModified = bVal; } +}; + + +///////////////////////////////////////////////////////////////// + +class SmMathConfig : public utl::ConfigItem +{ + SmFormat * pFormat; + SmCfgOther * pOther; + SmFontFormatList * pFontFormatList; + SmSymbolManager * pSymbolMgr; + 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; + + SmSymbolManager & GetSymbolManager(); + 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 + |