summaryrefslogtreecommitdiff
path: root/starmath
diff options
context:
space:
mode:
authorThomas Lange [tl] <tl@openoffice.org>2010-06-14 14:38:44 +0200
committerThomas Lange [tl] <tl@openoffice.org>2010-06-14 14:38:44 +0200
commit769b049c38303a16842d50b41c91094d2232988a (patch)
treeec943392a8544a11034e633d28bb78b0f2adcaf6 /starmath
parent4dc7803c4d9d411579ce4fe871c2abdcd107c6c6 (diff)
parentf536dbf880c747403a9aed3a047487b8075d282f (diff)
CWS tl80: merge with DEV300_m82
Diffstat (limited to 'starmath')
-rw-r--r--starmath/inc/dialog.hxx85
-rw-r--r--starmath/inc/smmod.hxx5
-rw-r--r--starmath/inc/symbol.hxx176
-rw-r--r--starmath/prj/d.lst3
-rw-r--r--starmath/qa/unoapi/knownissues.xcl5
-rw-r--r--starmath/source/cfgitem.cxx18
-rw-r--r--starmath/source/cfgitem.hxx4
-rw-r--r--starmath/source/dialog.cxx329
-rw-r--r--starmath/source/document.cxx24
-rw-r--r--starmath/source/edit.cxx19
-rw-r--r--starmath/source/makefile.mk27
-rw-r--r--starmath/source/node.cxx6
-rwxr-xr-xstarmath/source/parse.cxx12
-rw-r--r--starmath/source/rect.cxx2
-rw-r--r--starmath/source/smdll.cxx5
-rw-r--r--starmath/source/smmod.cxx12
-rw-r--r--starmath/source/symbol.cxx559
-rwxr-xr-x[-rw-r--r--]starmath/source/unomodel.cxx25
-rwxr-xr-x[-rw-r--r--]starmath/source/view.cxx23
-rw-r--r--starmath/uiconfig/smath/accelerator/en-GB/default.xml14
-rw-r--r--starmath/uiconfig/smath/accelerator/en-US/default.xml14
-rw-r--r--starmath/uiconfig/smath/menubar/menubar.xml224
22 files changed, 581 insertions, 1010 deletions
diff --git a/starmath/inc/dialog.hxx b/starmath/inc/dialog.hxx
index b019a5b08ee1..75aee6fd2009 100644
--- a/starmath/inc/dialog.hxx
+++ b/starmath/inc/dialog.hxx
@@ -300,7 +300,7 @@ public:
class SmShowSymbolSet : public Control
{
- SmSymSet aSymbolSet;
+ SymbolPtrVec_t aSymbolSet;
ScrollBar aVScrollBar;
Size aOutputSize;
Link aSelectHdlLink;
@@ -318,7 +318,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; }
@@ -360,8 +360,10 @@ class SmSymbolDialog : public ModalDialog
PushButton aEditBtn;
SmViewShell &rViewSh;
- SmSymSetManager &rSymSetMgr;
- const SmSymSet *pSymSet;
+ SmSymbolManager &rSymbolMgr;
+
+ String aSymbolSetName;
+ SymbolPtrVec_t aSymbolSet;
OutputDevice *pFontListDev;
@@ -373,7 +375,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();
@@ -381,7 +383,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);
@@ -439,8 +441,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;
@@ -462,7 +464,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();
@@ -474,18 +476,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;
@@ -493,44 +495,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 SelectOldSymbolSet(const XubString &rSymbolSetName)
+ {
+ return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE);
+ }
-inline const SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox) const
-{
- return ((SmSymDefineDialog *) this)->GetSymbol(rComboBox);
-}
+ BOOL SelectOldSymbol(const XubString &rSymbolName)
+ {
+ return SelectSymbol(aOldSymbols, rSymbolName, FALSE);
+ }
-inline BOOL SmSymDefineDialog::SelectOldSymbolSet(const XubString &rSymbolSetName)
-{
- return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE);
-}
+ BOOL SelectSymbolSet(const XubString &rSymbolSetName)
+ {
+ return SelectSymbolSet(aSymbolSets, rSymbolSetName, FALSE);
+ }
-inline BOOL SmSymDefineDialog::SelectOldSymbol(const XubString &rSymbolName)
-{
- return SelectSymbol(aOldSymbols, rSymbolName, FALSE);
-}
+ BOOL 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 bd8292e9a7b1..f74beb9de92b 100644
--- a/starmath/inc/smmod.hxx
+++ b/starmath/inc/smmod.hxx
@@ -47,7 +47,7 @@ class SvxErrorHandler;
class SfxObjectFactory;
class SmConfig;
class SmModule;
-class SmSymSetManager;
+class SmSymbolManager;
/*************************************************************************
|*
@@ -149,7 +149,7 @@ public:
svtools::ColorConfig & GetColorConfig();
SmConfig * GetConfig();
- SmSymSetManager & GetSymSetManager();
+ SmSymbolManager & GetSymbolManager();
SmLocalizedSymbolData & GetLocSymbolData() const;
@@ -176,7 +176,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 8c8df60c2c6e..503859485095 100644
--- a/starmath/inc/symbol.hxx
+++ b/starmath/inc/symbol.hxx
@@ -28,198 +28,146 @@
#define SYMBOL_HXX
#include <vos/refernce.hxx>
-#ifndef _FONT_HXX //autogen
#include <vcl/font.hxx>
-#endif
#include <tools/list.hxx>
#include <tools/debug.hxx>
#include <tools/dynary.hxx>
#include <svl/lstner.hxx>
#include <svl/svarray.hxx>
+
+#include <map>
+#include <vector>
+#include <set>
+
#include "utility.hxx"
-#include <smmod.hxx>
+#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/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/qa/unoapi/knownissues.xcl b/starmath/qa/unoapi/knownissues.xcl
index 960ad64ce13c..e11895ef3fe4 100644
--- a/starmath/qa/unoapi/knownissues.xcl
+++ b/starmath/qa/unoapi/knownissues.xcl
@@ -12,4 +12,7 @@ sm.SmEditAccessible::com::sun::star::accessibility::XAccessibleEventBroadcaster
sm.SmGraphicAccessible::com::sun::star::accessibility::XAccessibleEventBroadcaster
### i94275 ###
-sm.SmGraphicAccessible::com::sun::star::accessibility::XAccessibleText \ No newline at end of file
+sm.SmGraphicAccessible::com::sun::star::accessibility::XAccessibleText
+
+### i111220 ###
+sm.XMLMetaExporter::com::sun::star::document::XFilter
diff --git a/starmath/source/cfgitem.cxx b/starmath/source/cfgitem.cxx
index da507871ed61..bf62157a30d3 100644
--- a/starmath/source/cfgitem.cxx
+++ b/starmath/source/cfgitem.cxx
@@ -429,7 +429,7 @@ SmMathConfig::SmMathConfig() :
pFormat = 0;
pOther = 0;
pFontFormatList = 0;
- pSymSetMgr = 0;
+ pSymbolMgr = 0;
bIsOtherModified = bIsFormatModified = FALSE;
}
@@ -441,7 +441,7 @@ SmMathConfig::~SmMathConfig()
delete pFormat;
delete pOther;
delete pFontFormatList;
- delete pSymSetMgr;
+ delete pSymbolMgr;
}
@@ -554,14 +554,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;
}
@@ -570,6 +570,7 @@ void SmMathConfig::Commit()
Save();
}
+
void SmMathConfig::Save()
{
SaveOther();
@@ -577,6 +578,7 @@ void SmMathConfig::Save()
SaveFontFormatList();
}
+
void SmMathConfig::GetSymbols( std::vector< SmSym > &rSymbols ) const
{
Sequence< OUString > aNodes( ((SmMathConfig*) this)->GetNodeNames( A2OU( SYMBOL_LIST ) ) );
@@ -627,7 +629,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 514573f6e7ac..9e4aa9f39f2f 100644
--- a/starmath/source/cfgitem.hxx
+++ b/starmath/source/cfgitem.hxx
@@ -122,7 +122,7 @@ class SmMathConfig : public utl::ConfigItem
SmFormat * pFormat;
SmCfgOther * pOther;
SmFontFormatList * pFontFormatList;
- SmSymSetManager * pSymSetMgr;
+ SmSymbolManager * pSymbolMgr;
BOOL bIsOtherModified;
BOOL bIsFormatModified;
@@ -182,7 +182,7 @@ 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 );
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx
index 257fdb959484..037f2fc1dff8 100644
--- a/starmath/source/dialog.cxx
+++ b/starmath/source/dialog.cxx
@@ -426,7 +426,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 );
@@ -533,7 +533,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 );
@@ -579,7 +579,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);
@@ -601,7 +601,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;
@@ -740,7 +740,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 );
@@ -1063,7 +1063,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 );
@@ -1140,12 +1140,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);
@@ -1206,7 +1206,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;
@@ -1218,7 +1218,7 @@ void SmShowSymbolSet::KeyInput(const KeyEvent& rKEvt)
else
n = 0;
- if (n >= aSymbolSet.GetCount())
+ if (n >= aSymbolSet.size())
n = nSelectSymbol;
// adjust scrollbar
@@ -1274,13 +1274,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
@@ -1302,10 +1302,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)
@@ -1380,9 +1380,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 );
}
@@ -1416,7 +1417,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()),
@@ -1432,9 +1433,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();
}
@@ -1442,7 +1443,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;
@@ -1499,7 +1509,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)),
@@ -1510,13 +1520,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));
@@ -1580,18 +1591,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;
@@ -1606,8 +1616,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);
@@ -1618,7 +1628,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;
}
@@ -1678,15 +1689,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() );
}
@@ -1701,9 +1707,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 );
}
@@ -1748,26 +1755,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());
}
@@ -1897,32 +1891,23 @@ 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 aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(),
+ sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ),
+ aSymbolSets.GetText() );
+ //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);
+ FillSymbolSets(aSymbolSets, FALSE);
FillSymbols(aOldSymbols ,FALSE);
FillSymbols(aSymbols ,FALSE);
@@ -1940,61 +1925,36 @@ 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()) );
-
- // 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
+ 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
+// 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 if necessary
+ if (bNameChanged)
SetOrigSymbol(NULL, XubString());
- }
- //!! 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);
+ // 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);
+ FillSymbolSets(aSymbolSets, FALSE);
+ FillSymbols(aOldSymbols ,FALSE);
+ FillSymbols(aSymbols ,FALSE);
UpdateButtons();
@@ -2012,33 +1972,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();
@@ -2070,7 +2013,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;
@@ -2078,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);
@@ -2089,7 +2035,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)),
@@ -2120,7 +2066,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)
{
@@ -2131,9 +2077,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)
@@ -2141,7 +2088,7 @@ SmSymDefineDialog::SmSymDefineDialog(Window * pParent,
InitColor_Impl();
- SetSymbolSetManager(rSymSetMgr);
+ SetSymbolSetManager(rSymbolMgr);
aOldSymbols .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolChangeHdl));
aOldSymbolSets .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolSetChangeHdl));
@@ -2215,41 +2162,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)
@@ -2404,13 +2333,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 ff2d5bed71a2..49739af72972 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -143,8 +143,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();
}
@@ -274,7 +274,7 @@ void SmDocShell::ArrangeFormula()
pOutDev = &pView->GetGraphicWindow();
else
{
- pOutDev = &SM_MOD1()->GetDefaultVirtualDev();
+ pOutDev = &SM_MOD()->GetDefaultVirtualDev();
pOutDev->SetMapMode( MapMode(MAP_100TH_MM) );
}
}
@@ -608,7 +608,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) );
@@ -690,7 +690,7 @@ SmDocShell::SmDocShell( const sal_uInt64 i_nSfxCreationFlags ) :
SetPool(&SFX_APP()->GetPool());
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
aFormat = pp->GetConfig()->GetStandardFormat();
StartListening(aFormat);
@@ -705,7 +705,7 @@ SmDocShell::~SmDocShell()
{
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::~SmDocShell" );
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
EndListening(aFormat);
EndListening(*pp->GetConfig());
@@ -1001,7 +1001,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);
}
@@ -1020,7 +1020,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 );
@@ -1104,7 +1104,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 );
@@ -1201,7 +1201,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));
@@ -1290,8 +1290,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 94e30ce82501..f7093f9c3815 100644
--- a/starmath/source/edit.cxx
+++ b/starmath/source/edit.cxx
@@ -113,14 +113,13 @@ 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() );
aModifyTimer.SetTimeoutHdl(LINK(this, SmEditWindow, ModifyTimerHdl));
- aModifyTimer.SetTimeout(2000);
- aModifyTimer.Start();
+ aModifyTimer.SetTimeout(500);
aCursorMoveTimer.SetTimeoutHdl(LINK(this, SmEditWindow, CursorMoveTimerHdl));
aCursorMoveTimer.SetTimeout(500);
@@ -216,7 +215,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
@@ -250,10 +249,9 @@ 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();
return 0;
}
@@ -882,7 +880,10 @@ void SmEditWindow::Cut()
{
DBG_ASSERT( pEditView, "EditView missing" );
if (pEditView)
+ {
pEditView->Cut();
+ GetDoc()->SetModified( TRUE );
+ }
}
void SmEditWindow::Copy()
@@ -896,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)
diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk
index a69a90010700..6b100ee606f2 100644
--- a/starmath/source/makefile.mk
+++ b/starmath/source/makefile.mk
@@ -48,32 +48,32 @@ 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)$/edit.obj \
+ $(SLO)$/utility.obj \
$(SLO)$/rect.obj \
$(SLO)$/unomodel.obj \
- $(SLO)$/unodoc.obj \
- $(SLO)$/eqnolefilehdr.obj
+ $(SLO)$/view.obj
SLO2FILES = \
$(SLO)$/register.obj \
@@ -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 \
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index 30b8768d1570..4601b2f84fec 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -115,7 +115,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())
@@ -2804,9 +2804,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 0efe0e0ed6b1..15971d0c38af 100755
--- a/starmath/source/parse.cxx
+++ b/starmath/source/parse.cxx
@@ -381,7 +381,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;
@@ -439,7 +439,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
@@ -1374,7 +1374,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();
}
@@ -2319,13 +2319,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;
}
@@ -2333,7 +2333,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 02df2ddf060e..248983a393a8 100644
--- a/starmath/source/rect.cxx
+++ b/starmath/source/rect.cxx
@@ -715,7 +715,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 63a86d520d9e..a66ec8efc608 100644
--- a/starmath/source/smdll.cxx
+++ b/starmath/source/smdll.cxx
@@ -40,6 +40,7 @@
#include <sfx2/docfile.hxx>
#include <sfx2/docfilt.hxx>
#include <sfx2/app.hxx>
+#include <sfx2/taskpane.hxx>
#ifndef _SMDLL_HXX
#include <smdll.hxx>
@@ -75,7 +76,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") );
@@ -94,6 +95,8 @@ void SmDLL::Init()
SmToolBoxWrapper::RegisterChildWindow(TRUE);
SmCmdBoxWrapper::RegisterChildWindow(TRUE);
+
+ ::sfx2::TaskPaneWrapper::RegisterChildWindow( FALSE, pp );
}
/*************************************************************************
diff --git a/starmath/source/smmod.cxx b/starmath/source/smmod.cxx
index 451bb8664bc5..da6259076adc 100644
--- a/starmath/source/smmod.cxx
+++ b/starmath/source/smmod.cxx
@@ -98,7 +98,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());
@@ -119,7 +119,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());
@@ -140,7 +140,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());
@@ -161,7 +161,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());
@@ -311,9 +311,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 7d2799b71647..e248f9726629 100644
--- a/starmath/source/symbol.cxx
+++ b/starmath/source/symbol.cxx
@@ -34,12 +34,13 @@
#include <ucbhelper/content.hxx>
#include <vcl/msgbox.hxx>
-#ifndef _SV_RESARY_HXX
-#include <tools/resary.hxx>
-#endif
#include <sfx2/dispatch.hxx>
#include <sfx2/docfile.hxx>
+#include <map>
+#include <vector>
+#include <iterator>
+
#include "symbol.hxx"
#include "view.hxx"
#include "utility.hxx"
@@ -55,72 +56,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
@@ -132,481 +99,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 f4acc1af6b89..013831f6e44e 100644..100755
--- a/starmath/source/unomodel.cxx
+++ b/starmath/source/unomodel.cxx
@@ -85,7 +85,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)
@@ -684,7 +684,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 );
@@ -701,8 +701,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++)
{
@@ -717,7 +717,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
@@ -886,14 +886,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 );
@@ -903,12 +904,12 @@ void SmModel::_getPropertyValues( const PropertyMapEntry **ppEntries, Any *pValu
Sequence < SymbolDescriptor > aSequence ( nCount );
SymbolDescriptor * pDescriptor = aSequence.getArray();
- vector <const SmSym * >::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 1552d4edc231..886d409931b2 100644..100755
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -107,7 +107,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();
@@ -145,7 +145,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 );
}
@@ -270,7 +270,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
@@ -324,7 +324,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);
}
@@ -743,6 +743,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());
}
@@ -1162,7 +1163,7 @@ void SmViewShell::Impl_Print(
USHORT SmViewShell::Print(SfxProgress & /*rProgress*/, BOOL /*bIsAPI*/, PrintDialog * /*pPrintDialog*/)
{
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmViewShell::Print" );
- DBG_ASSERT( 0, "SmViewShell::Print: no longer usewd with new UI print dialog. Should be removed!!" );
+ DBG_ASSERT( 0, "SmViewShell::Print: no longer used with new UI print dialog. Should be removed!!" );
return 0;
}
@@ -1190,7 +1191,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;
@@ -1378,7 +1379,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;
@@ -1680,11 +1681,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;
}
@@ -1759,7 +1760,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;
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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_A" accel:mod1="true" xlink:href=".uno:Select"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:NextError"/>
- <accel:item accel:code="KEY_F3" accel:shift="true" xlink:href=".uno:PrevError"/>
- <accel:item accel:code="KEY_F4" xlink:href=".uno:NextMark"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:PrevMark"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:Draw"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
-</accel:acceleratorlist>
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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_A" accel:mod1="true" xlink:href=".uno:Select"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:NextError"/>
- <accel:item accel:code="KEY_F3" accel:shift="true" xlink:href=".uno:PrevError"/>
- <accel:item accel:code="KEY_F4" xlink:href=".uno:NextMark"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:PrevMark"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:Draw"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
-</accel:acceleratorlist>
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 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuitem menu:id=".uno:VersionDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menu menu:id=".uno:SendToMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuitem menu:id=".uno:VersionDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menuitem menu:id=".uno:Signature"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menuitem menu:id=".uno:Signature"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:Select"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NextMark"/>
+ <menu:menuitem menu:id=".uno:PrevMark"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NextError"/>
+ <menu:menuitem menu:id=".uno:PrevError"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Draw"/>
+ <menu:menuitem menu:id=".uno:RedrawAutomatic"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:ToolBox"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:ZoomIn"/>
+ <menu:menuitem menu:id=".uno:ZoomOut"/>
+ <menu:menuitem menu:id=".uno:Adjust"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ChangeFont"/>
+ <menu:menuitem menu:id=".uno:ChangeFontSize"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChangeDistance"/>
+ <menu:menuitem menu:id=".uno:ChangeAlignment"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Textmode"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SymbolCatalogue"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:Select"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NextMark"/>
- <menu:menuitem menu:id=".uno:PrevMark"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NextError"/>
- <menu:menuitem menu:id=".uno:PrevError"/>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Draw"/>
- <menu:menuitem menu:id=".uno:RedrawAutomatic"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:ToolBox"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:ZoomIn"/>
- <menu:menuitem menu:id=".uno:ZoomOut"/>
- <menu:menuitem menu:id=".uno:Adjust"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeFont"/>
- <menu:menuitem menu:id=".uno:ChangeFontSize"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChangeDistance"/>
- <menu:menuitem menu:id=".uno:ChangeAlignment"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Textmode"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SymbolCatalogue"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
+ </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
- </menu:menupopup>
- </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>