1
0
Fork 0
libreoffice/sw/source/uibase/utlui/initui.cxx
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

311 lines
8.6 KiB
C++

/* -*- 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 <libxml/xmlwriter.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 <comcore.hxx>
#include <strings.hrc>
#include <utlui.hrc>
#include <authfld.hxx>
#include <unotools/syslocale.hxx>
// Global Pointer
static std::unique_ptr<SwGlossaries> pGlossaries;
// Provides all needed paths. Is initialized by UI.
static SwGlossaryList* pGlossaryList = nullptr;
namespace
{
OUString CurrGlosGroup;
}
const OUString& GetCurrGlosGroup()
{
return CurrGlosGroup;
}
void SetCurrGlosGroup(const OUString& sStr)
{
CurrGlosGroup = sStr;
}
namespace
{
std::vector<OUString>* pAuthFieldNameList = nullptr;
std::vector<OUString>* pAuthFieldTypeList = nullptr;
}
// Finish UI
void FinitUI()
{
delete SwViewShell::GetShellRes();
SwViewShell::SetShellRes( nullptr );
SwEditWin::FinitStaticData();
pGlossaries.reset();
delete SwFieldType::s_pFieldNames;
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();
}
const TranslateId FLD_DOCINFO_ARY[] =
{
FLD_DOCINFO_TITLE,
FLD_DOCINFO_SUBJECT,
FLD_DOCINFO_KEYS,
FLD_DOCINFO_COMMENT,
FLD_DOCINFO_CREATE,
FLD_DOCINFO_CHANGE,
FLD_DOCINFO_PRINT,
FLD_DOCINFO_DOCNO,
FLD_DOCINFO_EDIT
};
ShellResource::ShellResource()
: aPostItAuthor( SwResId( STR_POSTIT_AUTHOR ) ),
aPostItPage( SwResId( STR_POSTIT_PAGE ) ),
aPostItLine( SwResId( STR_POSTIT_LINE ) ),
aCalc_Syntax( SwResId( STR_CALC_SYNTAX ) ),
aCalc_ZeroDiv( SwResId( STR_CALC_ZERODIV ) ),
aCalc_Brack( SwResId( STR_CALC_BRACK ) ),
aCalc_Pow( SwResId( STR_CALC_POW ) ),
aCalc_Overflow( SwResId( STR_CALC_OVERFLOW ) ),
aCalc_Default( SwResId( STR_CALC_DEFAULT ) ),
aCalc_Error( SwResId( STR_CALC_ERROR ) ),
// #i81002#
aGetRefField_RefItemNotFound( SwResId( STR_GETREFFLD_REFITEMNOTFOUND ) ),
aStrNone( SwResId( STR_TEMPLATE_NONE )),
aFixedStr( SwResId( STR_FIELD_FIXED )),
sDurationFormat( SwResId( STR_DURATION_FORMAT )),
aTOXIndexName( SwResId(STR_TOI)),
aTOXUserName( SwResId(STR_TOU)),
aTOXContentName( SwResId(STR_TOC)),
aTOXIllustrationsName( SwResId(STR_TOX_ILL)),
aTOXObjectsName( SwResId(STR_TOX_OBJ)),
aTOXTablesName( SwResId(STR_TOX_TBL)),
aTOXAuthoritiesName( SwResId(STR_TOX_AUTH)),
aTOXCitationName( SwResId(STR_TOX_CITATION)),
sPageDescFirstName( SwResId(STR_PAGEDESC_FIRSTNAME)),
sPageDescFollowName( SwResId(STR_PAGEDESC_FOLLOWNAME)),
sPageDescName( SwResId(STR_PAGEDESC_NAME))
{
for (auto const& aID : FLD_DOCINFO_ARY)
aDocInfoLst.push_back(SwResId(aID));
}
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.reset( new SwGlossaries );
return pGlossaries.get();
}
bool HasGlossaryList()
{
return pGlossaryList != nullptr;
}
SwGlossaryList* GetGlossaryList()
{
if(!pGlossaryList)
pGlossaryList = new SwGlossaryList();
return pGlossaryList;
}
void ShellResource::GetAutoFormatNameLst_() const
{
assert(!mxAutoFormatNameLst);
mxAutoFormatNameLst.emplace();
mxAutoFormatNameLst->reserve(STR_AUTOFMTREDL_END);
static_assert(SAL_N_ELEMENTS(RID_SHELLRES_AUTOFMTSTRS) == STR_AUTOFMTREDL_END);
for (sal_uInt16 n = 0; n < STR_AUTOFMTREDL_END; ++n)
{
OUString p(SwResId(RID_SHELLRES_AUTOFMTSTRS[n]));
if (STR_AUTOFMTREDL_TYPO == n)
{
const SvtSysLocale aSysLocale;
const LocaleDataWrapper& rLclD = aSysLocale.GetLocaleData();
p = p.replaceFirst("%1", rLclD.getDoubleQuotationMarkStart());
p = p.replaceFirst("%2", rLclD.getDoubleQuotationMarkEnd());
}
mxAutoFormatNameLst->push_back(p);
}
}
namespace
{
const TranslateId STR_AUTH_FIELD_ARY[] =
{
STR_AUTH_FIELD_IDENTIFIER,
STR_AUTH_FIELD_AUTHORITY_TYPE,
STR_AUTH_FIELD_ADDRESS,
STR_AUTH_FIELD_ANNOTE,
STR_AUTH_FIELD_AUTHOR,
STR_AUTH_FIELD_BOOKTITLE,
STR_AUTH_FIELD_CHAPTER,
STR_AUTH_FIELD_EDITION,
STR_AUTH_FIELD_EDITOR,
STR_AUTH_FIELD_HOWPUBLISHED,
STR_AUTH_FIELD_INSTITUTION,
STR_AUTH_FIELD_JOURNAL,
STR_AUTH_FIELD_MONTH,
STR_AUTH_FIELD_NOTE,
STR_AUTH_FIELD_NUMBER,
STR_AUTH_FIELD_ORGANIZATIONS,
STR_AUTH_FIELD_PAGES,
STR_AUTH_FIELD_PUBLISHER,
STR_AUTH_FIELD_SCHOOL,
STR_AUTH_FIELD_SERIES,
STR_AUTH_FIELD_TITLE,
STR_AUTH_FIELD_TYPE,
STR_AUTH_FIELD_VOLUME,
STR_AUTH_FIELD_YEAR,
STR_AUTH_FIELD_URL,
STR_AUTH_FIELD_CUSTOM1,
STR_AUTH_FIELD_CUSTOM2,
STR_AUTH_FIELD_CUSTOM3,
STR_AUTH_FIELD_CUSTOM4,
STR_AUTH_FIELD_CUSTOM5,
STR_AUTH_FIELD_ISBN,
STR_AUTH_FIELD_LOCAL_URL,
STR_AUTH_FIELD_TARGET_TYPE,
STR_AUTH_FIELD_TARGET_URL,
};
}
OUString const & 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(SwResId(STR_AUTH_FIELD_ARY[i]));
}
return (*pAuthFieldNameList)[static_cast< sal_uInt16 >(eType)];
}
const TranslateId STR_AUTH_TYPE_ARY[] =
{
STR_AUTH_TYPE_ARTICLE,
STR_AUTH_TYPE_BOOK,
STR_AUTH_TYPE_BOOKLET,
STR_AUTH_TYPE_CONFERENCE,
STR_AUTH_TYPE_INBOOK,
STR_AUTH_TYPE_INCOLLECTION,
STR_AUTH_TYPE_INPROCEEDINGS,
STR_AUTH_TYPE_JOURNAL,
STR_AUTH_TYPE_MANUAL,
STR_AUTH_TYPE_MASTERSTHESIS,
STR_AUTH_TYPE_MISC,
STR_AUTH_TYPE_PHDTHESIS,
STR_AUTH_TYPE_PROCEEDINGS,
STR_AUTH_TYPE_TECHREPORT,
STR_AUTH_TYPE_UNPUBLISHED,
STR_AUTH_TYPE_EMAIL,
STR_AUTH_TYPE_WWW,
STR_AUTH_TYPE_CUSTOM1,
STR_AUTH_TYPE_CUSTOM2,
STR_AUTH_TYPE_CUSTOM3,
STR_AUTH_TYPE_CUSTOM4,
STR_AUTH_TYPE_CUSTOM5
};
OUString const & 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(SwResId(STR_AUTH_TYPE_ARY[i]));
}
return (*pAuthFieldTypeList)[static_cast< sal_uInt16 >(eType)];
}
void SwAuthorityFieldType::dumpAsXml(xmlTextWriterPtr pWriter) const
{
(void)xmlTextWriterStartElement(pWriter, BAD_CAST("SwAuthorityFieldType"));
SwFieldType::dumpAsXml(pWriter);
(void)xmlTextWriterStartElement(pWriter, BAD_CAST("DataArr"));
for (const auto& xAuthEntry : m_DataArr)
{
(void)xmlTextWriterStartElement(pWriter, BAD_CAST("AuthEntry"));
(void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", xAuthEntry.get());
(void)xmlTextWriterEndElement(pWriter);
}
(void)xmlTextWriterEndElement(pWriter);
(void)xmlTextWriterEndElement(pWriter);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */