/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the 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; sal_Int16 nCharSet; sal_Int16 nFamily; sal_Int16 nPitch; sal_Int16 nWeight; sal_Int16 nItalic; SmFontFormat(); SmFontFormat( const Font &rFont ); const Font GetFont() const; sal_Bool operator == ( const SmFontFormat &rFntFmt ) const; }; struct SmFntFmtListEntry { String aId; SmFontFormat aFntFmt; SmFntFmtListEntry( const String &rId, const SmFontFormat &rFntFmt ); }; class SmFontFormatList { std::deque aEntries; sal_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, sal_Bool bAdd ); const String GetFontFormatId( size_t nPos ) const; const String GetNewFontFormatId() const; size_t GetCount() const { return aEntries.size(); } sal_Bool IsModified() const { return bModified; } void SetModified( sal_Bool bVal ) { bModified = bVal; } }; ///////////////////////////////////////////////////////////////// class SmMathConfig : public utl::ConfigItem { SmFormat * pFormat; SmCfgOther * pOther; SmFontFormatList * pFontFormatList; SmSymbolManager * pSymbolMgr; sal_Bool bIsOtherModified; sal_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( sal_Bool &rbItem, sal_Bool bNewVal ); protected: void LoadOther(); void SaveOther(); void LoadFormat(); void SaveFormat(); void LoadFontFormatList(); void SaveFontFormatList(); void SetOtherModified( sal_Bool bVal ); inline sal_Bool IsOtherModified() const { return bIsOtherModified; } void SetFormatModified( sal_Bool bVal ); inline sal_Bool IsFormatModified() const { return bIsFormatModified; } void SetFontFormatListModified( sal_Bool bVal ); inline sal_Bool IsFontFormatListModified() const { return pFontFormatList ? pFontFormatList->IsModified(): sal_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, sal_Bool bSaveFontFormatList = sal_False ); sal_Bool IsPrintTitle() const; void SetPrintTitle( sal_Bool bVal ); sal_Bool IsPrintFormulaText() const; void SetPrintFormulaText( sal_Bool bVal ); sal_Bool IsPrintFrame() const; void SetPrintFrame( sal_Bool bVal ); SmPrintSize GetPrintSize() const; void SetPrintSize( SmPrintSize eSize ); sal_uInt16 GetPrintZoomFactor() const; void SetPrintZoomFactor( sal_uInt16 nVal ); sal_Bool IsSaveOnlyUsedSymbols() const; void SetSaveOnlyUsedSymbols( sal_Bool bVal ); sal_Bool IsIgnoreSpacesRight() const; void SetIgnoreSpacesRight( sal_Bool bVal ); sal_Bool IsAutoRedraw() const; void SetAutoRedraw( sal_Bool bVal ); sal_Bool IsShowFormulaCursor() const; void SetShowFormulaCursor( sal_Bool bVal ); }; ///////////////////////////////////////////////////////////////// #endif