Files
libreoffice/sw/inc/SwStyleNameMapper.hxx

186 lines
8.1 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
/*
* 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 .
*/
#ifndef _SWSTYLENAMEMAPPER_HXX
#define _SWSTYLENAMEMAPPER_HXX
#include <sal/types.h>
#include <tools/string.hxx>
#include <SwGetPoolIdFromName.hxx>
#include "swdllapi.h"
#include <boost/unordered_map.hpp>
#include <stringhash.hxx>
2012-01-14 00:33:41 -05:00
#include <boost/ptr_container/ptr_vector.hpp>
2011-04-18 23:11:33 +02:00
/** This class holds all data about the names of styles used in the user
* interface (UI names...these are localised into different languages).
* These UI names are loaded from the resource files on demand.
*
* It also holds all information about the 'Programmatic' names of styles
* which remain static (and are hardcoded in the corresponding cxx file)
* for all languages.
*
* This class also provides static functions which can be used for the
* following conversions:
*
* 1. Programmatic Name -> UI Name
* 2. Programmatic Name -> Pool ID
* 3. UI Name -> Programmatic Name
* 4. UI Name -> Pool ID
* 5. Pool ID -> UI Name
* 6. Pool ID -> Programmatic Name
*
* The relationship of these tables to the style families is as follows:
*
* 1. Paragraph contains the Text, Lists, Extra, Register, Doc and HTML
* name arrays.
* 2. Character contains the ChrFmt and HTMLChrFmt name arrays.
* 3. Page contains the PageDesc name array.
* 4. Frame contains the FrmFmt name array.
* 5. Numbering Rule contains the NumRule name array.
*/
2011-04-18 23:11:33 +02:00
/**
* There is a further complication that came to light later. If someone enters
* a user-defined style name which is the same as a programmatic name, this
* name clash must be handled.
*
* Therefore, when there is a danger of a nameclash, the boolean bDisambiguate
* must be set to true in the SwStyleNameMapper call (it defaults to false).
* This will cause the following to happen:
*
* If the UI style name either equals a programmatic name or already ends
* with " (user)", then it must append " (user)" to the end.
*
* When a programmatic name is being converted to a UI name, if it ends in
* " (user)", we simply remove it.
*/
class String;
struct SwTableEntry;
typedef ::boost::unordered_map < const String*, sal_uInt16, StringHash, StringEq > NameToIdHash;
class SwStyleNameMapper
{
friend void _InitCore();
friend void _FinitCore();
protected:
// UI Name tables
2012-01-14 00:33:41 -05:00
static boost::ptr_vector<String> *pTextUINameArray,
*pListsUINameArray,
*pExtraUINameArray,
*pRegisterUINameArray,
*pDocUINameArray,
*pHTMLUINameArray,
*pFrmFmtUINameArray,
*pChrFmtUINameArray,
*pHTMLChrFmtUINameArray,
*pPageDescUINameArray,
*pNumRuleUINameArray,
// Programmatic Name tables
*pTextProgNameArray,
*pListsProgNameArray,
*pExtraProgNameArray,
*pRegisterProgNameArray,
*pDocProgNameArray,
*pHTMLProgNameArray,
*pFrmFmtProgNameArray,
*pChrFmtProgNameArray,
*pHTMLChrFmtProgNameArray,
*pPageDescProgNameArray,
*pNumRuleProgNameArray;
static NameToIdHash *pParaUIMap,
*pCharUIMap,
*pPageUIMap,
*pFrameUIMap,
*pNumRuleUIMap,
*pParaProgMap,
*pCharProgMap,
*pPageProgMap,
*pFrameProgMap,
*pNumRuleProgMap;
static void fillNameFromId ( sal_uInt16 nId, String &rName, bool bProgName );
static const String& getNameFromId ( sal_uInt16 nId, const String &rName, bool bProgName );
static const NameToIdHash& getHashTable ( SwGetPoolIdFromName, bool bProgName );
public:
// This gets the UI Name from the programmatic name
static const String& GetUIName ( const String& rName, SwGetPoolIdFromName );
static void FillUIName ( const String& rName, String& rFillName, SwGetPoolIdFromName, bool bDisambiguate = false );
// Get the programmatic Name from the UI name
static const String& GetProgName ( const String& rName, SwGetPoolIdFromName );
static void FillProgName ( const String& rName, String& rFillName, SwGetPoolIdFromName, bool bDisambiguate = false );
2001-07-24 16:21:44 +00:00
// This gets the UI Name from the Pool ID
SW_DLLPUBLIC static void FillUIName ( sal_uInt16 nId, String& rFillName );
SW_DLLPUBLIC static const String& GetUIName ( sal_uInt16 nId, const String& rName );
2001-07-24 16:21:44 +00:00
// This gets the programmatic Name from the Pool ID
2001-07-24 16:21:44 +00:00
static void FillProgName( sal_uInt16 nId, String& rFillName );
CWS-TOOLING: integrate CWS libmsword 2008-12-18 12:33:19 +0100 kendy r265681 : Export less symbols. 2008-12-17 19:26:56 +0100 kendy r265655 : Move libmsword to the -writer package. 2008-12-15 17:46:16 +0100 kendy r265516 : Enable exceptions for iodetect.cxx. 2008-12-15 15:17:53 +0100 kendy r265504 : Deliver the msword.dll. 2008-12-09 19:38:17 +0100 kendy r265138 : Remove accidentally added method. 2008-12-09 19:33:57 +0100 kendy r265137 : Fix linking on Win32. 2008-12-09 18:37:16 +0100 kendy r265135 : Move SwFltControlStack::Delete() to ww1/fltshell.cxx to fix linking. 2008-12-09 18:01:56 +0100 kendy r265127 : Visibility fixes. 2008-12-09 15:51:52 +0100 kendy r265109 : Fix ambiguous usage of class Color. 2008-12-09 14:54:27 +0100 kendy r265091 : Add #include "precompiled_sw.hxx" to fix --enable-pch build. 2008-12-09 14:44:59 +0100 kendy r265088 : Add #include "precompiled_sw.hxx" to fix --enable-pch build. 2008-12-08 19:14:49 +0100 kendy r265015 : #i96313# Get rid of inc/iodetect.cxx, it's a really bad idea to share code by #ifdefing parts of it, and #including a .cxx file ;-) This change moves it to iodetect.cxx, which is compiled to a .o/.obj that is used where needed. 2008-11-20 17:45:08 +0100 kendy r264083 : #i96313# Make the destruction of Readers consistent. 2008-11-20 17:18:11 +0100 kendy r264070 : #i96313# Added missing SW_DLLPUBLIC for (Import|Export)(DOC|RTF). 2008-11-18 19:21:07 +0100 kendy r263797 : #i96313# Remove accidentally added file. 2008-11-18 17:14:31 +0100 kendy r263790 : #i96313# Split doc and rtf filters into a separate library From: Radek Doulik <rodo@novell.com> fix SwFieldBookmark class visibility (suggested by kendy) 2008-11-18 17:14:01 +0100 kendy r263789 : #i96313# Split doc and rtf filters into a separate library From: Fridrich Strba <fstrba@novell.com> add visibility markup to allow linking 2008-11-18 17:13:29 +0100 kendy r263788 : #i96313# Split doc and rtf filters into a separate library From: Jan Holesovsky <kendy@suse.cz> Visibility markup for libmsword. This is the most trivial approach, every class that had a symbol that needed to be visible was marked with SW_DLLPUBLIC; the correct (but more time consuming) way would be to mark just the exact methods that were needed. To be done later if generally shows that the separate libmsword makes sense; and also now we have the upper limit of symbols that needed to be added, and we can only make it better [decrease the number] ;-) 2008-11-18 17:12:58 +0100 kendy r263787 : #i96313# Split doc and rtf filters into a separate library From: Jan Holesovsky <kendy@suse.cz> Added the missing msword.map. 2008-11-18 17:12:25 +0100 kendy r263786 : #i96313# Split doc and rtf filters into a separate library From: Jan Holesovsky <kendy@suse.cz> scp2 change for libmsword. 2008-11-18 17:11:55 +0100 kendy r263785 : #i96313# Split doc and rtf filters into a separate library From: Jan Holesovsky <kendy@suse.cz> Convert the binary .doc and .rtf filters into a separate library. It is called 'libmsword' and loaded on demand when either of the formats (.doc, .rtf) is loaded or saved.
2009-01-05 14:06:42 +00:00
SW_DLLPUBLIC static const String& GetProgName ( sal_uInt16 nId, const String& rName );
// This gets the PoolId from the UI Name
SW_DLLPUBLIC static sal_uInt16 GetPoolIdFromUIName( const String& rName, SwGetPoolIdFromName );
// Get the Pool ID from the programmatic name
static sal_uInt16 GetPoolIdFromProgName( const String& rName, SwGetPoolIdFromName );
// used to convert the 4 special ExtraProg/UINames for
// RES_POOLCOLL_LABEL_DRAWING, RES_POOLCOLL_LABEL_ABB,
// RES_POOLCOLL_LABEL_TABLE, RES_POOLCOLL_LABEL_FRAME
// forth and back.
// Non-matching names remain unchanged.
SW_DLLPUBLIC static const String GetSpecialExtraProgName( const String& rExtraUIName );
static const String GetSpecialExtraUIName( const String& rExtraProgName );
2012-01-14 00:33:41 -05:00
static const boost::ptr_vector<String>& GetTextUINameArray();
static const boost::ptr_vector<String>& GetListsUINameArray();
static const boost::ptr_vector<String>& GetExtraUINameArray();
static const boost::ptr_vector<String>& GetRegisterUINameArray();
static const boost::ptr_vector<String>& GetDocUINameArray();
static const boost::ptr_vector<String>& GetHTMLUINameArray();
static const boost::ptr_vector<String>& GetFrmFmtUINameArray();
static const boost::ptr_vector<String>& GetChrFmtUINameArray();
static const boost::ptr_vector<String>& GetHTMLChrFmtUINameArray();
static const boost::ptr_vector<String>& GetPageDescUINameArray();
static const boost::ptr_vector<String>& GetNumRuleUINameArray();
static const boost::ptr_vector<String>& GetTextProgNameArray();
static const boost::ptr_vector<String>& GetListsProgNameArray();
static const boost::ptr_vector<String>& GetExtraProgNameArray();
static const boost::ptr_vector<String>& GetRegisterProgNameArray();
static const boost::ptr_vector<String>& GetDocProgNameArray();
static const boost::ptr_vector<String>& GetHTMLProgNameArray();
static const boost::ptr_vector<String>& GetFrmFmtProgNameArray();
static const boost::ptr_vector<String>& GetChrFmtProgNameArray();
static const boost::ptr_vector<String>& GetHTMLChrFmtProgNameArray();
static const boost::ptr_vector<String>& GetPageDescProgNameArray();
static const boost::ptr_vector<String>& GetNumRuleProgNameArray();
};
#endif // _NAME_MAPPER_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */