From 47889e229cd51dd8a019d41dace6572e84771d18 Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Mon, 28 Sep 2009 10:46:54 +0000 Subject: 158766 avoid duplicating symbols in the catalog --- starmath/inc/dialog.hxx | 85 +++---- starmath/inc/smmod.hxx | 5 +- starmath/inc/symbol.hxx | 176 +++++--------- starmath/source/cfgitem.cxx | 28 +-- starmath/source/cfgitem.hxx | 6 +- starmath/source/dialog.cxx | 306 +++++++++-------------- starmath/source/document.cxx | 24 +- starmath/source/edit.cxx | 6 +- starmath/source/makefile.mk | 28 +-- starmath/source/node.cxx | 6 +- starmath/source/parse.cxx | 12 +- starmath/source/rect.cxx | 2 +- starmath/source/smdll.cxx | 2 +- starmath/source/smmod.cxx | 12 +- starmath/source/symbol.cxx | 559 +++++++++++-------------------------------- starmath/source/unomodel.cxx | 23 +- starmath/source/view.cxx | 24 +- 17 files changed, 427 insertions(+), 877 deletions(-) (limited to 'starmath') diff --git a/starmath/inc/dialog.hxx b/starmath/inc/dialog.hxx index a2814082a9e5..aefc11a60d8a 100644 --- a/starmath/inc/dialog.hxx +++ b/starmath/inc/dialog.hxx @@ -303,7 +303,7 @@ public: class SmShowSymbolSet : public Control { - SmSymSet aSymbolSet; + SymbolPtrVec_t aSymbolSet; ScrollBar aVScrollBar; Size aOutputSize; Link aSelectHdlLink; @@ -321,7 +321,7 @@ class SmShowSymbolSet : public Control public: SmShowSymbolSet(Window *pParent, const ResId& rResId); - void SetSymbolSet(const SmSymSet& rSymbolSet); + void SetSymbolSet(const SymbolPtrVec_t& rSymbolSet); void SelectSymbol(USHORT nSymbol); USHORT GetSelectSymbol() const { return nSelectSymbol; } @@ -363,8 +363,10 @@ class SmSymbolDialog : public ModalDialog PushButton aEditBtn; SmViewShell &rViewSh; - SmSymSetManager &rSymSetMgr; - const SmSymSet *pSymSet; + SmSymbolManager &rSymbolMgr; + + String aSymbolSetName; + SymbolPtrVec_t aSymbolSet; OutputDevice *pFontListDev; @@ -376,7 +378,7 @@ class SmSymbolDialog : public ModalDialog DECL_LINK(GetClickHdl, Button *); void FillSymbolSets(BOOL bDeleteText = TRUE); - void SetSymbolSetManager(SmSymSetManager &rMgr); + void SetSymbolSetManager(SmSymbolManager &rMgr); const SmSym *GetSymbol() const; void InitColor_Impl(); @@ -384,7 +386,7 @@ class SmSymbolDialog : public ModalDialog public: SmSymbolDialog(Window * pParent, OutputDevice *pFntListDevice, - SmSymSetManager &rSymSetMgr, SmViewShell &rViewShell, BOOL bFreeRes = TRUE); + SmSymbolManager &rSymbolMgr, SmViewShell &rViewShell, BOOL bFreeRes = TRUE); virtual ~SmSymbolDialog(); BOOL SelectSymbolSet(const XubString &rSymbolSetName); @@ -442,8 +444,8 @@ class SmSymDefineDialog : public ModalDialog Image aRigthArrow_Im; Image aRigthArrow_Im_HC; // hi-contrast version - SmSymSetManager aSymSetMgrCopy, - &rSymSetMgr; + SmSymbolManager aSymbolMgrCopy, + &rSymbolMgr; const SmSym *pOrigSymbol; const SubsetMap *pSubsetMap; @@ -465,7 +467,7 @@ class SmSymDefineDialog : public ModalDialog void FillFonts(BOOL bDeleteText = TRUE); void FillStyles(BOOL bDeleteText = TRUE); - void SetSymbolSetManager(const SmSymSetManager &rMgr); + void SetSymbolSetManager(const SmSymbolManager &rMgr); void SetFont(const XubString &rFontName, const XubString &rStyleName); void SetOrigSymbol(const SmSym *pSymbol, const XubString &rSymbolSetName); void UpdateButtons(); @@ -477,18 +479,18 @@ class SmSymDefineDialog : public ModalDialog BOOL SelectFont(const XubString &rFontName, BOOL bApplyFont); BOOL SelectStyle(const XubString &rStyleName, BOOL bApplyFont); - - SmSymSet *GetSymbolSet(const ComboBox &rComboBox); - inline const SmSymSet *GetSymbolSet(const ComboBox &rComboBox) const; - SmSym *GetSymbol(const ComboBox &rComboBox); - inline const SmSym *GetSymbol(const ComboBox &rComboBox) const; + SmSym * GetSymbol(const ComboBox &rComboBox); + const SmSym * GetSymbol(const ComboBox &rComboBox) const + { + return ((SmSymDefineDialog *) this)->GetSymbol(rComboBox); + } void InitColor_Impl(); virtual void DataChanged( const DataChangedEvent& rDCEvt ); public: - SmSymDefineDialog(Window *pParent, OutputDevice *pFntListDevice, SmSymSetManager &rMgr, BOOL bFreeRes = TRUE); + SmSymDefineDialog(Window *pParent, OutputDevice *pFntListDevice, SmSymbolManager &rMgr, BOOL bFreeRes = TRUE); ~SmSymDefineDialog(); using OutputDevice::SetFont; @@ -496,44 +498,31 @@ public: // Dialog virtual short Execute(); - inline BOOL SelectOldSymbolSet(const XubString &rSymbolSetName); - inline BOOL SelectOldSymbol(const XubString &rSymbolName); - inline BOOL SelectSymbolSet(const XubString &rSymbolSetName); - inline BOOL SelectSymbol(const XubString &rSymbolName); - BOOL SelectFont(const XubString &rFontName) { return SelectFont(rFontName, TRUE); } - BOOL SelectStyle(const XubString &rStyleName) { return SelectStyle(rStyleName, TRUE); }; - void SelectChar(xub_Unicode cChar); -}; - -inline const SmSymSet * SmSymDefineDialog::GetSymbolSet(const ComboBox &rComboBox) const -{ - return ((SmSymDefineDialog *) this)->GetSymbolSet(rComboBox); -} + BOOL SmSymDefineDialog::SelectOldSymbolSet(const XubString &rSymbolSetName) + { + return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE); + } -inline const SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox) const -{ - return ((SmSymDefineDialog *) this)->GetSymbol(rComboBox); -} + BOOL SmSymDefineDialog::SelectOldSymbol(const XubString &rSymbolName) + { + return SelectSymbol(aOldSymbols, rSymbolName, FALSE); + } -inline BOOL SmSymDefineDialog::SelectOldSymbolSet(const XubString &rSymbolSetName) -{ - return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE); -} + BOOL SmSymDefineDialog::SelectSymbolSet(const XubString &rSymbolSetName) + { + return SelectSymbolSet(aSymbolSets, rSymbolSetName, FALSE); + } -inline BOOL SmSymDefineDialog::SelectOldSymbol(const XubString &rSymbolName) -{ - return SelectSymbol(aOldSymbols, rSymbolName, FALSE); -} + BOOL SmSymDefineDialog::SelectSymbol(const XubString &rSymbolName) + { + return SelectSymbol(aSymbols, rSymbolName, FALSE); + } -inline BOOL SmSymDefineDialog::SelectSymbolSet(const XubString &rSymbolSetName) -{ - return SelectSymbolSet(aSymbolSets, rSymbolSetName, FALSE); -} + BOOL SelectFont(const XubString &rFontName) { return SelectFont(rFontName, TRUE); } + BOOL SelectStyle(const XubString &rStyleName) { return SelectStyle(rStyleName, TRUE); }; + void SelectChar(xub_Unicode cChar); +}; -inline BOOL SmSymDefineDialog::SelectSymbol(const XubString &rSymbolName) -{ - return SelectSymbol(aSymbols, rSymbolName, FALSE); -} #endif diff --git a/starmath/inc/smmod.hxx b/starmath/inc/smmod.hxx index 4b493c0cbca7..914c4d46cf0c 100644 --- a/starmath/inc/smmod.hxx +++ b/starmath/inc/smmod.hxx @@ -48,7 +48,7 @@ class SvxErrorHandler; class SfxObjectFactory; class SmConfig; class SmModule; -class SmSymSetManager; +class SmSymbolManager; /************************************************************************* |* @@ -151,7 +151,7 @@ public: svtools::ColorConfig & GetColorConfig(); SmConfig * GetConfig(); - SmSymSetManager & GetSymSetManager(); + SmSymbolManager & GetSymbolManager(); SmLocalizedSymbolData & GetLocSymbolData() const; @@ -178,7 +178,6 @@ public: }; #define SM_MOD() ( *(SmModule**) GetAppData(SHL_SM) ) -#define SM_MOD1() ( *(SmModule**) GetAppData(SHL_SM) ) #endif // _SDMOD_HXX diff --git a/starmath/inc/symbol.hxx b/starmath/inc/symbol.hxx index d39376c30ed0..ce4c0611d368 100644 --- a/starmath/inc/symbol.hxx +++ b/starmath/inc/symbol.hxx @@ -31,198 +31,146 @@ #define SYMBOL_HXX #include -#ifndef _FONT_HXX //autogen #include -#endif #include #include #include #include #include + +#include +#include +#include + #include "utility.hxx" -#include +#include "smmod.hxx" -#define SS_ATTR_ACCESS 0x80 #define SYMBOLSET_NONE 0xFFFF #define SYMBOL_NONE 0xFFFF -class SmSymSetManager; //////////////////////////////////////////////////////////////////////////////// inline const String GetExportSymbolName( const String &rUiSymbolName ) { - return SM_MOD1()->GetLocSymbolData().GetExportSymbolName( rUiSymbolName ); + return SM_MOD()->GetLocSymbolData().GetExportSymbolName( rUiSymbolName ); } inline const String GetUiSymbolName( const String &rExportSymbolName ) { - return SM_MOD1()->GetLocSymbolData().GetUiSymbolName( rExportSymbolName ); + return SM_MOD()->GetLocSymbolData().GetUiSymbolName( rExportSymbolName ); } inline const String GetExportSymbolSetName( const String &rUiSymbolSetName ) { - return SM_MOD1()->GetLocSymbolData().GetExportSymbolSetName( rUiSymbolSetName ); + return SM_MOD()->GetLocSymbolData().GetExportSymbolSetName( rUiSymbolSetName ); } inline const String GetUiSymbolSetName( const String &rExportSymbolSetName ) { - return SM_MOD1()->GetLocSymbolData().GetUiSymbolSetName( rExportSymbolSetName ); + return SM_MOD()->GetLocSymbolData().GetUiSymbolSetName( rExportSymbolSetName ); } //////////////////////////////////////////////////////////////////////////////// class SmSym { - friend class SmSymSetManager; - - SmFace Face; - String Name; - String aExportName; - String aSetName; - SmSym *pHashNext; - SmSymSetManager *pSymSetManager; - sal_Unicode Character; - BYTE Attribut; - BOOL bPredefined; - BOOL bDocSymbol; + SmFace m_aFace; + String m_aName; + String m_aExportName; + String m_aSetName; + sal_Unicode m_cChar; + BOOL m_bPredefined; + BOOL m_bDocSymbol; public: SmSym(); - SmSym(const SmSym& rSymbol); SmSym(const String& rName, const Font& rFont, sal_Unicode cChar, const String& rSet, BOOL bIsPredefined = FALSE); + SmSym(const SmSym& rSymbol); SmSym& operator = (const SmSym& rSymbol); - const Font& GetFace() const { return Face; } - sal_Unicode GetCharacter() const { return Character; } - const String& GetName() const { return Name; } + const Font& GetFace() const { return m_aFace; } + sal_Unicode GetCharacter() const { return m_cChar; } + const String& GetName() const { return m_aName; } - void SetFace( const Font& rFont ) { Face = rFont; } - void SetCharacter( sal_Unicode cChar ) { Character = cChar; } - void SetName( const String &rTxt ) { Name = rTxt; } + void SetFace( const Font& rFont ) { m_aFace = rFont; } + void SetCharacter( sal_Unicode cChar ) { m_cChar = cChar; } - BOOL IsPredefined() const { return bPredefined; } - const String & GetSetName() const { return aSetName; } - void SetSetName( const String &rName ) { aSetName = rName; } - const String & GetExportName() const { return aExportName; } - void SetExportName( const String &rName ) { aExportName = rName; } +//! since the symbol name is also used as key in the map it should not be possible to change the name +//! because ten the key would not be the same as its supposed copy here +// void SetName( const String &rTxt ) { m_aName = rTxt; } - BOOL IsDocSymbol() const { return bDocSymbol; } - void SetDocSymbol( BOOL bVal ) { bDocSymbol = bVal; } -}; + BOOL IsPredefined() const { return m_bPredefined; } + const String & GetSymbolSetName() const { return m_aSetName; } + void SetSymbolSetName( const String &rName ) { m_aSetName = rName; } + const String & GetExportName() const { return m_aExportName; } + void SetExportName( const String &rName ) { m_aExportName = rName; } + + BOOL IsDocSymbol() const { return m_bDocSymbol; } + void SetDocSymbol( BOOL bVal ) { m_bDocSymbol = bVal; } -DECLARE_LIST(SmListSym, SmSym *) -SV_DECL_PTRARR( SymbolArray, SmSym *, 32, 32 ) + // true if rSymbol has the same name, font and character + bool IsEqualInUI( const SmSym& rSymbol ) const; +}; /**************************************************************************/ -class SmSymSet +struct lt_String { - friend class SmSymSetManager; - - SmListSym SymbolList; - String Name; - SmSymSetManager *pSymSetManager; - -public: - SmSymSet(); - SmSymSet(const SmSymSet& rSymbolSet); - SmSymSet(const String& rName); - ~SmSymSet(); - - SmSymSet& operator = (const SmSymSet& rSymbolSet); - - const String& GetName() const { return Name; } - USHORT GetCount() const { return (USHORT) SymbolList.Count(); } - - const SmSym& GetSymbol(USHORT SymbolNo) const + bool operator()( const String &r1, const String &r2 ) const { - DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden"); - return *SymbolList.GetObject(SymbolNo); + // r1 < r2 ? + return r1.CompareTo( r2 ) == COMPARE_LESS; } - - USHORT AddSymbol(SmSym* pSymbol); - void DeleteSymbol(USHORT SymbolNo); - SmSym * RemoveSymbol(USHORT SymbolNo); - USHORT GetSymbolPos(const String& rName); }; -DECLARE_DYNARRAY(SmArraySymSet, SmSymSet *) - -/**************************************************************************/ - -class SmSymbolDialog; - - -struct SmSymSetManager_Impl -{ - SmArraySymSet SymbolSets; - SmSymSetManager & rSymSetMgr; - SmSym** HashEntries; - USHORT NoSymbolSets; - USHORT NoHashEntries; - BOOL Modified; - - SmSymSetManager_Impl( SmSymSetManager &rMgr, USHORT HashTableSize ); - ~SmSymSetManager_Impl(); - SmSymSetManager_Impl & operator = ( const SmSymSetManager_Impl &rImpl ); -}; +// type of the actual container to hold the symbols +typedef std::map< String, SmSym, lt_String > SymbolMap_t; +// vector of pointers to the actual symbols in the above container +typedef std::vector< const SmSym * > SymbolPtrVec_t; -class SmSymSetManager : public SfxListener +class SmSymbolManager : public SfxListener { - friend struct SmSymSetManager_Impl; - - SmSymSetManager_Impl *pImpl; + SymbolMap_t m_aSymbols; + bool m_bModified; virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType); - UINT32 GetHashIndex(const String& rSymbolName); - void EnterHashTable(SmSym& rSymbol); - void EnterHashTable(SmSymSet& rSymbolSet); - void FillHashTable(); void Init(); void Exit(); public: - SmSymSetManager(USHORT HashTableSize = 137); - SmSymSetManager(const SmSymSetManager& rSymbolSetManager); - ~SmSymSetManager(); + SmSymbolManager(); + SmSymbolManager(const SmSymbolManager& rSymbolSetManager); + ~SmSymbolManager(); - SmSymSetManager& operator = (const SmSymSetManager& rSymbolSetManager); + SmSymbolManager & operator = (const SmSymbolManager& rSymbolSetManager); - void GetSymbols( std::vector< SmSym > &rSymbols ) const; + // symbol sets are for UI purpose only, thus we assemble them here + std::set< String > GetSymbolSetNames() const; + const SymbolPtrVec_t GetSymbolSet( const String& rSymbolSetName ); - - USHORT AddSymbolSet(SmSymSet* pSymbolSet); - void ChangeSymbolSet(SmSymSet* pSymbolSet); - void DeleteSymbolSet(USHORT SymbolSetNo); - USHORT GetSymbolSetPos(const String& rSymbolSetName) const; - USHORT GetSymbolSetCount() const { return pImpl->NoSymbolSets; } - SmSymSet *GetSymbolSet(USHORT SymbolSetNo) const - { - return pImpl->SymbolSets.Get(SymbolSetNo); - } + USHORT GetSymbolCount() const { return static_cast< USHORT >(m_aSymbols.size()); } + const SymbolPtrVec_t GetSymbols() const; + bool AddOrReplaceSymbol( const SmSym & rSymbol, bool bForceChange = false ); + void RemoveSymbol( const String & rSymbolName ); SmSym * GetSymbolByName(const String& rSymbolName); const SmSym * GetSymbolByName(const String& rSymbolName) const { - return ((SmSymSetManager *) this)->GetSymbolByName(rSymbolName); + return ((SmSymbolManager *) this)->GetSymbolByName(rSymbolName); } - void AddReplaceSymbol( const SmSym & rSymbol ); - USHORT GetSymbolCount() const; - const SmSym * GetSymbolByPos( USHORT nPos ) const; - - BOOL IsModified() const { return pImpl->Modified; } - void SetModified(BOOL Modify) { pImpl->Modified = Modify; } + bool IsModified() const { return m_bModified; } + void SetModified(bool bModify) { m_bModified = bModify; } void Load(); void Save(); diff --git a/starmath/source/cfgitem.cxx b/starmath/source/cfgitem.cxx index 16461d97d6e1..6cc49595d821 100644 --- a/starmath/source/cfgitem.cxx +++ b/starmath/source/cfgitem.cxx @@ -432,7 +432,7 @@ SmMathConfig::SmMathConfig() : pFormat = 0; pOther = 0; pFontFormatList = 0; - pSymSetMgr = 0; + pSymbolMgr = 0; bIsOtherModified = bIsFormatModified = FALSE; } @@ -444,7 +444,7 @@ SmMathConfig::~SmMathConfig() delete pFormat; delete pOther; delete pFontFormatList; - delete pSymSetMgr; + delete pSymbolMgr; } @@ -557,14 +557,14 @@ void SmMathConfig::ReadSymbol( SmSym &rSymbol, } -SmSymSetManager & SmMathConfig::GetSymSetManager() +SmSymbolManager & SmMathConfig::GetSymbolManager() { - if (!pSymSetMgr) + if (!pSymbolMgr) { - pSymSetMgr = new SmSymSetManager; - pSymSetMgr->Load(); + pSymbolMgr = new SmSymbolManager; + pSymbolMgr->Load(); } - return *pSymSetMgr; + return *pSymbolMgr; } @@ -581,18 +581,6 @@ void SmMathConfig::Save() } -USHORT SmMathConfig::GetSymbolCount() const -{ - return ((SmMathConfig *) this)->GetSymSetManager().GetSymbolCount(); -} - - -const SmSym * SmMathConfig::GetSymbol( USHORT nIndex ) const -{ - return ((SmMathConfig *) this)->GetSymSetManager().GetSymbolByPos( nIndex ); -} - - void SmMathConfig::GetSymbols( std::vector< SmSym > &rSymbols ) const { Sequence< OUString > aNodes( ((SmMathConfig*) this)->GetNodeNames( A2OU( SYMBOL_LIST ) ) ); @@ -643,7 +631,7 @@ void SmMathConfig::SetSymbols( const std::vector< SmSym > &rNewSymbols ) // Set pVal->Name = aNodeNameDelim; pVal->Name += *pName++; - OUString aTmp( rSymbol.GetSetName() ); + OUString aTmp( rSymbol.GetSymbolSetName() ); if (rSymbol.IsPredefined()) aTmp = GetExportSymbolSetName( aTmp ); pVal->Value <<= aTmp; diff --git a/starmath/source/cfgitem.hxx b/starmath/source/cfgitem.hxx index 8987e153026f..a255d76a1533 100644 --- a/starmath/source/cfgitem.hxx +++ b/starmath/source/cfgitem.hxx @@ -125,7 +125,7 @@ class SmMathConfig : public utl::ConfigItem SmFormat * pFormat; SmCfgOther * pOther; SmFontFormatList * pFontFormatList; - SmSymSetManager * pSymSetMgr; + SmSymbolManager * pSymbolMgr; BOOL bIsOtherModified; BOOL bIsFormatModified; @@ -185,11 +185,9 @@ public: //using utl::ConfigItem::ReplaceSetProperties; //using utl::ConfigItem::GetReadOnlyStates; - SmSymSetManager & GetSymSetManager(); + SmSymbolManager & GetSymbolManager(); void GetSymbols( std::vector< SmSym > &rSymbols ) const; void SetSymbols( const std::vector< SmSym > &rNewSymbols ); - USHORT GetSymbolCount() const; - const SmSym * GetSymbol( USHORT nIndex ) const; const SmFormat & GetStandardFormat() const; void SetStandardFormat( const SmFormat &rFormat, BOOL bSaveFontFormatList = FALSE ); diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx index 20af2f38b3ee..5d5124211ece 100644 --- a/starmath/source/dialog.cxx +++ b/starmath/source/dialog.cxx @@ -429,7 +429,7 @@ IMPL_LINK( SmFontSizeDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton if (pQueryBox->Execute() == RET_YES) { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); SmFormat aFmt( pp->GetConfig()->GetStandardFormat() ); WriteTo( aFmt ); pp->GetConfig()->SetStandardFormat( aFmt ); @@ -536,7 +536,7 @@ IMPL_LINK_INLINE_START( SmFontTypeDialog, DefaultButtonClickHdl, Button *, EMPTY QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY)); if (pQueryBox->Execute() == RET_YES) { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); SmFormat aFmt( pp->GetConfig()->GetStandardFormat() ); WriteTo( aFmt ); pp->GetConfig()->SetStandardFormat( aFmt, TRUE ); @@ -582,7 +582,7 @@ SmFontTypeDialog::SmFontTypeDialog(Window * pParent, OutputDevice *pFntListDevic void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat) { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); aVariableFont = pp->GetConfig()->GetFontPickList(FNT_VARIABLE); aFunctionFont = pp->GetConfig()->GetFontPickList(FNT_FUNCTION); @@ -604,7 +604,7 @@ void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat) void SmFontTypeDialog::WriteTo(SmFormat &rFormat) const { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); pp->GetConfig()->GetFontPickList(FNT_VARIABLE) = aVariableFont; pp->GetConfig()->GetFontPickList(FNT_FUNCTION) = aFunctionFont; @@ -743,7 +743,7 @@ IMPL_LINK( SmDistanceDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton if (pQueryBox->Execute() == RET_YES) { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); SmFormat aFmt( pp->GetConfig()->GetStandardFormat() ); WriteTo( aFmt ); pp->GetConfig()->SetStandardFormat( aFmt ); @@ -1066,7 +1066,7 @@ IMPL_LINK( SmAlignDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ if (pQueryBox->Execute() == RET_YES) { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); SmFormat aFmt( pp->GetConfig()->GetStandardFormat() ); WriteTo( aFmt ); pp->GetConfig()->SetStandardFormat( aFmt ); @@ -1143,12 +1143,12 @@ void SmShowSymbolSet::Paint(const Rectangle&) SetMapMode(MapMode(MAP_PIXEL)); USHORT v = sal::static_int_cast< USHORT >((aVScrollBar.GetThumbPos() * nColumns)); - USHORT nSymbols = aSymbolSet.GetCount(); + size_t nSymbols = aSymbolSet.size(); Color aTxtColor( GetTextColor() ); for (USHORT i = v; i < nSymbols ; i++) { - SmSym aSymbol (aSymbolSet.GetSymbol(i)); + SmSym aSymbol (*aSymbolSet[i]); Font aFont (aSymbol.GetFace()); aFont.SetAlign(ALIGN_TOP); @@ -1209,7 +1209,7 @@ void SmShowSymbolSet::KeyInput(const KeyEvent& rKEvt) case KEY_LEFT: n -= 1; break; case KEY_RIGHT: n += 1; break; case KEY_HOME: n = 0; break; - case KEY_END: n = aSymbolSet.GetCount() - 1; break; + case KEY_END: n = static_cast< USHORT >(aSymbolSet.size() - 1); break; case KEY_PAGEUP: n -= nColumns * nRows; break; case KEY_PAGEDOWN: n += nColumns * nRows; break; @@ -1221,7 +1221,7 @@ void SmShowSymbolSet::KeyInput(const KeyEvent& rKEvt) else n = 0; - if (n >= aSymbolSet.GetCount()) + if (n >= aSymbolSet.size()) n = nSelectSymbol; // adjust scrollbar @@ -1277,13 +1277,13 @@ SmShowSymbolSet::SmShowSymbolSet(Window *pParent, const ResId& rResId) : } -void SmShowSymbolSet::SetSymbolSet(const SmSymSet& rSymbolSet) +void SmShowSymbolSet::SetSymbolSet(const SymbolPtrVec_t& rSymbolSet) { aSymbolSet = rSymbolSet; - if (aSymbolSet.GetCount() > (nColumns * nRows)) + if (static_cast< USHORT >(aSymbolSet.size()) > (nColumns * nRows)) { - aVScrollBar.SetRange(Range(0, ((aSymbolSet.GetCount() + (nColumns - 1)) / nColumns) - nRows)); + aVScrollBar.SetRange(Range(0, ((aSymbolSet.size() + (nColumns - 1)) / nColumns) - nRows)); aVScrollBar.Enable(TRUE); } else @@ -1305,10 +1305,10 @@ void SmShowSymbolSet::SelectSymbol(USHORT nSymbol) ((nSelectSymbol - v) / nColumns) * nLen), Size(nLen, nLen))); - if (nSymbol < aSymbolSet.GetCount()) + if (nSymbol < aSymbolSet.size()) nSelectSymbol = nSymbol; - if (aSymbolSet.GetCount() == 0) + if (aSymbolSet.size() == 0) nSelectSymbol = SYMBOL_NONE; if (nSelectSymbol != SYMBOL_NONE) @@ -1383,9 +1383,10 @@ void SmSymbolDialog::FillSymbolSets(BOOL bDeleteText) if (bDeleteText) aSymbolSets.SetNoSelection(); - USHORT nNumSymSets = rSymSetMgr.GetSymbolSetCount(); - for (USHORT i = 0; i < nNumSymSets; i++) - aSymbolSets.InsertEntry(rSymSetMgr.GetSymbolSet(i)->GetName()); + std::set< String > aSybolSetNames( rSymbolMgr.GetSymbolSetNames() ); + std::set< String >::const_iterator aIt( aSybolSetNames.begin() ); + for ( ; aIt != aSybolSetNames.end(); ++aIt) + aSymbolSets.InsertEntry( *aIt ); } @@ -1419,7 +1420,7 @@ IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, EMPTYARG pButton ) DBG_ASSERT(pButton == &aEditBtn, "Sm : falsches Argument"); #endif - SmSymDefineDialog *pDialog = new SmSymDefineDialog(this, pFontListDev, rSymSetMgr); + SmSymDefineDialog *pDialog = new SmSymDefineDialog(this, pFontListDev, rSymbolMgr); // aktuelles Symbol und SymbolSet am neuen Dialog setzen const XubString aSymSetName (aSymbolSets.GetSelectEntry()), @@ -1435,9 +1436,9 @@ IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, EMPTYARG pButton ) USHORT nSymPos = GetSelectedSymbol(); // Dialog an evtl geaenderte Daten des SymbolSet Manager anpassen - if (pDialog->Execute() == RET_OK && rSymSetMgr.IsModified()) + if (pDialog->Execute() == RET_OK && rSymbolMgr.IsModified()) { - rSymSetMgr.Save(); + rSymbolMgr.Save(); FillSymbolSets(); } @@ -1445,7 +1446,16 @@ IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, EMPTYARG pButton ) // (soweit eines vorhanden ist) if (!SelectSymbolSet(aOldSymbolSet) && aSymbolSets.GetEntryCount() > 0) SelectSymbolSet(aSymbolSets.GetEntry(0)); - + else + { + // just update display of current symbol set + DBG_ASSERT( aSymSetName == aSymSetName, "unexpected change in symbol set name" ); + aSymbolSet = rSymbolMgr.GetSymbolSet( aSymbolSetName ); + aSymbolSetDisplay.SetSymbolSet( aSymbolSet ); + } + + if (nSymPos >= aSymbolSet.size()) + nSymPos = static_cast< USHORT >(aSymbolSet.size()) - 1; SelectSymbol( nSymPos ); delete pDialog; @@ -1502,7 +1512,7 @@ IMPL_LINK_INLINE_END( SmSymbolDialog, CloseClickHdl, Button *, pButton ) SmSymbolDialog::SmSymbolDialog(Window *pParent, OutputDevice *pFntListDevice, - SmSymSetManager &rMgr, SmViewShell &rViewShell, BOOL bFreeRes) : + SmSymbolManager &rMgr, SmViewShell &rViewShell, BOOL bFreeRes) : ModalDialog (pParent, SmResId(RID_SYMBOLDIALOG)), aSymbolSetText (this, SmResId(1)), aSymbolSets (this, SmResId(1)), @@ -1513,13 +1523,14 @@ SmSymbolDialog::SmSymbolDialog(Window *pParent, OutputDevice *pFntListDevice, aCloseBtn (this, SmResId(3)), aEditBtn (this, SmResId(1)), rViewSh (rViewShell), - rSymSetMgr (rMgr), + rSymbolMgr (rMgr), pFontListDev (pFntListDevice) { if (bFreeRes) FreeResource(); - pSymSet = NULL; + aSymbolSetName = String(); + aSymbolSet.clear(); FillSymbolSets(); if (aSymbolSets.GetEntryCount() > 0) SelectSymbolSet(aSymbolSets.GetEntry(0)); @@ -1583,18 +1594,17 @@ BOOL SmSymbolDialog::SelectSymbolSet(const XubString &rSymbolSetName) BOOL bRet = FALSE; USHORT nPos = aSymbolSets.GetEntryPos(rSymbolSetName); - pSymSet = NULL; + aSymbolSetName = String(); + aSymbolSet.clear(); if (nPos != LISTBOX_ENTRY_NOTFOUND) { aSymbolSets.SelectEntryPos(nPos); - USHORT nSymbolSetNo = rSymSetMgr.GetSymbolSetPos(aSymbolSets.GetSelectEntry()); - pSymSet = rSymSetMgr.GetSymbolSet(nSymbolSetNo); -#if OSL_DEBUG_LEVEL > 1 - DBG_ASSERT(pSymSet, "Sm : NULL pointer"); -#endif - aSymbolSetDisplay.SetSymbolSet(*pSymSet); - if (pSymSet->GetCount() > 0) + aSymbolSetName = rSymbolSetName; + aSymbolSet = rSymbolMgr.GetSymbolSet( aSymbolSetName ); + + aSymbolSetDisplay.SetSymbolSet( aSymbolSet ); + if (aSymbolSet.size() > 0) SelectSymbol(0); bRet = TRUE; @@ -1609,8 +1619,8 @@ BOOL SmSymbolDialog::SelectSymbolSet(const XubString &rSymbolSetName) void SmSymbolDialog::SelectSymbol(USHORT nSymbolNo) { const SmSym *pSym = NULL; - if (pSymSet && nSymbolNo < pSymSet->GetCount()) - pSym = &pSymSet->GetSymbol(nSymbolNo); + if (aSymbolSetName.Len() > 0 && nSymbolNo < static_cast< USHORT >(aSymbolSet.size())) + pSym = aSymbolSet[ nSymbolNo ]; aSymbolSetDisplay.SelectSymbol(nSymbolNo); aSymbolDisplay.SetSymbol(pSym); @@ -1621,7 +1631,8 @@ void SmSymbolDialog::SelectSymbol(USHORT nSymbolNo) const SmSym * SmSymbolDialog::GetSymbol() const { USHORT nSymbolNo = aSymbolSetDisplay.GetSelectSymbol(); - return pSymSet == NULL ? NULL : &pSymSet->GetSymbol(nSymbolNo); + bool bValid = aSymbolSetName.Len() > 0 && nSymbolNo < static_cast< USHORT >(aSymbolSet.size()); + return bValid ? aSymbolSet[ nSymbolNo ] : NULL; } @@ -1681,15 +1692,10 @@ void SmSymDefineDialog::FillSymbols(ComboBox &rComboBox, BOOL bDeleteText) if (bDeleteText) rComboBox.SetText(XubString()); - ComboBox &rSymbolSets = &rComboBox == &aOldSymbols ? - aOldSymbolSets : aSymbolSets; - const SmSymSet *pSymSet = GetSymbolSet(rSymbolSets); - if (pSymSet) - { USHORT nNumSymbols = pSymSet->GetCount(); - for (USHORT i = 0; i < nNumSymbols; i++) - rComboBox.InsertEntry(pSymSet->GetSymbol(i).GetName()); - } - + ComboBox &rBox = &rComboBox == &aOldSymbols ? aOldSymbolSets : aSymbolSets; + SymbolPtrVec_t aSymSet( aSymbolMgrCopy.GetSymbolSet( rBox.GetText() ) ); + for (size_t i = 0; i < aSymSet.size(); ++i) + rComboBox.InsertEntry( aSymSet[i]->GetName() ); } @@ -1704,9 +1710,10 @@ void SmSymDefineDialog::FillSymbolSets(ComboBox &rComboBox, BOOL bDeleteText) if (bDeleteText) rComboBox.SetText(XubString()); - USHORT nNumSymSets = aSymSetMgrCopy.GetSymbolSetCount(); - for (USHORT i = 0; i < nNumSymSets; i++) - rComboBox.InsertEntry(aSymSetMgrCopy.GetSymbolSet(i)->GetName()); + const std::set< String > aSymbolSetNames( aSymbolMgrCopy.GetSymbolSetNames() ); + std::set< String >::const_iterator aIt( aSymbolSetNames.begin() ); + for ( ; aIt != aSymbolSetNames.end(); ++aIt) + rComboBox.InsertEntry( *aIt ); } @@ -1751,26 +1758,13 @@ void SmSymDefineDialog::FillStyles(BOOL bDeleteText) } -SmSymSet * SmSymDefineDialog::GetSymbolSet(const ComboBox &rComboBox) -{ -#if OSL_DEBUG_LEVEL > 1 - DBG_ASSERT(&rComboBox == &aOldSymbolSets || &rComboBox == &aSymbolSets, - "Sm : falsche ComboBox"); -#endif - USHORT nSymbolSetNo = aSymSetMgrCopy.GetSymbolSetPos(rComboBox.GetText()); - - return nSymbolSetNo == SYMBOLSET_NONE ? - NULL : aSymSetMgrCopy.GetSymbolSet(nSymbolSetNo); -} - - SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox) { #if OSL_DEBUG_LEVEL > 1 DBG_ASSERT(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols, "Sm : falsche ComboBox"); #endif - return aSymSetMgrCopy.GetSymbolByName(rComboBox.GetText()); + return aSymbolMgrCopy.GetSymbolByName(rComboBox.GetText()); } @@ -1900,32 +1894,16 @@ IMPL_LINK( SmSymDefineDialog, AddClickHdl, Button *, EMPTYARG pButton ) DBG_ASSERT(aAddBtn.IsEnabled(), "Sm : Voraussetzungen erfuellt ??"); #endif - SmSymSet *pSymSet = GetSymbolSet(aSymbolSets); - - // SymbolSet einfuegen falls es noch nicht existiert - if (!pSymSet) - { - pSymSet = new SmSymSet(aSymbolSets.GetText()); - aSymSetMgrCopy.AddSymbolSet(pSymSet); - FillSymbolSets(aOldSymbolSets, FALSE); - FillSymbolSets(aSymbolSets, FALSE); - } -#if OSL_DEBUG_LEVEL > 1 - DBG_ASSERT(pSymSet, "Sm : NULL pointer"); -#endif - - // Symbol ins SymbolSet einfuegen + // add symbol // TO_DO_UCS4 (#i74049): get rid of cast without loosing UCS4 functionality - SmSym *pSym = new SmSym(aSymbols.GetText(), aCharsetDisplay.GetFont(), - sal::static_int_cast< sal_Unicode >(aCharsetDisplay.GetSelectCharacter()), - aSymbolSets.GetText()); - pSymSet->AddSymbol(pSym); - - // update der Hash Tabelle erzwingen (damit aAddBtn disabled wird). - // (wird spaeter nach Ueberarbeitung von symbol.cxx ueberfluessig werden). - aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1); - - // Symbolliste aktualiseren + const SmSym aSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(), + sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ), + aSymbolSets.GetText() ); + aSymbolMgrCopy.AddOrReplaceSymbol( aSymbol ); + + // update list box entries + FillSymbolSets(aOldSymbolSets, FALSE); + FillSymbolSets(aSymbolSets, FALSE); FillSymbols(aOldSymbols ,FALSE); FillSymbols(aSymbols ,FALSE); @@ -1943,61 +1921,27 @@ IMPL_LINK( SmSymDefineDialog, ChangeClickHdl, Button *, EMPTYARG pButton ) DBG_ASSERT(aChangeBtn.IsEnabled(), "Sm : Voraussetzungen erfuellt ??"); #endif - // finden des SymbolSets zum alten Symbol - SmSymSet *pOldSymSet = GetSymbolSet(aOldSymbolSets); -#if OSL_DEBUG_LEVEL > 1 - DBG_ASSERT(pOldSymSet, "Sm : NULL pointer"); -#endif - - // suchen des neuen SymbolSets - SmSymSet *pNewSymSet = GetSymbolSet(aSymbolSets); - // SymbolSet einfuegen falls es noch nicht existiert - if (!pNewSymSet) - { - pNewSymSet = new SmSymSet(aSymbolSets.GetText()); - aSymSetMgrCopy.AddSymbolSet(pNewSymSet); - FillSymbolSets(aOldSymbolSets, FALSE); - FillSymbolSets(aSymbolSets, FALSE); - } - - // das (alte) Symbol besorgen - USHORT nSymbol = pOldSymSet->GetSymbolPos(aOldSymbols.GetText()); - SmSym *pSym = (SmSym *) &pOldSymSet->GetSymbol(nSymbol); -#if OSL_DEBUG_LEVEL > 1 - DBG_ASSERT( SYMBOL_NONE != nSymbol, "symbol not found" ); - DBG_ASSERT(pSym, "Sm : NULL pointer"); -#endif - - // apply changes - pSym->SetName( aSymbols.GetText() ); - //! get font from symbol-display since charset-display does not keep + // get new Sybol to use + //! get font from symbol-disp lay since charset-display does not keep //! the bold attribut. - pSym->SetFace( aSymbolDisplay.GetFont() ); // TO_DO_UCS4 (#i74049): get rid of cast without loosing UCS4 functionality - pSym->SetCharacter( sal::static_int_cast< sal_Unicode >(aCharsetDisplay.GetSelectCharacter()) ); + const SmSym aNewSymbol( aSymbols.GetText(), aSymbolDisplay.GetFont(), + sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ), + aSymbolSets.GetText() ); - // das SymbolSet wechseln wenn noetig - if (pOldSymSet != pNewSymSet) - { - pNewSymSet->AddSymbol( new SmSym( *pSym ) ); - pOldSymSet->DeleteSymbol(nSymbol); - - // - // update controls - // - // actualize symbol-lists in the dialog - String aTmpOldSymbolName( pOrigSymbol->GetName() ); - aOldSymbols.SetText( String() ); - aOldSymbols.RemoveEntry( aTmpOldSymbolName ); - if (aSymbolSets.GetText() == aOldSymbolSets.GetText()) - aSymbols.RemoveEntry( aTmpOldSymbolName ); - // clear display for original symbol - SetOrigSymbol(NULL, XubString()); - } + // remove old symbol if the name was changed then add new one + if (aOldSymbols.GetText() != aSymbols.GetText()) + aSymbolMgrCopy.RemoveSymbol( aOldSymbols.GetText() ); + aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol, true ); - //!! den SymbolSet Manger dazu zwingen seinen HashTable zu aktualisieren, - //!! um mit moeglich neuen bzw fehlenden alten Symbol Namen konform zu sein. - aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1); + // clear display for original symbol + SetOrigSymbol(NULL, XubString()); + + // update list box entries + FillSymbolSets(aOldSymbolSets, FALSE); + FillSymbolSets(aSymbolSets, FALSE); + FillSymbols(aOldSymbols ,FALSE); + FillSymbols(aSymbols ,FALSE); UpdateButtons(); @@ -2015,33 +1959,16 @@ IMPL_LINK( SmSymDefineDialog, DeleteClickHdl, Button *, EMPTYARG pButton ) if (pOrigSymbol) { - // loeschen des Symbols: - // - // zugehoeriges SymbolSet finden - SmSymSet *pSymSet = GetSymbolSet(aOldSymbolSets); - // finden des Index - XubString aTmpOldSymbolName (pOrigSymbol->GetName()); - USHORT nSymbolNo = pSymSet->GetSymbolPos(aTmpOldSymbolName); - // Bezuege auf das Symbols loeschen + aSymbolMgrCopy.RemoveSymbol( pOrigSymbol->GetName() ); + + // clear display for original symbol SetOrigSymbol(NULL, XubString()); - // und weg mit dem Symbol - pSymSet->DeleteSymbol(nSymbolNo); -#if OSL_DEBUG_LEVEL > 1 - DBG_ASSERT(pSymSet, "Sm : NULL pointer"); - DBG_ASSERT(nSymbolNo != SYMBOL_NONE, "Sm : kein Symbol"); -#endif - //!! den SymbolSet Manger dazu zwingen seinen HashTable zu aktualisieren, - //!! was er naemlich nicht tut, wenn in einem seiner SymbolSets geaendert/ - //!! geloescht wird, was wiederum zu einem Absturz fuehren kann (wenn er - //!! ueber ein nicht mehr existentes aber nicht entferntes Symbol iteriert). - aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1); - - // aktualisieren der Symboleintraege des Dialogs - aOldSymbols.SetText(XubString()); - aOldSymbols.RemoveEntry(aTmpOldSymbolName); - if (aSymbolSets.GetText() == aOldSymbolSets.GetText()) - aSymbols.RemoveEntry(aTmpOldSymbolName); + // update list box entries + FillSymbolSets(aOldSymbolSets, FALSE); + FillSymbolSets(aSymbolSets, FALSE); + FillSymbols(aOldSymbols ,FALSE); + FillSymbols(aSymbols ,FALSE); } UpdateButtons(); @@ -2073,7 +2000,7 @@ void SmSymDefineDialog::UpdateButtons() && aCharsetDisplay.GetSelectCharacter() == pOrigSymbol->GetCharacter(); // hinzufuegen nur wenn es noch kein Symbol desgleichen Namens gibt - bAdd = aSymSetMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL; + bAdd = aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL; // loeschen nur wenn alle Einstellungen gleich sind bDelete = pOrigSymbol != NULL; @@ -2092,7 +2019,7 @@ void SmSymDefineDialog::UpdateButtons() SmSymDefineDialog::SmSymDefineDialog(Window * pParent, - OutputDevice *pFntListDevice, SmSymSetManager &rMgr, BOOL bFreeRes) : + OutputDevice *pFntListDevice, SmSymbolManager &rMgr, BOOL bFreeRes) : ModalDialog (pParent, SmResId(RID_SYMDEFINEDIALOG)), aOldSymbolText (this, SmResId(1)), aOldSymbols (this, SmResId(1)), @@ -2123,7 +2050,7 @@ SmSymDefineDialog::SmSymDefineDialog(Window * pParent, aRightArrow (this, SmResId(1)), aRigthArrow_Im (SmResId(1)), aRigthArrow_Im_HC (SmResId(2)), // hi-contrast version - rSymSetMgr (rMgr), + rSymbolMgr (rMgr), pSubsetMap (NULL), pFontList (NULL) { @@ -2134,9 +2061,10 @@ SmSymDefineDialog::SmSymDefineDialog(Window * pParent, pOrigSymbol = 0; - // make autocompletion for symbols case-sensitive - aOldSymbols.EnableAutocomplete(TRUE, TRUE); - aSymbols .EnableAutocomplete(TRUE, TRUE); + // auto completion is troublesome since that symbols character also gets automatically selected in the + // display and if the user previously selected a character to define/redefine that one this is bad + aOldSymbols.EnableAutocomplete( FALSE, TRUE ); + aSymbols .EnableAutocomplete( FALSE, TRUE ); FillFonts(); if (aFonts.GetEntryCount() > 0) @@ -2144,7 +2072,7 @@ SmSymDefineDialog::SmSymDefineDialog(Window * pParent, InitColor_Impl(); - SetSymbolSetManager(rSymSetMgr); + SetSymbolSetManager(rSymbolMgr); aOldSymbols .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolChangeHdl)); aOldSymbolSets .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolSetChangeHdl)); @@ -2218,41 +2146,23 @@ short SmSymDefineDialog::Execute() short nResult = ModalDialog::Execute(); // Aenderungen uebernehmen falls Dialog mit OK beendet wurde - if (aSymSetMgrCopy.IsModified() && nResult == RET_OK) - { - // leere SymbolSets aus dem Ergebnis entfernen. - // Dabei von hinten durch das array iterieren, da beim loeschen die - // Elemente aufruecken. - USHORT nSymbolSets = aSymSetMgrCopy.GetSymbolSetCount(); - for (USHORT i = 0; i < nSymbolSets; i++) - { - USHORT nIdx = nSymbolSets - 1 - i; - if (aSymSetMgrCopy.GetSymbolSet(nIdx)->GetCount() == 0) - aSymSetMgrCopy.DeleteSymbolSet(nIdx); - } - - - - rSymSetMgr = aSymSetMgrCopy; -#ifdef DEBUG -// USHORT nS = rSymSetMgr.GetSymbolSetCount(); -#endif - } + if (aSymbolMgrCopy.IsModified() && nResult == RET_OK) + rSymbolMgr = aSymbolMgrCopy; return nResult; } -void SmSymDefineDialog::SetSymbolSetManager(const SmSymSetManager &rMgr) +void SmSymDefineDialog::SetSymbolSetManager(const SmSymbolManager &rMgr) { - aSymSetMgrCopy = rMgr; + aSymbolMgrCopy = rMgr; #ifdef DEBUG -// USHORT nS = aSymSetMgrCopy.GetSymbolSetCount(); +// USHORT nS = aSymbolMgrCopy.GetSymbolSetCount(); #endif // Das modified Flag der Kopie auf FALSE setzen, damit man spaeter damit // testen kann ob sich was geaendert hat. - aSymSetMgrCopy.SetModified(FALSE); + aSymbolMgrCopy.SetModified(FALSE); FillSymbolSets(aOldSymbolSets); if (aOldSymbolSets.GetEntryCount() > 0) @@ -2407,13 +2317,13 @@ BOOL SmSymDefineDialog::SelectSymbol(ComboBox &rComboBox, { // bei Wechsel des alten Symbols nur vorhandene anzeigen sonst keins const SmSym *pOldSymbol = NULL; - XubString aTMpOldSymbolSetName; + XubString aTmpOldSymbolSetName; if (nPos != COMBOBOX_ENTRY_NOTFOUND) { - pOldSymbol = aSymSetMgrCopy.GetSymbolByName(aNormName); - aTMpOldSymbolSetName = aOldSymbolSets.GetText(); + pOldSymbol = aSymbolMgrCopy.GetSymbolByName(aNormName); + aTmpOldSymbolSetName = aOldSymbolSets.GetText(); } - SetOrigSymbol(pOldSymbol, aTMpOldSymbolSetName); + SetOrigSymbol(pOldSymbol, aTmpOldSymbolSetName); } else aSymbolName.SetText(rComboBox.GetText()); diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx index 33fa49bdb4ef..a675389981fb 100644 --- a/starmath/source/document.cxx +++ b/starmath/source/document.cxx @@ -151,8 +151,8 @@ void SmDocShell::LoadSymbols() { RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::LoadSymbols" ); - SmModule *pp = SM_MOD1(); - pp->GetSymSetManager().Load(); + SmModule *pp = SM_MOD(); + pp->GetSymbolManager().Load(); } @@ -282,7 +282,7 @@ void SmDocShell::ArrangeFormula() pOutDev = &pView->GetGraphicWindow(); else { - pOutDev = &SM_MOD1()->GetDefaultVirtualDev(); + pOutDev = &SM_MOD()->GetDefaultVirtualDev(); pOutDev->SetMapMode( MapMode(MAP_100TH_MM) ); } } @@ -616,7 +616,7 @@ Printer* SmDocShell::GetPrt() SID_NO_RIGHT_SPACES, SID_NO_RIGHT_SPACES, 0); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); pp->GetConfig()->ConfigToItemSet(*pOptions); pPrinter = new SfxPrinter(pOptions); pPrinter->SetMapMode( MapMode(MAP_100TH_MM) ); @@ -698,7 +698,7 @@ SmDocShell::SmDocShell(SfxObjectCreateMode eMode,const sal_Bool _bScriptSupport) SetPool(&SFX_APP()->GetPool()); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); aFormat = pp->GetConfig()->GetStandardFormat(); StartListening(aFormat); @@ -718,7 +718,7 @@ SmDocShell::~SmDocShell() { RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::~SmDocShell" ); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); EndListening(aFormat); EndListening(*pp->GetConfig()); @@ -1014,7 +1014,7 @@ void SmDocShell::Execute(SfxRequest& rReq) case SID_AUTO_REDRAW : { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); BOOL bRedraw = pp->GetConfig()->IsAutoRedraw(); pp->GetConfig()->SetAutoRedraw(!bRedraw); } @@ -1033,7 +1033,7 @@ void SmDocShell::Execute(SfxRequest& rReq) // get device used to retrieve the FontList OutputDevice *pDev = GetPrinter(); if (!pDev || pDev->GetDevFontCount() == 0) - pDev = &SM_MOD1()->GetDefaultVirtualDev(); + pDev = &SM_MOD()->GetDefaultVirtualDev(); DBG_ASSERT (pDev, "device for font list missing" ); SmFontTypeDialog *pFontTypeDialog = new SmFontTypeDialog( NULL, pDev ); @@ -1117,7 +1117,7 @@ void SmDocShell::Execute(SfxRequest& rReq) pAlignDialog->WriteTo(aNewFormat); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); SmFormat aFmt( pp->GetConfig()->GetStandardFormat() ); pAlignDialog->WriteTo( aFmt ); pp->GetConfig()->SetStandardFormat( aFmt ); @@ -1202,7 +1202,7 @@ void SmDocShell::GetState(SfxItemSet &rSet) case SID_AUTO_REDRAW : { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); BOOL bRedraw = pp->GetConfig()->IsAutoRedraw(); rSet.Put(SfxBoolItem(SID_AUTO_REDRAW, bRedraw)); @@ -1291,8 +1291,8 @@ void SmDocShell::SaveSymbols() { RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SaveSymbols" ); - SmModule *pp = SM_MOD1(); - pp->GetSymSetManager().Save(); + SmModule *pp = SM_MOD(); + pp->GetSymbolManager().Save(); } diff --git a/starmath/source/edit.cxx b/starmath/source/edit.cxx index d9c333611071..e89a2f0f3d5b 100644 --- a/starmath/source/edit.cxx +++ b/starmath/source/edit.cxx @@ -116,7 +116,7 @@ SmEditWindow::SmEditWindow( SmCmdBoxWindow &rMyCmdBoxWin ) : // Even RTL languages don't use RTL for math rCmdBox.GetEditWindow()->EnableRTL( FALSE ); - ApplyColorConfigValues( SM_MOD1()->GetColorConfig() ); + ApplyColorConfigValues( SM_MOD()->GetColorConfig() ); // compare DataChanged SetBackground( GetSettings().GetStyleSettings().GetWindowColor() ); @@ -212,7 +212,7 @@ void SmEditWindow::DataChanged( const DataChangedEvent& ) { const StyleSettings aSettings( GetSettings().GetStyleSettings() ); - ApplyColorConfigValues( SM_MOD1()->GetColorConfig() ); + ApplyColorConfigValues( SM_MOD()->GetColorConfig() ); SetBackground( aSettings.GetWindowColor() ); // edit fields in other Applications use this font instead of @@ -246,7 +246,7 @@ void SmEditWindow::DataChanged( const DataChangedEvent& ) IMPL_LINK( SmEditWindow, ModifyTimerHdl, Timer *, EMPTYARG /*pTimer*/ ) { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); if (pp->GetConfig()->IsAutoRedraw()) Flush(); aModifyTimer.Start(); diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk index 0f604a22b346..e0b8d47d7cfe 100644 --- a/starmath/source/makefile.mk +++ b/starmath/source/makefile.mk @@ -52,33 +52,33 @@ SRC2FILES = smres.src \ commands.src SLO1FILES = \ - $(SLO)$/register.obj \ - $(SLO)$/typemap.obj \ + $(SLO)$/accessibility.obj \ + $(SLO)$/edit.obj \ + $(SLO)$/eqnolefilehdr.obj \ + $(SLO)$/mathmlexport.obj \ + $(SLO)$/mathmlimport.obj \ $(SLO)$/symbol.obj \ - $(SLO)$/toolbox.obj \ + $(SLO)$/types.obj \ + $(SLO)$/unodoc.obj \ $(SLO)$/action.obj \ - $(SLO)$/accessibility.obj \ $(SLO)$/cfgitem.obj \ $(SLO)$/config.obj \ $(SLO)$/dialog.obj \ $(SLO)$/document.obj \ - $(SLO)$/mathtype.obj \ - $(SLO)$/mathmlimport.obj \ - $(SLO)$/mathmlexport.obj \ $(SLO)$/format.obj \ + $(SLO)$/mathtype.obj \ $(SLO)$/node.obj \ $(SLO)$/parse.obj \ - $(SLO)$/utility.obj \ + $(SLO)$/register.obj \ $(SLO)$/smdll.obj \ + $(SLO)$/toolbox.obj \ + $(SLO)$/typemap.obj \ $(SLO)$/smmod.obj \ - $(SLO)$/types.obj \ - $(SLO)$/view.obj \ - $(SLO)$/viewhdl.obj \ - $(SLO)$/edit.obj \ + $(SLO)$/utility.obj \ $(SLO)$/rect.obj \ $(SLO)$/unomodel.obj \ - $(SLO)$/unodoc.obj \ - $(SLO)$/eqnolefilehdr.obj + $(SLO)$/viewhdl.obj \ + $(SLO)$/view.obj SLO2FILES = \ $(SLO)$/register.obj \ diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx index ad3987549c0f..bfafe705f486 100644 --- a/starmath/source/node.cxx +++ b/starmath/source/node.cxx @@ -118,7 +118,7 @@ Color SmTmpDevice::Impl_GetColor( const Color& rColor ) if (OUTDEV_WINDOW == rOutDev.GetOutDevType()) aBgCol = ((Window &) rOutDev).GetDisplayBackground().GetColor(); - nNewCol = SM_MOD1()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor; + nNewCol = SM_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor; Color aTmpColor( nNewCol ); if (aBgCol.IsDark() && aTmpColor.IsDark()) @@ -2806,9 +2806,9 @@ void SmSpecialNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell SmNode::Prepare(rFormat, rDocShell); const SmSym *pSym; - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); - if (NULL != (pSym = pp->GetSymSetManager().GetSymbolByName(GetToken().aText))) + if (NULL != (pSym = pp->GetSymbolManager().GetSymbolByName(GetToken().aText))) { SetText( pSym->GetCharacter() ); GetFont() = pSym->GetFace(); diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx index 83662e50b123..fe0a5eeb6437 100644 --- a/starmath/source/parse.cxx +++ b/starmath/source/parse.cxx @@ -383,7 +383,7 @@ BOOL SmParser::IsDelimiter( const String &rTxt, xub_StrLen nPos ) BOOL bIsDelim = *pDelim != 0; - INT16 nTypJp = SM_MOD1()->GetSysLocale().GetCharClass().getType( rTxt, nPos ); + INT16 nTypJp = SM_MOD()->GetSysLocale().GetCharClass().getType( rTxt, nPos ); bIsDelim |= nTypJp == com::sun::star::i18n::UnicodeType::SPACE_SEPARATOR || nTypJp == com::sun::star::i18n::UnicodeType::CONTROL; @@ -441,7 +441,7 @@ void SmParser::NextToken() xub_StrLen nRealStart; BOOL bCont; BOOL bNumStart = FALSE; - CharClass aCC(SM_MOD1()->GetSysLocale().GetCharClass().getLocale()); + CharClass aCC(SM_MOD()->GetSysLocale().GetCharClass().getLocale()); do { // skip white spaces @@ -1365,7 +1365,7 @@ void SmParser::Blank() // Blanks am Zeilenende ignorieren wenn die entsprechende Option gesetzt ist if ( CurToken.eType == TNEWLINE || - (CurToken.eType == TEND && SM_MOD1()->GetConfig()->IsIgnoreSpacesRight()) ) + (CurToken.eType == TEND && SM_MOD()->GetConfig()->IsIgnoreSpacesRight()) ) { pBlankNode->Clear(); } @@ -2289,13 +2289,13 @@ void SmParser::Special() // UI uses localized names XML file format does not.) if (IsImportSymbolNames()) { - const SmLocalizedSymbolData &rLSD = SM_MOD1()->GetLocSymbolData(); + const SmLocalizedSymbolData &rLSD = SM_MOD()->GetLocSymbolData(); aNewName = rLSD.GetUiSymbolName( rName ); bReplace = TRUE; } else if (IsExportSymbolNames()) { - const SmLocalizedSymbolData &rLSD = SM_MOD1()->GetLocSymbolData(); + const SmLocalizedSymbolData &rLSD = SM_MOD()->GetLocSymbolData(); aNewName = rLSD.GetExportSymbolName( rName ); bReplace = TRUE; } @@ -2303,7 +2303,7 @@ void SmParser::Special() else // 5.0 <-> 6.0 formula text (symbol name) conversion { LanguageType nLanguage = GetLanguage(); - SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData(); + SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData(); const ResStringArray *pFrom = 0; const ResStringArray *pTo = 0; if (CONVERT_50_TO_60 == GetConversion()) diff --git a/starmath/source/rect.cxx b/starmath/source/rect.cxx index 0718be8ffd37..1a2a6a408a59 100644 --- a/starmath/source/rect.cxx +++ b/starmath/source/rect.cxx @@ -719,7 +719,7 @@ BOOL SmGetGlyphBoundRect(const OutputDevice &rDev, { // since we format for the printer (where GetTextBoundRect will fail) // we need a virtual device here. - pGlyphDev = &SM_MOD1()->GetDefaultVirtualDev(); + pGlyphDev = &SM_MOD()->GetDefaultVirtualDev(); } const FontMetric aDevFM (rDev.GetFontMetric()); diff --git a/starmath/source/smdll.cxx b/starmath/source/smdll.cxx index 7b9e79a9cf41..1ee06fc60e7d 100644 --- a/starmath/source/smdll.cxx +++ b/starmath/source/smdll.cxx @@ -78,7 +78,7 @@ void SmDLL::Init() SmModule** ppShlPtr = (SmModule**) GetAppData(SHL_SM); *ppShlPtr = new SmModule( &rFactory ); - SfxModule *p = SM_MOD1(); + SfxModule *p = SM_MOD(); SmModule *pp = (SmModule *) p; rFactory.SetDocumentServiceName( String::CreateFromAscii("com.sun.star.formula.FormulaProperties") ); diff --git a/starmath/source/smmod.cxx b/starmath/source/smmod.cxx index 20cfc284d006..a34302338d75 100644 --- a/starmath/source/smmod.cxx +++ b/starmath/source/smmod.cxx @@ -101,7 +101,7 @@ const String SmLocalizedSymbolData::GetUiSymbolName( const String &rExportName ) { String aRes; - const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData(); + const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData(); const ResStringArray &rUiNames = rData.GetUiSymbolNamesArray(); const ResStringArray &rExportNames = rData.GetExportSymbolNamesArray(); USHORT nCount = sal::static_int_cast< xub_StrLen >(rExportNames.Count()); @@ -122,7 +122,7 @@ const String SmLocalizedSymbolData::GetExportSymbolName( const String &rUiName ) { String aRes; - const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData(); + const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData(); const ResStringArray &rUiNames = rData.GetUiSymbolNamesArray(); const ResStringArray &rExportNames = rData.GetExportSymbolNamesArray(); USHORT nCount = sal::static_int_cast< xub_StrLen >(rUiNames.Count()); @@ -143,7 +143,7 @@ const String SmLocalizedSymbolData::GetUiSymbolSetName( const String &rExportNam { String aRes; - const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData(); + const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData(); const ResStringArray &rUiNames = rData.GetUiSymbolSetNamesArray(); const ResStringArray &rExportNames = rData.GetExportSymbolSetNamesArray(); USHORT nCount = sal::static_int_cast< xub_StrLen >(rExportNames.Count()); @@ -164,7 +164,7 @@ const String SmLocalizedSymbolData::GetExportSymbolSetName( const String &rUiNam { String aRes; - const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData(); + const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData(); const ResStringArray &rUiNames = rData.GetUiSymbolSetNamesArray(); const ResStringArray &rExportNames = rData.GetExportSymbolSetNamesArray(); USHORT nCount = sal::static_int_cast< xub_StrLen >(rUiNames.Count()); @@ -317,9 +317,9 @@ SmConfig * SmModule::GetConfig() return pConfig; } -SmSymSetManager & SmModule::GetSymSetManager() +SmSymbolManager & SmModule::GetSymbolManager() { - return GetConfig()->GetSymSetManager(); + return GetConfig()->GetSymbolManager(); } SmLocalizedSymbolData & SmModule::GetLocSymbolData() const diff --git a/starmath/source/symbol.cxx b/starmath/source/symbol.cxx index aba0e754b85e..4868a4d7a37d 100644 --- a/starmath/source/symbol.cxx +++ b/starmath/source/symbol.cxx @@ -37,12 +37,13 @@ #include #include -#ifndef _SV_RESARY_HXX -#include -#endif #include #include +#include +#include +#include + #include "symbol.hxx" #include "view.hxx" #include "utility.hxx" @@ -58,72 +59,38 @@ using namespace ::com::sun::star::ucb; using namespace ::com::sun::star::uno; using namespace ::rtl; -// Das hier muss auch mal alles "uberarbeitet werden. Insbesondere die nicht -// funktionierende und bei l"oschen/"andern von Symbolen nicht gepflegte -// Hash Tabelle!!! Diese aktualisert sich erst im Wertzuweisungsoperator -// beim Verlassen des 'SmSymDefineDialog's! - -/**************************************************************************/ -/* -** -** MACRO DEFINTION -** -**/ - -#define SF_SM20IDENT 0x03031963L -#define SF_IDENT 0x30334D53L - - -SV_IMPL_PTRARR( SymbolArray, SmSym * ); - -/**************************************************************************/ -/* -** -** DATA DEFINITION -** -**/ - -long SF_Ident = SF_IDENT; /**************************************************************************/ -/* -** -** CLASS IMPLEMENTATION -** -**/ SmSym::SmSym() : - Name(C2S("unknown")), - aSetName(C2S("unknown")), - pHashNext(0), - pSymSetManager(0), - Character('\0'), - bPredefined(FALSE), - bDocSymbol(FALSE) + m_aName(C2S("unknown")), + m_aSetName(C2S("unknown")), + m_cChar('\0'), + m_bPredefined(FALSE), + m_bDocSymbol(FALSE) { - aExportName = Name; - Face.SetTransparent(TRUE); - Face.SetAlign(ALIGN_BASELINE); + m_aExportName = m_aName; + m_aFace.SetTransparent(TRUE); + m_aFace.SetAlign(ALIGN_BASELINE); } SmSym::SmSym(const SmSym& rSymbol) { - pSymSetManager = 0; *this = rSymbol; } -SmSym::SmSym(const String& rName, const Font& rFont, sal_Unicode aChar, +SmSym::SmSym(const String& rName, const Font& rFont, sal_Unicode cChar, const String& rSet, BOOL bIsPredefined) { - Name = aExportName = rName; + m_aName = m_aExportName = rName; - Face = rFont; - Face.SetTransparent(TRUE); - Face.SetAlign(ALIGN_BASELINE); + m_aFace = rFont; + m_aFace.SetTransparent(TRUE); + m_aFace.SetAlign(ALIGN_BASELINE); - Character = aChar; + m_cChar = cChar; //! according to HDU this should not be used anymore now //! since this was necessary in the early days but should //! not be done now since this is handled now at a more @@ -135,481 +102,231 @@ SmSym::SmSym(const String& rName, const Font& rFont, sal_Unicode aChar, // // if (RTL_TEXTENCODING_SYMBOL == rFont.GetCharSet()) // Character |= 0xF000; - aSetName = rSet; - bPredefined = bIsPredefined; - bDocSymbol = FALSE; - - pHashNext = 0; - pSymSetManager = 0; + m_aSetName = rSet; + m_bPredefined = bIsPredefined; + m_bDocSymbol = FALSE; } SmSym& SmSym::operator = (const SmSym& rSymbol) { - Name = rSymbol.Name; - Face = rSymbol.Face; - Character = rSymbol.Character; - aSetName = rSymbol.aSetName; - bPredefined = rSymbol.bPredefined; - bDocSymbol = rSymbol.bDocSymbol; - aExportName = rSymbol.aExportName; - - pHashNext = 0; - - if (pSymSetManager) - pSymSetManager->SetModified(TRUE); - - return *this; -} - -/**************************************************************************/ - -SmSymSet::SmSymSet() : - Name(C2S("unknown")), - pSymSetManager(0) -{ - SymbolList.Clear(); -} - -SmSymSet::SmSymSet(const SmSymSet& rSymbolSet) -{ - pSymSetManager = 0; - *this = rSymbolSet; -} - -SmSymSet::SmSymSet(const String& rName) -{ - Name = rName; - SymbolList.Clear(); - - pSymSetManager = 0; -} - -SmSymSet::~SmSymSet() -{ - for (USHORT i = 0; i < GetCount(); i++) - delete SymbolList.GetObject(i); -} - -SmSymSet& SmSymSet::operator = (const SmSymSet& rSymbolSet) -{ - USHORT i; - for (i = 0; i < GetCount(); i++) - delete SymbolList.GetObject(i); - - Name = rSymbolSet.Name; - SymbolList.Clear(); - for (i = 0; i < rSymbolSet.GetCount(); i++) - AddSymbol(new SmSym(rSymbolSet.GetSymbol(i))); + m_aName = rSymbol.m_aName; + m_aExportName = rSymbol.m_aExportName; + m_cChar = rSymbol.m_cChar; + m_aFace = rSymbol.m_aFace; + m_aSetName = rSymbol.m_aSetName; + m_bPredefined = rSymbol.m_bPredefined; + m_bDocSymbol = rSymbol.m_bDocSymbol; + SmSymbolManager * pSymSetManager = &SM_MOD()->GetSymbolManager(); if (pSymSetManager) - pSymSetManager->SetModified(TRUE); + pSymSetManager->SetModified(true); return *this; } -USHORT SmSymSet::AddSymbol(SmSym* pSymbol) -{ - DBG_ASSERT(pSymbol, "Kein Symbol"); - - if (pSymbol) - pSymbol->SetSetName( GetName() ); - SymbolList.Insert(pSymbol, LIST_APPEND); - DBG_ASSERT(SymbolList.GetPos(pSymbol) == SymbolList.Count() - 1, - "Sm : ... ergibt falschen return Wert"); - - if (pSymSetManager) - pSymSetManager->SetModified(TRUE); - - return (USHORT) SymbolList.Count() - 1; -} - -void SmSymSet::DeleteSymbol(USHORT SymbolNo) -{ - delete RemoveSymbol(SymbolNo); -} - -SmSym * SmSymSet::RemoveSymbol(USHORT SymbolNo) -{ - DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden"); - - SmSym *pSym = SymbolList.GetObject(SymbolNo); - SymbolList.Remove(SymbolNo); - - if (pSymSetManager) - pSymSetManager->SetModified(TRUE); - - return pSym; -} - -USHORT SmSymSet::GetSymbolPos(const String& rName) -{ - for (USHORT i = 0; i < GetCount(); i++) - if (SymbolList.GetObject(i)->GetName() == rName) - return (i); - return SYMBOL_NONE; -} - -/**************************************************************************/ - -SmSymSetManager_Impl::SmSymSetManager_Impl( - SmSymSetManager &rMgr, USHORT HashTableSize ) : - - rSymSetMgr (rMgr) -{ - NoSymbolSets = 0; - NoHashEntries = HashTableSize; - HashEntries = new SmSym *[NoHashEntries]; - memset( HashEntries, 0, sizeof(SmSym *) * NoHashEntries ); - Modified = FALSE; -} - - -SmSymSetManager_Impl::~SmSymSetManager_Impl() +bool SmSym::IsEqualInUI( const SmSym& rSymbol ) const { - for (USHORT i = 0; i < NoSymbolSets; ++i) - delete SymbolSets.Get(i); - SymbolSets.Clear(); - - NoSymbolSets = 0; - if (HashEntries) - { - delete[] HashEntries; - HashEntries = 0; - } - NoHashEntries = 0; - Modified = FALSE; -} - - -SmSymSetManager_Impl & SmSymSetManager_Impl::operator = ( const SmSymSetManager_Impl &rImpl ) -{ - //! rMySymSetMgr remains unchanged - - NoHashEntries = rImpl.NoHashEntries; - if (HashEntries) - delete [] HashEntries; - HashEntries = new SmSym *[NoHashEntries]; - memset( HashEntries, 0, sizeof(SmSym *) * NoHashEntries ); - - NoSymbolSets = 0; - SymbolSets.Clear(); - for (USHORT i = 0; i < rImpl.NoSymbolSets; ++i) - { - rSymSetMgr.AddSymbolSet( new SmSymSet( *rImpl.rSymSetMgr.GetSymbolSet(i) ) ); - } - DBG_ASSERT( NoSymbolSets == rImpl.NoSymbolSets, - "incorrect number of symbolsets" ); - - Modified = TRUE; - return *this; + return m_aName == rSymbol.m_aName && + m_aFace == rSymbol.m_aFace && + m_cChar == rSymbol.m_cChar; } /**************************************************************************/ -void SmSymSetManager::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType, +void SmSymbolManager::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType, const SfxHint& /*rHint*/, const TypeId& rHintType) { } -UINT32 SmSymSetManager::GetHashIndex(const String& rSymbolName) -{ - UINT32 x = 1; - for (xub_StrLen i = 0; i < rSymbolName.Len(); i++) - x += x * rSymbolName.GetChar(i) + i; - - return x % pImpl->NoHashEntries; -} - - -void SmSymSetManager::EnterHashTable(SmSym& rSymbol) -{ - int j = GetHashIndex( rSymbol.GetName() ); - if (pImpl->HashEntries[j] == 0) - pImpl->HashEntries[j] = &rSymbol; - else - { - SmSym *p = pImpl->HashEntries[j]; - while (p->pHashNext) - p = p->pHashNext; - p->pHashNext = &rSymbol; - } - rSymbol.pHashNext = 0; -} - - -void SmSymSetManager::EnterHashTable(SmSymSet& rSymbolSet) -{ - for (USHORT i = 0; i < rSymbolSet.GetCount(); i++) - EnterHashTable( *rSymbolSet.SymbolList.GetObject(i) ); -} - -void SmSymSetManager::FillHashTable() -{ - if (pImpl->HashEntries) - { - memset( pImpl->HashEntries, 0, pImpl->NoHashEntries * sizeof(SmSym *) ); - - for (UINT32 i = 0; i < pImpl->NoSymbolSets; i++) - EnterHashTable( *GetSymbolSet( (USHORT) i ) ); - } -} - -void SmSymSetManager::Init() +void SmSymbolManager::Init() { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); StartListening(*pp->GetConfig()); } -void SmSymSetManager::Exit() +void SmSymbolManager::Exit() { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); EndListening(*pp->GetConfig()); } -SmSymSetManager::SmSymSetManager(USHORT HashTableSize) +SmSymbolManager::SmSymbolManager() { - pImpl = new SmSymSetManager_Impl( *this, HashTableSize ); + m_bModified = false; } -SmSymSetManager::SmSymSetManager(const SmSymSetManager& rSymbolSetManager) : +SmSymbolManager::SmSymbolManager(const SmSymbolManager& rSymbolSetManager) : SfxListener() { - pImpl = new SmSymSetManager_Impl( *this, rSymbolSetManager.pImpl->NoHashEntries ); - *pImpl = *rSymbolSetManager.pImpl; + m_aSymbols = rSymbolSetManager.m_aSymbols; + m_bModified = true; } -SmSymSetManager::~SmSymSetManager() +SmSymbolManager::~SmSymbolManager() { - delete pImpl; - pImpl = 0; } -SmSymSetManager& SmSymSetManager::operator = (const SmSymSetManager& rSymbolSetManager) + +SmSymbolManager& SmSymbolManager::operator = (const SmSymbolManager& rSymbolSetManager) { - *pImpl = *rSymbolSetManager.pImpl; + m_aSymbols = rSymbolSetManager.m_aSymbols; + m_bModified = true; return *this; } -USHORT SmSymSetManager::AddSymbolSet(SmSymSet* pSymbolSet) -{ - if (pImpl->NoSymbolSets >= pImpl->SymbolSets.GetSize()) - pImpl->SymbolSets.SetSize(pImpl->NoSymbolSets + 1); - - pImpl->SymbolSets.Put(pImpl->NoSymbolSets++, pSymbolSet); - pSymbolSet->pSymSetManager = this; - - for (USHORT i = 0; i < pSymbolSet->GetCount(); i++) - pSymbolSet->SymbolList.GetObject(i)->pSymSetManager = this; - - FillHashTable(); - pImpl->Modified = TRUE; - - return (USHORT) (pImpl->NoSymbolSets - 1); -} - -void SmSymSetManager::ChangeSymbolSet(SmSymSet* pSymbolSet) +SmSym *SmSymbolManager::GetSymbolByName(const String& rSymbolName) { - if (pSymbolSet) - { - FillHashTable(); - pImpl->Modified = TRUE; - } + SmSym *pRes = NULL; + SymbolMap_t::iterator aIt( m_aSymbols.find( rSymbolName ) ); + if (aIt != m_aSymbols.end()) + pRes = &aIt->second; + return pRes; } -void SmSymSetManager::DeleteSymbolSet(USHORT SymbolSetNo) -{ - delete pImpl->SymbolSets.Get(SymbolSetNo); - pImpl->NoSymbolSets--; - - for (UINT32 i = SymbolSetNo; i < pImpl->NoSymbolSets; i++) - pImpl->SymbolSets.Put(i, pImpl->SymbolSets.Get(i + 1)); - - FillHashTable(); - pImpl->Modified = TRUE; +const SymbolPtrVec_t SmSymbolManager::GetSymbols() const +{ + SymbolPtrVec_t aRes; + SymbolMap_t::const_iterator aIt( m_aSymbols.begin() ); + for ( ; aIt != m_aSymbols.end(); ++aIt) + aRes.push_back( &aIt->second ); + DBG_ASSERT( sSymbols.size() == m_aSymbols.size(), "number of symbols mismatch " ); + return aRes; } -USHORT SmSymSetManager::GetSymbolSetPos(const String& rSymbolSetName) const +bool SmSymbolManager::AddOrReplaceSymbol( const SmSym &rSymbol, bool bForceChange ) { - for (USHORT i = 0; i < pImpl->NoSymbolSets; i++) - if (pImpl->SymbolSets.Get(i)->GetName() == rSymbolSetName) - return (i); - - return SYMBOLSET_NONE; -} + bool bAdded = false; -SmSym *SmSymSetManager::GetSymbolByName(const String& rSymbolName) -{ - SmSym *pSym = pImpl->HashEntries[GetHashIndex(rSymbolName)]; - while (pSym) + const String aSymbolName( rSymbol.GetName() ); + if (aSymbolName.Len() > 0 && rSymbol.GetSymbolSetName().Len() > 0) { - if (pSym->Name == rSymbolName) - break; - pSym = pSym->pHashNext; - } - - return pSym; -} + const SmSym *pFound = GetSymbolByName( aSymbolName ); + const bool bSymbolConflict = pFound && !pFound->IsEqualInUI( rSymbol ); - -void SmSymSetManager::AddReplaceSymbol( const SmSym &rSymbol ) -{ - SmSym *pSym = GetSymbolByName( rSymbol.GetName() ); - if (pSym) - { - *pSym = rSymbol; - } - else - { - USHORT nPos = GetSymbolSetPos( rSymbol.GetSetName() ); - if (SYMBOLSET_NONE == nPos) + // avoid having the same symbol name twice but with different symbols in use + if (!pFound || bForceChange) { - AddSymbolSet( new SmSymSet( rSymbol.GetSetName() ) ); - nPos = GetSymbolSetPos( rSymbol.GetSetName() ); + m_aSymbols[ aSymbolName ] = rSymbol; + bAdded = true; + } + else if (pFound && !bForceChange && bSymbolConflict) + { + // TODO: but what ... + DBG_ASSERT( 0, "symbol conflict, different symbol with same name found!" ); } - DBG_ASSERT( nPos != SYMBOLSET_NONE, "SymbolSet not found"); - SmSym *pTmpSym = new SmSym( rSymbol ); - GetSymbolSet( nPos )->AddSymbol( pTmpSym ); - EnterHashTable( *pTmpSym ); } - SetModified( TRUE ); -} + DBG_ASSERT( bAdded, "failed to add symbol" ); + if (bAdded) + m_bModified = true; -USHORT SmSymSetManager::GetSymbolCount() const -{ - USHORT nRes = 0; - USHORT nSets = GetSymbolSetCount(); - for (USHORT i = 0; i < nSets; ++i) - nRes = nRes + GetSymbolSet(i)->GetCount(); - return nRes; + return bAdded; } -const SmSym * SmSymSetManager::GetSymbolByPos( USHORT nPos ) const +void SmSymbolManager::RemoveSymbol( const String & rSymbolName ) { - const SmSym *pRes = 0; - - INT16 nIdx = 0; - USHORT nSets = GetSymbolSetCount(); - USHORT i = 0; - while (i < nSets && !pRes) + if (rSymbolName.Len() > 0) { - USHORT nEntries = GetSymbolSet(i)->GetCount(); - if (nPos < nIdx + nEntries) - pRes = &GetSymbolSet(i)->GetSymbol( nPos - nIdx ); - else - nIdx = nIdx + nEntries; - ++i; + size_t nOldSize = m_aSymbols.size(); + m_aSymbols.erase( rSymbolName ); + m_bModified = nOldSize != m_aSymbols.size(); } +} - return pRes; + +std::set< String > SmSymbolManager::GetSymbolSetNames() const +{ + std::set< String > aRes; + SymbolMap_t::const_iterator aIt( m_aSymbols.begin() ); + for ( ; aIt != m_aSymbols.end(); ++aIt ) + aRes.insert( aIt->second.GetSymbolSetName() ); + return aRes; } -void SmSymSetManager::GetSymbols( std::vector< SmSym > &rSymbols ) const +const SymbolPtrVec_t SmSymbolManager::GetSymbolSet( const String& rSymbolSetName ) { - INT32 nCount = GetSymbolCount(); - rSymbols.resize( nCount ); - USHORT nPos = 0; - std::vector< SmSym >::iterator aIt( rSymbols.begin() ); - std::vector< SmSym >::iterator aEnd( rSymbols.end() ); - while (aIt != aEnd) + SymbolPtrVec_t aRes; + if (rSymbolSetName.Len() > 0) { - const SmSym *pSym = GetSymbolByPos( nPos++ ); - DBG_ASSERT( pSym, "symbol missing" ); - if (pSym) - *aIt++ = *pSym; + SymbolMap_t::const_iterator aIt( m_aSymbols.begin() ); + for ( ; aIt != m_aSymbols.end(); ++aIt ) + { + if (aIt->second.GetSymbolSetName() == rSymbolSetName) + aRes.push_back( &aIt->second ); + } } - DBG_ASSERT( nPos == nCount, "index out of range?" ); + return aRes; } -void SmSymSetManager::Load() +void SmSymbolManager::Load() { std::vector< SmSym > aSymbols; - SmMathConfig &rCfg = *SM_MOD1()->GetConfig(); + SmMathConfig &rCfg = *SM_MOD()->GetConfig(); rCfg.GetSymbols( aSymbols ); - INT32 nSymbolCount = aSymbols.size(); + size_t nSymbolCount = aSymbols.size(); - USHORT i; - for (i = 0; i < nSymbolCount; ++i) + m_aSymbols.clear(); + for (size_t i = 0; i < nSymbolCount; ++i) { const SmSym &rSym = aSymbols[i]; - DBG_ASSERT( rSym.Name.Len() > 0, "symbol without name!" ); - if (rSym.Name.Len() > 0) - { - SmSymSet *pSymSet = 0; - const String &rSetName = rSym.GetSetName(); - USHORT nSetPos = GetSymbolSetPos( rSetName ); - if (SYMBOLSET_NONE != nSetPos) - pSymSet = GetSymbolSet( nSetPos ); - else - { - pSymSet = new SmSymSet( rSetName ); - AddSymbolSet( pSymSet ); - } - - pSymSet->AddSymbol( new SmSym( rSym ) ); - } + DBG_ASSERT( rSym.GetName().Len() > 0, "symbol without name!" ); + if (rSym.GetName().Len() > 0) + AddOrReplaceSymbol( rSym ); } - // build HashTables - INT32 nSymbolSetCount = GetSymbolSetCount(); - for (i = 0; i < nSymbolSetCount; ++i) - ChangeSymbolSet( GetSymbolSet( i ) ); + m_bModified = true; if (0 == nSymbolCount) { DBG_ERROR( "no symbol set found" ); - pImpl->Modified = FALSE; + m_bModified = false; } } -void SmSymSetManager::Save() +void SmSymbolManager::Save() { - SmMathConfig &rCfg = *SM_MOD1()->GetConfig(); - - // get number of Symbols - USHORT nSymbolCount = 0; - USHORT nSetCount = GetSymbolSetCount(); - USHORT i; - for (i = 0; i < nSetCount; ++i) - nSymbolCount = nSymbolCount + GetSymbolSet( i )->GetCount(); - - if (nSymbolCount) + if (m_bModified) { - USHORT nSaveSymbolCnt = 0; - const SmSym **pSymbols = new const SmSym* [ nSymbolCount ]; - const SmSym **pSym = pSymbols; - for (i = 0; i < nSetCount; ++i) + SmMathConfig &rCfg = *SM_MOD()->GetConfig(); + +#if 0 + USHORT nSymbolCount = GetSymbolCount(); + USHORT nSaveSymbolCnt = 0; + const SmSym **pSymbols = new const SmSym* [ nSymbolCount ]; + const SmSym **pSym = pSymbols; + for (USHORT j = 0; j < nSymbolCount; ++j) { - const SmSymSet *pSymSet = GetSymbolSet( i ); - USHORT n = pSymSet->GetCount(); - for (USHORT j = 0; j < n; ++j) + const SmSym &rSym = *pSymSet->GetSymbol( j ); + if (!rSym.IsDocSymbol()) { - const SmSym &rSym = pSymSet->GetSymbol( j ); - if (!rSym.IsDocSymbol()) - { - *pSym++ = &rSym; - ++nSaveSymbolCnt; - } + *pSym++ = &rSym; + ++nSaveSymbolCnt; } } DBG_ASSERT(pSym - pSymbols == nSaveSymbolCnt, "wrong number of symbols" ); - +#endif + SymbolPtrVec_t aTmp( GetSymbols() ); std::vector< SmSym > aSymbols; - GetSymbols( aSymbols ); + for (size_t i = 0; i < aTmp.size(); ++i) + aSymbols.push_back( *aTmp[i] ); rCfg.SetSymbols( aSymbols ); +#if 0 delete [] pSymbols; +#endif + + m_bModified = false; } } diff --git a/starmath/source/unomodel.cxx b/starmath/source/unomodel.cxx index ed6e5b6bd23f..9d481bf1b840 100644 --- a/starmath/source/unomodel.cxx +++ b/starmath/source/unomodel.cxx @@ -593,7 +593,7 @@ void SmModel::_setPropertyValues(const PropertyMapEntry** ppEntries, const Any* 0 }; SfxItemSet *pItemSet = new SfxItemSet( pDocSh->GetPool(), nRange ); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); pp->GetConfig()->ConfigToItemSet(*pItemSet); SfxPrinter *pPrinter = SfxPrinter::Create ( aStream, pItemSet ); @@ -610,8 +610,8 @@ void SmModel::_setPropertyValues(const PropertyMapEntry** ppEntries, const Any* if ( *pValues >>= aSequence ) { sal_uInt32 nSize = aSequence.getLength(); - SmModule *pp = SM_MOD1(); - SmSymSetManager &rManager = pp->GetSymSetManager(); + SmModule *pp = SM_MOD(); + SmSymbolManager &rManager = pp->GetSymbolManager(); SymbolDescriptor *pDescriptor = aSequence.getArray(); for (sal_uInt32 i = 0; i < nSize ; i++, pDescriptor++) { @@ -626,7 +626,7 @@ void SmModel::_setPropertyValues(const PropertyMapEntry** ppEntries, const Any* pDescriptor->sSymbolSet ); aSymbol.SetExportName ( pDescriptor->sExportName ); aSymbol.SetDocSymbol( TRUE ); - rManager.AddReplaceSymbol ( aSymbol ); + rManager.AddOrReplaceSymbol ( aSymbol ); } } else @@ -795,14 +795,15 @@ void SmModel::_getPropertyValues( const PropertyMapEntry **ppEntries, Any *pValu case HANDLE_SYMBOLS: { // this is get - SmModule *pp = SM_MOD1(); - const SmSymSetManager &rManager = pp->GetSymSetManager(); + SmModule *pp = SM_MOD(); + const SmSymbolManager &rManager = pp->GetSymbolManager(); vector < const SmSym * > aVector; - USHORT nCount = 0; - for (USHORT i = 0, nEnd = rManager.GetSymbolCount(); i < nEnd; i++) + const SymbolPtrVec_t aSymbols( rManager.GetSymbols() ); + size_t nCount = 0; + for (size_t i = 0; i < aSymbols.size(); ++i) { - const SmSym * pSymbol = rManager.GetSymbolByPos( i ); + const SmSym * pSymbol = aSymbols[ i ]; if (pSymbol && !pSymbol->IsPredefined () ) { aVector.push_back ( pSymbol ); @@ -812,12 +813,12 @@ void SmModel::_getPropertyValues( const PropertyMapEntry **ppEntries, Any *pValu Sequence < SymbolDescriptor > aSequence ( nCount ); SymbolDescriptor * pDescriptor = aSequence.getArray(); - vector ::const_iterator aIter = aVector.begin(), aEnd = aVector.end(); + vector < const SmSym * >::const_iterator aIter = aVector.begin(), aEnd = aVector.end(); for(; aIter != aEnd; pDescriptor++, aIter++) { pDescriptor->sName = (*aIter)->GetName(); pDescriptor->sExportName = (*aIter)->GetExportName(); - pDescriptor->sSymbolSet = (*aIter)->GetSetName(); + pDescriptor->sSymbolSet = (*aIter)->GetSymbolSetName(); pDescriptor->nCharacter = static_cast < sal_Int32 > ((*aIter)->GetCharacter()); Font rFont = (*aIter)->GetFace(); diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx index 22f186fbcb76..81030653c006 100644 --- a/starmath/source/view.cxx +++ b/starmath/source/view.cxx @@ -111,7 +111,7 @@ SmGraphicWindow::SmGraphicWindow(SmViewShell* pShell): const Fraction aFraction (1,1); SetMapMode( MapMode(MAP_100TH_MM, Point(), aFraction, aFraction)); - ApplyColorConfigValues( SM_MOD1()->GetColorConfig() ); + ApplyColorConfigValues( SM_MOD()->GetColorConfig() ); SetTotalSize(); @@ -149,7 +149,7 @@ void SmGraphicWindow::ApplyColorConfigValues( const svtools::ColorConfig &rColor void SmGraphicWindow::DataChanged( const DataChangedEvent& rEvt ) { - ApplyColorConfigValues( SM_MOD1()->GetColorConfig() ); + ApplyColorConfigValues( SM_MOD()->GetColorConfig() ); ScrollableWindow::DataChanged( rEvt ); } @@ -274,7 +274,7 @@ void SmGraphicWindow::SetCursor(const Rectangle &rRect) // The old cursor will be removed, and the new one will be shown if // that is activated in the ConfigItem { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); if (IsCursorVisible()) ShowCursor(FALSE); // clean up remainings of old cursor @@ -328,7 +328,7 @@ void SmGraphicWindow::Paint(const Rectangle&) nCol++; const SmNode *pFound = SetCursorPos(nRow, nCol); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); if (pFound && pp->GetConfig()->IsShowFormulaCursor()) ShowCursor(TRUE); } @@ -1015,7 +1015,7 @@ void SmViewShell::Impl_Print( { RTL_LOGFILE_CONTEXT( aLog, "starmath: SmViewShell::Impl_Print" ); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); rOutDev.Push(); rOutDev.SetLineColor( Color(COL_BLACK) ); @@ -1187,7 +1187,7 @@ USHORT SmViewShell::Print(SfxProgress &rProgress, BOOL bIsAPI, PrintDialog *pPri OutputRect.Right() -= 1500 - (aPrtPaperSize.Width() - (aPrtPageOffset.X() + OutputRect.Right())); - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); Impl_Print( *pPrinter, pp->GetConfig()->GetPrintSize(), OutputRect, aZeroPoint ); @@ -1217,7 +1217,7 @@ USHORT SmViewShell::SetPrinter(SfxPrinter *pNewPrinter, USHORT nDiffFlags, bool if ((nDiffFlags & SFX_PRINTER_OPTIONS) == SFX_PRINTER_OPTIONS) { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); pp->GetConfig()->ItemSetToConfig(pNewPrinter->GetOptions()); } return 0; @@ -1405,7 +1405,7 @@ void SmViewShell::Execute(SfxRequest& rReq) { case SID_FORMULACURSOR: { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); const SfxItemSet *pArgs = rReq.GetArgs(); const SfxPoolItem *pItem; @@ -1707,11 +1707,11 @@ void SmViewShell::Execute(SfxRequest& rReq) SmDocShell *pDoc = GetDoc(); OutputDevice *pDev = pDoc->GetPrinter(); if (!pDev || pDev->GetDevFontCount() == 0) - pDev = &SM_MOD1()->GetDefaultVirtualDev(); + pDev = &SM_MOD()->GetDefaultVirtualDev(); DBG_ASSERT (pDev, "device for font list missing" ); - SmModule *pp = SM_MOD1(); - SmSymbolDialog( NULL, pDev, pp->GetSymSetManager(), *this ).Execute(); + SmModule *pp = SM_MOD(); + SmSymbolDialog( NULL, pDev, pp->GetSymbolManager(), *this ).Execute(); } break; @@ -1789,7 +1789,7 @@ void SmViewShell::GetState(SfxItemSet &rSet) case SID_FORMULACURSOR: { - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); rSet.Put(SfxBoolItem(nWh, pp->GetConfig()->IsShowFormulaCursor())); } break; -- cgit From dba84e79fc20ced9af1243f4f6ba7f7c0eaee170 Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Wed, 7 Oct 2009 05:07:45 +0000 Subject: merge problem fixed --- starmath/source/makefile.mk | 1 - 1 file changed, 1 deletion(-) (limited to 'starmath') diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk index 24f6a21ca0b9..3a3a09ab8dbf 100644 --- a/starmath/source/makefile.mk +++ b/starmath/source/makefile.mk @@ -77,7 +77,6 @@ SLO1FILES = \ $(SLO)$/utility.obj \ $(SLO)$/rect.obj \ $(SLO)$/unomodel.obj \ - $(SLO)$/viewhdl.obj \ $(SLO)$/view.obj SLO2FILES = \ -- cgit From 388486a510c8f5b04132a614fa5f2c330d229248 Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Fri, 6 Nov 2009 10:10:07 +0000 Subject: #i106487# fix for unnecessary calls to timer --- starmath/source/edit.cxx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'starmath') diff --git a/starmath/source/edit.cxx b/starmath/source/edit.cxx index eea792904f48..d6414855f59d 100644 --- a/starmath/source/edit.cxx +++ b/starmath/source/edit.cxx @@ -122,8 +122,7 @@ SmEditWindow::SmEditWindow( SmCmdBoxWindow &rMyCmdBoxWin ) : SetBackground( GetSettings().GetStyleSettings().GetWindowColor() ); aModifyTimer.SetTimeoutHdl(LINK(this, SmEditWindow, ModifyTimerHdl)); - aModifyTimer.SetTimeout(2000); - aModifyTimer.Start(); + aModifyTimer.SetTimeout(500); aCursorMoveTimer.SetTimeoutHdl(LINK(this, SmEditWindow, CursorMoveTimerHdl)); aCursorMoveTimer.SetTimeout(500); @@ -256,7 +255,6 @@ IMPL_LINK( SmEditWindow, ModifyTimerHdl, Timer *, EMPTYARG /*pTimer*/ ) SmModule *pp = SM_MOD(); if (pp->GetConfig()->IsAutoRedraw()) Flush(); - aModifyTimer.Start(); return 0; } -- cgit From 7a0436ff74b08cc03fd14730e14fcc8b558a2ecb Mon Sep 17 00:00:00 2001 From: "Thomas Lange [tl]" Date: Tue, 12 Jan 2010 14:07:54 +0100 Subject: cws tl74: build errors/warnings after merge --- starmath/inc/dialog.hxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'starmath') diff --git a/starmath/inc/dialog.hxx b/starmath/inc/dialog.hxx index aefc11a60d8a..6a2e56a3bae0 100644 --- a/starmath/inc/dialog.hxx +++ b/starmath/inc/dialog.hxx @@ -498,22 +498,22 @@ public: // Dialog virtual short Execute(); - BOOL SmSymDefineDialog::SelectOldSymbolSet(const XubString &rSymbolSetName) + BOOL SelectOldSymbolSet(const XubString &rSymbolSetName) { return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE); } - BOOL SmSymDefineDialog::SelectOldSymbol(const XubString &rSymbolName) + BOOL SelectOldSymbol(const XubString &rSymbolName) { return SelectSymbol(aOldSymbols, rSymbolName, FALSE); } - BOOL SmSymDefineDialog::SelectSymbolSet(const XubString &rSymbolSetName) + BOOL SelectSymbolSet(const XubString &rSymbolSetName) { return SelectSymbolSet(aSymbolSets, rSymbolSetName, FALSE); } - BOOL SmSymDefineDialog::SelectSymbol(const XubString &rSymbolName) + BOOL SelectSymbol(const XubString &rSymbolName) { return SelectSymbol(aSymbols, rSymbolName, FALSE); } -- cgit From e54a20bf1a45c1c0d2abfe2a7a19bbf2c0bd6bee Mon Sep 17 00:00:00 2001 From: "Thomas Lange [tl]" Date: Tue, 16 Feb 2010 10:47:11 +0100 Subject: cws tl74: merge problem fixed --- starmath/source/unomodel.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 starmath/source/unomodel.cxx (limited to 'starmath') diff --git a/starmath/source/unomodel.cxx b/starmath/source/unomodel.cxx old mode 100644 new mode 100755 index 62f8282069fe..08be8010b632 --- a/starmath/source/unomodel.cxx +++ b/starmath/source/unomodel.cxx @@ -88,7 +88,7 @@ SmPrintUIOptions::SmPrintUIOptions() if( aLocalizedStrings.Count() < 18 ) // bad resource ? return; - SmModule *pp = SM_MOD1(); + SmModule *pp = SM_MOD(); SmConfig *pConfig = pp->GetConfig(); DBG_ASSERT( pConfig, "SmConfig not found" ); if (!pConfig) -- cgit From e72fabb23e518cdfb957d84f5a1143ff5c63d7b5 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 8 Apr 2010 11:58:20 +0200 Subject: slidecopy: add SID_TASKPANE support to Calc, Writer/Web, Writer/Global, Math, Writer/Form, Writer/Report, XMLForm --- starmath/source/view.cxx | 1 + starmath/uiconfig/smath/menubar/menubar.xml | 224 ++++++++++++++-------------- 2 files changed, 114 insertions(+), 111 deletions(-) (limited to 'starmath') diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx index 288018596643..eac43f4e3453 100644 --- a/starmath/source/view.cxx +++ b/starmath/source/view.cxx @@ -746,6 +746,7 @@ SFX_IMPL_INTERFACE(SmViewShell, SfxViewShell, SmResId(0)) // SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT | SFX_VISIBILITY_SERVER, // SmResId(RID_DRAW_OBJECTBAR) ); + SFX_CHILDWINDOW_REGISTRATION(SID_TASKPANE); SFX_CHILDWINDOW_REGISTRATION(SmToolBoxWrapper::GetChildWindowId()); SFX_CHILDWINDOW_REGISTRATION(SmCmdBoxWrapper::GetChildWindowId()); } diff --git a/starmath/uiconfig/smath/menubar/menubar.xml b/starmath/uiconfig/smath/menubar/menubar.xml index bc17f4ef6c31..63bf72c0cf62 100644 --- a/starmath/uiconfig/smath/menubar/menubar.xml +++ b/starmath/uiconfig/smath/menubar/menubar.xml @@ -1,119 +1,121 @@ - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + -- cgit From cd5f399f6c77574dec28aa3b6b73efb261a6a507 Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Fri, 16 Apr 2010 15:14:15 +0200 Subject: slidecopy: now using SID_TASK_PANE in all applications, also in Impress. Implies registering the respective child window in the apps, not in SFX. Also implies getting rid of SID_RIGHT_PANE in Impress. Also, renamed SID_TASK_PANE in Impress to SID_SHOW_TOOL_PANEL, which better fits its purpose, and avoids confusion with SID_TASKPANE. --- starmath/source/smdll.cxx | 3 +++ 1 file changed, 3 insertions(+) (limited to 'starmath') diff --git a/starmath/source/smdll.cxx b/starmath/source/smdll.cxx index 63a86d520d9e..f72ab2be84cb 100644 --- a/starmath/source/smdll.cxx +++ b/starmath/source/smdll.cxx @@ -40,6 +40,7 @@ #include #include #include +#include #ifndef _SMDLL_HXX #include @@ -94,6 +95,8 @@ void SmDLL::Init() SmToolBoxWrapper::RegisterChildWindow(TRUE); SmCmdBoxWrapper::RegisterChildWindow(TRUE); + + ::sfx2::TaskPaneWrapper::RegisterChildWindow( FALSE, pp ); } /************************************************************************* -- cgit From 9638a02039d3d286ba620c751cb9c43b0853df6c Mon Sep 17 00:00:00 2001 From: "Thomas Lange [tl]" Date: Tue, 20 Apr 2010 09:51:20 +0200 Subject: cws tl80: #i106004# selection window title changed --- starmath/source/smres.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 starmath/source/smres.src (limited to 'starmath') diff --git a/starmath/source/smres.src b/starmath/source/smres.src old mode 100644 new mode 100755 index 64891a95daf9..3ba2f49026eb --- a/starmath/source/smres.src +++ b/starmath/source/smres.src @@ -1556,7 +1556,7 @@ FloatingWindow RID_TOOLBOXWINDOW OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 0 , 0 ) ; - Text [ en-US ] = "Formula Elements" ; + Text [ en-US ] = "Elements" ; ToolBox 1 { -- cgit From a826c7a80d0da9a6cb4a371618100dad310b967a Mon Sep 17 00:00:00 2001 From: "Frank Schoenheit [fs]" Date: Thu, 22 Apr 2010 16:16:37 +0200 Subject: slidecopy: removed accelerator/*/default.xml - they're not used for a long time now ... (accelerator config is now in Accelerators.xcu in officecfg. No need to confuse people with those dead files) --- starmath/prj/d.lst | 3 --- starmath/uiconfig/smath/accelerator/en-GB/default.xml | 14 -------------- starmath/uiconfig/smath/accelerator/en-US/default.xml | 14 -------------- 3 files changed, 31 deletions(-) delete mode 100644 starmath/uiconfig/smath/accelerator/en-GB/default.xml delete mode 100644 starmath/uiconfig/smath/accelerator/en-US/default.xml (limited to 'starmath') diff --git a/starmath/prj/d.lst b/starmath/prj/d.lst index d6f5f9f98b62..bc48875e81e6 100644 --- a/starmath/prj/d.lst +++ b/starmath/prj/d.lst @@ -4,8 +4,6 @@ mkdir: %_DEST%\xml%_EXT%\uiconfig\modules mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\menubar mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\toolbar -mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\accelerator -mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\accelerator\en-US mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\statusbar ..\%COMMON_OUTDIR%\misc\*.hid %COMMON_DEST%\bin%_EXT%\hid\*.hid @@ -20,5 +18,4 @@ mkdir: %_DEST%\inc%_EXT%\starmath ..\uiconfig\smath\menubar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\menubar\*.xml ..\uiconfig\smath\toolbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\toolbar\*.xml -..\uiconfig\smath\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\accelerator\en-US\*.xml ..\uiconfig\smath\statusbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\statusbar\*.xml diff --git a/starmath/uiconfig/smath/accelerator/en-GB/default.xml b/starmath/uiconfig/smath/accelerator/en-GB/default.xml deleted file mode 100644 index 7e5e44d8eaa7..000000000000 --- a/starmath/uiconfig/smath/accelerator/en-GB/default.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/starmath/uiconfig/smath/accelerator/en-US/default.xml b/starmath/uiconfig/smath/accelerator/en-US/default.xml deleted file mode 100644 index 7e5e44d8eaa7..000000000000 --- a/starmath/uiconfig/smath/accelerator/en-US/default.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - -- cgit From 5f2fd81b6935efb16336201ef162f283a683f405 Mon Sep 17 00:00:00 2001 From: "Thomas Lange [tl]" Date: Fri, 23 Apr 2010 14:24:45 +0200 Subject: cws tl80: #i109020# 'nospace' command added --- starmath/inc/node.hxx | 13 ++++++-- starmath/inc/parse.hxx | 2 +- starmath/inc/starmath.hrc | 2 ++ starmath/source/commands.src | 7 +++++ starmath/source/node.cxx | 5 +-- starmath/source/parse.cxx | 73 ++++++++++++++++++++++++++++++++------------ 6 files changed, 77 insertions(+), 25 deletions(-) mode change 100644 => 100755 starmath/source/parse.cxx (limited to 'starmath') diff --git a/starmath/inc/node.hxx b/starmath/inc/node.hxx index f9fed9c9602a..6ef89ea5ec1b 100644 --- a/starmath/inc/node.hxx +++ b/starmath/inc/node.hxx @@ -484,15 +484,24 @@ public: class SmLineNode : public SmStructureNode { + BOOL bUseExtraSpaces; + protected: SmLineNode(SmNodeType eNodeType, const SmToken &rNodeToken) : SmStructureNode(eNodeType, rNodeToken) - {} + { + bUseExtraSpaces = TRUE; + } public: SmLineNode(const SmToken &rNodeToken) : SmStructureNode(NLINE, rNodeToken) - {} + { + bUseExtraSpaces = TRUE; + } + + void SetUseExtraSpaces(BOOL bVal) { bUseExtraSpaces = bVal; } + BOOL IsUseExtraSpaces() const { return bUseExtraSpaces; }; virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell); virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat); diff --git a/starmath/inc/parse.hxx b/starmath/inc/parse.hxx index b3ad5ef5bdc3..facf17d561e2 100644 --- a/starmath/inc/parse.hxx +++ b/starmath/inc/parse.hxx @@ -106,7 +106,7 @@ enum SmTokenType TLEFTARROW, TRIGHTARROW, TUPARROW, TDOWNARROW, TDIVIDES, TNDIBVIDES, TSETN, TSETZ, TSETQ, TSETR, TSETC, TWIDEVEC, TWIDETILDE, TWIDEHAT, TWIDESLASH, - TWIDEBACKSLASH, TLDBRACKET, TRDBRACKET, + TWIDEBACKSLASH, TLDBRACKET, TRDBRACKET, TNOSPACE, TUNKNOWN, TDEBUG }; diff --git a/starmath/inc/starmath.hrc b/starmath/inc/starmath.hrc index 2fbc7b4066d1..d73ea27a0d45 100644 --- a/starmath/inc/starmath.hrc +++ b/starmath/inc/starmath.hrc @@ -379,6 +379,7 @@ #define RID_LSUPX (RID_APP_START + 1916) #define RID_CSUBX (RID_APP_START + 1917) #define RID_CSUPX (RID_APP_START + 1918) +#define RID_NOSPACE (RID_APP_START + 1919) #define RID_ALEPH (RID_APP_START + 2001) #define RID_EMPTYSET (RID_APP_START + 2002) @@ -694,6 +695,7 @@ #define HID_SMA_DOTSDOWN (HID_SMA_START + 240) #define HID_SMA_DOTSLOW (HID_SMA_START + 241) #define HID_SMA_DOTSVERT (HID_SMA_START + 242) +#define HID_SMA_NOSPACE (HID_SMA_START + 243) #define HID_SMA_SETN (HID_SMA2_START + 1) #define HID_SMA_SETZ (HID_SMA2_START + 2) diff --git a/starmath/source/commands.src b/starmath/source/commands.src index 75c00cb819a6..9d618bbd0cf3 100644 --- a/starmath/source/commands.src +++ b/starmath/source/commands.src @@ -223,6 +223,7 @@ String RID_LEFTARROW { Text = "leftarrow " ; }; String RID_RIGHTARROW { Text = "rightarrow " ; }; String RID_UPARROW { Text = "uparrow " ; }; String RID_DOWNARROW { Text = "downarrow " ; }; +String RID_NOSPACE { Text = "nospace {} " ; }; ////////////////////////////////////////// @@ -1326,6 +1327,12 @@ Menu RID_COMMANDMENU Text [ en-US ] = "Gap"; }; MenuItem + { + Identifier = RID_NOSPACE; + HelpId = HID_SMA_NOSPACE; + Text [ en-US ] = "nospace {...}"; + }; + MenuItem { Identifier = RID_BINOMXY; HelpId = HID_SMA_BINOMXY; diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx index 722df5a1d502..30b8768d1570 100644 --- a/starmath/source/node.cxx +++ b/starmath/source/node.cxx @@ -831,8 +831,9 @@ void SmLineNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat) return; // make distance depend on font size - long nDist = +(rFormat.GetDistance(DIS_HORIZONTAL) - * GetFont().GetSize().Height()) / 100L; + long nDist = (rFormat.GetDistance(DIS_HORIZONTAL) * GetFont().GetSize().Height()) / 100L; + if (!IsUseExtraSpaces()) + nDist = 0; Point aPos; for (i = 0; i < nSize; i++) diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx old mode 100644 new mode 100755 index 1955b0553b62..0efe0e0ed6b1 --- a/starmath/source/parse.cxx +++ b/starmath/source/parse.cxx @@ -242,12 +242,13 @@ static const SmTokenTableEntry aTokenTable[] = { "ni", TNI, MS_NI, TGRELATION, 0}, { "nitalic", TNITALIC, '\0', TGFONTATTR, 5}, { "none", TNONE, '\0', TGLBRACES | TGRBRACES, 0}, + { "nospace", TNOSPACE, '\0', TGSTANDALONE, 5}, { "notin", TNOTIN, MS_NOTIN, TGRELATION, 0}, + { "nroot", TNROOT, MS_SQRT, TGUNOPER, 5}, { "nsubset", TNSUBSET, MS_NSUBSET, TGRELATION, 0 }, { "nsupset", TNSUPSET, MS_NSUPSET, TGRELATION, 0 }, { "nsubseteq", TNSUBSETEQ, MS_NSUBSETEQ, TGRELATION, 0 }, { "nsupseteq", TNSUPSETEQ, MS_NSUPSETEQ, TGRELATION, 0 }, - { "nroot", TNROOT, MS_SQRT, TGUNOPER, 5}, { "odivide", TODIVIDE, MS_ODIVIDE, TGPRODUCT, 0}, { "odot", TODOT, MS_ODOT, TGPRODUCT, 0}, { "ominus", TOMINUS, MS_OMINUS, TGSUM, 0}, @@ -731,7 +732,7 @@ void SmParser::NextToken() xub_StrLen nTmpStart = sal::static_int_cast< xub_StrLen >(rnEndPos + aTmpRes.LeadingWhiteSpace); - // default setting fo the case that no identifier + // default setting for the case that no identifier // i.e. a valid symbol-name is following the '%' // character CurToken.eType = TTEXT; @@ -1132,6 +1133,16 @@ void SmParser::Line() void SmParser::Expression() { + BOOL bUseExtraSpaces = TRUE; + SmNode *pNode = NodeStack.Pop(); + if (pNode) + { + if (pNode->GetToken().eType == TNOSPACE) + bUseExtraSpaces = FALSE; + else + NodeStack.Push(pNode); // push the node from above again (now to be used as argument to this current 'nospace' node) + } + USHORT n = 0; SmNodeArray RelationArray; @@ -1147,8 +1158,9 @@ void SmParser::Expression() RelationArray[n - 1] = NodeStack.Pop(); } - SmStructureNode *pSNode = new SmExpressionNode(CurToken); + SmExpressionNode *pSNode = new SmExpressionNode(CurToken); pSNode->SetSubNodes(RelationArray); + pSNode->SetUseExtraSpaces(bUseExtraSpaces); NodeStack.Push(pSNode); } @@ -1270,7 +1282,7 @@ void SmParser::SubSup(ULONG nActiveGroup) return; SmSubSupNode *pNode = new SmSubSupNode(CurToken); - //! Of course 'CurToken' ist just the first sub-/supscript token. + //! Of course 'CurToken' is just the first sub-/supscript token. //! It should be of no further interest. The positions of the //! sub-/supscripts will be identified by the corresponding subnodes //! index in the 'aSubNodes' array (enum value from 'SmSubSup'). @@ -1374,30 +1386,51 @@ void SmParser::Blank() void SmParser::Term() { switch (CurToken.eType) - { case TESCAPE : + { + case TESCAPE : Escape(); break; + case TNOSPACE : case TLGROUP : - NextToken(); - - // allow for empty group - if (CurToken.eType == TRGROUP) - { SmStructureNode *pSNode = new SmExpressionNode(CurToken); - pSNode->SetSubNodes(NULL, NULL); - NodeStack.Push(pSNode); - + { + bool bNoSpace = CurToken.eType == TNOSPACE; + if (bNoSpace) // push 'no space' node and continue to parse expression + { + NodeStack.Push(new SmExpressionNode(CurToken)); NextToken(); } - else // go as usual - { Align(); - if (CurToken.eType != TRGROUP) - Error(PE_RGROUP_EXPECTED); - else - { NextToken(); + if (CurToken.eType != TLGROUP) + { + NodeStack.Pop(); // get rid of the 'no space' node pushed above + Term(); + } + else + { + NextToken(); + + // allow for empty group + if (CurToken.eType == TRGROUP) + { + if (bNoSpace) // get rid of the 'no space' node pushed above + NodeStack.Pop(); + SmStructureNode *pSNode = new SmExpressionNode(CurToken); + pSNode->SetSubNodes(NULL, NULL); + NodeStack.Push(pSNode); + + NextToken(); + } + else // go as usual + { + Align(); + if (CurToken.eType != TRGROUP) + Error(PE_RGROUP_EXPECTED); + else + NextToken(); } } - break; + } + break; case TLEFT : Brace(); -- cgit From 16953b1821c4cc394942012c9ff74cf6f9380d9e Mon Sep 17 00:00:00 2001 From: "Thomas Lange [tl]" Date: Fri, 7 May 2010 09:35:48 +0200 Subject: cws tl74: #158766# problem with test tool fixed --- starmath/source/dialog.cxx | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'starmath') diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx index be866c2e0957..222b02f5cd4a 100644 --- a/starmath/source/dialog.cxx +++ b/starmath/source/dialog.cxx @@ -1893,10 +1893,17 @@ IMPL_LINK( SmSymDefineDialog, AddClickHdl, Button *, EMPTYARG pButton ) // add symbol // TO_DO_UCS4 (#i74049): get rid of cast without loosing UCS4 functionality - const SmSym aSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(), + const SmSym aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(), sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ), aSymbolSets.GetText() ); - aSymbolMgrCopy.AddOrReplaceSymbol( aSymbol ); + DBG_ASSERT( aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL, "symbol already exists" ); + aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol ); + + // update display of new symbol + aSymbolDisplay.SetChar( aNewSymbol.GetCharacter() ); + aSymbolDisplay.SetFont( aNewSymbol.GetFace() ); + aSymbolName.SetText( aNewSymbol.GetName() ); + aSymbolSetName.SetText( aNewSymbol.GetSymbolSetName() ); // update list box entries FillSymbolSets(aOldSymbolSets, FALSE); @@ -1922,17 +1929,26 @@ IMPL_LINK( SmSymDefineDialog, ChangeClickHdl, Button *, EMPTYARG pButton ) //! get font from symbol-disp lay since charset-display does not keep //! the bold attribut. // TO_DO_UCS4 (#i74049): get rid of cast without loosing UCS4 functionality - const SmSym aNewSymbol( aSymbols.GetText(), aSymbolDisplay.GetFont(), + const SmSym aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(), sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ), aSymbolSets.GetText() ); // remove old symbol if the name was changed then add new one - if (aOldSymbols.GetText() != aSymbols.GetText()) + const bool bSetNameChanged = aOldSymbolSets.GetText() != aSymbolSets.GetText(); + const bool bNameChanged = aOldSymbols.GetText() != aSymbols.GetText(); + if (bNameChanged) aSymbolMgrCopy.RemoveSymbol( aOldSymbols.GetText() ); aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol, true ); - // clear display for original symbol - SetOrigSymbol(NULL, XubString()); + // clear display for original symbol if necessary + if (bNameChanged) + SetOrigSymbol(NULL, XubString()); + + // update display of new symbol + aSymbolDisplay.SetChar( aNewSymbol.GetCharacter() ); + aSymbolDisplay.SetFont( aNewSymbol.GetFace() ); + aSymbolName.SetText( aNewSymbol.GetName() ); + aSymbolSetName.SetText( aNewSymbol.GetSymbolSetName() ); // update list box entries FillSymbolSets(aOldSymbolSets, FALSE); @@ -2005,9 +2021,12 @@ void SmSymDefineDialog::UpdateButtons() // aendern wenn bei gleichem Namen mindestens eine Einstellung anders ist // oder wenn es noch kein Symbol des neuen Namens gibt (wuerde implizites // loeschen des bereits vorhandenen Symbols erfordern) - BOOL bEqualName = pOrigSymbol && aTmpSymbolName == pOrigSymbol->GetName(); - bChange = pOrigSymbol && ( (bEqualName && !bEqual) || (!bEqualName && bAdd) ); - } +// BOOL bEqualName = pOrigSymbol && aTmpSymbolName == pOrigSymbol->GetName(); +// bChange = pOrigSymbol && ( (bEqualName && !bEqual) || (!bEqualName && bAdd) ); + + // aendern nur falls altes Symbol vorhanden und am neuen etwas anders ist + bChange = pOrigSymbol && !bEqual; +} aAddBtn .Enable(bAdd); aChangeBtn.Enable(bChange); -- cgit From 95838cf7eb35c98e0beec89043352eca276df85e Mon Sep 17 00:00:00 2001 From: "Thomas Lange [tl]" Date: Fri, 7 May 2010 09:38:57 +0200 Subject: cws tl74: #158766# problem with test tool fixed --- starmath/source/dialog.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'starmath') diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx index 222b02f5cd4a..453e265cb46b 100644 --- a/starmath/source/dialog.cxx +++ b/starmath/source/dialog.cxx @@ -1934,7 +1934,7 @@ IMPL_LINK( SmSymDefineDialog, ChangeClickHdl, Button *, EMPTYARG pButton ) aSymbolSets.GetText() ); // remove old symbol if the name was changed then add new one - const bool bSetNameChanged = aOldSymbolSets.GetText() != aSymbolSets.GetText(); +// const bool bSetNameChanged = aOldSymbolSets.GetText() != aSymbolSets.GetText(); const bool bNameChanged = aOldSymbols.GetText() != aSymbols.GetText(); if (bNameChanged) aSymbolMgrCopy.RemoveSymbol( aOldSymbols.GetText() ); -- cgit From 27da46a0e764b80fff9b2cecd22c2c2bee29aea4 Mon Sep 17 00:00:00 2001 From: "Thomas Lange [tl]" Date: Fri, 21 May 2010 10:13:38 +0200 Subject: cws tl74: updating slots fixed --- starmath/source/edit.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'starmath') diff --git a/starmath/source/edit.cxx b/starmath/source/edit.cxx index 302b475c0452..f7093f9c3815 100644 --- a/starmath/source/edit.cxx +++ b/starmath/source/edit.cxx @@ -880,7 +880,10 @@ void SmEditWindow::Cut() { DBG_ASSERT( pEditView, "EditView missing" ); if (pEditView) + { pEditView->Cut(); + GetDoc()->SetModified( TRUE ); + } } void SmEditWindow::Copy() @@ -894,14 +897,20 @@ void SmEditWindow::Paste() { DBG_ASSERT( pEditView, "EditView missing" ); if (pEditView) + { pEditView->Paste(); + GetDoc()->SetModified( TRUE ); + } } void SmEditWindow::Delete() { DBG_ASSERT( pEditView, "EditView missing" ); if (pEditView) + { pEditView->DeleteSelected(); + GetDoc()->SetModified( TRUE ); + } } void SmEditWindow::InsertText(const String& Text) -- cgit From d247197d60cde92dbfc429b738a3a9e5a752d066 Mon Sep 17 00:00:00 2001 From: Mikhail Voytenko Date: Thu, 3 Jun 2010 16:40:59 +0200 Subject: fwk139: #i10000# avoid warnings on solaris --- starmath/source/makefile.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'starmath') diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk index a69a90010700..eda4d91083c0 100644 --- a/starmath/source/makefile.mk +++ b/starmath/source/makefile.mk @@ -94,6 +94,7 @@ EXCEPTIONSFILES = \ $(SLO)$/mathmlimport.obj \ $(SLO)$/mathmlexport.obj \ $(SLO)$/mathtype.obj \ + $(SLO)$/smdll.obj \ $(SLO)$/view.obj \ $(SLO)$/unomodel.obj \ $(SLO)$/smdetect.obj \ -- cgit From a60813cb9de5a57e13aafca2eefada5f580878ae Mon Sep 17 00:00:00 2001 From: Release Engineering Date: Fri, 11 Jun 2010 09:21:23 +0200 Subject: masterfix: #10000# dialog.obj added to EXCEPTIONFILES --- starmath/source/makefile.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'starmath') diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk index b8256514f453..6b100ee606f2 100644 --- a/starmath/source/makefile.mk +++ b/starmath/source/makefile.mk @@ -88,6 +88,7 @@ EXCEPTIONSFILES = \ $(SLO)$/register.obj \ $(SLO)$/accessibility.obj \ $(SLO)$/cfgitem.obj \ + $(SLO)$/dialog.obj \ $(SLO)$/document.obj \ $(SLO)$/node.obj \ $(SLO)$/parse.obj \ -- cgit From f536dbf880c747403a9aed3a047487b8075d282f Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 11 Jun 2010 10:25:05 +0200 Subject: masterfix: #i10000# disable assertions, sSymbols + aTmpSymbolName not defined --- starmath/source/dialog.cxx | 2 +- starmath/source/symbol.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'starmath') diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx index 453e265cb46b..037f2fc1dff8 100644 --- a/starmath/source/dialog.cxx +++ b/starmath/source/dialog.cxx @@ -1896,7 +1896,7 @@ IMPL_LINK( SmSymDefineDialog, AddClickHdl, Button *, EMPTYARG pButton ) const SmSym aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(), sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ), aSymbolSets.GetText() ); - DBG_ASSERT( aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL, "symbol already exists" ); + //DBG_ASSERT( aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL, "symbol already exists" ); aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol ); // update display of new symbol diff --git a/starmath/source/symbol.cxx b/starmath/source/symbol.cxx index 395ca9ce8cdb..e248f9726629 100644 --- a/starmath/source/symbol.cxx +++ b/starmath/source/symbol.cxx @@ -195,7 +195,7 @@ const SymbolPtrVec_t SmSymbolManager::GetSymbols() const SymbolMap_t::const_iterator aIt( m_aSymbols.begin() ); for ( ; aIt != m_aSymbols.end(); ++aIt) aRes.push_back( &aIt->second ); - DBG_ASSERT( sSymbols.size() == m_aSymbols.size(), "number of symbols mismatch " ); +// DBG_ASSERT( sSymbols.size() == m_aSymbols.size(), "number of symbols mismatch " ); return aRes; } -- cgit