summaryrefslogtreecommitdiff
path: root/sw/source/uibase/utlui/initui.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/uibase/utlui/initui.cxx')
-rw-r--r--sw/source/uibase/utlui/initui.cxx342
1 files changed, 342 insertions, 0 deletions
diff --git a/sw/source/uibase/utlui/initui.cxx b/sw/source/uibase/utlui/initui.cxx
new file mode 100644
index 000000000000..44dc6762b69a
--- /dev/null
+++ b/sw/source/uibase/utlui/initui.cxx
@@ -0,0 +1,342 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <config_features.h>
+
+#include <unotools/localedatawrapper.hxx>
+#include <viewsh.hxx>
+#include <initui.hxx>
+#include <edtwin.hxx>
+#include <shellres.hxx>
+#include <fldbas.hxx>
+#include <glosdoc.hxx>
+#include <gloslst.hxx>
+
+#include <utlui.hrc>
+#include <initui.hrc>
+#include <comcore.hrc>
+#include <authfld.hxx>
+#include <dbmgr.hxx>
+#include <unotools/syslocale.hxx>
+
+#include <unomid.h>
+
+// Global Pointer
+
+SwGlossaries* pGlossaries = 0;
+
+// Provides all needed paths. Is initialized by UI.
+SwGlossaryList* pGlossaryList = 0;
+
+namespace
+{
+
+enum CachedStringID
+{
+ OldGrfCat,
+ OldTabCat,
+ OldFrmCat,
+ OldDrwCat,
+ CurrGlosGroup,
+ CachedStrings
+};
+
+OUString *StringCache[CachedStrings] = {0};
+
+inline OUString GetCachedString(CachedStringID id)
+{
+ return StringCache[id] ? *StringCache[id] : OUString();
+}
+
+inline void SetCachedString(CachedStringID id, const OUString& sStr)
+{
+ if (StringCache[id])
+ {
+ *StringCache[id] = sStr;
+ }
+ else
+ {
+ StringCache[id] = new OUString(sStr);
+ }
+}
+
+void ClearStringCache()
+{
+ for (int i=0; i<CachedStrings; ++i)
+ {
+ delete StringCache[i];
+ }
+}
+
+}
+
+OUString GetOldGrfCat()
+{
+ return GetCachedString(OldGrfCat);
+}
+
+void SetOldGrfCat(const OUString& sStr)
+{
+ SetCachedString(OldGrfCat, sStr);
+}
+
+OUString GetOldTabCat()
+{
+ return GetCachedString(OldTabCat);
+}
+
+void SetOldTabCat(const OUString& sStr)
+{
+ SetCachedString(OldTabCat, sStr);
+}
+
+OUString GetOldFrmCat()
+{
+ return GetCachedString(OldFrmCat);
+}
+
+void SetOldFrmCat(const OUString& sStr)
+{
+ SetCachedString(OldFrmCat, sStr);
+}
+
+OUString GetOldDrwCat()
+{
+ return GetCachedString(OldDrwCat);
+}
+
+void SetOldDrwCat(const OUString& sStr)
+{
+ SetCachedString(OldDrwCat, sStr);
+}
+
+OUString GetCurrGlosGroup()
+{
+ return GetCachedString(CurrGlosGroup);
+}
+
+void SetCurrGlosGroup(const OUString& sStr)
+{
+ SetCachedString(CurrGlosGroup, sStr);
+}
+
+namespace
+{
+
+std::vector<OUString>* pAuthFieldNameList = 0;
+std::vector<OUString>* pAuthFieldTypeList = 0;
+
+}
+
+// Finish UI
+
+void _FinitUI()
+{
+#if HAVE_FEATURE_DBCONNECTIVITY
+ SwDBManager::RemoveDbtoolsClient();
+#endif
+ delete SwViewShell::GetShellRes();
+ SwViewShell::SetShellRes( 0 );
+
+ SwEditWin::_FinitStaticData();
+
+ DELETEZ(pGlossaries);
+
+ delete SwFieldType::pFldNames;
+
+ ClearStringCache();
+ delete pGlossaryList;
+ delete pAuthFieldNameList;
+ delete pAuthFieldTypeList;
+
+}
+
+// Initialise
+
+void _InitUI()
+{
+ // ShellResource gives the CORE the possibility to work with resources.
+ SwViewShell::SetShellRes( new ShellResource );
+ SwEditWin::_InitStaticData();
+}
+
+ShellResource::ShellResource()
+ : Resource( SW_RES(RID_SW_SHELLRES) ),
+ aPostItAuthor( SW_RES( STR_POSTIT_AUTHOR ) ),
+ aPostItPage( SW_RES( STR_POSTIT_PAGE ) ),
+ aPostItLine( SW_RES( STR_POSTIT_LINE ) ),
+
+ aCalc_Syntax( SW_RES( STR_CALC_SYNTAX ) ),
+ aCalc_ZeroDiv( SW_RES( STR_CALC_ZERODIV ) ),
+ aCalc_Brack( SW_RES( STR_CALC_BRACK ) ),
+ aCalc_Pow( SW_RES( STR_CALC_POW ) ),
+ aCalc_VarNFnd( SW_RES( STR_CALC_VARNFND ) ),
+ aCalc_Overflow( SW_RES( STR_CALC_OVERFLOW ) ),
+ aCalc_WrongTime( SW_RES( STR_CALC_WRONGTIME ) ),
+ aCalc_Default( SW_RES( STR_CALC_DEFAULT ) ),
+ aCalc_Error( SW_RES( STR_CALC_ERROR ) ),
+
+ aGetRefFld_Up( SW_RES( STR_GETREFFLD_UP ) ),
+ aGetRefFld_Down( SW_RES( STR_GETREFFLD_DOWN ) ),
+ // #i81002#
+ aGetRefFld_RefItemNotFound( SW_RES( STR_GETREFFLD_REFITEMNOTFOUND ) ),
+ aStrAllPageHeadFoot( SW_RES( STR_ALLPAGE_HEADFOOT ) ),
+ aStrNone( SW_RES( STR_TEMPLATE_NONE )),
+ aFixedStr( SW_RES( STR_FIELD_FIXED )),
+ sDurationFormat( SW_RES( STR_DURATION_FORMAT )),
+
+ aTOXIndexName( SW_RES(STR_TOI)),
+ aTOXUserName( SW_RES(STR_TOU)),
+ aTOXContentName( SW_RES(STR_TOC)),
+ aTOXIllustrationsName( SW_RES(STR_TOX_ILL)),
+ aTOXObjectsName( SW_RES(STR_TOX_OBJ)),
+ aTOXTablesName( SW_RES(STR_TOX_TBL)),
+ aTOXAuthoritiesName( SW_RES(STR_TOX_AUTH)),
+ aTOXCitationName( SW_RES(STR_TOX_CITATION)),
+ aLinkCtrlClick(SW_RESSTR(STR_LINK_CTRL_CLICK)),
+ aLinkClick(SW_RESSTR(STR_LINK_CLICK)),
+ pAutoFmtNameLst(0),
+ sPageDescFirstName( SW_RES(STR_PAGEDESC_FIRSTNAME)),
+ sPageDescFollowName( SW_RES(STR_PAGEDESC_FOLLOWNAME)),
+ sPageDescName( SW_RES(STR_PAGEDESC_NAME))
+{
+ const sal_uInt16 nCount = FLD_DOCINFO_END - FLD_DOCINFO_BEGIN;
+
+ KeyCode aCode( KEY_SPACE );
+ KeyCode aModifiedCode( KEY_SPACE, KEY_MOD1 );
+ OUString aModStr( aModifiedCode.GetName() );
+ aModStr = aModStr.replaceFirst(aCode.GetName(), OUString());
+ aModStr = aModStr.replaceAll("+", OUString());
+ aLinkCtrlClick = aLinkCtrlClick.replaceAll("%s", aModStr);
+
+ for(sal_uInt16 i = 0; i < nCount; ++i)
+ aDocInfoLst.push_back(OUString(SW_RESSTR(FLD_DOCINFO_BEGIN + i)));
+
+ FreeResource();
+}
+
+ShellResource::~ShellResource()
+{
+ delete pAutoFmtNameLst;
+}
+
+OUString ShellResource::GetPageDescName(sal_uInt16 nNo, PageNameMode eMode)
+{
+ OUString sRet;
+
+ switch (eMode)
+ {
+ case NORMAL_PAGE:
+ sRet = sPageDescName;
+ break;
+ case FIRST_PAGE:
+ sRet = sPageDescFirstName;
+ break;
+ case FOLLOW_PAGE:
+ sRet = sPageDescFollowName;
+ break;
+ }
+
+ return sRet.replaceFirst( "$(ARG1)", OUString::number( nNo ));
+}
+
+SwGlossaries* GetGlossaries()
+{
+ if (!pGlossaries)
+ pGlossaries = new SwGlossaries;
+ return (pGlossaries);
+}
+
+bool HasGlossaryList()
+{
+ return pGlossaryList != 0;
+}
+
+SwGlossaryList* GetGlossaryList()
+{
+ if(!pGlossaryList)
+ pGlossaryList = new SwGlossaryList();
+
+ return pGlossaryList;
+}
+
+struct ImpAutoFmtNameListLoader : public Resource
+{
+ ImpAutoFmtNameListLoader( std::vector<OUString>& rLst );
+};
+
+void ShellResource::_GetAutoFmtNameLst() const
+{
+ assert(!pAutoFmtNameLst);
+ pAutoFmtNameLst = new std::vector<OUString>;
+ pAutoFmtNameLst->reserve(STR_AUTOFMTREDL_END);
+ ImpAutoFmtNameListLoader aTmp(*pAutoFmtNameLst);
+}
+
+ImpAutoFmtNameListLoader::ImpAutoFmtNameListLoader( std::vector<OUString>& rLst )
+ : Resource( ResId(RID_SHELLRES_AUTOFMTSTRS, *pSwResMgr) )
+{
+ for( sal_uInt16 n = 0; n < STR_AUTOFMTREDL_END; ++n )
+ {
+ OUString p(ResId(n + 1, *pSwResMgr));
+ if(STR_AUTOFMTREDL_TYPO == n)
+ {
+#ifdef WNT
+ // For Windows, a special treatment is necessary because MS has
+ // forgotten some characters in the dialog font here.
+ p = p.replaceFirst("%1", ",,");
+ p = p.replaceFirst("%2", "''");
+#else
+ const SvtSysLocale aSysLocale;
+ const LocaleDataWrapper& rLclD = aSysLocale.GetLocaleData();
+ // With real operating systems it also works without special handling.
+ p = p.replaceFirst("%1", rLclD.getDoubleQuotationMarkStart());
+ p = p.replaceFirst("%2", rLclD.getDoubleQuotationMarkEnd());
+#endif
+ }
+ rLst.insert(rLst.begin() + n, p);
+ }
+ FreeResource();
+}
+
+OUString SwAuthorityFieldType::GetAuthFieldName(ToxAuthorityField eType)
+{
+ if(!pAuthFieldNameList)
+ {
+ pAuthFieldNameList = new std::vector<OUString>;
+ pAuthFieldNameList->reserve(AUTH_FIELD_END);
+ for(sal_uInt16 i = 0; i < AUTH_FIELD_END; ++i)
+ pAuthFieldNameList->push_back(SW_RES(STR_AUTH_FIELD_START + i));
+ }
+ return (*pAuthFieldNameList)[static_cast< sal_uInt16 >(eType)];
+}
+
+OUString SwAuthorityFieldType::GetAuthTypeName(ToxAuthorityType eType)
+{
+ if(!pAuthFieldTypeList)
+ {
+ pAuthFieldTypeList = new std::vector<OUString>;
+ pAuthFieldTypeList->reserve(AUTH_TYPE_END);
+ for(sal_uInt16 i = 0; i < AUTH_TYPE_END; ++i)
+ pAuthFieldTypeList->push_back(SW_RES(STR_AUTH_TYPE_START + i));
+ }
+ return (*pAuthFieldTypeList)[static_cast< sal_uInt16 >(eType)];
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */