summaryrefslogtreecommitdiff
path: root/starmath/source
diff options
context:
space:
mode:
Diffstat (limited to 'starmath/source')
-rw-r--r--starmath/source/dialog.cxx8
-rw-r--r--starmath/source/node.cxx6
-rw-r--r--starmath/source/parse5.cxx18
-rw-r--r--starmath/source/symbol.cxx35
4 files changed, 44 insertions, 23 deletions
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx
index 8625072c90e8..c5e38f6cb684 100644
--- a/starmath/source/dialog.cxx
+++ b/starmath/source/dialog.cxx
@@ -1544,7 +1544,7 @@ void SmSymDefineDialog::FillStyles()
SmSym* SmSymDefineDialog::GetSymbol(const weld::ComboBox& rComboBox)
{
assert((&rComboBox == m_xOldSymbols.get() || &rComboBox == m_xSymbols.get()) && "Sm : wrong combobox");
- return m_aSymbolMgrCopy.GetSymbolByName(rComboBox.get_active_text());
+ return m_aSymbolMgrCopy.GetSymbolByUiName(rComboBox.get_active_text());
}
IMPL_LINK(SmSymDefineDialog, OldSymbolChangeHdl, weld::ComboBox&, rComboBox, void)
@@ -1652,7 +1652,7 @@ IMPL_LINK( SmSymDefineDialog, AddClickHdl, weld::Button&, rButton, void )
// add symbol
const SmSym aNewSymbol(m_xSymbols->get_active_text(), m_xCharsetDisplay->GetFont(),
m_xCharsetDisplay->GetSelectCharacter(), m_xSymbolSets->get_active_text());
- //OSL_ENSURE( m_aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL, "symbol already exists" );
+ //OSL_ENSURE( m_aSymbolMgrCopy.GetSymbolByUiName(aTmpSymbolName) == NULL, "symbol already exists" );
m_aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol );
// update display of new symbol
@@ -1750,7 +1750,7 @@ void SmSymDefineDialog::UpdateButtons()
&& m_xCharsetDisplay->GetSelectCharacter() == m_xOrigSymbol->GetCharacter();
// only add it if there isn't already a symbol with the same name
- bAdd = m_aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == nullptr;
+ bAdd = m_aSymbolMgrCopy.GetSymbolByUiName(aTmpSymbolName) == nullptr;
// only delete it if all settings are equal
bDelete = bool(m_xOrigSymbol);
@@ -1982,7 +1982,7 @@ bool SmSymDefineDialog::SelectSymbol(weld::ComboBox& rComboBox,
OUString aTmpOldSymbolSetName;
if (nPos != -1)
{
- pOldSymbol = m_aSymbolMgrCopy.GetSymbolByName(aNormName);
+ pOldSymbol = m_aSymbolMgrCopy.GetSymbolByUiName(aNormName);
aTmpOldSymbolSetName = m_xOldSymbolSets->get_active_text();
}
SetOrigSymbol(pOldSymbol, aTmpOldSymbolSetName);
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index 01b14c177e43..b0b91dabe99e 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -2155,8 +2155,7 @@ static bool lcl_IsFromGreekSymbolSet( std::u16string_view aTokenText )
// valid symbol name needs to have a '%' at pos 0 and at least an additional char
if (aTokenText.size() > 2 && aTokenText[0] == u'%')
{
- OUString aName( aTokenText.substr(1) );
- SmSym *pSymbol = SM_MOD()->GetSymbolManager().GetSymbolByName( aName );
+ SmSym *pSymbol = SM_MOD()->GetSymbolManager().GetSymbolByName(aTokenText.substr(1));
if (pSymbol && SmLocalizedSymbolData::GetExportSymbolSetName(pSymbol->GetSymbolSetName()) == "Greek")
bRes = true;
}
@@ -2186,8 +2185,7 @@ void SmSpecialNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell
const SmSym *pSym;
SmModule *pp = SM_MOD();
- OUString aName(GetToken().aText.copy(1));
- if (nullptr != (pSym = pp->GetSymbolManager().GetSymbolByName( aName )))
+ if (nullptr != (pSym = pp->GetSymbolManager().GetSymbolByName(GetToken().aText.subView(1))))
{
sal_UCS4 cChar = pSym->GetCharacter();
OUString aTmp( &cChar, 1 );
diff --git a/starmath/source/parse5.cxx b/starmath/source/parse5.cxx
index 04c4702683b1..27c2471e7418 100644
--- a/starmath/source/parse5.cxx
+++ b/starmath/source/parse5.cxx
@@ -29,6 +29,7 @@
#include <parse5.hxx>
#include <strings.hrc>
#include <smmod.hxx>
+#include <symbol.hxx>
#include <cfgitem.hxx>
#include <starmathdatabase.hxx>
@@ -2632,13 +2633,22 @@ std::unique_ptr<SmSpecialNode> SmParser5::DoSpecial()
{
if (IsImportSymbolNames())
{
- aNewName = SmLocalizedSymbolData::GetUiSymbolName(rName.subView(1));
- bReplace = true;
+ const SmSym* pSym
+ = SM_MOD()->GetSymbolManager().GetSymbolByExportName(rName.subView(1));
+ if (pSym)
+ {
+ aNewName = pSym->GetName();
+ bReplace = true;
+ }
}
else if (IsExportSymbolNames())
{
- aNewName = SmLocalizedSymbolData::GetExportSymbolName(rName.subView(1));
- bReplace = true;
+ const SmSym* pSym = SM_MOD()->GetSymbolManager().GetSymbolByUiName(rName.subView(1));
+ if (pSym)
+ {
+ aNewName = pSym->GetExportName();
+ bReplace = true;
+ }
}
}
if (!aNewName.isEmpty())
diff --git a/starmath/source/symbol.cxx b/starmath/source/symbol.cxx
index a75b6a912670..5f81d0151d9a 100644
--- a/starmath/source/symbol.cxx
+++ b/starmath/source/symbol.cxx
@@ -120,23 +120,35 @@ SmSymbolManager& SmSymbolManager::operator = (const SmSymbolManager& rSymbolSetM
return *this;
}
+SmSym* SmSymbolManager::GetSymbolByName(std::u16string_view rSymbolName)
+{
+ SmSym* pRes = GetSymbolByUiName(rSymbolName);
+ if (!pRes)
+ pRes = GetSymbolByExportName(rSymbolName);
+ return pRes;
+}
-SmSym *SmSymbolManager::GetSymbolByName(const OUString& rSymbolName)
+SmSym *SmSymbolManager::GetSymbolByUiName(std::u16string_view rSymbolName)
{
+ OUString aSymbolName(rSymbolName);
SmSym *pRes = nullptr;
- SymbolMap_t::iterator aIt( m_aSymbols.find( rSymbolName ) );
+ SymbolMap_t::iterator aIt( m_aSymbols.find( aSymbolName ) );
if (aIt != m_aSymbols.end())
pRes = &aIt->second;
- else
+ return pRes;
+}
+
+SmSym* SmSymbolManager::GetSymbolByExportName(std::u16string_view rSymbolName)
+{
+ OUString aSymbolName(rSymbolName);
+ SmSym* pRes = nullptr;
+ for (auto& rPair : m_aSymbols)
{
- for (auto& rPair : m_aSymbols)
+ SmSym& rSymbol = rPair.second;
+ if (rSymbol.GetExportName() == aSymbolName)
{
- SmSym& rSymbol = rPair.second;
- if (rSymbol.GetExportName() == rSymbolName)
- {
- pRes = &rSymbol;
- break;
- }
+ pRes = &rSymbol;
+ break;
}
}
return pRes;
@@ -161,7 +173,7 @@ bool SmSymbolManager::AddOrReplaceSymbol( const SmSym &rSymbol, bool bForceChang
const OUString& aSymbolName( rSymbol.GetName() );
if (!aSymbolName.isEmpty() && !rSymbol.GetSymbolSetName().isEmpty())
{
- const SmSym *pFound = GetSymbolByName( aSymbolName );
+ const SmSym *pFound = GetSymbolByUiName( aSymbolName );
const bool bSymbolConflict = pFound && !pFound->IsEqualInUI( rSymbol );
// avoid having the same symbol name twice but with different symbols in use
@@ -263,6 +275,7 @@ void SmSymbolManager::Load()
OUString aSymbolName = "i" + rSym.GetName();
SmSym aSymbol( aSymbolName, aFont, rSym.GetCharacter(),
aSymbolSetName, true /*bIsPredefined*/ );
+ aSymbol.SetExportName("i" + rSym.GetExportName());
AddOrReplaceSymbol( aSymbol );
}