1*efeef26fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*efeef26fSAndrew Rist * distributed with this work for additional information 6*efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9*efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*efeef26fSAndrew Rist * software distributed under the License is distributed on an 15*efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17*efeef26fSAndrew Rist * specific language governing permissions and limitations 18*efeef26fSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*efeef26fSAndrew Rist *************************************************************/ 21*efeef26fSAndrew Rist 22*efeef26fSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sw.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir 28cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx> 29cdf0e10cSrcweir #include <viewsh.hxx> 30cdf0e10cSrcweir #include <initui.hxx> 31cdf0e10cSrcweir #include <edtwin.hxx> 32cdf0e10cSrcweir #include <shellres.hxx> 33cdf0e10cSrcweir #include <fldbas.hxx> 34cdf0e10cSrcweir #include <glosdoc.hxx> 35cdf0e10cSrcweir #include <gloslst.hxx> 36cdf0e10cSrcweir 37cdf0e10cSrcweir #ifndef _UTLUI_HRC 38cdf0e10cSrcweir #include <utlui.hrc> 39cdf0e10cSrcweir #endif 40cdf0e10cSrcweir #ifndef _INITUI_HRC 41cdf0e10cSrcweir #include <initui.hrc> 42cdf0e10cSrcweir #endif 43cdf0e10cSrcweir #ifndef _COMCORE_HRC 44cdf0e10cSrcweir #include <comcore.hrc> 45cdf0e10cSrcweir #endif 46cdf0e10cSrcweir #include <authfld.hxx> 47cdf0e10cSrcweir #ifndef _DBMGR_HXX 48cdf0e10cSrcweir #include <dbmgr.hxx> 49cdf0e10cSrcweir #endif 50cdf0e10cSrcweir #include <unotools/syslocale.hxx> 51cdf0e10cSrcweir 52cdf0e10cSrcweir #include <unomid.h> 53cdf0e10cSrcweir 54cdf0e10cSrcweir /*-------------------------------------------------------------------- 55cdf0e10cSrcweir Beschreibung: globale Pointer 56cdf0e10cSrcweir --------------------------------------------------------------------*/ 57cdf0e10cSrcweir 58cdf0e10cSrcweir SwGlossaries* pGlossaries = 0; 59cdf0e10cSrcweir 60cdf0e10cSrcweir // Liefert alle benoetigten Pfade. Wird durch UI initialisiert 61cdf0e10cSrcweir SwGlossaryList* pGlossaryList = 0; 62cdf0e10cSrcweir 63cdf0e10cSrcweir String* pOldGrfCat = 0; 64cdf0e10cSrcweir String* pOldTabCat = 0; 65cdf0e10cSrcweir String* pOldFrmCat = 0; 66cdf0e10cSrcweir String* pOldDrwCat = 0; 67cdf0e10cSrcweir String* pCurrGlosGroup = 0; 68cdf0e10cSrcweir 69cdf0e10cSrcweir String* GetOldGrfCat() 70cdf0e10cSrcweir { 71cdf0e10cSrcweir return pOldGrfCat; 72cdf0e10cSrcweir } 73cdf0e10cSrcweir String* GetOldTabCat() 74cdf0e10cSrcweir { 75cdf0e10cSrcweir return pOldTabCat; 76cdf0e10cSrcweir } 77cdf0e10cSrcweir String* GetOldFrmCat() 78cdf0e10cSrcweir { 79cdf0e10cSrcweir return pOldFrmCat; 80cdf0e10cSrcweir } 81cdf0e10cSrcweir String* GetOldDrwCat() 82cdf0e10cSrcweir { 83cdf0e10cSrcweir return pOldDrwCat; 84cdf0e10cSrcweir } 85cdf0e10cSrcweir String* GetCurrGlosGroup() 86cdf0e10cSrcweir { 87cdf0e10cSrcweir return pCurrGlosGroup; 88cdf0e10cSrcweir } 89cdf0e10cSrcweir void SetCurrGlosGroup(String* pStr) 90cdf0e10cSrcweir { 91cdf0e10cSrcweir pCurrGlosGroup = pStr; 92cdf0e10cSrcweir } 93cdf0e10cSrcweir 94cdf0e10cSrcweir SvStringsDtor* pDBNameList = 0; 95cdf0e10cSrcweir 96cdf0e10cSrcweir SvStringsDtor* pAuthFieldNameList = 0; 97cdf0e10cSrcweir SvStringsDtor* pAuthFieldTypeList = 0; 98cdf0e10cSrcweir 99cdf0e10cSrcweir /*-------------------------------------------------------------------- 100cdf0e10cSrcweir Beschreibung: UI beenden 101cdf0e10cSrcweir --------------------------------------------------------------------*/ 102cdf0e10cSrcweir 103cdf0e10cSrcweir void _FinitUI() 104cdf0e10cSrcweir { 105cdf0e10cSrcweir SwNewDBMgr::RemoveDbtoolsClient(); 106cdf0e10cSrcweir delete ViewShell::GetShellRes(); 107cdf0e10cSrcweir ViewShell::SetShellRes( 0 ); 108cdf0e10cSrcweir 109cdf0e10cSrcweir SwEditWin::_FinitStaticData(); 110cdf0e10cSrcweir 111cdf0e10cSrcweir DELETEZ(pGlossaries); 112cdf0e10cSrcweir 113cdf0e10cSrcweir delete SwFieldType::pFldNames; 114cdf0e10cSrcweir 115cdf0e10cSrcweir delete pOldGrfCat; 116cdf0e10cSrcweir delete pOldTabCat; 117cdf0e10cSrcweir delete pOldFrmCat; 118cdf0e10cSrcweir delete pOldDrwCat; 119cdf0e10cSrcweir delete pCurrGlosGroup; 120cdf0e10cSrcweir delete pDBNameList; 121cdf0e10cSrcweir delete pGlossaryList; 122cdf0e10cSrcweir delete pAuthFieldNameList; 123cdf0e10cSrcweir delete pAuthFieldTypeList; 124cdf0e10cSrcweir 125cdf0e10cSrcweir 126cdf0e10cSrcweir } 127cdf0e10cSrcweir /*-------------------------------------------------------------------- 128cdf0e10cSrcweir Beschreibung: Initialisierung 129cdf0e10cSrcweir --------------------------------------------------------------------*/ 130cdf0e10cSrcweir 131cdf0e10cSrcweir 132cdf0e10cSrcweir void _InitUI() 133cdf0e10cSrcweir { 134cdf0e10cSrcweir // ShellResource gibt der CORE die Moeglichkeit mit Resourcen zu arbeiten 135cdf0e10cSrcweir ViewShell::SetShellRes( new ShellResource ); 136cdf0e10cSrcweir pDBNameList = new SvStringsDtor( 5, 5 ); 137cdf0e10cSrcweir SwEditWin::_InitStaticData(); 138cdf0e10cSrcweir } 139cdf0e10cSrcweir 140cdf0e10cSrcweir 141cdf0e10cSrcweir ShellResource::ShellResource() 142cdf0e10cSrcweir : Resource( SW_RES(RID_SW_SHELLRES) ), 143cdf0e10cSrcweir aPostItAuthor( SW_RES( STR_POSTIT_AUTHOR ) ), 144cdf0e10cSrcweir aPostItPage( SW_RES( STR_POSTIT_PAGE ) ), 145cdf0e10cSrcweir aPostItLine( SW_RES( STR_POSTIT_LINE ) ), 146cdf0e10cSrcweir 147cdf0e10cSrcweir aCalc_Syntax( SW_RES( STR_CALC_SYNTAX ) ), 148cdf0e10cSrcweir aCalc_ZeroDiv( SW_RES( STR_CALC_ZERODIV ) ), 149cdf0e10cSrcweir aCalc_Brack( SW_RES( STR_CALC_BRACK ) ), 150cdf0e10cSrcweir aCalc_Pow( SW_RES( STR_CALC_POW ) ), 151cdf0e10cSrcweir aCalc_VarNFnd( SW_RES( STR_CALC_VARNFND ) ), 152cdf0e10cSrcweir aCalc_Overflow( SW_RES( STR_CALC_OVERFLOW ) ), 153cdf0e10cSrcweir aCalc_WrongTime( SW_RES( STR_CALC_WRONGTIME ) ), 154cdf0e10cSrcweir aCalc_Default( SW_RES( STR_CALC_DEFAULT ) ), 155cdf0e10cSrcweir aCalc_Error( SW_RES( STR_CALC_ERROR ) ), 156cdf0e10cSrcweir 157cdf0e10cSrcweir aGetRefFld_Up( SW_RES( STR_GETREFFLD_UP ) ), 158cdf0e10cSrcweir aGetRefFld_Down( SW_RES( STR_GETREFFLD_DOWN ) ), 159cdf0e10cSrcweir // --> OD 2007-09-13 #i81002# 160cdf0e10cSrcweir aGetRefFld_RefItemNotFound( SW_RES( STR_GETREFFLD_REFITEMNOTFOUND ) ), 161cdf0e10cSrcweir // <-- 162cdf0e10cSrcweir aStrAllPageHeadFoot( SW_RES( STR_ALLPAGE_HEADFOOT ) ), 163cdf0e10cSrcweir aStrNone( SW_RES( STR_TEMPLATE_NONE )), 164cdf0e10cSrcweir aFixedStr( SW_RES( STR_FIELD_FIXED )), 165cdf0e10cSrcweir sDurationFormat( SW_RES( STR_DURATION_FORMAT )), 166cdf0e10cSrcweir 167cdf0e10cSrcweir aTOXIndexName( SW_RES(STR_TOI)), 168cdf0e10cSrcweir aTOXUserName( SW_RES(STR_TOU)), 169cdf0e10cSrcweir aTOXContentName( SW_RES(STR_TOC)), 170cdf0e10cSrcweir aTOXIllustrationsName( SW_RES(STR_TOX_ILL)), 171cdf0e10cSrcweir aTOXObjectsName( SW_RES(STR_TOX_OBJ)), 172cdf0e10cSrcweir aTOXTablesName( SW_RES(STR_TOX_TBL)), 173cdf0e10cSrcweir aTOXAuthoritiesName( SW_RES(STR_TOX_AUTH)), 174cdf0e10cSrcweir aHyperlinkClick( SW_RES( STR_HYPERLINK_CLICK)), 175cdf0e10cSrcweir pAutoFmtNameLst(0), 176cdf0e10cSrcweir sPageDescFirstName( SW_RES(STR_PAGEDESC_FIRSTNAME)), 177cdf0e10cSrcweir sPageDescFollowName( SW_RES(STR_PAGEDESC_FOLLOWNAME)), 178cdf0e10cSrcweir sPageDescName( SW_RES(STR_PAGEDESC_NAME)) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir const sal_uInt16 nCount = FLD_DOCINFO_END - FLD_DOCINFO_BEGIN; 181cdf0e10cSrcweir 182cdf0e10cSrcweir KeyCode aCode( KEY_SPACE ); 183cdf0e10cSrcweir KeyCode aModifiedCode( KEY_SPACE, KEY_MOD1 ); 184cdf0e10cSrcweir String aModStr( aModifiedCode.GetName() ); 185cdf0e10cSrcweir aModStr.SearchAndReplace( aCode.GetName(), String() ); 186cdf0e10cSrcweir aModStr.SearchAndReplaceAllAscii( "+", String() ); 187cdf0e10cSrcweir aHyperlinkClick.SearchAndReplaceAllAscii( "%s", aModStr ); 188cdf0e10cSrcweir 189cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCount; ++i) 190cdf0e10cSrcweir { 191cdf0e10cSrcweir String* pNew = new SW_RESSTR(FLD_DOCINFO_BEGIN + i); 192cdf0e10cSrcweir aDocInfoLst.Insert(pNew, aDocInfoLst.Count()); 193cdf0e10cSrcweir } 194cdf0e10cSrcweir 195cdf0e10cSrcweir FreeResource(); 196cdf0e10cSrcweir } 197cdf0e10cSrcweir 198cdf0e10cSrcweir ShellResource::~ShellResource() 199cdf0e10cSrcweir { 200cdf0e10cSrcweir if( pAutoFmtNameLst ) 201cdf0e10cSrcweir delete pAutoFmtNameLst, pAutoFmtNameLst = 0; 202cdf0e10cSrcweir } 203cdf0e10cSrcweir 204cdf0e10cSrcweir String ShellResource::GetPageDescName( sal_uInt16 nNo, sal_Bool bIsFirst, sal_Bool bFollow ) 205cdf0e10cSrcweir { 206cdf0e10cSrcweir String sRet( bIsFirst ? sPageDescFirstName 207cdf0e10cSrcweir : bFollow ? sPageDescFollowName 208cdf0e10cSrcweir : sPageDescName ); 209cdf0e10cSrcweir sRet.SearchAndReplaceAscii( "$(ARG1)", String::CreateFromInt32( nNo )); 210cdf0e10cSrcweir return sRet; 211cdf0e10cSrcweir } 212cdf0e10cSrcweir 213cdf0e10cSrcweir 214cdf0e10cSrcweir SwGlossaries* GetGlossaries() 215cdf0e10cSrcweir { 216cdf0e10cSrcweir if (!pGlossaries) 217cdf0e10cSrcweir pGlossaries = new SwGlossaries; 218cdf0e10cSrcweir return (pGlossaries); 219cdf0e10cSrcweir } 220cdf0e10cSrcweir 221cdf0e10cSrcweir sal_Bool HasGlossaryList() 222cdf0e10cSrcweir { 223cdf0e10cSrcweir return pGlossaryList != 0; 224cdf0e10cSrcweir } 225cdf0e10cSrcweir 226cdf0e10cSrcweir SwGlossaryList* GetGlossaryList() 227cdf0e10cSrcweir { 228cdf0e10cSrcweir if(!pGlossaryList) 229cdf0e10cSrcweir pGlossaryList = new SwGlossaryList(); 230cdf0e10cSrcweir 231cdf0e10cSrcweir return pGlossaryList; 232cdf0e10cSrcweir } 233cdf0e10cSrcweir 234cdf0e10cSrcweir struct ImpAutoFmtNameListLoader : public Resource 235cdf0e10cSrcweir { 236cdf0e10cSrcweir ImpAutoFmtNameListLoader( SvStringsDtor& rLst ); 237cdf0e10cSrcweir }; 238cdf0e10cSrcweir 239cdf0e10cSrcweir void ShellResource::_GetAutoFmtNameLst() const 240cdf0e10cSrcweir { 241cdf0e10cSrcweir SvStringsDtor** ppLst = (SvStringsDtor**)&pAutoFmtNameLst; 242cdf0e10cSrcweir *ppLst = new SvStringsDtor( STR_AUTOFMTREDL_END ); 243cdf0e10cSrcweir ImpAutoFmtNameListLoader aTmp( **ppLst ); 244cdf0e10cSrcweir } 245cdf0e10cSrcweir 246cdf0e10cSrcweir ImpAutoFmtNameListLoader::ImpAutoFmtNameListLoader( SvStringsDtor& rLst ) 247cdf0e10cSrcweir : Resource( ResId(RID_SHELLRES_AUTOFMTSTRS, *pSwResMgr) ) 248cdf0e10cSrcweir { 249cdf0e10cSrcweir for( sal_uInt16 n = 0; n < STR_AUTOFMTREDL_END; ++n ) 250cdf0e10cSrcweir { 251cdf0e10cSrcweir String* p = new String( ResId( n + 1, *pSwResMgr) ); 252cdf0e10cSrcweir if(STR_AUTOFMTREDL_TYPO == n) 253cdf0e10cSrcweir { 254cdf0e10cSrcweir #ifdef WNT 255cdf0e10cSrcweir //fuer Windows Sonderbehandlung, da MS hier ein paar Zeichen im Dialogfont vergessen hat 256cdf0e10cSrcweir p->SearchAndReplace(C2S("%1"), C2S(",,")); 257cdf0e10cSrcweir p->SearchAndReplace(C2S("%2"), C2S("''")); 258cdf0e10cSrcweir #else 259cdf0e10cSrcweir const SvtSysLocale aSysLocale; 260cdf0e10cSrcweir const LocaleDataWrapper& rLclD = aSysLocale.GetLocaleData(); 261cdf0e10cSrcweir //unter richtigen Betriebssystemen funktioniert es auch so 262cdf0e10cSrcweir p->SearchAndReplace(C2S("%1"), rLclD.getDoubleQuotationMarkStart()); 263cdf0e10cSrcweir p->SearchAndReplace(C2S("%2"), rLclD.getDoubleQuotationMarkEnd()); 264cdf0e10cSrcweir #endif 265cdf0e10cSrcweir } 266cdf0e10cSrcweir rLst.Insert( p, n ); 267cdf0e10cSrcweir } 268cdf0e10cSrcweir FreeResource(); 269cdf0e10cSrcweir } 270cdf0e10cSrcweir /* -----------------16.09.99 12:28------------------- 271cdf0e10cSrcweir 272cdf0e10cSrcweir --------------------------------------------------*/ 273cdf0e10cSrcweir const String& SwAuthorityFieldType::GetAuthFieldName(ToxAuthorityField eType) 274cdf0e10cSrcweir { 275cdf0e10cSrcweir if(!pAuthFieldNameList) 276cdf0e10cSrcweir { 277cdf0e10cSrcweir pAuthFieldNameList = new SvStringsDtor(AUTH_FIELD_END, 1); 278cdf0e10cSrcweir for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++) 279cdf0e10cSrcweir { 280cdf0e10cSrcweir String* pTmp = new String(SW_RES(STR_AUTH_FIELD_START + i)); 281cdf0e10cSrcweir pAuthFieldNameList->Insert(pTmp, pAuthFieldNameList->Count()); 282cdf0e10cSrcweir } 283cdf0e10cSrcweir } 284cdf0e10cSrcweir return *pAuthFieldNameList->GetObject( static_cast< sal_uInt16 >(eType) ); 285cdf0e10cSrcweir } 286cdf0e10cSrcweir /* -----------------16.09.99 12:29------------------- 287cdf0e10cSrcweir 288cdf0e10cSrcweir --------------------------------------------------*/ 289cdf0e10cSrcweir const String& SwAuthorityFieldType::GetAuthTypeName(ToxAuthorityType eType) 290cdf0e10cSrcweir { 291cdf0e10cSrcweir if(!pAuthFieldTypeList) 292cdf0e10cSrcweir { 293cdf0e10cSrcweir pAuthFieldTypeList = new SvStringsDtor(AUTH_TYPE_END, 1); 294cdf0e10cSrcweir for(sal_uInt16 i = 0; i < AUTH_TYPE_END; i++) 295cdf0e10cSrcweir pAuthFieldTypeList->Insert( 296cdf0e10cSrcweir new String(SW_RES(STR_AUTH_TYPE_START + i)), 297cdf0e10cSrcweir pAuthFieldTypeList->Count()); 298cdf0e10cSrcweir } 299cdf0e10cSrcweir return *pAuthFieldTypeList->GetObject( static_cast< sal_uInt16 >(eType) ); 300cdf0e10cSrcweir } 301cdf0e10cSrcweir 302cdf0e10cSrcweir 303cdf0e10cSrcweir 304