xref: /AOO41X/main/sw/inc/doc.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef SW_DOC_HXX
28*cdf0e10cSrcweir #define SW_DOC_HXX
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir /** SwDoc interfaces */
31*cdf0e10cSrcweir 
32*cdf0e10cSrcweir #include <IInterface.hxx>
33*cdf0e10cSrcweir #include <IDocumentSettingAccess.hxx>
34*cdf0e10cSrcweir #include <IDocumentDeviceAccess.hxx>
35*cdf0e10cSrcweir #include <IDocumentMarkAccess.hxx>
36*cdf0e10cSrcweir #include <IDocumentRedlineAccess.hxx>
37*cdf0e10cSrcweir #include <IDocumentLinksAdministration.hxx>
38*cdf0e10cSrcweir #include <IDocumentFieldsAccess.hxx>
39*cdf0e10cSrcweir #include <IDocumentContentOperations.hxx>
40*cdf0e10cSrcweir #include <IDocumentStylePoolAccess.hxx>
41*cdf0e10cSrcweir #include <IDocumentLineNumberAccess.hxx>
42*cdf0e10cSrcweir #include <IDocumentStatistics.hxx>
43*cdf0e10cSrcweir #include <IDocumentState.hxx>
44*cdf0e10cSrcweir #include <IDocumentDrawModelAccess.hxx>
45*cdf0e10cSrcweir #include <IDocumentLayoutAccess.hxx>
46*cdf0e10cSrcweir #include <IDocumentTimerAccess.hxx>
47*cdf0e10cSrcweir #include <IDocumentChartDataProviderAccess.hxx>
48*cdf0e10cSrcweir // --> OD 2007-10-26 #i83479#
49*cdf0e10cSrcweir #include <IDocumentOutlineNodes.hxx>
50*cdf0e10cSrcweir #include <IDocumentListItems.hxx>
51*cdf0e10cSrcweir #include <set>
52*cdf0e10cSrcweir // <--
53*cdf0e10cSrcweir // --> OD 2008-03-12 #refactorlists#
54*cdf0e10cSrcweir #include <IDocumentListsAccess.hxx>
55*cdf0e10cSrcweir class SwList;
56*cdf0e10cSrcweir // <--
57*cdf0e10cSrcweir #include <IDocumentExternalData.hxx>
58*cdf0e10cSrcweir #define _SVSTDARR_STRINGSDTOR
59*cdf0e10cSrcweir #include <svl/svstdarr.hxx>
60*cdf0e10cSrcweir #include <com/sun/star/embed/XEmbeddedObject.hpp>
61*cdf0e10cSrcweir #include <com/sun/star/embed/XStorage.hpp>
62*cdf0e10cSrcweir #include <vcl/timer.hxx>
63*cdf0e10cSrcweir #include "swdllapi.h"
64*cdf0e10cSrcweir #include <swtypes.hxx>
65*cdf0e10cSrcweir #include <swatrset.hxx>
66*cdf0e10cSrcweir #include <toxe.hxx>   	  		// enums
67*cdf0e10cSrcweir #include <flyenum.hxx>
68*cdf0e10cSrcweir #include <itabenum.hxx>
69*cdf0e10cSrcweir #include <swdbdata.hxx>
70*cdf0e10cSrcweir #include <chcmprse.hxx>
71*cdf0e10cSrcweir #include <com/sun/star/linguistic2/XSpellChecker1.hpp>
72*cdf0e10cSrcweir #include <com/sun/star/linguistic2/XHyphenatedWord.hpp>
73*cdf0e10cSrcweir #include <vos/ref.hxx>
74*cdf0e10cSrcweir #include <svx/svdtypes.hxx>
75*cdf0e10cSrcweir #include <sfx2/objsh.hxx>
76*cdf0e10cSrcweir #include <svl/style.hxx>
77*cdf0e10cSrcweir #include <editeng/numitem.hxx>
78*cdf0e10cSrcweir #include "comphelper/implementationreference.hxx"
79*cdf0e10cSrcweir #include <com/sun/star/chart2/data/XDataProvider.hpp>
80*cdf0e10cSrcweir #include <com/sun/star/linguistic2/XProofreadingIterator.hpp>
81*cdf0e10cSrcweir #ifdef FUTURE_VBA
82*cdf0e10cSrcweir #include <com/sun/star/script/vba/XVBAEventProcessor.hpp>
83*cdf0e10cSrcweir #endif
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir #include <hash_map>
86*cdf0e10cSrcweir #include <stringhash.hxx>
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir #include <svtools/embedhlp.hxx>
89*cdf0e10cSrcweir #include <vector>
90*cdf0e10cSrcweir #include <set>
91*cdf0e10cSrcweir #include <map>
92*cdf0e10cSrcweir #include <memory>
93*cdf0e10cSrcweir 
94*cdf0e10cSrcweir #include <boost/scoped_ptr.hpp>
95*cdf0e10cSrcweir 
96*cdf0e10cSrcweir class SvxForbiddenCharactersTable;
97*cdf0e10cSrcweir class SwExtTextInput;
98*cdf0e10cSrcweir class DateTime;
99*cdf0e10cSrcweir class EditFieldInfo;
100*cdf0e10cSrcweir class JobSetup;
101*cdf0e10cSrcweir class Color;
102*cdf0e10cSrcweir class KeyCode;
103*cdf0e10cSrcweir class Outliner;
104*cdf0e10cSrcweir class OutputDevice;
105*cdf0e10cSrcweir class Point;
106*cdf0e10cSrcweir class SbxArray;
107*cdf0e10cSrcweir class SdrModel;
108*cdf0e10cSrcweir class SdrObject;
109*cdf0e10cSrcweir class SdrUndoAction;
110*cdf0e10cSrcweir class VirtualDevice;
111*cdf0e10cSrcweir class SfxPrinter;
112*cdf0e10cSrcweir class SvNumberFormatter;
113*cdf0e10cSrcweir class SvStringsSort;
114*cdf0e10cSrcweir class SvUShorts;
115*cdf0e10cSrcweir class SvUShortsSort;
116*cdf0e10cSrcweir class SvxMacro;
117*cdf0e10cSrcweir class SvxMacroTableDtor;
118*cdf0e10cSrcweir class SvxBorderLine;
119*cdf0e10cSrcweir class SwAutoCompleteWord;
120*cdf0e10cSrcweir class SwAutoCorrExceptWord;
121*cdf0e10cSrcweir class SwCalc;
122*cdf0e10cSrcweir class SwCellFrm;
123*cdf0e10cSrcweir class SwCharFmt;
124*cdf0e10cSrcweir class SwCharFmts;
125*cdf0e10cSrcweir class SwConditionTxtFmtColl;
126*cdf0e10cSrcweir class SwCrsrShell;
127*cdf0e10cSrcweir class SwCursor;
128*cdf0e10cSrcweir class SwDBNameInfField;
129*cdf0e10cSrcweir class SwDocShell;
130*cdf0e10cSrcweir class SwDocUpdtFld;
131*cdf0e10cSrcweir class SwDrawFrmFmt;
132*cdf0e10cSrcweir class SwDrawView;
133*cdf0e10cSrcweir class SwEditShell;
134*cdf0e10cSrcweir class SwFieldType;
135*cdf0e10cSrcweir class SwField;
136*cdf0e10cSrcweir class SwTxtFld;
137*cdf0e10cSrcweir class SwFldTypes;
138*cdf0e10cSrcweir class SwFlyFrmFmt;
139*cdf0e10cSrcweir class SwFmt;
140*cdf0e10cSrcweir class SwFmtINetFmt;
141*cdf0e10cSrcweir class SwFmtRefMark;
142*cdf0e10cSrcweir class SwFrmFmt;
143*cdf0e10cSrcweir class SwFrmFmts;
144*cdf0e10cSrcweir class SwFtnIdxs;
145*cdf0e10cSrcweir class SwFtnInfo;
146*cdf0e10cSrcweir class SwEndNoteInfo;
147*cdf0e10cSrcweir class GraphicObject;
148*cdf0e10cSrcweir class SwGrfFmtColl;
149*cdf0e10cSrcweir class SwGrfFmtColls;
150*cdf0e10cSrcweir class SwLineNumberInfo;
151*cdf0e10cSrcweir class SwNewDBMgr;
152*cdf0e10cSrcweir class SwNoTxtNode;
153*cdf0e10cSrcweir class SwNodeIndex;
154*cdf0e10cSrcweir class SwNodeRange;
155*cdf0e10cSrcweir class SwNodes;
156*cdf0e10cSrcweir class SwNumRule;
157*cdf0e10cSrcweir class SwNumRuleTbl;
158*cdf0e10cSrcweir class SwPageDesc;
159*cdf0e10cSrcweir class SwPosFlyFrms;
160*cdf0e10cSrcweir class SwPagePreViewPrtData;
161*cdf0e10cSrcweir class SwRedline;
162*cdf0e10cSrcweir class SwRedlineTbl;
163*cdf0e10cSrcweir class SwRootFrm;
164*cdf0e10cSrcweir class SwRubyList;
165*cdf0e10cSrcweir class SwRubyListEntry;
166*cdf0e10cSrcweir class SwSectionFmt;
167*cdf0e10cSrcweir class SwSectionFmts;
168*cdf0e10cSrcweir class SwSectionData;
169*cdf0e10cSrcweir class SwSelBoxes;
170*cdf0e10cSrcweir class SwSpzFrmFmts;
171*cdf0e10cSrcweir class SwTOXBase;
172*cdf0e10cSrcweir class SwTOXBaseSection;
173*cdf0e10cSrcweir class SwTOXMark;
174*cdf0e10cSrcweir class SwTOXMarks;
175*cdf0e10cSrcweir class SwTOXType;
176*cdf0e10cSrcweir class SwTOXTypes;
177*cdf0e10cSrcweir class SwTabCols;
178*cdf0e10cSrcweir class SwTable;
179*cdf0e10cSrcweir class SwTableAutoFmt;
180*cdf0e10cSrcweir class SwTableBox;
181*cdf0e10cSrcweir class SwTableBoxFmt;
182*cdf0e10cSrcweir class SwTableFmt;
183*cdf0e10cSrcweir class SwTableLineFmt;
184*cdf0e10cSrcweir class SwTableNode;
185*cdf0e10cSrcweir class SwTextBlocks;
186*cdf0e10cSrcweir class SwTxtFmtColl;
187*cdf0e10cSrcweir class SwTxtFmtColls;
188*cdf0e10cSrcweir class SwURLStateChanged;
189*cdf0e10cSrcweir class SwUnoCrsr;
190*cdf0e10cSrcweir class SwUnoCrsrTbl;
191*cdf0e10cSrcweir class ViewShell;
192*cdf0e10cSrcweir class _SetGetExpFld;
193*cdf0e10cSrcweir class SwDrawContact;
194*cdf0e10cSrcweir class SwLayouter;
195*cdf0e10cSrcweir class SdrView;
196*cdf0e10cSrcweir class SdrMarkList;
197*cdf0e10cSrcweir class SwAuthEntry;
198*cdf0e10cSrcweir class SwLayoutCache;
199*cdf0e10cSrcweir class IStyleAccess;
200*cdf0e10cSrcweir struct SwCallMouseEvent;
201*cdf0e10cSrcweir struct SwDocStat;
202*cdf0e10cSrcweir struct SwHash;
203*cdf0e10cSrcweir struct SwSortOptions;
204*cdf0e10cSrcweir struct SwDefTOXBase_Impl;
205*cdf0e10cSrcweir class SwPrintData;
206*cdf0e10cSrcweir class SwPrintUIOptions;
207*cdf0e10cSrcweir class SdrPageView;
208*cdf0e10cSrcweir struct SwConversionArgs;
209*cdf0e10cSrcweir class SwRewriter;
210*cdf0e10cSrcweir class SwMsgPoolItem;
211*cdf0e10cSrcweir class SwChartDataProvider;
212*cdf0e10cSrcweir class SwChartLockController_Helper;
213*cdf0e10cSrcweir class IGrammarContact;
214*cdf0e10cSrcweir class SwPrintData;
215*cdf0e10cSrcweir class SwRenderData;
216*cdf0e10cSrcweir class SwPageFrm;
217*cdf0e10cSrcweir class SwViewOption;
218*cdf0e10cSrcweir class IDocumentUndoRedo;
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir namespace sw { namespace mark {
221*cdf0e10cSrcweir     class MarkManager;
222*cdf0e10cSrcweir }}
223*cdf0e10cSrcweir namespace sw {
224*cdf0e10cSrcweir     class MetaFieldManager;
225*cdf0e10cSrcweir     class UndoManager;
226*cdf0e10cSrcweir     class IShellCursorSupplier;
227*cdf0e10cSrcweir }
228*cdf0e10cSrcweir 
229*cdf0e10cSrcweir namespace com { namespace sun { namespace star {
230*cdf0e10cSrcweir namespace i18n {
231*cdf0e10cSrcweir 	struct ForbiddenCharacters;    // comes from the I18N UNO interface
232*cdf0e10cSrcweir }
233*cdf0e10cSrcweir namespace uno {
234*cdf0e10cSrcweir 	template < class > class Sequence;
235*cdf0e10cSrcweir }
236*cdf0e10cSrcweir namespace container {
237*cdf0e10cSrcweir 	class XNameContainer; // for getXForms()/isXForms()/initXForms() methods
238*cdf0e10cSrcweir }
239*cdf0e10cSrcweir }}}
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir namespace sfx2 {
242*cdf0e10cSrcweir 	class SvLinkSource;
243*cdf0e10cSrcweir     class IXmlIdRegistry;
244*cdf0e10cSrcweir     class LinkManager;
245*cdf0e10cSrcweir }
246*cdf0e10cSrcweir 
247*cdf0e10cSrcweir //PageDescriptor-Schnittstelle, Array hier wegen inlines.
248*cdf0e10cSrcweir typedef SwPageDesc* SwPageDescPtr;
249*cdf0e10cSrcweir SV_DECL_PTRARR_DEL( SwPageDescs, SwPageDescPtr, 4, 4 )
250*cdf0e10cSrcweir 
251*cdf0e10cSrcweir // forward declartion
252*cdf0e10cSrcweir void SetAllScriptItem( SfxItemSet& rSet, const SfxPoolItem& rItem );
253*cdf0e10cSrcweir 
254*cdf0e10cSrcweir // global function to start grammar checking in the document
255*cdf0e10cSrcweir void StartGrammarChecking( SwDoc &rDoc );
256*cdf0e10cSrcweir 
257*cdf0e10cSrcweir class SW_DLLPUBLIC SwDoc :
258*cdf0e10cSrcweir     public IInterface,
259*cdf0e10cSrcweir     public IDocumentSettingAccess,
260*cdf0e10cSrcweir     public IDocumentDeviceAccess,
261*cdf0e10cSrcweir     public IDocumentRedlineAccess,
262*cdf0e10cSrcweir     public IDocumentLinksAdministration,
263*cdf0e10cSrcweir     public IDocumentFieldsAccess,
264*cdf0e10cSrcweir     public IDocumentContentOperations,
265*cdf0e10cSrcweir     public IDocumentStylePoolAccess,
266*cdf0e10cSrcweir     public IDocumentLineNumberAccess,
267*cdf0e10cSrcweir     public IDocumentStatistics,
268*cdf0e10cSrcweir     public IDocumentState,
269*cdf0e10cSrcweir     public IDocumentDrawModelAccess,
270*cdf0e10cSrcweir     public IDocumentLayoutAccess,
271*cdf0e10cSrcweir     public IDocumentTimerAccess,
272*cdf0e10cSrcweir     public IDocumentChartDataProviderAccess,
273*cdf0e10cSrcweir     // --> OD 2007-10-26 #i83479#
274*cdf0e10cSrcweir     public IDocumentListItems,
275*cdf0e10cSrcweir     public IDocumentOutlineNodes,
276*cdf0e10cSrcweir     // <--
277*cdf0e10cSrcweir     // --> OD 2008-03-12 #refactorlists#
278*cdf0e10cSrcweir     public IDocumentListsAccess,
279*cdf0e10cSrcweir     // <--
280*cdf0e10cSrcweir     public IDocumentExternalData
281*cdf0e10cSrcweir {
282*cdf0e10cSrcweir 
283*cdf0e10cSrcweir 	friend void _InitCore();
284*cdf0e10cSrcweir 	friend void _FinitCore();
285*cdf0e10cSrcweir 
286*cdf0e10cSrcweir     //---------------- private Member --------------------------------
287*cdf0e10cSrcweir 
288*cdf0e10cSrcweir 	// -------------------------------------------------------------------
289*cdf0e10cSrcweir     ::boost::scoped_ptr<SwNodes> m_pNodes;  /// document content (Nodes Array)
290*cdf0e10cSrcweir 	SwAttrPool*	mpAttrPool;				// der Attribut Pool
291*cdf0e10cSrcweir 	SwPageDescs	aPageDescs;				// PageDescriptoren
292*cdf0e10cSrcweir 	Link 		aOle2Link;				// OLE 2.0-Benachrichtigung
293*cdf0e10cSrcweir     /* @@@MAINTAINABILITY-HORROR@@@
294*cdf0e10cSrcweir        Timer should not be members of the model
295*cdf0e10cSrcweir     */
296*cdf0e10cSrcweir     Timer       aIdleTimer;             // der eigene IdleTimer
297*cdf0e10cSrcweir 	Timer		aOLEModifiedTimer; 		// Timer for update modified OLE-Objecs
298*cdf0e10cSrcweir 	SwDBData	aDBData;				// database descriptor
299*cdf0e10cSrcweir 	::com::sun::star::uno::Sequence <sal_Int8 > aRedlinePasswd;
300*cdf0e10cSrcweir 	String		sTOIAutoMarkURL; 		// ::com::sun::star::util::URL of table of index AutoMark file
301*cdf0e10cSrcweir 	SvStringsDtor aPatternNms;			// Array fuer die Namen der Dokument-Vorlagen
302*cdf0e10cSrcweir 	com::sun::star::uno::Reference<com::sun::star::container::XNameContainer>
303*cdf0e10cSrcweir         xXForms;                        // container with XForms models
304*cdf0e10cSrcweir     mutable com::sun::star::uno::Reference< com::sun::star::linguistic2::XProofreadingIterator > m_xGCIterator;
305*cdf0e10cSrcweir 
306*cdf0e10cSrcweir     const ::boost::scoped_ptr< ::sw::mark::MarkManager> pMarkManager;
307*cdf0e10cSrcweir     const ::boost::scoped_ptr< ::sw::MetaFieldManager > m_pMetaFieldManager;
308*cdf0e10cSrcweir     const ::boost::scoped_ptr< ::sw::UndoManager > m_pUndoManager;
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir 	// -------------------------------------------------------------------
311*cdf0e10cSrcweir 	// die Pointer
312*cdf0e10cSrcweir 								//Defaultformate
313*cdf0e10cSrcweir 	SwFrmFmt		*pDfltFrmFmt;
314*cdf0e10cSrcweir  	SwFrmFmt		*pEmptyPageFmt;		// Format fuer die Default-Leerseite.
315*cdf0e10cSrcweir 	SwFrmFmt		*pColumnContFmt; 	// Format fuer Spaltencontainer
316*cdf0e10cSrcweir 	SwCharFmt		*pDfltCharFmt;
317*cdf0e10cSrcweir 	SwTxtFmtColl	*pDfltTxtFmtColl;	// Defaultformatcollections
318*cdf0e10cSrcweir 	SwGrfFmtColl	*pDfltGrfFmtColl;
319*cdf0e10cSrcweir 
320*cdf0e10cSrcweir 	SwFrmFmts		*pFrmFmtTbl;		// Formattabellen
321*cdf0e10cSrcweir 	SwCharFmts		*pCharFmtTbl;
322*cdf0e10cSrcweir 	SwSpzFrmFmts	*pSpzFrmFmtTbl;
323*cdf0e10cSrcweir 	SwSectionFmts	*pSectionFmtTbl;
324*cdf0e10cSrcweir 	SwFrmFmts		*pTblFrmFmtTbl;		// spz. fuer Tabellen
325*cdf0e10cSrcweir 	SwTxtFmtColls	*pTxtFmtCollTbl;	// FormatCollections
326*cdf0e10cSrcweir 	SwGrfFmtColls	*pGrfFmtCollTbl;
327*cdf0e10cSrcweir 
328*cdf0e10cSrcweir 	SwTOXTypes		*pTOXTypes;			// Verzeichnisse
329*cdf0e10cSrcweir 	SwDefTOXBase_Impl * pDefTOXBases;	// defaults of SwTOXBase's
330*cdf0e10cSrcweir 
331*cdf0e10cSrcweir 	ViewShell		*pCurrentView;	// SwDoc should get a new member pCurrentView//swmod 071225
332*cdf0e10cSrcweir 	SdrModel		*pDrawModel;		// StarView Drawing
333*cdf0e10cSrcweir 
334*cdf0e10cSrcweir 	SwDocUpdtFld 	*pUpdtFlds;			// Struktur zum Field-Update
335*cdf0e10cSrcweir 	SwFldTypes		*pFldTypes;			// Feldtypen
336*cdf0e10cSrcweir 	SwNewDBMgr 		*pNewDBMgr;			// Pointer auf den neuen DBMgr fuer
337*cdf0e10cSrcweir 										// Evaluierung der DB-Fields
338*cdf0e10cSrcweir 
339*cdf0e10cSrcweir     VirtualDevice   *pVirDev;           // can be used for formatting
340*cdf0e10cSrcweir     SfxPrinter      *pPrt;              // can be used for formatting
341*cdf0e10cSrcweir     SwPrintData     *pPrtData;          // Print configuration
342*cdf0e10cSrcweir 
343*cdf0e10cSrcweir 	SwDoc			*pGlossaryDoc;		// Pointer auf das Glossary-Dokument. Dieses
344*cdf0e10cSrcweir 
345*cdf0e10cSrcweir 	SwNumRule		*pOutlineRule;
346*cdf0e10cSrcweir 	SwFtnInfo		*pFtnInfo;
347*cdf0e10cSrcweir 	SwEndNoteInfo 	*pEndNoteInfo;
348*cdf0e10cSrcweir     SwLineNumberInfo*pLineNumberInfo;
349*cdf0e10cSrcweir 	SwFtnIdxs		*pFtnIdxs;
350*cdf0e10cSrcweir 	SwDocStat		*pDocStat;			// Statistic Informationen
351*cdf0e10cSrcweir 	SvxMacroTableDtor *pMacroTable; 	// Tabelle der dokumentglobalen Macros
352*cdf0e10cSrcweir 
353*cdf0e10cSrcweir 	SwDocShell		*pDocShell;			// Ptr auf die SfxDocShell vom Doc
354*cdf0e10cSrcweir     SfxObjectShellLock xTmpDocShell;    // A temporary shell that is used to copy OLE-Nodes
355*cdf0e10cSrcweir 
356*cdf0e10cSrcweir 	sfx2::LinkManager	*pLinkMgr;			// Liste von Verknuepften (Grafiken/DDE/OLE)
357*cdf0e10cSrcweir 
358*cdf0e10cSrcweir 	SwAutoCorrExceptWord *pACEWord;		// fuer die automatische Uebernahme von
359*cdf0e10cSrcweir 										// autokorrigierten Woertern, die "zurueck"
360*cdf0e10cSrcweir 										// verbessert werden
361*cdf0e10cSrcweir 	SwURLStateChanged *pURLStateChgd;	// SfxClient fuer Aenderungen in der
362*cdf0e10cSrcweir 										// INetHistory
363*cdf0e10cSrcweir 	SvNumberFormatter *pNumberFormatter;	// NumFormatter fuer die Tabellen/Felder
364*cdf0e10cSrcweir 
365*cdf0e10cSrcweir     mutable SwNumRuleTbl    *pNumRuleTbl;           // Liste aller benannten NumRules
366*cdf0e10cSrcweir 
367*cdf0e10cSrcweir     // Hash map to find numrules by name
368*cdf0e10cSrcweir     mutable std::hash_map<String, SwNumRule *, StringHash> maNumRuleMap;
369*cdf0e10cSrcweir 
370*cdf0e10cSrcweir     // --> OD 2008-03-12 #refactorlists#
371*cdf0e10cSrcweir     typedef std::hash_map< String, SwList*, StringHash > tHashMapForLists;
372*cdf0e10cSrcweir     // container to hold the lists of the text document
373*cdf0e10cSrcweir     tHashMapForLists maLists;
374*cdf0e10cSrcweir     // relation between list style and its default list
375*cdf0e10cSrcweir     tHashMapForLists maListStyleLists;
376*cdf0e10cSrcweir     // <--
377*cdf0e10cSrcweir 
378*cdf0e10cSrcweir 	SwRedlineTbl	*pRedlineTbl;			// Liste aller Redlines
379*cdf0e10cSrcweir 	String			*pAutoFmtRedlnComment;	// Kommentar fuer Redlines, die
380*cdf0e10cSrcweir 										// uebers Autoformat eingefuegt werden
381*cdf0e10cSrcweir 	SwUnoCrsrTbl	*pUnoCrsrTbl;
382*cdf0e10cSrcweir 
383*cdf0e10cSrcweir 	SwPagePreViewPrtData *pPgPViewPrtData;		// Einzuege/Abstaende fuers
384*cdf0e10cSrcweir 										// Drucken der Seitenansicht
385*cdf0e10cSrcweir 	SwPaM			*pExtInputRing;
386*cdf0e10cSrcweir 
387*cdf0e10cSrcweir 	SwLayouter		*pLayouter;		// ::com::sun::star::frame::Controller for complex layout formatting
388*cdf0e10cSrcweir 									// like footnote/endnote in sections
389*cdf0e10cSrcweir     IStyleAccess    *pStyleAccess;  // handling of automatic styles
390*cdf0e10cSrcweir     SwLayoutCache   *pLayoutCache;  // Layout cache to read and save with the
391*cdf0e10cSrcweir                                     // document for a faster formatting
392*cdf0e10cSrcweir 
393*cdf0e10cSrcweir     SwModify *pUnoCallBack;
394*cdf0e10cSrcweir     IGrammarContact *mpGrammarContact;   // for grammar checking in paragraphs during editing
395*cdf0e10cSrcweir 
396*cdf0e10cSrcweir     mutable  comphelper::ImplementationReference< SwChartDataProvider
397*cdf0e10cSrcweir         , ::com::sun::star::chart2::data::XDataProvider >
398*cdf0e10cSrcweir                                 aChartDataProviderImplRef;
399*cdf0e10cSrcweir     SwChartLockController_Helper  *pChartControllerHelper;
400*cdf0e10cSrcweir 
401*cdf0e10cSrcweir 	// table of forbidden characters of this document
402*cdf0e10cSrcweir 	vos::ORef<SvxForbiddenCharactersTable>	xForbiddenCharsTable;
403*cdf0e10cSrcweir #ifdef FUTURE_VBA
404*cdf0e10cSrcweir     com::sun::star::uno::Reference< com::sun::star::script::vba::XVBAEventProcessor > mxVbaEvents;
405*cdf0e10cSrcweir #endif
406*cdf0e10cSrcweir     // --> OD 2007-10-26 #i83479#
407*cdf0e10cSrcweir public:
408*cdf0e10cSrcweir     struct lessThanNodeNum
409*cdf0e10cSrcweir     {
410*cdf0e10cSrcweir         bool operator()( const SwNodeNum* pNodeNumOne,
411*cdf0e10cSrcweir                          const SwNodeNum* pNodeNumTwo ) const;
412*cdf0e10cSrcweir     };
413*cdf0e10cSrcweir 
414*cdf0e10cSrcweir     typedef ::std::set< const SwNodeNum*, lessThanNodeNum > tImplSortedNodeNumList;
415*cdf0e10cSrcweir private:
416*cdf0e10cSrcweir     tImplSortedNodeNumList* mpListItemsList;
417*cdf0e10cSrcweir     // <--
418*cdf0e10cSrcweir 
419*cdf0e10cSrcweir     ::std::auto_ptr< ::sfx2::IXmlIdRegistry > m_pXmlIdRegistry;
420*cdf0e10cSrcweir 
421*cdf0e10cSrcweir 	// -------------------------------------------------------------------
422*cdf0e10cSrcweir 	// sonstige
423*cdf0e10cSrcweir 
424*cdf0e10cSrcweir 	sal_uInt16 nAutoFmtRedlnCommentNo;	// SeqNo fuers UI-seitige zusammenfassen
425*cdf0e10cSrcweir 									// von AutoFmt-Redlines. Wird vom SwAutoFmt
426*cdf0e10cSrcweir 									// verwaltet!
427*cdf0e10cSrcweir 	sal_uInt16	nLinkUpdMode;		// UpdateMode fuer Links
428*cdf0e10cSrcweir     SwFldUpdateFlags    eFldUpdMode;        // Mode fuer Felder/Charts automatisch aktualisieren
429*cdf0e10cSrcweir 	RedlineMode_t eRedlineMode;		// aktueller Redline Modus
430*cdf0e10cSrcweir 	SwCharCompressType eChrCmprType;	// for ASIAN: compress punctuation/kana
431*cdf0e10cSrcweir 
432*cdf0e10cSrcweir     sal_Int32   mReferenceCount;
433*cdf0e10cSrcweir     sal_Int32   mIdleBlockCount;
434*cdf0e10cSrcweir 	sal_Int8	nLockExpFld;		// Wenn != 0 hat UpdateExpFlds() keine Wirkung
435*cdf0e10cSrcweir 
436*cdf0e10cSrcweir     /* Draw Model Layer IDs
437*cdf0e10cSrcweir      * LayerIds, Heaven == ueber dem Dokument
438*cdf0e10cSrcweir      * Hell   == unter dem Dokument
439*cdf0e10cSrcweir      * Controls == ganz oben
440*cdf0e10cSrcweir      */
441*cdf0e10cSrcweir     SdrLayerID  nHeaven;
442*cdf0e10cSrcweir     SdrLayerID  nHell;
443*cdf0e10cSrcweir     SdrLayerID  nControls;
444*cdf0e10cSrcweir     SdrLayerID  nInvisibleHeaven;
445*cdf0e10cSrcweir     SdrLayerID  nInvisibleHell;
446*cdf0e10cSrcweir     SdrLayerID  nInvisibleControls;
447*cdf0e10cSrcweir 
448*cdf0e10cSrcweir     bool mbGlossDoc              : 1;    //sal_True: ist ein Textbaustein Dokument
449*cdf0e10cSrcweir     bool mbModified              : 1;    //sal_True: Dokument ist veraendert
450*cdf0e10cSrcweir     bool mbDtor                  : 1;    //sal_True: ist im SwDoc DTOR
451*cdf0e10cSrcweir                                          //      leider auch temporaer von
452*cdf0e10cSrcweir                                          //      SwSwgReader::InLayout(), wenn fehlerhafte
453*cdf0e10cSrcweir                                          //      Frames geloescht werden muessen
454*cdf0e10cSrcweir     bool mbPageNums              : 1;    // TRUE: es gibt virtuelle Seitennummern
455*cdf0e10cSrcweir     bool mbLoaded                : 1;    // TRUE: ein geladenes Doc
456*cdf0e10cSrcweir     bool mbUpdateExpFld          : 1;    // TRUE: Expression-Felder updaten
457*cdf0e10cSrcweir     bool mbNewDoc                : 1;    // TRUE: neues Doc
458*cdf0e10cSrcweir     bool mbNewFldLst             : 1;    // TRUE: Felder-Liste neu aufbauen
459*cdf0e10cSrcweir     bool mbCopyIsMove            : 1;    // TRUE: Copy ist ein verstecktes Move
460*cdf0e10cSrcweir     bool mbVisibleLinks          : 1;    // TRUE: Links werden sichtbar eingefuegt
461*cdf0e10cSrcweir     bool mbInReading             : 1;    // TRUE: Dokument wird gerade gelesen
462*cdf0e10cSrcweir     bool mbInXMLImport           : 1;    // TRUE: During xml import, attribute portion building is not necessary
463*cdf0e10cSrcweir     bool mbUpdateTOX             : 1;    // TRUE: nach Dokument laden die TOX Updaten
464*cdf0e10cSrcweir     bool mbInLoadAsynchron       : 1;    // TRUE: Dokument wird gerade asynchron geladen
465*cdf0e10cSrcweir     bool mbHTMLMode              : 1;    // TRUE: Dokument ist im HTMLMode
466*cdf0e10cSrcweir     bool mbInCallModified        : 1;    // TRUE: im Set/Reset-Modified Link
467*cdf0e10cSrcweir     bool mbIsGlobalDoc           : 1;    // TRUE: es ist ein GlobalDokument
468*cdf0e10cSrcweir     bool mbGlblDocSaveLinks      : 1;    // TRUE: im GlobalDoc. gelinkte Sect. mit speichern
469*cdf0e10cSrcweir     bool mbIsLabelDoc            : 1;    // TRUE: es ist ein Etiketten-Dokument
470*cdf0e10cSrcweir     bool mbIsAutoFmtRedline      : 1;    // TRUE: die Redlines werden vom Autoformat aufgezeichnet
471*cdf0e10cSrcweir     bool mbOLEPrtNotifyPending   : 1;    // TRUE: Printer  ist geaendert und beim
472*cdf0e10cSrcweir                                          //       Erzeugen der ::com::sun::star::sdbcx::View ist eine Benachrichtigung
473*cdf0e10cSrcweir                                          //       der OLE-Objekte PrtOLENotify() notwendig.
474*cdf0e10cSrcweir     bool mbAllOLENotify          : 1;    // True: Benachrichtigung aller Objekte ist notwendig
475*cdf0e10cSrcweir     bool mbIsRedlineMove         : 1;    // True: die Redlines werden in/aus der Section verschoben
476*cdf0e10cSrcweir     bool mbInsOnlyTxtGlssry      : 1;    // True: insert 'only text' glossary into doc
477*cdf0e10cSrcweir     bool mbContains_MSVBasic     : 1;    // True: MS-VBasic exist is in our storage
478*cdf0e10cSrcweir     bool mbPurgeOLE              : 1;    // sal_True: Purge OLE-Objects
479*cdf0e10cSrcweir     bool mbKernAsianPunctuation  : 1;    // sal_True: kerning also for ASIAN punctuation
480*cdf0e10cSrcweir     bool mbReadlineChecked       : 1;    // sal_True: if the query was already shown
481*cdf0e10cSrcweir     bool mbLinksUpdated          : 1;    // OD 2005-02-11 #i38810#
482*cdf0e10cSrcweir                                          // flag indicating, that the links have been updated.
483*cdf0e10cSrcweir     bool mbClipBoard             : 1;    // true: this document represents the clipboard
484*cdf0e10cSrcweir     bool mbColumnSelection       : 1;    // true: this content has bee created by a column selection
485*cdf0e10cSrcweir                                          //       (clipboard docs only)
486*cdf0e10cSrcweir 
487*cdf0e10cSrcweir #ifdef DBG_UTIL
488*cdf0e10cSrcweir     bool mbXMLExport : 1;                // sal_True: during XML export
489*cdf0e10cSrcweir #endif
490*cdf0e10cSrcweir 
491*cdf0e10cSrcweir     // --> OD 2006-03-21 #b6375613#
492*cdf0e10cSrcweir     // Document flag to trigger conversion, which applys the workaround for documents,
493*cdf0e10cSrcweir     // which uses a certain layout defect in OOo 1.x to layout the documents.
494*cdf0e10cSrcweir     // This conversion is performed, when the frames for the layout are created.
495*cdf0e10cSrcweir     // Thus, this document flag has to be set after load a document and before
496*cdf0e10cSrcweir     // creating the document view.
497*cdf0e10cSrcweir     bool mbApplyWorkaroundForB6375613 : 1;
498*cdf0e10cSrcweir     // <--
499*cdf0e10cSrcweir 
500*cdf0e10cSrcweir     //
501*cdf0e10cSrcweir     // COMPATIBILITY FLAGS START
502*cdf0e10cSrcweir     //
503*cdf0e10cSrcweir     //
504*cdf0e10cSrcweir     // HISTORY OF THE COMPATIBILITY FLAGS:
505*cdf0e10cSrcweir     //
506*cdf0e10cSrcweir     // SO5:
507*cdf0e10cSrcweir     // mbParaSpaceMax                        def = sal_False, sal_True since SO8
508*cdf0e10cSrcweir     // mbParaSpaceMaxAtPages                 def = sal_False, sal_True since SO8
509*cdf0e10cSrcweir     //
510*cdf0e10cSrcweir     // SO6:
511*cdf0e10cSrcweir     // mbTabCompat                           def = sal_False, sal_True since SO8
512*cdf0e10cSrcweir     //
513*cdf0e10cSrcweir     // SO7:
514*cdf0e10cSrcweir     // mbUseVirtualDevice                    def = sal_True
515*cdf0e10cSrcweir     // mbAddFlyOffsets                       def = sal_False, hidden
516*cdf0e10cSrcweir     //
517*cdf0e10cSrcweir     // SO7pp1:
518*cdf0e10cSrcweir     // bOldNumbering                        def = sal_False, hidden
519*cdf0e10cSrcweir     //
520*cdf0e10cSrcweir     // SO8:
521*cdf0e10cSrcweir     // mbAddExternalLeading                  def = sal_True
522*cdf0e10cSrcweir     // mbUseHiResolutionVirtualDevice        def = sal_True, hidden
523*cdf0e10cSrcweir     // mbOldLineSpacing                      def = sal_False
524*cdf0e10cSrcweir     // mbAddParaSpacingToTableCells          def = sal_True
525*cdf0e10cSrcweir     // mbUseFormerObjectPos                  def = sal_False
526*cdf0e10cSrcweir     // mbUseFormerTextWrapping               def = sal_False
527*cdf0e10cSrcweir     // mbConsiderWrapOnObjPos                def = sal_False
528*cdf0e10cSrcweir     //
529*cdf0e10cSrcweir     // SO8pp1:
530*cdf0e10cSrcweir     // mbIgnoreFirstLineIndentInNumbering    def = sal_False, hidden
531*cdf0e10cSrcweir     // mbDoNotJustifyLinesWithManualBreak    def = sal_False, hidden
532*cdf0e10cSrcweir     // mbDoNotResetParaAttrsForNumFont       def = sal_False, hidden
533*cdf0e10cSrcweir     //
534*cdf0e10cSrcweir     // SO8pp3
535*cdf0e10cSrcweir     // mbDoNotCaptureDrawObjsOnPage         def = sal_False, hidden
536*cdf0e10cSrcweir     // - Relevant for drawing objects, which don't follow the text flow, but
537*cdf0e10cSrcweir     //   whose position is outside the page area:
538*cdf0e10cSrcweir     //   sal_False: Such drawing objects are captured on the page area of its anchor.
539*cdf0e10cSrcweir     //   sal_True: Such drawing objects can leave the page area, they aren't captured.
540*cdf0e10cSrcweir     // mbTableRowKeep                            def = sal_False, hidden
541*cdf0e10cSrcweir     // mbIgnoreTabsAndBlanksForLineCalculation   def = sal_False, hidden
542*cdf0e10cSrcweir     // mbClipAsCharacterAnchoredWriterFlyFrame   def = sal_False, hidden
543*cdf0e10cSrcweir     // - Introduced in order to re-activate clipping of as-character anchored
544*cdf0e10cSrcweir     //   Writer fly frames in method <SwFlyInCntFrm::MakeAll()> for documents,
545*cdf0e10cSrcweir     //   which are created with version prior SO8/OOo 2.0
546*cdf0e10cSrcweir     //
547*cdf0e10cSrcweir     // SO8pp4
548*cdf0e10cSrcweir     // mbUnixForceZeroExtLeading                def = sal_False, hidden
549*cdf0e10cSrcweir     //
550*cdf0e10cSrcweir     // SO8pu8
551*cdf0e10cSrcweir     // mbOldPrinterMetrics                      def = sal_False, hidden
552*cdf0e10cSrcweir     //
553*cdf0e10cSrcweir     // SO9
554*cdf0e10cSrcweir     // #i24363# tab stops relative to indent
555*cdf0e10cSrcweir     // mbTabRelativeToIndent                    def = sal_True, hidden
556*cdf0e10cSrcweir     // #i89181# suppress tab stop at left indent for paragraphs in lists, whose
557*cdf0e10cSrcweir     // list level position and space mode equals LABEL_ALIGNMENT and whose list
558*cdf0e10cSrcweir     // label is followed by a tab character.
559*cdf0e10cSrcweir     // mbTabAtLeftIndentForParagraphsInList     def = sal_False, hidden
560*cdf0e10cSrcweir 
561*cdf0e10cSrcweir     bool mbParaSpaceMax                     : 1;
562*cdf0e10cSrcweir     bool mbParaSpaceMaxAtPages              : 1;
563*cdf0e10cSrcweir     bool mbTabCompat                        : 1;
564*cdf0e10cSrcweir     bool mbUseVirtualDevice                 : 1;
565*cdf0e10cSrcweir     bool mbAddFlyOffsets                    : 1;
566*cdf0e10cSrcweir     bool mbAddExternalLeading               : 1;
567*cdf0e10cSrcweir     bool mbUseHiResolutionVirtualDevice     : 1;
568*cdf0e10cSrcweir     bool mbOldLineSpacing                   : 1;    // OD  2004-01-06 #i11859#
569*cdf0e10cSrcweir     bool mbAddParaSpacingToTableCells       : 1;    // OD  2004-02-16 #106629#
570*cdf0e10cSrcweir     bool mbUseFormerObjectPos               : 1;    // OD  2004-03-12 #i11860#
571*cdf0e10cSrcweir     bool mbUseFormerTextWrapping            : 1;    // FME 2005-05-11 #108724#
572*cdf0e10cSrcweir     bool mbConsiderWrapOnObjPos             : 1;    // OD  2004-05-05 #i28701#
573*cdf0e10cSrcweir                                                     // sal_True: object positioning algorithm has consider the wrapping style of                                                    //       the floating screen objects as given by its attribute 'WrapInfluenceOnObjPos'
574*cdf0e10cSrcweir     bool mbMathBaselineAlignment            : 1;    // TL  2010-10-29 #i972#
575*cdf0e10cSrcweir 
576*cdf0e10cSrcweir     // non-ui-compatibility flags:
577*cdf0e10cSrcweir     bool mbOldNumbering                             : 1;   // HBRINKM #111955#
578*cdf0e10cSrcweir     bool mbIgnoreFirstLineIndentInNumbering         : 1;   // FME 2005-05-30# i47448#
579*cdf0e10cSrcweir     bool mbDoNotJustifyLinesWithManualBreak         : 1;   // FME 2005-06-08 #i49277#
580*cdf0e10cSrcweir     bool mbDoNotResetParaAttrsForNumFont            : 1;   // FME 2005-08-11 #i53199#
581*cdf0e10cSrcweir     bool mbTableRowKeep                             : 1;   // FME 2006-02-10 #131283#
582*cdf0e10cSrcweir     bool mbIgnoreTabsAndBlanksForLineCalculation    : 1;   // FME 2006-03-01 #i3952#
583*cdf0e10cSrcweir     bool mbDoNotCaptureDrawObjsOnPage               : 1;   // OD 2006-03-14 #i62875#
584*cdf0e10cSrcweir     bool mbOutlineLevelYieldsOutlineRule            : 1;
585*cdf0e10cSrcweir     bool mbClipAsCharacterAnchoredWriterFlyFrames   : 1;   // OD 2006-04-13 #b6402800#
586*cdf0e10cSrcweir     bool mbUnixForceZeroExtLeading                  : 1;   // FME 2006-10-09 #i60945#
587*cdf0e10cSrcweir     bool mbOldPrinterMetrics                        : 1;   // FME 2007-05-14 #147385#
588*cdf0e10cSrcweir     bool mbTabRelativeToIndent                      : 1;   // #i24363# tab stops relative to indent
589*cdf0e10cSrcweir     bool mbProtectForm                              : 1;
590*cdf0e10cSrcweir     bool mbTabAtLeftIndentForParagraphsInList;             // OD 2008-06-05 #i89181# - see above
591*cdf0e10cSrcweir 
592*cdf0e10cSrcweir     bool mbLastBrowseMode                           : 1;
593*cdf0e10cSrcweir 
594*cdf0e10cSrcweir 	// #i78591#
595*cdf0e10cSrcweir 	sal_uInt32  n32DummyCompatabilityOptions1;
596*cdf0e10cSrcweir 	sal_uInt32  n32DummyCompatabilityOptions2;
597*cdf0e10cSrcweir     //
598*cdf0e10cSrcweir     // COMPATIBILITY FLAGS END
599*cdf0e10cSrcweir     //
600*cdf0e10cSrcweir 
601*cdf0e10cSrcweir     sal_Bool    mbStartIdleTimer                 ;    // idle timer mode start/stop
602*cdf0e10cSrcweir 
603*cdf0e10cSrcweir 	bool		mbSetDrawDefaults				 ;	  // set draw pool defaults for freshly created documents
604*cdf0e10cSrcweir 
605*cdf0e10cSrcweir 	static SwAutoCompleteWord *pACmpltWords;	// Liste aller Worte fuers AutoComplete
606*cdf0e10cSrcweir 
607*cdf0e10cSrcweir 	//---------------- private Methoden ------------------------------
608*cdf0e10cSrcweir 	void checkRedlining(RedlineMode_t& _rReadlineMode);
609*cdf0e10cSrcweir 
610*cdf0e10cSrcweir 	DECL_LINK( AddDrawUndo, SdrUndoAction * );
611*cdf0e10cSrcweir 										// DrawModel
612*cdf0e10cSrcweir 	void DrawNotifyUndoHdl();	// wegen CLOOKs
613*cdf0e10cSrcweir 
614*cdf0e10cSrcweir 		// nur fuer den internen Gebrauch deshalb privat.
615*cdf0e10cSrcweir 		// Kopieren eines Bereiches im oder in ein anderes Dokument !
616*cdf0e10cSrcweir 		// Die Position darf nicht im Bereich liegen !!
617*cdf0e10cSrcweir     bool CopyImpl( SwPaM&, SwPosition&, const bool MakeNewFrms /*= true */,
618*cdf0e10cSrcweir             const bool bCopyAll, SwPaM *const pCpyRng /*= 0*/ ) const;
619*cdf0e10cSrcweir 
620*cdf0e10cSrcweir 	SwFlyFrmFmt* _MakeFlySection( const SwPosition& rAnchPos,
621*cdf0e10cSrcweir 								const SwCntntNode& rNode, RndStdIds eRequestId,
622*cdf0e10cSrcweir 								const SfxItemSet* pFlyAttrSet,
623*cdf0e10cSrcweir 								SwFrmFmt* = 0 );
624*cdf0e10cSrcweir 
625*cdf0e10cSrcweir 	SwFlyFrmFmt* _InsNoTxtNode( const SwPosition&rPos, SwNoTxtNode*,
626*cdf0e10cSrcweir 								const SfxItemSet* pFlyAttrSet,
627*cdf0e10cSrcweir 								const SfxItemSet* pGrfAttrSet,
628*cdf0e10cSrcweir 								SwFrmFmt* = 0 );
629*cdf0e10cSrcweir 
630*cdf0e10cSrcweir     void CopyFlyInFlyImpl(  const SwNodeRange& rRg,
631*cdf0e10cSrcweir                             const xub_StrLen nEndContentIndex,
632*cdf0e10cSrcweir                             const SwNodeIndex& rStartIdx,
633*cdf0e10cSrcweir                             const bool bCopyFlyAtFly = false ) const;
634*cdf0e10cSrcweir     sal_Int8 SetFlyFrmAnchor( SwFrmFmt& rFlyFmt, SfxItemSet& rSet, sal_Bool bNewFrms );
635*cdf0e10cSrcweir 
636*cdf0e10cSrcweir     // --> OD 2005-01-13 #i40550#
637*cdf0e10cSrcweir     typedef SwFmt* (SwDoc:: *FNCopyFmt)( const String&, SwFmt*, sal_Bool, sal_Bool );
638*cdf0e10cSrcweir     // <--
639*cdf0e10cSrcweir 	SwFmt* CopyFmt( const SwFmt& rFmt, const SvPtrarr& rFmtArr,
640*cdf0e10cSrcweir 						FNCopyFmt fnCopyFmt, const SwFmt& rDfltFmt );
641*cdf0e10cSrcweir 	void CopyFmtArr( const SvPtrarr& rSourceArr, SvPtrarr& rDestArr,
642*cdf0e10cSrcweir 						FNCopyFmt fnCopyFmt, SwFmt& rDfltFmt );
643*cdf0e10cSrcweir     void CopyPageDescHeaderFooterImpl( bool bCpyHeader,
644*cdf0e10cSrcweir 								const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt );
645*cdf0e10cSrcweir 	SwFmt* FindFmtByName( const SvPtrarr& rFmtArr,
646*cdf0e10cSrcweir 									const String& rName ) const;
647*cdf0e10cSrcweir 
648*cdf0e10cSrcweir     VirtualDevice& CreateVirtualDevice_() const;
649*cdf0e10cSrcweir     SfxPrinter& CreatePrinter_() const;
650*cdf0e10cSrcweir 	void		PrtDataChanged();	//Printer oder JobSetup geandert, es muss
651*cdf0e10cSrcweir 									//fuer entsprechende Invalidierungen und
652*cdf0e10cSrcweir 									//Benachrichtigungen gesorgt werden.
653*cdf0e10cSrcweir 
654*cdf0e10cSrcweir 	// gcc: aFtnInfo::CopyCtor ist private, also muessen wir uns auch schuetzen
655*cdf0e10cSrcweir 	SwDoc( const SwDoc &);
656*cdf0e10cSrcweir 
657*cdf0e10cSrcweir     // fuer Felder:
658*cdf0e10cSrcweir 	void _InitFieldTypes(); 	// wird vom CTOR gerufen!!
659*cdf0e10cSrcweir 	void _MakeFldList( int eMode );
660*cdf0e10cSrcweir 
661*cdf0e10cSrcweir 	// Datenbankfelder:
662*cdf0e10cSrcweir 	void UpdateDBNumFlds( SwDBNameInfField& rDBFld, SwCalc& rCalc );
663*cdf0e10cSrcweir 	void AddUsedDBToList( SvStringsDtor& rDBNameList,
664*cdf0e10cSrcweir 						  const SvStringsDtor& rUsedDBNames );
665*cdf0e10cSrcweir 	void AddUsedDBToList( SvStringsDtor& rDBNameList, const String& rDBName );
666*cdf0e10cSrcweir 	sal_Bool IsNameInArray( const SvStringsDtor& rOldNames, const String& rName );
667*cdf0e10cSrcweir 	void GetAllDBNames( SvStringsDtor& rAllDBNames );
668*cdf0e10cSrcweir 	void ReplaceUsedDBs( const SvStringsDtor& rUsedDBNames,
669*cdf0e10cSrcweir 						const String& rNewName, String& rFormel );
670*cdf0e10cSrcweir 	SvStringsDtor& FindUsedDBs( const SvStringsDtor& rAllDBNames,
671*cdf0e10cSrcweir 								const String& rFormel,
672*cdf0e10cSrcweir 								SvStringsDtor& rUsedDBNames );
673*cdf0e10cSrcweir 
674*cdf0e10cSrcweir 	void InitDrawModel();
675*cdf0e10cSrcweir 	void ReleaseDrawModel();
676*cdf0e10cSrcweir 
677*cdf0e10cSrcweir 	void _CreateNumberFormatter();
678*cdf0e10cSrcweir 
679*cdf0e10cSrcweir 	sal_Bool _UnProtectTblCells( SwTable& rTbl );
680*cdf0e10cSrcweir 
681*cdf0e10cSrcweir 	// erzeuge Anhand der vorgebenen Collection Teildokumente
682*cdf0e10cSrcweir 	// falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene
683*cdf0e10cSrcweir 	sal_Bool SplitDoc( sal_uInt16 eDocType, const String& rPath,
684*cdf0e10cSrcweir 						const SwTxtFmtColl* pSplitColl );
685*cdf0e10cSrcweir 	sal_Bool SplitDoc( sal_uInt16 eDocType, const String& rPath, int nOutlineLevel = 0 ); //#outline level,add by zhaijianwei.
686*cdf0e10cSrcweir 
687*cdf0e10cSrcweir 
688*cdf0e10cSrcweir 	// Charts der angegebenen Tabelle updaten
689*cdf0e10cSrcweir 	void _UpdateCharts( const SwTable& rTbl, ViewShell& rVSh ) const;
690*cdf0e10cSrcweir 
691*cdf0e10cSrcweir 	sal_Bool _SelectNextRubyChars( SwPaM& rPam, SwRubyListEntry& rRubyEntry,
692*cdf0e10cSrcweir 								sal_uInt16 nMode );
693*cdf0e10cSrcweir 
694*cdf0e10cSrcweir 	// unser eigener 'IdlTimer' ruft folgende Methode
695*cdf0e10cSrcweir 	DECL_LINK( DoIdleJobs, Timer * );
696*cdf0e10cSrcweir 	// der CharTimer ruft diese Methode
697*cdf0e10cSrcweir 	DECL_LINK( DoUpdateAllCharts, Timer * );
698*cdf0e10cSrcweir 	DECL_LINK( DoUpdateModifiedOLE, Timer * );
699*cdf0e10cSrcweir 
700*cdf0e10cSrcweir      SwFmt *_MakeCharFmt(const String &, SwFmt *, sal_Bool, sal_Bool );
701*cdf0e10cSrcweir      SwFmt *_MakeFrmFmt(const String &, SwFmt *, sal_Bool, sal_Bool );
702*cdf0e10cSrcweir      SwFmt *_MakeTxtFmtColl(const String &, SwFmt *, sal_Bool, sal_Bool );
703*cdf0e10cSrcweir 
704*cdf0e10cSrcweir      void InitTOXTypes();
705*cdf0e10cSrcweir      void   Paste( const SwDoc& );
706*cdf0e10cSrcweir      bool DeleteAndJoinImpl(SwPaM&, const bool);
707*cdf0e10cSrcweir      bool DeleteAndJoinWithRedlineImpl(SwPaM&, const bool unused = false);
708*cdf0e10cSrcweir      bool DeleteRangeImpl(SwPaM&, const bool unused = false);
709*cdf0e10cSrcweir      bool DeleteRangeImplImpl(SwPaM &);
710*cdf0e10cSrcweir      bool ReplaceRangeImpl(SwPaM&, String const&, const bool);
711*cdf0e10cSrcweir 
712*cdf0e10cSrcweir public:
713*cdf0e10cSrcweir 
714*cdf0e10cSrcweir     /** Life cycle
715*cdf0e10cSrcweir     */
716*cdf0e10cSrcweir 	SwDoc();
717*cdf0e10cSrcweir 	~SwDoc();
718*cdf0e10cSrcweir 
719*cdf0e10cSrcweir     inline bool IsInDtor() const { return mbDtor; }
720*cdf0e10cSrcweir 
721*cdf0e10cSrcweir     /* @@@MAINTAINABILITY-HORROR@@@
722*cdf0e10cSrcweir 	   Implementation details made public.
723*cdf0e10cSrcweir 	*/
724*cdf0e10cSrcweir     SwNodes      & GetNodes()       { return *m_pNodes; }
725*cdf0e10cSrcweir     SwNodes const& GetNodes() const { return *m_pNodes; }
726*cdf0e10cSrcweir 
727*cdf0e10cSrcweir     /** IInterface
728*cdf0e10cSrcweir     */
729*cdf0e10cSrcweir     virtual sal_Int32 acquire();
730*cdf0e10cSrcweir     virtual sal_Int32 release();
731*cdf0e10cSrcweir     virtual sal_Int32 getReferenceCount() const;
732*cdf0e10cSrcweir 
733*cdf0e10cSrcweir     /** IDocumentSettingAccess
734*cdf0e10cSrcweir     */
735*cdf0e10cSrcweir     virtual bool get(/*[in]*/ DocumentSettingId id) const;
736*cdf0e10cSrcweir     virtual void set(/*[in]*/ DocumentSettingId id, /*[in]*/ bool value);
737*cdf0e10cSrcweir     virtual const com::sun::star::i18n::ForbiddenCharacters* getForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ bool bLocaleData ) const;
738*cdf0e10cSrcweir     virtual void setForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ const com::sun::star::i18n::ForbiddenCharacters& rForbiddenCharacters );
739*cdf0e10cSrcweir     virtual vos::ORef<SvxForbiddenCharactersTable>& getForbiddenCharacterTable();
740*cdf0e10cSrcweir     virtual const vos::ORef<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() const;
741*cdf0e10cSrcweir     virtual sal_uInt16 getLinkUpdateMode( /*[in]*/bool bGlobalSettings ) const;
742*cdf0e10cSrcweir     virtual void setLinkUpdateMode( /*[in]*/ sal_uInt16 nMode );
743*cdf0e10cSrcweir     virtual SwFldUpdateFlags getFieldUpdateFlags( /*[in]*/bool bGlobalSettings ) const;
744*cdf0e10cSrcweir     virtual void setFieldUpdateFlags( /*[in]*/ SwFldUpdateFlags eMode );
745*cdf0e10cSrcweir     virtual SwCharCompressType getCharacterCompressionType() const;
746*cdf0e10cSrcweir     virtual void setCharacterCompressionType( /*[in]*/SwCharCompressType nType );
747*cdf0e10cSrcweir 
748*cdf0e10cSrcweir     /** IDocumentDeviceAccess
749*cdf0e10cSrcweir     */
750*cdf0e10cSrcweir     virtual SfxPrinter* getPrinter(/*[in]*/ bool bCreate ) const;
751*cdf0e10cSrcweir     virtual void setPrinter(/*[in]*/ SfxPrinter* pP,/*[in]*/ bool bDeleteOld,/*[in]*/ bool bCallPrtDataChanged );
752*cdf0e10cSrcweir     virtual VirtualDevice* getVirtualDevice(/*[in]*/ bool bCreate ) const;
753*cdf0e10cSrcweir     virtual void setVirtualDevice(/*[in]*/ VirtualDevice* pVd,/*[in]*/ bool bDeleteOld, /*[in]*/ bool bCallVirDevDataChanged );
754*cdf0e10cSrcweir     virtual OutputDevice* getReferenceDevice(/*[in]*/ bool bCreate ) const;
755*cdf0e10cSrcweir     virtual void setReferenceDeviceType(/*[in]*/ bool bNewVirtual,/*[in]*/ bool bNewHiRes );
756*cdf0e10cSrcweir     virtual const JobSetup* getJobsetup() const;
757*cdf0e10cSrcweir     virtual void setJobsetup(/*[in]*/ const JobSetup& rJobSetup );
758*cdf0e10cSrcweir     virtual const SwPrintData & getPrintData() const;
759*cdf0e10cSrcweir     virtual void setPrintData(/*[in]*/ const SwPrintData& rPrtData);
760*cdf0e10cSrcweir 
761*cdf0e10cSrcweir     /** IDocumentMarkAccess
762*cdf0e10cSrcweir     */
763*cdf0e10cSrcweir     IDocumentMarkAccess* getIDocumentMarkAccess();
764*cdf0e10cSrcweir     const IDocumentMarkAccess* getIDocumentMarkAccess() const;
765*cdf0e10cSrcweir 
766*cdf0e10cSrcweir     /** IDocumentRedlineAccess
767*cdf0e10cSrcweir     */
768*cdf0e10cSrcweir     virtual RedlineMode_t GetRedlineMode() const;
769*cdf0e10cSrcweir 	virtual void SetRedlineMode_intern(/*[in]*/RedlineMode_t eMode);
770*cdf0e10cSrcweir 	virtual void SetRedlineMode(/*[in]*/RedlineMode_t eMode);
771*cdf0e10cSrcweir 	virtual bool IsRedlineOn() const;
772*cdf0e10cSrcweir 	virtual bool IsIgnoreRedline() const;
773*cdf0e10cSrcweir     virtual bool IsInRedlines(const SwNode& rNode) const;
774*cdf0e10cSrcweir 	virtual const SwRedlineTbl& GetRedlineTbl() const;
775*cdf0e10cSrcweir 	virtual bool AppendRedline(/*[in]*/SwRedline* pPtr, /*[in]*/bool bCallDelete);
776*cdf0e10cSrcweir 	virtual bool SplitRedline(const SwPaM& rPam);
777*cdf0e10cSrcweir 	virtual bool DeleteRedline(/*[in]*/const SwPaM& rPam, /*[in]*/bool bSaveInUndo, /*[in]*/sal_uInt16 nDelType);
778*cdf0e10cSrcweir 	virtual bool DeleteRedline(/*[in]*/const SwStartNode& rSection, /*[in]*/bool bSaveInUndo, /*[in]*/sal_uInt16 nDelType);
779*cdf0e10cSrcweir     virtual sal_uInt16 GetRedlinePos(/*[in]*/const SwNode& rNode, /*[in]*/sal_uInt16 nType) const;
780*cdf0e10cSrcweir 	virtual void CompressRedlines();
781*cdf0e10cSrcweir     virtual const SwRedline* GetRedline(/*[in]*/const SwPosition& rPos, /*[in]*/sal_uInt16* pFndPos) const;
782*cdf0e10cSrcweir 	virtual bool IsRedlineMove() const;
783*cdf0e10cSrcweir 	virtual void SetRedlineMove(/*[in]*/bool bFlag);
784*cdf0e10cSrcweir 	virtual bool AcceptRedline(/*[in]*/sal_uInt16 nPos, /*[in]*/bool bCallDelete);
785*cdf0e10cSrcweir     virtual bool AcceptRedline(/*[in]*/const SwPaM& rPam, /*[in]*/bool bCallDelete);
786*cdf0e10cSrcweir 	virtual bool RejectRedline(/*[in]*/sal_uInt16 nPos, /*[in]*/bool bCallDelete);
787*cdf0e10cSrcweir     virtual bool RejectRedline(/*[in]*/const SwPaM& rPam, /*[in]*/bool bCallDelete);
788*cdf0e10cSrcweir     virtual const SwRedline* SelNextRedline(/*[in]*/SwPaM& rPam) const;
789*cdf0e10cSrcweir 	virtual const SwRedline* SelPrevRedline(/*[in]*/SwPaM& rPam) const;
790*cdf0e10cSrcweir 	virtual void UpdateRedlineAttr();
791*cdf0e10cSrcweir     virtual sal_uInt16 GetRedlineAuthor();
792*cdf0e10cSrcweir 	virtual sal_uInt16 InsertRedlineAuthor(const String& rAuthor);
793*cdf0e10cSrcweir 	virtual bool SetRedlineComment(/*[in]*/const SwPaM& rPam, /*[in]*/const String& rComment);
794*cdf0e10cSrcweir 	virtual const ::com::sun::star::uno::Sequence <sal_Int8>& GetRedlinePassword() const;
795*cdf0e10cSrcweir 	virtual void SetRedlinePassword(/*[in]*/const ::com::sun::star::uno::Sequence <sal_Int8>& rNewPassword);
796*cdf0e10cSrcweir 
797*cdf0e10cSrcweir     /** IDocumentUndoRedo
798*cdf0e10cSrcweir     */
799*cdf0e10cSrcweir     IDocumentUndoRedo      & GetIDocumentUndoRedo();
800*cdf0e10cSrcweir     IDocumentUndoRedo const& GetIDocumentUndoRedo() const;
801*cdf0e10cSrcweir 
802*cdf0e10cSrcweir     /** IDocumentLinksAdministration
803*cdf0e10cSrcweir     */
804*cdf0e10cSrcweir     virtual bool IsVisibleLinks() const;
805*cdf0e10cSrcweir 	virtual void SetVisibleLinks(bool bFlag);
806*cdf0e10cSrcweir     virtual sfx2::LinkManager& GetLinkManager();
807*cdf0e10cSrcweir 	virtual const sfx2::LinkManager& GetLinkManager() const;
808*cdf0e10cSrcweir     virtual void UpdateLinks(sal_Bool bUI);
809*cdf0e10cSrcweir 	virtual bool GetData(const String& rItem, const String& rMimeType, ::com::sun::star::uno::Any& rValue) const;
810*cdf0e10cSrcweir 	virtual bool SetData(const String& rItem, const String& rMimeType, const ::com::sun::star::uno::Any& rValue);
811*cdf0e10cSrcweir     virtual ::sfx2::SvLinkSource* CreateLinkSource(const String& rItem);
812*cdf0e10cSrcweir 	virtual bool EmbedAllLinks();
813*cdf0e10cSrcweir     virtual void SetLinksUpdated(const bool bNewLinksUpdated);
814*cdf0e10cSrcweir     virtual bool LinksUpdated() const;
815*cdf0e10cSrcweir 
816*cdf0e10cSrcweir     /** IDocumentFieldsAccess
817*cdf0e10cSrcweir     */
818*cdf0e10cSrcweir     virtual const SwFldTypes *GetFldTypes() const;
819*cdf0e10cSrcweir 	virtual SwFieldType *InsertFldType(const SwFieldType &);
820*cdf0e10cSrcweir 	virtual SwFieldType *GetSysFldType( const sal_uInt16 eWhich ) const;
821*cdf0e10cSrcweir 	virtual SwFieldType* GetFldType(sal_uInt16 nResId, const String& rName, bool bDbFieldMatching) const;
822*cdf0e10cSrcweir     virtual void RemoveFldType(sal_uInt16 nFld);
823*cdf0e10cSrcweir     virtual void UpdateFlds( SfxPoolItem* pNewHt, bool bCloseDB);
824*cdf0e10cSrcweir     virtual void InsDeletedFldType(SwFieldType &);
825*cdf0e10cSrcweir     virtual bool PutValueToField(const SwPosition & rPos, const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich);
826*cdf0e10cSrcweir     virtual bool UpdateFld(SwTxtFld * rDstFmtFld, SwField & rSrcFld, SwMsgPoolItem * pMsgHnt, bool bUpdateTblFlds);
827*cdf0e10cSrcweir 	virtual void UpdateRefFlds(SfxPoolItem* pHt);
828*cdf0e10cSrcweir     virtual void UpdateTblFlds(SfxPoolItem* pHt);
829*cdf0e10cSrcweir     virtual void UpdateExpFlds(SwTxtFld* pFld, bool bUpdateRefFlds);
830*cdf0e10cSrcweir     virtual void UpdateUsrFlds();
831*cdf0e10cSrcweir     virtual void UpdatePageFlds(SfxPoolItem*);
832*cdf0e10cSrcweir     virtual void LockExpFlds();
833*cdf0e10cSrcweir     virtual void UnlockExpFlds();
834*cdf0e10cSrcweir     virtual bool IsExpFldsLocked() const;
835*cdf0e10cSrcweir     virtual SwDocUpdtFld& GetUpdtFlds() const;
836*cdf0e10cSrcweir 	virtual bool SetFieldsDirty(bool b, const SwNode* pChk, sal_uLong nLen);
837*cdf0e10cSrcweir 	virtual void SetFixFields(bool bOnlyTimeDate, const DateTime* pNewDateTime);
838*cdf0e10cSrcweir 	virtual void FldsToCalc(SwCalc& rCalc, sal_uLong nLastNd, sal_uInt16 nLastCnt);
839*cdf0e10cSrcweir 	virtual void FldsToCalc(SwCalc& rCalc, const _SetGetExpFld& rToThisFld);
840*cdf0e10cSrcweir 	virtual void FldsToExpand(SwHash**& ppTbl, sal_uInt16& rTblSize, const _SetGetExpFld& rToThisFld);
841*cdf0e10cSrcweir 	virtual bool IsNewFldLst() const;
842*cdf0e10cSrcweir 	virtual void SetNewFldLst( bool bFlag);
843*cdf0e10cSrcweir 	virtual void InsDelFldInFldLst(bool bIns, const SwTxtFld& rFld);
844*cdf0e10cSrcweir 
845*cdf0e10cSrcweir     /** Returns the field at a certain position.
846*cdf0e10cSrcweir        @param rPos position to search at
847*cdf0e10cSrcweir        @return pointer to field at the given position or NULL in case no field is found
848*cdf0e10cSrcweir     */
849*cdf0e10cSrcweir     static SwField* GetField(const SwPosition& rPos);
850*cdf0e10cSrcweir 
851*cdf0e10cSrcweir     /** Returns the field at a certain position.
852*cdf0e10cSrcweir        @param rPos position to search at
853*cdf0e10cSrcweir        @return pointer to field at the given position or NULL in case no field is found
854*cdf0e10cSrcweir     */
855*cdf0e10cSrcweir     static SwTxtFld* GetTxtFld(const SwPosition& rPos);
856*cdf0e10cSrcweir 
857*cdf0e10cSrcweir     /** IDocumentContentOperations
858*cdf0e10cSrcweir     */
859*cdf0e10cSrcweir     virtual bool CopyRange(SwPaM&, SwPosition&, const bool bCopyAll) const;
860*cdf0e10cSrcweir 	virtual void DeleteSection(SwNode* pNode);
861*cdf0e10cSrcweir     virtual bool DeleteRange(SwPaM&);
862*cdf0e10cSrcweir 	virtual bool DelFullPara(SwPaM&);
863*cdf0e10cSrcweir     // --> OD 2009-08-20 #i100466#
864*cdf0e10cSrcweir     // Add optional parameter <bForceJoinNext>, default value <false>
865*cdf0e10cSrcweir     // Needed for hiding of deletion redlines
866*cdf0e10cSrcweir     virtual bool DeleteAndJoin( SwPaM&,
867*cdf0e10cSrcweir                                 const bool bForceJoinNext = false );
868*cdf0e10cSrcweir     // <--
869*cdf0e10cSrcweir     virtual bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags);
870*cdf0e10cSrcweir     virtual bool MoveNodeRange(SwNodeRange&, SwNodeIndex&, SwMoveFlags);
871*cdf0e10cSrcweir 	virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags);
872*cdf0e10cSrcweir 	virtual bool Overwrite(const SwPaM &rRg, const String& rStr);
873*cdf0e10cSrcweir     virtual bool InsertString(const SwPaM &rRg, const String&,
874*cdf0e10cSrcweir               const enum InsertFlags nInsertMode = INS_EMPTYEXPAND );
875*cdf0e10cSrcweir 	virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const String& rGrfName, const String& rFltName, const Graphic* pGraphic,
876*cdf0e10cSrcweir 						const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrmFmt*);
877*cdf0e10cSrcweir 	virtual SwFlyFrmFmt* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj,	const SfxItemSet* pFlyAttrSet,
878*cdf0e10cSrcweir 						const SfxItemSet* pGrfAttrSet, SwFrmFmt*);
879*cdf0e10cSrcweir     virtual SwDrawFrmFmt* Insert(const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet* pFlyAttrSet, SwFrmFmt*);
880*cdf0e10cSrcweir     virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet,
881*cdf0e10cSrcweir 						const SfxItemSet* pGrfAttrSet, SwFrmFmt*);
882*cdf0e10cSrcweir     virtual bool InsertPoolItem(const SwPaM &rRg, const SfxPoolItem&,
883*cdf0e10cSrcweir                                 const SetAttrMode nFlags);
884*cdf0e10cSrcweir     virtual bool InsertItemSet (const SwPaM &rRg, const SfxItemSet&,
885*cdf0e10cSrcweir                                 const SetAttrMode nFlags);
886*cdf0e10cSrcweir 	virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj);
887*cdf0e10cSrcweir     virtual void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&);
888*cdf0e10cSrcweir 	virtual SwFlyFrmFmt* InsertOLE(const SwPaM &rRg, const String& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet,
889*cdf0e10cSrcweir                            const SfxItemSet* pGrfAttrSet, SwFrmFmt*);
890*cdf0e10cSrcweir 	virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart);
891*cdf0e10cSrcweir 	virtual bool AppendTxtNode(SwPosition& rPos);
892*cdf0e10cSrcweir         virtual void SetModified(SwPaM &rPaM);
893*cdf0e10cSrcweir     virtual bool ReplaceRange(SwPaM& rPam, const String& rNewStr,
894*cdf0e10cSrcweir                               const bool bRegExReplace);
895*cdf0e10cSrcweir     virtual void RemoveLeadingWhiteSpace(const SwPosition & rPos );
896*cdf0e10cSrcweir 
897*cdf0e10cSrcweir     /** IDocumentStylePoolAccess
898*cdf0e10cSrcweir     */
899*cdf0e10cSrcweir     virtual SwTxtFmtColl* GetTxtCollFromPool( sal_uInt16 nId, bool bRegardLanguage = true );
900*cdf0e10cSrcweir     virtual SwFmt* GetFmtFromPool( sal_uInt16 nId );
901*cdf0e10cSrcweir     virtual SwFrmFmt* GetFrmFmtFromPool( sal_uInt16 nId );
902*cdf0e10cSrcweir     virtual SwCharFmt* GetCharFmtFromPool( sal_uInt16 nId );
903*cdf0e10cSrcweir     virtual SwPageDesc* GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage = true );
904*cdf0e10cSrcweir     virtual SwNumRule* GetNumRuleFromPool( sal_uInt16 nId );
905*cdf0e10cSrcweir     virtual bool IsPoolTxtCollUsed( sal_uInt16 nId ) const;
906*cdf0e10cSrcweir     virtual bool IsPoolFmtUsed( sal_uInt16 nId ) const;
907*cdf0e10cSrcweir     virtual bool IsPoolPageDescUsed( sal_uInt16 nId ) const;
908*cdf0e10cSrcweir 
909*cdf0e10cSrcweir     /** IDocumentLineNumberAccess
910*cdf0e10cSrcweir     */
911*cdf0e10cSrcweir     virtual const SwLineNumberInfo& GetLineNumberInfo() const;
912*cdf0e10cSrcweir     virtual void SetLineNumberInfo(const SwLineNumberInfo& rInfo);
913*cdf0e10cSrcweir 
914*cdf0e10cSrcweir 	/** IDocumentStatistics
915*cdf0e10cSrcweir 	*/
916*cdf0e10cSrcweir 	virtual void DocInfoChgd();
917*cdf0e10cSrcweir 	virtual const SwDocStat	&GetDocStat() const;
918*cdf0e10cSrcweir 	virtual void SetDocStat(const SwDocStat& rStat);
919*cdf0e10cSrcweir 	virtual void UpdateDocStat(SwDocStat& rStat);
920*cdf0e10cSrcweir 
921*cdf0e10cSrcweir 	/** IDocumentState
922*cdf0e10cSrcweir 	*/
923*cdf0e10cSrcweir 	virtual void SetModified();
924*cdf0e10cSrcweir 	virtual void ResetModified();
925*cdf0e10cSrcweir 	virtual bool IsModified() const;
926*cdf0e10cSrcweir 	virtual bool IsLoaded() const;
927*cdf0e10cSrcweir     virtual bool IsUpdateExpFld() const;
928*cdf0e10cSrcweir 	virtual bool IsNewDoc() const;
929*cdf0e10cSrcweir     virtual bool IsPageNums() const;
930*cdf0e10cSrcweir     virtual void SetPageNums(bool b);
931*cdf0e10cSrcweir 	virtual void SetNewDoc(bool b);
932*cdf0e10cSrcweir 	virtual void SetUpdateExpFldStat(bool b);
933*cdf0e10cSrcweir 	virtual void SetLoaded(bool b);
934*cdf0e10cSrcweir 
935*cdf0e10cSrcweir     /** IDocumentDrawModelAccess
936*cdf0e10cSrcweir     */
937*cdf0e10cSrcweir     virtual const SdrModel* GetDrawModel() const;
938*cdf0e10cSrcweir     virtual SdrModel* GetDrawModel();
939*cdf0e10cSrcweir     virtual SdrLayerID GetHeavenId() const;
940*cdf0e10cSrcweir     virtual SdrLayerID GetHellId() const;
941*cdf0e10cSrcweir     virtual SdrLayerID GetControlsId() const;
942*cdf0e10cSrcweir     virtual SdrLayerID GetInvisibleHeavenId() const;
943*cdf0e10cSrcweir     virtual SdrLayerID GetInvisibleHellId() const;
944*cdf0e10cSrcweir     virtual SdrLayerID GetInvisibleControlsId() const;
945*cdf0e10cSrcweir     virtual void NotifyInvisibleLayers( SdrPageView& _rSdrPageView );
946*cdf0e10cSrcweir     virtual bool IsVisibleLayerId( const SdrLayerID& _nLayerId ) const;
947*cdf0e10cSrcweir     virtual SdrLayerID GetVisibleLayerIdByInvisibleOne( const SdrLayerID& _nInvisibleLayerId );
948*cdf0e10cSrcweir     virtual SdrLayerID GetInvisibleLayerIdByVisibleOne( const SdrLayerID& _nVisibleLayerId );
949*cdf0e10cSrcweir     virtual SdrModel* _MakeDrawModel();
950*cdf0e10cSrcweir     virtual SdrModel* GetOrCreateDrawModel();
951*cdf0e10cSrcweir 
952*cdf0e10cSrcweir     /** IDocumentLayoutAccess
953*cdf0e10cSrcweir     */
954*cdf0e10cSrcweir 	virtual void SetCurrentViewShell( ViewShell* pNew );//swmod 071225
955*cdf0e10cSrcweir     virtual SwLayouter* GetLayouter();
956*cdf0e10cSrcweir     virtual const SwLayouter* GetLayouter() const;
957*cdf0e10cSrcweir     virtual void SetLayouter( SwLayouter* pNew );
958*cdf0e10cSrcweir     virtual SwFrmFmt* MakeLayoutFmt( RndStdIds eRequest, const SfxItemSet* pSet );
959*cdf0e10cSrcweir     virtual void DelLayoutFmt( SwFrmFmt *pFmt );
960*cdf0e10cSrcweir     virtual SwFrmFmt* CopyLayoutFmt( const SwFrmFmt& rSrc, const SwFmtAnchor& rNewAnchor, bool bSetTxtFlyAtt, bool bMakeFrms );
961*cdf0e10cSrcweir 	virtual const ViewShell *GetCurrentViewShell() const;	//swmod 080219
962*cdf0e10cSrcweir 	virtual ViewShell *GetCurrentViewShell();//swmod 080219 It must be able to communicate to a ViewShell.This is going to be removerd later.
963*cdf0e10cSrcweir 	virtual const SwRootFrm *GetCurrentLayout() const;
964*cdf0e10cSrcweir 	virtual SwRootFrm *GetCurrentLayout();//swmod 080219
965*cdf0e10cSrcweir     virtual bool HasLayout() const;
966*cdf0e10cSrcweir 
967*cdf0e10cSrcweir     /** IDocumentTimerAccess
968*cdf0e10cSrcweir     */
969*cdf0e10cSrcweir 	virtual void StartIdling();
970*cdf0e10cSrcweir 	virtual void StopIdling();
971*cdf0e10cSrcweir 	virtual void BlockIdling();
972*cdf0e10cSrcweir 	virtual void UnblockIdling();
973*cdf0e10cSrcweir 
974*cdf0e10cSrcweir     /** IDocumentChartDataProviderAccess
975*cdf0e10cSrcweir     */
976*cdf0e10cSrcweir     virtual SwChartDataProvider * GetChartDataProvider( bool bCreate = false ) const;
977*cdf0e10cSrcweir     virtual void CreateChartInternalDataProviders( const SwTable *pTable );
978*cdf0e10cSrcweir     virtual SwChartLockController_Helper & GetChartControllerHelper();
979*cdf0e10cSrcweir 
980*cdf0e10cSrcweir     /** IDocumentListItems
981*cdf0e10cSrcweir 
982*cdf0e10cSrcweir         OD 2007-10-26 #i83479#
983*cdf0e10cSrcweir     */
984*cdf0e10cSrcweir     virtual void addListItem( const SwNodeNum& rNodeNum );
985*cdf0e10cSrcweir     virtual void removeListItem( const SwNodeNum& rNodeNum );
986*cdf0e10cSrcweir     virtual String getListItemText( const SwNodeNum& rNodeNum,
987*cdf0e10cSrcweir                                     const bool bWithNumber = true,
988*cdf0e10cSrcweir                                     const bool bWithSpacesForLevel = false ) const;
989*cdf0e10cSrcweir     virtual void getListItems( IDocumentListItems::tSortedNodeNumList& orNodeNumList ) const;
990*cdf0e10cSrcweir     virtual void getNumItems( IDocumentListItems::tSortedNodeNumList& orNodeNumList ) const;
991*cdf0e10cSrcweir 
992*cdf0e10cSrcweir     /** IDocumentOutlineNodes
993*cdf0e10cSrcweir 
994*cdf0e10cSrcweir         OD 2007-11-15 #i83479#
995*cdf0e10cSrcweir     */
996*cdf0e10cSrcweir     virtual sal_Int32 getOutlineNodesCount() const;
997*cdf0e10cSrcweir     virtual int getOutlineLevel( const sal_Int32 nIdx ) const;
998*cdf0e10cSrcweir     virtual String getOutlineText( const sal_Int32 nIdx,
999*cdf0e10cSrcweir                                    const bool bWithNumber,
1000*cdf0e10cSrcweir                                    const bool bWithSpacesForLevel ) const;
1001*cdf0e10cSrcweir     virtual SwTxtNode* getOutlineNode( const sal_Int32 nIdx ) const;
1002*cdf0e10cSrcweir     virtual void getOutlineNodes( IDocumentOutlineNodes::tSortedOutlineNodeList& orOutlineNodeList ) const;
1003*cdf0e10cSrcweir 
1004*cdf0e10cSrcweir     /** IDocumentListsAccess
1005*cdf0e10cSrcweir 
1006*cdf0e10cSrcweir         OD 2008-03-26 #refactorlists#
1007*cdf0e10cSrcweir     */
1008*cdf0e10cSrcweir     virtual SwList* createList( String sListId,
1009*cdf0e10cSrcweir                                 const String sDefaultListStyleName );
1010*cdf0e10cSrcweir     virtual void deleteList( const String sListId );
1011*cdf0e10cSrcweir     virtual SwList* getListByName( const String sListId ) const;
1012*cdf0e10cSrcweir     virtual SwList* createListForListStyle( const String sListStyleName );
1013*cdf0e10cSrcweir     virtual SwList* getListForListStyle( const String sListStyleName ) const;
1014*cdf0e10cSrcweir     virtual void deleteListForListStyle( const String sListStyleName );
1015*cdf0e10cSrcweir     // --> OD 2008-07-08 #i91400#
1016*cdf0e10cSrcweir     virtual void trackChangeOfListStyleName( const String sListStyleName,
1017*cdf0e10cSrcweir                                              const String sNewListStyleName );
1018*cdf0e10cSrcweir     // <--
1019*cdf0e10cSrcweir 
1020*cdf0e10cSrcweir     /** IDocumentExternalData */
1021*cdf0e10cSrcweir     virtual void setExternalData(::sw::tExternalDataType eType,
1022*cdf0e10cSrcweir                                  ::sw::tExternalDataPointer pPayload);
1023*cdf0e10cSrcweir     virtual ::sw::tExternalDataPointer getExternalData(::sw::tExternalDataType eType);
1024*cdf0e10cSrcweir 
1025*cdf0e10cSrcweir 
1026*cdf0e10cSrcweir     /** INextInterface here
1027*cdf0e10cSrcweir     */
1028*cdf0e10cSrcweir 
1029*cdf0e10cSrcweir     DECL_STATIC_LINK( SwDoc, BackgroundDone, SvxBrushItem *);
1030*cdf0e10cSrcweir     DECL_LINK(CalcFieldValueHdl, EditFieldInfo*);
1031*cdf0e10cSrcweir 
1032*cdf0e10cSrcweir     /** OLE ???
1033*cdf0e10cSrcweir     */
1034*cdf0e10cSrcweir     bool IsOLEPrtNotifyPending() const  { return mbOLEPrtNotifyPending; }
1035*cdf0e10cSrcweir     inline void SetOLEPrtNotifyPending( bool bSet = true );
1036*cdf0e10cSrcweir 	void PrtOLENotify( sal_Bool bAll );	//Alle oder nur Markierte
1037*cdf0e10cSrcweir 
1038*cdf0e10cSrcweir #ifdef DBG_UTIL
1039*cdf0e10cSrcweir     bool InXMLExport() const            { return mbXMLExport; }
1040*cdf0e10cSrcweir     void SetXMLExport( bool bFlag )     { mbXMLExport = bFlag; }
1041*cdf0e10cSrcweir #endif
1042*cdf0e10cSrcweir 
1043*cdf0e10cSrcweir 	// liefert zu allen fliegenden Rahmen die Position im Dokument.
1044*cdf0e10cSrcweir 	// Wird ein Pam-Pointer uebergeben, muessen die absatzgebundenen
1045*cdf0e10cSrcweir 	// FlyFrames von der ::com::sun::star::awt::Selection vollstaendig umschlossen sein
1046*cdf0e10cSrcweir 	// ( Start < Pos < End ) !!!
1047*cdf0e10cSrcweir 	// (wird fuer die Writer benoetigt)
1048*cdf0e10cSrcweir 	void GetAllFlyFmts( SwPosFlyFrms& rPosFlyFmts, const SwPaM* = 0,
1049*cdf0e10cSrcweir 						sal_Bool bDrawAlso = sal_False ) const;
1050*cdf0e10cSrcweir 
1051*cdf0e10cSrcweir     // wegen swrtf.cxx und define private public, jetzt hier
1052*cdf0e10cSrcweir 	SwFlyFrmFmt  *MakeFlyFrmFmt (const String &rFmtName, SwFrmFmt *pDerivedFrom);
1053*cdf0e10cSrcweir 	SwDrawFrmFmt *MakeDrawFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom);
1054*cdf0e10cSrcweir 
1055*cdf0e10cSrcweir     // JP 08.05.98: fuer Flys muss jetzt diese Schnittstelle benutzt
1056*cdf0e10cSrcweir 	//				werden. pAnchorPos muss gesetzt sein, wenn keine
1057*cdf0e10cSrcweir 	//				Seitenbindung vorliegt UND der ::com::sun::star::chaos::Anchor nicht schon
1058*cdf0e10cSrcweir 	//				im FlySet/FrmFmt mit gueltiger CntntPos gesetzt ist
1059*cdf0e10cSrcweir     /* #109161# new parameter bCalledFromShell
1060*cdf0e10cSrcweir 
1061*cdf0e10cSrcweir        sal_True: An existing adjust item at pAnchorPos is propagated to
1062*cdf0e10cSrcweir        the content node of the new fly section. That propagation only
1063*cdf0e10cSrcweir        takes place if there is no adjust item in the paragraph style
1064*cdf0e10cSrcweir        for the new fly section.
1065*cdf0e10cSrcweir 
1066*cdf0e10cSrcweir        sal_False: no propagation
1067*cdf0e10cSrcweir     */
1068*cdf0e10cSrcweir 	SwFlyFrmFmt* MakeFlySection( RndStdIds eAnchorType,
1069*cdf0e10cSrcweir                                  const SwPosition* pAnchorPos,
1070*cdf0e10cSrcweir                                  const SfxItemSet* pSet = 0,
1071*cdf0e10cSrcweir                                  SwFrmFmt *pParent = 0,
1072*cdf0e10cSrcweir                                  sal_Bool bCalledFromShell = sal_False );
1073*cdf0e10cSrcweir 	SwFlyFrmFmt* MakeFlyAndMove( const SwPaM& rPam, const SfxItemSet& rSet,
1074*cdf0e10cSrcweir 								const SwSelBoxes* pSelBoxes = 0,
1075*cdf0e10cSrcweir 								SwFrmFmt *pParent = 0 );
1076*cdf0e10cSrcweir 
1077*cdf0e10cSrcweir 	void CopyWithFlyInFly( const SwNodeRange& rRg,
1078*cdf0e10cSrcweir                             const xub_StrLen nEndContentIndex,
1079*cdf0e10cSrcweir 							const SwNodeIndex& rInsPos,
1080*cdf0e10cSrcweir 							sal_Bool bMakeNewFrms = sal_True,
1081*cdf0e10cSrcweir 							sal_Bool bDelRedlines = sal_True,
1082*cdf0e10cSrcweir 							sal_Bool bCopyFlyAtFly = sal_False ) const;
1083*cdf0e10cSrcweir 
1084*cdf0e10cSrcweir     sal_Bool SetFlyFrmAttr( SwFrmFmt& rFlyFmt, SfxItemSet& rSet );
1085*cdf0e10cSrcweir 
1086*cdf0e10cSrcweir     sal_Bool SetFrmFmtToFly( SwFrmFmt& rFlyFmt, SwFrmFmt& rNewFmt,
1087*cdf0e10cSrcweir 						SfxItemSet* pSet = 0, sal_Bool bKeepOrient = sal_False );
1088*cdf0e10cSrcweir     // --> OD 2009-07-20 #i73249#
1089*cdf0e10cSrcweir     void SetFlyFrmTitle( SwFlyFrmFmt& rFlyFrmFmt,
1090*cdf0e10cSrcweir                          const String& sNewTitle );
1091*cdf0e10cSrcweir     void SetFlyFrmDescription( SwFlyFrmFmt& rFlyFrmFmt,
1092*cdf0e10cSrcweir                                const String& sNewDescription );
1093*cdf0e10cSrcweir     // <--
1094*cdf0e10cSrcweir 
1095*cdf0e10cSrcweir     /** Footnotes
1096*cdf0e10cSrcweir     */
1097*cdf0e10cSrcweir 	// Fussnoten Informationen
1098*cdf0e10cSrcweir 	const SwFtnInfo& GetFtnInfo() const			{ return *pFtnInfo; }
1099*cdf0e10cSrcweir 	void SetFtnInfo(const SwFtnInfo& rInfo);
1100*cdf0e10cSrcweir 	const SwEndNoteInfo& GetEndNoteInfo() const { return *pEndNoteInfo; }
1101*cdf0e10cSrcweir 	void SetEndNoteInfo(const SwEndNoteInfo& rInfo);
1102*cdf0e10cSrcweir 		  SwFtnIdxs& GetFtnIdxs() 		{ return *pFtnIdxs; }
1103*cdf0e10cSrcweir 	const SwFtnIdxs& GetFtnIdxs() const { return *pFtnIdxs; }
1104*cdf0e10cSrcweir     // change footnotes in area
1105*cdf0e10cSrcweir     bool SetCurFtn( const SwPaM& rPam, const String& rNumStr,
1106*cdf0e10cSrcweir                     sal_uInt16 nNumber, bool bIsEndNote );
1107*cdf0e10cSrcweir 
1108*cdf0e10cSrcweir     /** Operations on the content of the document e.g.
1109*cdf0e10cSrcweir         spell-checking/hyphenating/word-counting
1110*cdf0e10cSrcweir     */
1111*cdf0e10cSrcweir     ::com::sun::star::uno::Any
1112*cdf0e10cSrcweir 			Spell( SwPaM&, ::com::sun::star::uno::Reference<
1113*cdf0e10cSrcweir 							::com::sun::star::linguistic2::XSpellChecker1 > &,
1114*cdf0e10cSrcweir                    sal_uInt16* pPageCnt, sal_uInt16* pPageSt, bool bGrammarCheck,
1115*cdf0e10cSrcweir                    SwConversionArgs *pConvArgs = 0 ) const;
1116*cdf0e10cSrcweir 
1117*cdf0e10cSrcweir 	::com::sun::star::uno::Reference<
1118*cdf0e10cSrcweir 		::com::sun::star::linguistic2::XHyphenatedWord >
1119*cdf0e10cSrcweir 			Hyphenate( SwPaM *pPam, const Point &rCrsrPos,
1120*cdf0e10cSrcweir 			  		   sal_uInt16* pPageCnt, sal_uInt16* pPageSt );
1121*cdf0e10cSrcweir 
1122*cdf0e10cSrcweir     // count words in pam
1123*cdf0e10cSrcweir     void CountWords( const SwPaM& rPaM, SwDocStat& rStat ) const;
1124*cdf0e10cSrcweir 
1125*cdf0e10cSrcweir 
1126*cdf0e10cSrcweir     /** ???
1127*cdf0e10cSrcweir     */
1128*cdf0e10cSrcweir     // Textbaustein Dokument?
1129*cdf0e10cSrcweir     void SetGlossDoc( bool bGlssDc = true ) { mbGlossDoc = bGlssDc; }
1130*cdf0e10cSrcweir     bool IsInsOnlyTextGlossary() const      { return mbInsOnlyTxtGlssry; }
1131*cdf0e10cSrcweir 
1132*cdf0e10cSrcweir 	// Abstakt fuellen
1133*cdf0e10cSrcweir 	void Summary( SwDoc* pExtDoc, sal_uInt8 nLevel, sal_uInt8 nPara, sal_Bool bImpress );
1134*cdf0e10cSrcweir 
1135*cdf0e10cSrcweir     void ChangeAuthorityData(const SwAuthEntry* pNewData);
1136*cdf0e10cSrcweir 
1137*cdf0e10cSrcweir     bool IsInCallModified() const      { return mbInCallModified; }
1138*cdf0e10cSrcweir 	sal_Bool IsInHeaderFooter( const SwNodeIndex& rIdx ) const;
1139*cdf0e10cSrcweir     short GetTextDirection( const SwPosition& rPos,
1140*cdf0e10cSrcweir                             const Point* pPt = 0 ) const;
1141*cdf0e10cSrcweir     sal_Bool IsInVerticalText( const SwPosition& rPos,
1142*cdf0e10cSrcweir 							   const Point* pPt = 0 ) const;
1143*cdf0e10cSrcweir     /** Database ???
1144*cdf0e10cSrcweir     */
1145*cdf0e10cSrcweir 
1146*cdf0e10cSrcweir 	/*	Datenbank &&  DB-Manager */
1147*cdf0e10cSrcweir 	void SetNewDBMgr( SwNewDBMgr* pNewMgr )		{ pNewDBMgr = pNewMgr; }
1148*cdf0e10cSrcweir 	SwNewDBMgr* GetNewDBMgr() const 			{ return pNewDBMgr; }
1149*cdf0e10cSrcweir 	void ChangeDBFields( const SvStringsDtor& rOldNames,
1150*cdf0e10cSrcweir 						const String& rNewName );
1151*cdf0e10cSrcweir 	void SetInitDBFields(sal_Bool b);
1152*cdf0e10cSrcweir 	// Von Feldern verwendete Datenbanken herausfinden
1153*cdf0e10cSrcweir 	void GetAllUsedDB( SvStringsDtor& rDBNameList,
1154*cdf0e10cSrcweir 					   const SvStringsDtor* pAllDBNames = 0 );
1155*cdf0e10cSrcweir 
1156*cdf0e10cSrcweir 	void ChgDBData( const SwDBData& rNewData );
1157*cdf0e10cSrcweir 	SwDBData GetDBData();
1158*cdf0e10cSrcweir 	const SwDBData& GetDBDesc();
1159*cdf0e10cSrcweir 	const SwDBData& _GetDBDesc() const { return aDBData; }
1160*cdf0e10cSrcweir 
1161*cdf0e10cSrcweir     /** Some helper functions
1162*cdf0e10cSrcweir     */
1163*cdf0e10cSrcweir     String GetUniqueGrfName() const;
1164*cdf0e10cSrcweir     String GetUniqueOLEName() const;
1165*cdf0e10cSrcweir 	String GetUniqueFrameName() const;
1166*cdf0e10cSrcweir 
1167*cdf0e10cSrcweir 	std::set<SwRootFrm*> GetAllLayouts();//swmod 080225
1168*cdf0e10cSrcweir 
1169*cdf0e10cSrcweir 	void SetFlyName( SwFlyFrmFmt& rFmt, const String& rName );
1170*cdf0e10cSrcweir 	const SwFlyFrmFmt* FindFlyByName( const String& rName, sal_Int8 nNdTyp = 0 ) const;
1171*cdf0e10cSrcweir 
1172*cdf0e10cSrcweir 	void GetGrfNms( const SwFlyFrmFmt& rFmt, String* pGrfName,
1173*cdf0e10cSrcweir 					String* pFltName ) const;
1174*cdf0e10cSrcweir 
1175*cdf0e10cSrcweir 	// setze bei allen Flys ohne Namen einen gueltigen (Wird von den Readern
1176*cdf0e10cSrcweir 	// nach dem Einlesen gerufen )
1177*cdf0e10cSrcweir 	void SetAllUniqueFlyNames();
1178*cdf0e10cSrcweir 
1179*cdf0e10cSrcweir 		//Zuruecksetzen der Attribute; es werden alle TxtHints und bei
1180*cdf0e10cSrcweir 		//vollstaendiger Selektion harte Formatierung (AUTO-Formate) entfernt
1181*cdf0e10cSrcweir     // --> OD 2008-11-28 #i96644#
1182*cdf0e10cSrcweir     // introduce new optional parameter <bSendDataChangedEvents> in order to
1183*cdf0e10cSrcweir     // control, if the side effect "send data changed events" is triggered or not.
1184*cdf0e10cSrcweir     void ResetAttrs( const SwPaM &rRg,
1185*cdf0e10cSrcweir                      sal_Bool bTxtAttr = sal_True,
1186*cdf0e10cSrcweir                      const SvUShortsSort* = 0,
1187*cdf0e10cSrcweir                      const bool bSendDataChangedEvents = true );
1188*cdf0e10cSrcweir     // <--
1189*cdf0e10cSrcweir     void RstTxtAttrs(const SwPaM &rRg, sal_Bool bInclRefToxMark = sal_False );
1190*cdf0e10cSrcweir 
1191*cdf0e10cSrcweir 		// Setze das Attribut im angegebenen Format. Ist Undo aktiv, wird
1192*cdf0e10cSrcweir 		// das alte in die Undo-History aufgenommen
1193*cdf0e10cSrcweir 	void SetAttr( const SfxPoolItem&, SwFmt& );
1194*cdf0e10cSrcweir 	void SetAttr( const SfxItemSet&, SwFmt& );
1195*cdf0e10cSrcweir 
1196*cdf0e10cSrcweir     // --> OD 2008-02-12 #newlistlevelattrs#
1197*cdf0e10cSrcweir     // method to reset a certain attribute at the given format
1198*cdf0e10cSrcweir     void ResetAttrAtFormat( const sal_uInt16 nWhichId,
1199*cdf0e10cSrcweir                             SwFmt& rChangedFormat );
1200*cdf0e10cSrcweir     // <--
1201*cdf0e10cSrcweir 
1202*cdf0e10cSrcweir 		// Setze das Attribut als neues default Attribut in diesem Dokument.
1203*cdf0e10cSrcweir 		// Ist Undo aktiv, wird das alte in die Undo-History aufgenommen
1204*cdf0e10cSrcweir 	void SetDefault( const SfxPoolItem& );
1205*cdf0e10cSrcweir 	void SetDefault( const SfxItemSet& );
1206*cdf0e10cSrcweir 
1207*cdf0e10cSrcweir 	// Erfrage das Default Attribut in diesem Dokument.
1208*cdf0e10cSrcweir 	const SfxPoolItem& GetDefault( sal_uInt16 nFmtHint ) const;
1209*cdf0e10cSrcweir 	// TextAttribute nicht mehr aufspannen lassen
1210*cdf0e10cSrcweir 	sal_Bool DontExpandFmt( const SwPosition& rPos, sal_Bool bFlag = sal_True );
1211*cdf0e10cSrcweir 
1212*cdf0e10cSrcweir 	/* Formate */
1213*cdf0e10cSrcweir 	const SwFrmFmts* GetFrmFmts() const 	{ return pFrmFmtTbl; }
1214*cdf0e10cSrcweir 		  SwFrmFmts* GetFrmFmts()			{ return pFrmFmtTbl; }
1215*cdf0e10cSrcweir 	const SwCharFmts* GetCharFmts() const	{ return pCharFmtTbl;}
1216*cdf0e10cSrcweir 
1217*cdf0e10cSrcweir 	/* LayoutFormate (Rahmen, DrawObjecte), mal const mal nicht */
1218*cdf0e10cSrcweir 	const SwSpzFrmFmts* GetSpzFrmFmts() const	{ return pSpzFrmFmtTbl; }
1219*cdf0e10cSrcweir 		  SwSpzFrmFmts* GetSpzFrmFmts() 		{ return pSpzFrmFmtTbl; }
1220*cdf0e10cSrcweir 
1221*cdf0e10cSrcweir 	const SwFrmFmt *GetDfltFrmFmt() const	{ return pDfltFrmFmt; }
1222*cdf0e10cSrcweir 		  SwFrmFmt *GetDfltFrmFmt() 		{ return pDfltFrmFmt; }
1223*cdf0e10cSrcweir 	const SwFrmFmt *GetEmptyPageFmt() const { return pEmptyPageFmt; }
1224*cdf0e10cSrcweir 		  SwFrmFmt *GetEmptyPageFmt()		{ return pEmptyPageFmt; }
1225*cdf0e10cSrcweir 	const SwFrmFmt *GetColumnContFmt() const{ return pColumnContFmt; }
1226*cdf0e10cSrcweir 		  SwFrmFmt *GetColumnContFmt()		{ return pColumnContFmt; }
1227*cdf0e10cSrcweir 	const SwCharFmt *GetDfltCharFmt() const { return pDfltCharFmt;}
1228*cdf0e10cSrcweir 		  SwCharFmt *GetDfltCharFmt()		{ return pDfltCharFmt;}
1229*cdf0e10cSrcweir 
1230*cdf0e10cSrcweir     // Returns the interface of the management of (auto)styles
1231*cdf0e10cSrcweir     IStyleAccess& GetIStyleAccess() { return *pStyleAccess; }
1232*cdf0e10cSrcweir 
1233*cdf0e10cSrcweir 	// Remove all language dependencies from all existing formats
1234*cdf0e10cSrcweir 	void RemoveAllFmtLanguageDependencies();
1235*cdf0e10cSrcweir 
1236*cdf0e10cSrcweir 	SwFrmFmt  *MakeFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom,
1237*cdf0e10cSrcweir                           sal_Bool bBroadcast = sal_False, sal_Bool bAuto = sal_True);
1238*cdf0e10cSrcweir 	void	   DelFrmFmt( SwFrmFmt *pFmt, sal_Bool bBroadcast = sal_False );
1239*cdf0e10cSrcweir 	SwFrmFmt* FindFrmFmtByName( const String& rName ) const
1240*cdf0e10cSrcweir 		{	return (SwFrmFmt*)FindFmtByName( (SvPtrarr&)*pFrmFmtTbl, rName ); }
1241*cdf0e10cSrcweir 
1242*cdf0e10cSrcweir     // --> OD 2005-01-13 #i40550#
1243*cdf0e10cSrcweir     SwCharFmt *MakeCharFmt(const String &rFmtName, SwCharFmt *pDerivedFrom,
1244*cdf0e10cSrcweir                            sal_Bool bBroadcast = sal_False,
1245*cdf0e10cSrcweir                            sal_Bool bAuto = sal_True );
1246*cdf0e10cSrcweir     // <--
1247*cdf0e10cSrcweir 	void	   DelCharFmt(sal_uInt16 nFmt, sal_Bool bBroadcast = sal_False);
1248*cdf0e10cSrcweir 	void	   DelCharFmt(SwCharFmt* pFmt, sal_Bool bBroadcast = sal_False);
1249*cdf0e10cSrcweir 	SwCharFmt* FindCharFmtByName( const String& rName ) const
1250*cdf0e10cSrcweir 		{	return (SwCharFmt*)FindFmtByName( (SvPtrarr&)*pCharFmtTbl, rName ); }
1251*cdf0e10cSrcweir 
1252*cdf0e10cSrcweir 	/* Formatcollections (Vorlagen) */
1253*cdf0e10cSrcweir 	// TXT
1254*cdf0e10cSrcweir 	const SwTxtFmtColl* GetDfltTxtFmtColl() const { return pDfltTxtFmtColl; }
1255*cdf0e10cSrcweir 	const SwTxtFmtColls *GetTxtFmtColls() const { return pTxtFmtCollTbl; }
1256*cdf0e10cSrcweir     // --> OD 2005-01-13 #i40550#
1257*cdf0e10cSrcweir     SwTxtFmtColl *MakeTxtFmtColl( const String &rFmtName,
1258*cdf0e10cSrcweir 								  SwTxtFmtColl *pDerivedFrom,
1259*cdf0e10cSrcweir                                   sal_Bool bBroadcast = sal_False,
1260*cdf0e10cSrcweir                                   sal_Bool bAuto = sal_True );
1261*cdf0e10cSrcweir     // <--
1262*cdf0e10cSrcweir 	SwConditionTxtFmtColl* MakeCondTxtFmtColl( const String &rFmtName,
1263*cdf0e10cSrcweir 											   SwTxtFmtColl *pDerivedFrom,
1264*cdf0e10cSrcweir                                                sal_Bool bBroadcast = sal_False);
1265*cdf0e10cSrcweir 	void DelTxtFmtColl(sal_uInt16 nFmt, sal_Bool bBroadcast = sal_False);
1266*cdf0e10cSrcweir 	void DelTxtFmtColl( SwTxtFmtColl* pColl, sal_Bool bBroadcast = sal_False );
1267*cdf0e10cSrcweir     // --> OD 2007-11-06 #i62675#
1268*cdf0e10cSrcweir     // Add 4th optional parameter <bResetListAttrs>.
1269*cdf0e10cSrcweir     // 'side effect' of <SetTxtFmtColl> with <bReset = true> is that the hard
1270*cdf0e10cSrcweir     // attributes of the affected text nodes are cleared, except the break
1271*cdf0e10cSrcweir     // attribute, the page description attribute and the list style attribute.
1272*cdf0e10cSrcweir     // The new parameter <bResetListAttrs> indicates, if the list attributes
1273*cdf0e10cSrcweir     // (list style, restart at and restart with) are cleared as well in case
1274*cdf0e10cSrcweir     // that <bReset = true> and the paragraph style has a list style attribute set.
1275*cdf0e10cSrcweir     sal_Bool SetTxtFmtColl( const SwPaM &rRg, SwTxtFmtColl *pFmt,
1276*cdf0e10cSrcweir                             bool bReset = true,
1277*cdf0e10cSrcweir                             bool bResetListAttrs = false );
1278*cdf0e10cSrcweir     // <--
1279*cdf0e10cSrcweir 	SwTxtFmtColl* FindTxtFmtCollByName( const String& rName ) const
1280*cdf0e10cSrcweir 		{	return (SwTxtFmtColl*)FindFmtByName( (SvPtrarr&)*pTxtFmtCollTbl, rName ); }
1281*cdf0e10cSrcweir 
1282*cdf0e10cSrcweir     void ChkCondColls();
1283*cdf0e10cSrcweir 
1284*cdf0e10cSrcweir 		// GRF
1285*cdf0e10cSrcweir 	const SwGrfFmtColl* GetDfltGrfFmtColl() const	{ return pDfltGrfFmtColl; }
1286*cdf0e10cSrcweir 	const SwGrfFmtColls *GetGrfFmtColls() const		{ return pGrfFmtCollTbl; }
1287*cdf0e10cSrcweir 	SwGrfFmtColl *MakeGrfFmtColl(const String &rFmtName,
1288*cdf0e10cSrcweir 									SwGrfFmtColl *pDerivedFrom);
1289*cdf0e10cSrcweir 	SwGrfFmtColl* FindGrfFmtCollByName( const String& rName ) const
1290*cdf0e10cSrcweir 		{	return (SwGrfFmtColl*)FindFmtByName( (SvPtrarr&)*pGrfFmtCollTbl, rName ); }
1291*cdf0e10cSrcweir 
1292*cdf0e10cSrcweir 		// Tabellen-Formate
1293*cdf0e10cSrcweir 	const SwFrmFmts* GetTblFrmFmts() const	{ return pTblFrmFmtTbl; }
1294*cdf0e10cSrcweir 		  SwFrmFmts* GetTblFrmFmts()		{ return pTblFrmFmtTbl; }
1295*cdf0e10cSrcweir 	sal_uInt16 GetTblFrmFmtCount( sal_Bool bUsed ) const;
1296*cdf0e10cSrcweir 	SwFrmFmt& GetTblFrmFmt(sal_uInt16 nFmt, sal_Bool bUsed ) const;
1297*cdf0e10cSrcweir 	SwTableFmt* MakeTblFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom);
1298*cdf0e10cSrcweir 	void	    DelTblFrmFmt( SwTableFmt* pFmt );
1299*cdf0e10cSrcweir 	SwTableFmt* FindTblFmtByName( const String& rName, sal_Bool bAll = sal_False ) const;
1300*cdf0e10cSrcweir 
1301*cdf0e10cSrcweir 	//Rahmenzugriff
1302*cdf0e10cSrcweir 	//iterieren ueber Flys - fuer Basic-Collections
1303*cdf0e10cSrcweir 	sal_uInt16 GetFlyCount( FlyCntType eType = FLYCNTTYPE_ALL) const;
1304*cdf0e10cSrcweir 	SwFrmFmt* GetFlyNum(sal_uInt16 nIdx, FlyCntType eType = FLYCNTTYPE_ALL);
1305*cdf0e10cSrcweir 
1306*cdf0e10cSrcweir 
1307*cdf0e10cSrcweir 	// kopiere die Formate in die eigenen Arrays und returne diese
1308*cdf0e10cSrcweir 	SwFrmFmt  *CopyFrmFmt ( const SwFrmFmt& );
1309*cdf0e10cSrcweir 	SwCharFmt *CopyCharFmt( const SwCharFmt& );
1310*cdf0e10cSrcweir 	SwTxtFmtColl* CopyTxtColl( const SwTxtFmtColl& rColl );
1311*cdf0e10cSrcweir 	SwGrfFmtColl* CopyGrfColl( const SwGrfFmtColl& rColl );
1312*cdf0e10cSrcweir 
1313*cdf0e10cSrcweir 		// ersetze alle Formate mit denen aus rSource
1314*cdf0e10cSrcweir 	void ReplaceStyles( SwDoc& rSource );
1315*cdf0e10cSrcweir 
1316*cdf0e10cSrcweir 	// erfrage ob die Absatz-/Zeichen-/Rahmen-/Seiten - Vorlage benutzt wird
1317*cdf0e10cSrcweir 	sal_Bool IsUsed( const SwModify& ) const;
1318*cdf0e10cSrcweir 	sal_Bool IsUsed( const SwNumRule& ) const;
1319*cdf0e10cSrcweir 
1320*cdf0e10cSrcweir 		// setze den Namen der neu geladenen Dokument-Vorlage
1321*cdf0e10cSrcweir 	sal_uInt16 SetDocPattern( const String& rPatternName );
1322*cdf0e10cSrcweir         // gebe den Dok-VorlagenNamen zurueck. !!! Kann auch 0 sein !!!
1323*cdf0e10cSrcweir 	String* GetDocPattern( sal_uInt16 nPos ) const { return aPatternNms[nPos]; }
1324*cdf0e10cSrcweir 
1325*cdf0e10cSrcweir 		// Loesche alle nicht referenzierten FeldTypen
1326*cdf0e10cSrcweir 	void GCFieldTypes();				// impl. in docfld.cxx
1327*cdf0e10cSrcweir 
1328*cdf0e10cSrcweir 		// akt. Dokument mit Textbausteindokument verbinden/erfragen
1329*cdf0e10cSrcweir 	void SetGlossaryDoc( SwDoc* pDoc ) { pGlossaryDoc = pDoc; }
1330*cdf0e10cSrcweir 
1331*cdf0e10cSrcweir 	// travel over PaM Ring
1332*cdf0e10cSrcweir 	sal_Bool InsertGlossary( SwTextBlocks& rBlock, const String& rEntry,
1333*cdf0e10cSrcweir 						SwPaM& rPaM, SwCrsrShell* pShell = 0);
1334*cdf0e10cSrcweir 
1335*cdf0e10cSrcweir     // get the set of printable pages for the XRenderable API by
1336*cdf0e10cSrcweir     // evaluating the respective settings (see implementation)
1337*cdf0e10cSrcweir     void CalculatePagesForPrinting( const SwRootFrm& rLayout, SwRenderData &rData, const SwPrintUIOptions &rOptions, bool bIsPDFExport,
1338*cdf0e10cSrcweir             sal_Int32 nDocPageCount );
1339*cdf0e10cSrcweir     void UpdatePagesForPrintingWithPostItData( SwRenderData &rData, const SwPrintUIOptions &rOptions, bool bIsPDFExport,
1340*cdf0e10cSrcweir             sal_Int32 nDocPageCount );
1341*cdf0e10cSrcweir     void CalculatePagePairsForProspectPrinting( const SwRootFrm& rLayout, SwRenderData &rData, const SwPrintUIOptions &rOptions,
1342*cdf0e10cSrcweir             sal_Int32 nDocPageCount );
1343*cdf0e10cSrcweir 
1344*cdf0e10cSrcweir 		//PageDescriptor-Schnittstelle
1345*cdf0e10cSrcweir 	sal_uInt16 GetPageDescCnt() const { return aPageDescs.Count(); }
1346*cdf0e10cSrcweir 	const SwPageDesc& GetPageDesc( const sal_uInt16 i ) const { return *aPageDescs[i]; }
1347*cdf0e10cSrcweir 	SwPageDesc* FindPageDescByName( const String& rName,
1348*cdf0e10cSrcweir 									sal_uInt16* pPos = 0 ) const;
1349*cdf0e10cSrcweir 
1350*cdf0e10cSrcweir 		// kopiere den gesamten PageDesc - ueber Dokumentgrenzen und "tief"!
1351*cdf0e10cSrcweir 		// optional kann das kopieren der PoolFmtId, -HlpId verhindert werden
1352*cdf0e10cSrcweir 	void CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc,
1353*cdf0e10cSrcweir 						sal_Bool bCopyPoolIds = sal_True );
1354*cdf0e10cSrcweir 
1355*cdf0e10cSrcweir 		// kopiere die Kopzeile (mit dem Inhalt!) aus dem SrcFmt
1356*cdf0e10cSrcweir 		// ins DestFmt ( auch ueber Doc grenzen hinaus!)
1357*cdf0e10cSrcweir 	void CopyHeader( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt )
1358*cdf0e10cSrcweir         { CopyPageDescHeaderFooterImpl( true, rSrcFmt, rDestFmt ); }
1359*cdf0e10cSrcweir 		// kopiere die Fusszeile (mit dem Inhalt!) aus dem SrcFmt
1360*cdf0e10cSrcweir 		// ins DestFmt ( auch ueber Doc grenzen hinaus!)
1361*cdf0e10cSrcweir 	void CopyFooter( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt )
1362*cdf0e10cSrcweir         { CopyPageDescHeaderFooterImpl( false, rSrcFmt, rDestFmt ); }
1363*cdf0e10cSrcweir 
1364*cdf0e10cSrcweir 		//fuer Reader
1365*cdf0e10cSrcweir 
1366*cdf0e10cSrcweir     SwPageDesc * GetPageDesc( const String & rName );
1367*cdf0e10cSrcweir 	SwPageDesc& _GetPageDesc( sal_uInt16 i ) const { return *aPageDescs[i]; }
1368*cdf0e10cSrcweir 	void ChgPageDesc( const String & rName, const SwPageDesc& );
1369*cdf0e10cSrcweir 	void ChgPageDesc( sal_uInt16 i, const SwPageDesc& );
1370*cdf0e10cSrcweir     sal_Bool FindPageDesc( const String & rName, sal_uInt16 * pFound );
1371*cdf0e10cSrcweir     // -> #116530#
1372*cdf0e10cSrcweir     void DelPageDesc( const String & rName, sal_Bool bBroadcast = sal_False);
1373*cdf0e10cSrcweir 	void DelPageDesc( sal_uInt16 i, sal_Bool bBroadcast = sal_False );
1374*cdf0e10cSrcweir     // <- #116530#
1375*cdf0e10cSrcweir     void PreDelPageDesc(SwPageDesc * pDel); // #i7983#
1376*cdf0e10cSrcweir     // -> #116530#
1377*cdf0e10cSrcweir 	sal_uInt16 MakePageDesc( const String &rName, const SwPageDesc* pCpy = 0,
1378*cdf0e10cSrcweir                              sal_Bool bRegardLanguage = sal_True,
1379*cdf0e10cSrcweir                              sal_Bool bBroadcast = sal_False);
1380*cdf0e10cSrcweir     void BroadcastStyleOperation(String rName, SfxStyleFamily eFamily,
1381*cdf0e10cSrcweir                                  sal_uInt16 nOp);
1382*cdf0e10cSrcweir     // <- #116530#
1383*cdf0e10cSrcweir 
1384*cdf0e10cSrcweir 
1385*cdf0e10cSrcweir     // --> FME 2005-03-16 #i44963# The html import sometimes overwrites the
1386*cdf0e10cSrcweir     // page sizes set in the page descriptions. This function is used to
1387*cdf0e10cSrcweir     // correct this.
1388*cdf0e10cSrcweir     void CheckDefaultPageFmt();
1389*cdf0e10cSrcweir     // <--
1390*cdf0e10cSrcweir 
1391*cdf0e10cSrcweir 		// Methoden fuer die Verzeichnisse:
1392*cdf0e10cSrcweir 		// - Verzeichnismarke einfuegen loeschen travel
1393*cdf0e10cSrcweir 	sal_uInt16 GetCurTOXMark( const SwPosition& rPos, SwTOXMarks& ) const;
1394*cdf0e10cSrcweir     void DeleteTOXMark( const SwTOXMark* pTOXMark );
1395*cdf0e10cSrcweir 	const SwTOXMark& GotoTOXMark( const SwTOXMark& rCurTOXMark,
1396*cdf0e10cSrcweir 								SwTOXSearch eDir, sal_Bool bInReadOnly );
1397*cdf0e10cSrcweir 
1398*cdf0e10cSrcweir 		// - Verzeichnis einfuegen, und bei Bedarf erneuern
1399*cdf0e10cSrcweir 	const SwTOXBaseSection* InsertTableOf( const SwPosition& rPos,
1400*cdf0e10cSrcweir 											const SwTOXBase& rTOX,
1401*cdf0e10cSrcweir 											const SfxItemSet* pSet = 0,
1402*cdf0e10cSrcweir 											sal_Bool bExpand = sal_False );
1403*cdf0e10cSrcweir 	const SwTOXBaseSection* InsertTableOf( sal_uLong nSttNd, sal_uLong nEndNd,
1404*cdf0e10cSrcweir 											const SwTOXBase& rTOX,
1405*cdf0e10cSrcweir 											const SfxItemSet* pSet = 0											);
1406*cdf0e10cSrcweir 	const SwTOXBase* GetCurTOX( const SwPosition& rPos ) const;
1407*cdf0e10cSrcweir 	const SwAttrSet& GetTOXBaseAttrSet(const SwTOXBase& rTOX) const;
1408*cdf0e10cSrcweir 
1409*cdf0e10cSrcweir 	sal_Bool DeleteTOX( const SwTOXBase& rTOXBase, sal_Bool bDelNodes = sal_False );
1410*cdf0e10cSrcweir 	String GetUniqueTOXBaseName( const SwTOXType& rType,
1411*cdf0e10cSrcweir 								const String* pChkStr = 0 ) const;
1412*cdf0e10cSrcweir 
1413*cdf0e10cSrcweir 	sal_Bool SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName);
1414*cdf0e10cSrcweir 	void SetTOXBaseProtection(const SwTOXBase& rTOXBase, sal_Bool bProtect);
1415*cdf0e10cSrcweir 
1416*cdf0e10cSrcweir 	// nach einlesen einer Datei alle Verzeichnisse updaten
1417*cdf0e10cSrcweir     void SetUpdateTOX( bool bFlag = true )     { mbUpdateTOX = bFlag; }
1418*cdf0e10cSrcweir     bool IsUpdateTOX() const                   { return mbUpdateTOX; }
1419*cdf0e10cSrcweir 
1420*cdf0e10cSrcweir 	const String&	GetTOIAutoMarkURL() const {return sTOIAutoMarkURL;}
1421*cdf0e10cSrcweir 	void			SetTOIAutoMarkURL(const String& rSet)  {sTOIAutoMarkURL = rSet;}
1422*cdf0e10cSrcweir 	void 			ApplyAutoMark();
1423*cdf0e10cSrcweir 
1424*cdf0e10cSrcweir     bool IsInReading() const                    { return mbInReading; }
1425*cdf0e10cSrcweir     void SetInReading( bool bNew )              { mbInReading = bNew; }
1426*cdf0e10cSrcweir 
1427*cdf0e10cSrcweir     bool IsClipBoard() const                    { return mbClipBoard; }
1428*cdf0e10cSrcweir     // N.B.: must be called right after constructor! (@see GetXmlIdRegistry)
1429*cdf0e10cSrcweir     void SetClipBoard( bool bNew )              { mbClipBoard = bNew; }
1430*cdf0e10cSrcweir 
1431*cdf0e10cSrcweir     bool IsColumnSelection() const              { return mbColumnSelection; }
1432*cdf0e10cSrcweir     void SetColumnSelection( bool bNew )        { mbColumnSelection = bNew; }
1433*cdf0e10cSrcweir 
1434*cdf0e10cSrcweir     bool IsInXMLImport() const { return mbInXMLImport; }
1435*cdf0e10cSrcweir     void SetInXMLImport( bool bNew ) { mbInXMLImport = bNew; }
1436*cdf0e10cSrcweir 
1437*cdf0e10cSrcweir 	// - Verzeichnis-Typen verwalten
1438*cdf0e10cSrcweir 	sal_uInt16 GetTOXTypeCount( TOXTypes eTyp ) const;
1439*cdf0e10cSrcweir 	const SwTOXType* GetTOXType( TOXTypes eTyp, sal_uInt16 nId ) const;
1440*cdf0e10cSrcweir 	sal_Bool DeleteTOXType( TOXTypes eTyp, sal_uInt16 nId );
1441*cdf0e10cSrcweir 	const SwTOXType* InsertTOXType( const SwTOXType& rTyp );
1442*cdf0e10cSrcweir 	const SwTOXTypes& GetTOXTypes() const { return *pTOXTypes; }
1443*cdf0e10cSrcweir 
1444*cdf0e10cSrcweir 	const SwTOXBase* 	GetDefaultTOXBase( TOXTypes eTyp, sal_Bool bCreate = sal_False );
1445*cdf0e10cSrcweir 	void				SetDefaultTOXBase(const SwTOXBase& rBase);
1446*cdf0e10cSrcweir 
1447*cdf0e10cSrcweir 	// - Schluessel fuer die Indexverwaltung
1448*cdf0e10cSrcweir 	sal_uInt16 GetTOIKeys( SwTOIKeyType eTyp, SvStringsSort& rArr ) const;
1449*cdf0e10cSrcweir 
1450*cdf0e10cSrcweir 	// Sortieren Tabellen Text
1451*cdf0e10cSrcweir 	sal_Bool SortTbl(const SwSelBoxes& rBoxes, const SwSortOptions&);
1452*cdf0e10cSrcweir 	sal_Bool SortText(const SwPaM&, const SwSortOptions&);
1453*cdf0e10cSrcweir 
1454*cdf0e10cSrcweir 		// korrigiere die im Dokument angemeldeten SwPosition-Objecte,
1455*cdf0e10cSrcweir 		// wie z.B. die ::com::sun::star::text::Bookmarks oder die Verzeichnisse.
1456*cdf0e10cSrcweir 		// JP 22.06.95: ist bMoveCrsr gesetzt, verschiebe auch die Crsr
1457*cdf0e10cSrcweir 
1458*cdf0e10cSrcweir 		// Setzt alles in rOldNode auf rNewPos + Offset
1459*cdf0e10cSrcweir 	void CorrAbs( const SwNodeIndex& rOldNode, const SwPosition& rNewPos,
1460*cdf0e10cSrcweir 					const xub_StrLen nOffset = 0, sal_Bool bMoveCrsr = sal_False );
1461*cdf0e10cSrcweir 		// Setzt alles im Bereich von [rStartNode, rEndNode] nach rNewPos
1462*cdf0e10cSrcweir 	void CorrAbs( const SwNodeIndex& rStartNode, const SwNodeIndex& rEndNode,
1463*cdf0e10cSrcweir 					const SwPosition& rNewPos, sal_Bool bMoveCrsr = sal_False );
1464*cdf0e10cSrcweir 		// Setzt alles im Bereich von rRange nach rNewPos
1465*cdf0e10cSrcweir 	void CorrAbs( const SwPaM& rRange, const SwPosition& rNewPos,
1466*cdf0e10cSrcweir 					sal_Bool bMoveCrsr = sal_False );
1467*cdf0e10cSrcweir 		// Setzt alles in rOldNode auf relative Pos
1468*cdf0e10cSrcweir 	void CorrRel( const SwNodeIndex& rOldNode, const SwPosition& rNewPos,
1469*cdf0e10cSrcweir 					const xub_StrLen nOffset = 0, sal_Bool bMoveCrsr = sal_False );
1470*cdf0e10cSrcweir 
1471*cdf0e10cSrcweir 		// GliederungsRegeln erfragen / setzen
1472*cdf0e10cSrcweir     // --> OD 2005-11-02 #i51089 - TUNING#
1473*cdf0e10cSrcweir     inline SwNumRule* GetOutlineNumRule() const
1474*cdf0e10cSrcweir     {
1475*cdf0e10cSrcweir         return pOutlineRule;
1476*cdf0e10cSrcweir     }
1477*cdf0e10cSrcweir     // <--
1478*cdf0e10cSrcweir 	void SetOutlineNumRule( const SwNumRule& rRule );
1479*cdf0e10cSrcweir     void PropagateOutlineRule();
1480*cdf0e10cSrcweir 
1481*cdf0e10cSrcweir 	// Gliederung - hoch-/runterstufen
1482*cdf0e10cSrcweir 	sal_Bool OutlineUpDown( const SwPaM& rPam, short nOffset = 1 );
1483*cdf0e10cSrcweir 	// Gliederung - hoch-/runtermoven
1484*cdf0e10cSrcweir 	sal_Bool MoveOutlinePara( const SwPaM& rPam, short nOffset = 1);
1485*cdf0e10cSrcweir 		// zu diesem Gliederungspunkt
1486*cdf0e10cSrcweir 	sal_Bool GotoOutline( SwPosition& rPos, const String& rName ) const;
1487*cdf0e10cSrcweir 	// die Aenderungen an den Gliederungsvorlagen in die OutlineRule uebernehmen
1488*cdf0e10cSrcweir 
1489*cdf0e10cSrcweir 		// setzt, wenn noch keine Numerierung, sonst wird geaendert
1490*cdf0e10cSrcweir 		// arbeitet mit alten und neuen Regeln, nur Differenzen aktualisieren
1491*cdf0e10cSrcweir     // --> OD 2005-02-18 #i42921# - re-use unused 3rd parameter
1492*cdf0e10cSrcweir     // --> OD 2008-02-08 #newlistlevelattrs#
1493*cdf0e10cSrcweir     // Add optional parameter <bResetIndentAttrs> - default value sal_False.
1494*cdf0e10cSrcweir     // If <bResetIndentAttrs> equals true, the indent attributes "before text"
1495*cdf0e10cSrcweir     // and "first line indent" are additionally reset at the provided PaM, if
1496*cdf0e10cSrcweir     // the list style makes use of the new list level attributes.
1497*cdf0e10cSrcweir     // --> OD 2008-03-17 #refactorlists#
1498*cdf0e10cSrcweir     // introduce parameters <bCreateNewList> and <sContinuedListId>
1499*cdf0e10cSrcweir     // <bCreateNewList> indicates, if a new list is created by applying the
1500*cdf0e10cSrcweir     // given list style.
1501*cdf0e10cSrcweir     void SetNumRule( const SwPaM&,
1502*cdf0e10cSrcweir                      const SwNumRule&,
1503*cdf0e10cSrcweir                      const bool bCreateNewList,
1504*cdf0e10cSrcweir                      const String sContinuedListId = String(),
1505*cdf0e10cSrcweir                      sal_Bool bSetItem = sal_True,
1506*cdf0e10cSrcweir                      const bool bResetIndentAttrs = false );
1507*cdf0e10cSrcweir     // <--
1508*cdf0e10cSrcweir     void SetCounted( const SwPaM&, bool bCounted);
1509*cdf0e10cSrcweir 
1510*cdf0e10cSrcweir     // --> OD 2009-08-25 #i86492#
1511*cdf0e10cSrcweir     // no longer needed.
1512*cdf0e10cSrcweir     // SwDoc::SetNumRule( rPaM, rNumRule, false, <ListId>, sal_True, true ) have to be used instead.
1513*cdf0e10cSrcweir //    /**
1514*cdf0e10cSrcweir //       Replace numbering rules in a PaM by another numbering rule.
1515*cdf0e10cSrcweir 
1516*cdf0e10cSrcweir //       \param rPaM         PaM to replace the numbering rules in
1517*cdf0e10cSrcweir //       \param rNumRule     numbering rule to replace the present numbering rules
1518*cdf0e10cSrcweir //     */
1519*cdf0e10cSrcweir //    void ReplaceNumRule(const SwPaM & rPaM, const SwNumRule & rNumRule);
1520*cdf0e10cSrcweir 
1521*cdf0e10cSrcweir     void MakeUniqueNumRules(const SwPaM & rPaM);
1522*cdf0e10cSrcweir 
1523*cdf0e10cSrcweir 	void SetNumRuleStart( const SwPosition& rPos, sal_Bool bFlag = sal_True );
1524*cdf0e10cSrcweir     void SetNodeNumStart( const SwPosition& rPos, sal_uInt16 nStt );
1525*cdf0e10cSrcweir 
1526*cdf0e10cSrcweir 	SwNumRule* GetCurrNumRule( const SwPosition& rPos ) const;
1527*cdf0e10cSrcweir 
1528*cdf0e10cSrcweir     const SwNumRuleTbl& GetNumRuleTbl() const { return *pNumRuleTbl; }
1529*cdf0e10cSrcweir 
1530*cdf0e10cSrcweir     // #i36749#
1531*cdf0e10cSrcweir     /**
1532*cdf0e10cSrcweir        Add numbering rule to document.
1533*cdf0e10cSrcweir 
1534*cdf0e10cSrcweir        @param pRule    rule to add
1535*cdf0e10cSrcweir     */
1536*cdf0e10cSrcweir     void AddNumRule(SwNumRule * pRule);
1537*cdf0e10cSrcweir 
1538*cdf0e10cSrcweir     // --> OD 2008-02-11 #newlistlevelattrs#
1539*cdf0e10cSrcweir     // add optional parameter <eDefaultNumberFormatPositionAndSpaceMode>
1540*cdf0e10cSrcweir     sal_uInt16 MakeNumRule( const String &rName,
1541*cdf0e10cSrcweir         const SwNumRule* pCpy = 0,
1542*cdf0e10cSrcweir         sal_Bool bBroadcast = sal_False,
1543*cdf0e10cSrcweir         const SvxNumberFormat::SvxNumPositionAndSpaceMode eDefaultNumberFormatPositionAndSpaceMode =
1544*cdf0e10cSrcweir             SvxNumberFormat::LABEL_WIDTH_AND_POSITION );
1545*cdf0e10cSrcweir     // <--
1546*cdf0e10cSrcweir 	sal_uInt16 FindNumRule( const String& rName ) const;
1547*cdf0e10cSrcweir 	SwNumRule* FindNumRulePtr( const String& rName ) const;
1548*cdf0e10cSrcweir 
1549*cdf0e10cSrcweir 	// loeschen geht nur, wenn die ::com::sun::star::chaos::Rule niemand benutzt!
1550*cdf0e10cSrcweir     // #106897#
1551*cdf0e10cSrcweir     sal_Bool RenameNumRule(const String & aOldName, const String & aNewName,
1552*cdf0e10cSrcweir                            sal_Bool bBroadcast = sal_False);
1553*cdf0e10cSrcweir 	sal_Bool DelNumRule( const String& rName, sal_Bool bBroadCast = sal_False );
1554*cdf0e10cSrcweir 	String GetUniqueNumRuleName( const String* pChkStr = 0, sal_Bool bAutoNum = sal_True ) const;
1555*cdf0e10cSrcweir 
1556*cdf0e10cSrcweir 	void UpdateNumRule();	// alle invaliden Updaten
1557*cdf0e10cSrcweir     // #106897#
1558*cdf0e10cSrcweir 	void ChgNumRuleFmts( const SwNumRule& rRule, const String * pOldName = 0 );
1559*cdf0e10cSrcweir 	sal_Bool ReplaceNumRule( const SwPosition& rPos, const String& rOldRule,
1560*cdf0e10cSrcweir 						const String& rNewRule );
1561*cdf0e10cSrcweir 
1562*cdf0e10cSrcweir 		// zum naechsten/vorhergehenden Punkt auf gleicher Ebene
1563*cdf0e10cSrcweir 	sal_Bool GotoNextNum( SwPosition&, sal_Bool bOverUpper = sal_True,
1564*cdf0e10cSrcweir 						sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 );
1565*cdf0e10cSrcweir 	sal_Bool GotoPrevNum( SwPosition&, sal_Bool bOverUpper = sal_True,
1566*cdf0e10cSrcweir 						sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 );
1567*cdf0e10cSrcweir 
1568*cdf0e10cSrcweir     // #i23731#
1569*cdf0e10cSrcweir     /** Searches for a text node with a numbering rule.
1570*cdf0e10cSrcweir 
1571*cdf0e10cSrcweir        OD 2005-10-24 #i55391# - add optional parameter <bInvestigateStartNode>
1572*cdf0e10cSrcweir        OD 2008-03-18 #refactorlists# - add output parameter <sListId>
1573*cdf0e10cSrcweir 
1574*cdf0e10cSrcweir        \param rPos         position to start search
1575*cdf0e10cSrcweir        \param bForward     - sal_True:  search forward
1576*cdf0e10cSrcweir                            - sal_False: search backward
1577*cdf0e10cSrcweir 	   \param bNum		   - sal_True:  search for enumeration
1578*cdf0e10cSrcweir 		                   - sal_False: search for itemize
1579*cdf0e10cSrcweir        \param bOutline     - sal_True:  search for outline numbering rule
1580*cdf0e10cSrcweir                            - sal_False: search for non-outline numbering rule
1581*cdf0e10cSrcweir        \param nNonEmptyAllowed   number of non-empty paragraphs allowed between
1582*cdf0e10cSrcweir                                  rPos and found paragraph
1583*cdf0e10cSrcweir 
1584*cdf0e10cSrcweir         @param sListId
1585*cdf0e10cSrcweir         output parameter - in case a list style is found, <sListId> holds the
1586*cdf0e10cSrcweir         list id, to which the text node belongs, which applies the found list style.
1587*cdf0e10cSrcweir 
1588*cdf0e10cSrcweir         @param bInvestigateStartNode
1589*cdf0e10cSrcweir         input parameter - boolean, indicating, if start node, determined by given
1590*cdf0e10cSrcweir         start position has to be investigated or not.
1591*cdf0e10cSrcweir      */
1592*cdf0e10cSrcweir     const SwNumRule * SearchNumRule(const SwPosition & rPos,
1593*cdf0e10cSrcweir                                     const bool bForward,
1594*cdf0e10cSrcweir                                     const bool bNum,
1595*cdf0e10cSrcweir                                     const bool bOutline,
1596*cdf0e10cSrcweir                                     int nNonEmptyAllowed,
1597*cdf0e10cSrcweir                                     String& sListId,
1598*cdf0e10cSrcweir                                     const bool bInvestigateStartNode = false );
1599*cdf0e10cSrcweir 
1600*cdf0e10cSrcweir 		// Absaetze ohne Numerierung, aber mit Einzuegen
1601*cdf0e10cSrcweir 	sal_Bool NoNum( const SwPaM& );
1602*cdf0e10cSrcweir 		// Loeschen, Splitten der Aufzaehlungsliste
1603*cdf0e10cSrcweir     void DelNumRules( const SwPaM& );
1604*cdf0e10cSrcweir 
1605*cdf0e10cSrcweir     // Invalidates all numrules
1606*cdf0e10cSrcweir     void InvalidateNumRules();
1607*cdf0e10cSrcweir 
1608*cdf0e10cSrcweir 		// Hoch-/Runterstufen
1609*cdf0e10cSrcweir 	sal_Bool NumUpDown( const SwPaM&, sal_Bool bDown = sal_True );
1610*cdf0e10cSrcweir 		// Bewegt selektierte Absaetze (nicht nur Numerierungen)
1611*cdf0e10cSrcweir 		// entsprechend des Offsets. (negativ: zum Doc-Anf.)
1612*cdf0e10cSrcweir 	sal_Bool MoveParagraph( const SwPaM&, long nOffset = 1, sal_Bool bIsOutlMv = sal_False );
1613*cdf0e10cSrcweir 		// No-/Numerierung ueber Delete/Backspace ein/abschalten #115901#
1614*cdf0e10cSrcweir 	sal_Bool NumOrNoNum( const SwNodeIndex& rIdx, sal_Bool bDel = sal_False);
1615*cdf0e10cSrcweir 		// Animation der Grafiken stoppen
1616*cdf0e10cSrcweir 	void StopNumRuleAnimations( OutputDevice* );
1617*cdf0e10cSrcweir 
1618*cdf0e10cSrcweir 		// fuege eine neue Tabelle auf der Position rPos ein. (es
1619*cdf0e10cSrcweir 		// wird vor dem Node eingefuegt !!)
1620*cdf0e10cSrcweir 		//JP 28.10.96:
1621*cdf0e10cSrcweir 		// 	fuer AutoFormat bei der Eingabe: dann muessen die Spalten
1622*cdf0e10cSrcweir 		//	auf die vordefinierten Breite gesetzt werden. Im Array stehen die
1623*cdf0e10cSrcweir 		// 	Positionen der Spalten!! (nicht deren Breite!)
1624*cdf0e10cSrcweir     /* #109161# new parameter bCalledFromShell:
1625*cdf0e10cSrcweir 
1626*cdf0e10cSrcweir        sal_True: called from shell -> propagate existing adjust item at
1627*cdf0e10cSrcweir        rPos to every new cell. A existing adjust item in the table
1628*cdf0e10cSrcweir        heading or table contents paragraph style prevent that
1629*cdf0e10cSrcweir        propagation.
1630*cdf0e10cSrcweir 
1631*cdf0e10cSrcweir        sal_False: do not propagate
1632*cdf0e10cSrcweir     */
1633*cdf0e10cSrcweir     const SwTable* InsertTable( const SwInsertTableOptions& rInsTblOpts,  // HEADLINE_NO_BORDER
1634*cdf0e10cSrcweir                                 const SwPosition& rPos, sal_uInt16 nRows,
1635*cdf0e10cSrcweir                                 sal_uInt16 nCols, short eAdjust,
1636*cdf0e10cSrcweir                                 const SwTableAutoFmt* pTAFmt = 0,
1637*cdf0e10cSrcweir                                 const SvUShorts* pColArr = 0,
1638*cdf0e10cSrcweir                                 sal_Bool bCalledFromShell = sal_False,
1639*cdf0e10cSrcweir                                 sal_Bool bNewModel = sal_True );
1640*cdf0e10cSrcweir 
1641*cdf0e10cSrcweir     // steht der Index in einer Tabelle, dann returne den TableNode sonst 0
1642*cdf0e10cSrcweir 				 SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx );
1643*cdf0e10cSrcweir 	inline const SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx ) const;
1644*cdf0e10cSrcweir 
1645*cdf0e10cSrcweir 		// erzeuge aus dem makierten Bereich eine ausgeglichene Tabelle
1646*cdf0e10cSrcweir     const SwTable* TextToTable( const SwInsertTableOptions& rInsTblOpts, // HEADLINE_NO_BORDER,
1647*cdf0e10cSrcweir                                 const SwPaM& rRange, sal_Unicode cCh,
1648*cdf0e10cSrcweir                                 short eAdjust,
1649*cdf0e10cSrcweir                                 const SwTableAutoFmt* = 0 );
1650*cdf0e10cSrcweir     // text to table conversion - API support
1651*cdf0e10cSrcweir     const SwTable* TextToTable( const std::vector< std::vector<SwNodeRange> >& rTableNodes );
1652*cdf0e10cSrcweir 		// erzeuge aus der Tabelle wieder normalen Text
1653*cdf0e10cSrcweir 	sal_Bool TableToText( const SwTableNode* pTblNd, sal_Unicode cCh );
1654*cdf0e10cSrcweir 		// einfuegen von Spalten/Zeilen in der Tabelle
1655*cdf0e10cSrcweir 	sal_Bool InsertCol( const SwCursor& rCursor,
1656*cdf0e10cSrcweir 					sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1657*cdf0e10cSrcweir 	sal_Bool InsertCol( const SwSelBoxes& rBoxes,
1658*cdf0e10cSrcweir 					sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1659*cdf0e10cSrcweir 	sal_Bool InsertRow( const SwCursor& rCursor,
1660*cdf0e10cSrcweir 					sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1661*cdf0e10cSrcweir 	sal_Bool InsertRow( const SwSelBoxes& rBoxes,
1662*cdf0e10cSrcweir 					sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1663*cdf0e10cSrcweir 		// loeschen von Spalten/Zeilen in der Tabelle
1664*cdf0e10cSrcweir 	sal_Bool DeleteRowCol( const SwSelBoxes& rBoxes, bool bColumn = false );
1665*cdf0e10cSrcweir 	sal_Bool DeleteRow( const SwCursor& rCursor );
1666*cdf0e10cSrcweir 	sal_Bool DeleteCol( const SwCursor& rCursor );
1667*cdf0e10cSrcweir 		// teilen / zusammenfassen von Boxen in der Tabelle
1668*cdf0e10cSrcweir     sal_Bool SplitTbl( const SwSelBoxes& rBoxes, sal_Bool bVert = sal_True,
1669*cdf0e10cSrcweir                        sal_uInt16 nCnt = 1, sal_Bool bSameHeight = sal_False );
1670*cdf0e10cSrcweir 		// returnt den enum TableMergeErr
1671*cdf0e10cSrcweir 	sal_uInt16 MergeTbl( SwPaM& rPam );
1672*cdf0e10cSrcweir 	String GetUniqueTblName() const;
1673*cdf0e10cSrcweir 	sal_Bool IsInsTblFormatNum() const;
1674*cdf0e10cSrcweir 	sal_Bool IsInsTblChangeNumFormat() const;
1675*cdf0e10cSrcweir 	sal_Bool IsInsTblAlignNum() const;
1676*cdf0e10cSrcweir 
1677*cdf0e10cSrcweir 		// aus der FEShell wg.. Undo und bModified
1678*cdf0e10cSrcweir     void GetTabCols( SwTabCols &rFill, const SwCursor* pCrsr,
1679*cdf0e10cSrcweir 					const SwCellFrm* pBoxFrm = 0 ) const;
1680*cdf0e10cSrcweir 	void SetTabCols( const SwTabCols &rNew, sal_Bool bCurRowOnly,
1681*cdf0e10cSrcweir 					const SwCursor* pCrsr, const SwCellFrm* pBoxFrm = 0 );
1682*cdf0e10cSrcweir     void GetTabRows( SwTabCols &rFill, const SwCursor* pCrsr,
1683*cdf0e10cSrcweir                     const SwCellFrm* pBoxFrm = 0 ) const;
1684*cdf0e10cSrcweir     void SetTabRows( const SwTabCols &rNew, sal_Bool bCurColOnly, const SwCursor* pCrsr,
1685*cdf0e10cSrcweir                      const SwCellFrm* pBoxFrm = 0 );
1686*cdf0e10cSrcweir 
1687*cdf0e10cSrcweir 
1688*cdf0e10cSrcweir 	// Direktzugriff fuer Uno
1689*cdf0e10cSrcweir     void SetTabCols(SwTable& rTab, const SwTabCols &rNew, const SwTabCols &rOld,
1690*cdf0e10cSrcweir 									const SwTableBox *pStart, sal_Bool bCurRowOnly);
1691*cdf0e10cSrcweir 
1692*cdf0e10cSrcweir     void SetRowsToRepeat( SwTable &rTable, sal_uInt16 nSet );
1693*cdf0e10cSrcweir 
1694*cdf0e10cSrcweir 		// AutoFormat fuer die Tabelle/TabellenSelection
1695*cdf0e10cSrcweir 	sal_Bool SetTableAutoFmt( const SwSelBoxes& rBoxes, const SwTableAutoFmt& rNew );
1696*cdf0e10cSrcweir 		// Erfrage wie attributiert ist
1697*cdf0e10cSrcweir 	sal_Bool GetTableAutoFmt( const SwSelBoxes& rBoxes, SwTableAutoFmt& rGet );
1698*cdf0e10cSrcweir 		// setze das InsertDB als Tabelle Undo auf:
1699*cdf0e10cSrcweir 	void AppendUndoForInsertFromDB( const SwPaM& rPam, sal_Bool bIsTable );
1700*cdf0e10cSrcweir 		// setze die Spalten/Zeilen/ZTellen Breite/Hoehe
1701*cdf0e10cSrcweir 	sal_Bool SetColRowWidthHeight( SwTableBox& rAktBox, sal_uInt16 eType,
1702*cdf0e10cSrcweir 								SwTwips nAbsDiff, SwTwips nRelDiff );
1703*cdf0e10cSrcweir 	SwTableBoxFmt* MakeTableBoxFmt();
1704*cdf0e10cSrcweir 	SwTableLineFmt* MakeTableLineFmt();
1705*cdf0e10cSrcweir 	// teste ob die Box ein numerischen Wert darstellt und aender dann ggfs.
1706*cdf0e10cSrcweir 	// das Format der Box
1707*cdf0e10cSrcweir 	void ChkBoxNumFmt( SwTableBox& rAktBox, sal_Bool bCallUpdate );
1708*cdf0e10cSrcweir 	void SetTblBoxFormulaAttrs( SwTableBox& rBox, const SfxItemSet& rSet );
1709*cdf0e10cSrcweir 	void ClearBoxNumAttrs( const SwNodeIndex& rNode );
1710*cdf0e10cSrcweir 
1711*cdf0e10cSrcweir 	sal_Bool InsCopyOfTbl( SwPosition& rInsPos, const SwSelBoxes& rBoxes,
1712*cdf0e10cSrcweir 						const SwTable* pCpyTbl = 0, sal_Bool bCpyName = sal_False,
1713*cdf0e10cSrcweir 						sal_Bool bCorrPos = sal_False );
1714*cdf0e10cSrcweir 
1715*cdf0e10cSrcweir 	sal_Bool UnProtectCells( const String& rTblName );
1716*cdf0e10cSrcweir 	sal_Bool UnProtectCells( const SwSelBoxes& rBoxes );
1717*cdf0e10cSrcweir 	sal_Bool UnProtectTbls( const SwPaM& rPam );
1718*cdf0e10cSrcweir 	sal_Bool HasTblAnyProtection( const SwPosition* pPos,
1719*cdf0e10cSrcweir 							  const String* pTblName = 0,
1720*cdf0e10cSrcweir 							  sal_Bool* pFullTblProtection = 0 );
1721*cdf0e10cSrcweir 
1722*cdf0e10cSrcweir 	// Tabelle an der Position in der GrundLine aufsplitten, sprich eine
1723*cdf0e10cSrcweir 	// neue Tabelle erzeugen.
1724*cdf0e10cSrcweir 	sal_Bool SplitTable( const SwPosition& rPos, sal_uInt16 eMode = 0,
1725*cdf0e10cSrcweir 						sal_Bool bCalcNewSize = sal_False );
1726*cdf0e10cSrcweir 	// und die Umkehrung davon. rPos muss in der Tabelle stehen, die bestehen
1727*cdf0e10cSrcweir 	// bleibt. Das Flag besagt ob die aktuelle mit der davor oder dahinter
1728*cdf0e10cSrcweir 	// stehenden vereint wird.
1729*cdf0e10cSrcweir 	sal_Bool MergeTable( const SwPosition& rPos, sal_Bool bWithPrev = sal_True,
1730*cdf0e10cSrcweir 						sal_uInt16 nMode = 0 );
1731*cdf0e10cSrcweir 
1732*cdf0e10cSrcweir 	// Charts der angegebenen Tabelle zum Update bewegen
1733*cdf0e10cSrcweir 	void UpdateCharts( const String &rName ) const;
1734*cdf0e10cSrcweir 	// update all charts, for that exists any table
1735*cdf0e10cSrcweir     void UpdateAllCharts()          { DoUpdateAllCharts( 0 ); }
1736*cdf0e10cSrcweir 	// Tabelle wird umbenannt und aktualisiert die Charts
1737*cdf0e10cSrcweir 	void SetTableName( SwFrmFmt& rTblFmt, const String &rNewName );
1738*cdf0e10cSrcweir 
1739*cdf0e10cSrcweir 	// returne zum Namen die im Doc gesetzte Referenz
1740*cdf0e10cSrcweir 	const SwFmtRefMark* GetRefMark( const String& rName ) const;
1741*cdf0e10cSrcweir 	// returne die RefMark per Index - fuer Uno
1742*cdf0e10cSrcweir 	const SwFmtRefMark* GetRefMark( sal_uInt16 nIndex ) const;
1743*cdf0e10cSrcweir 	// returne die Namen aller im Doc gesetzten Referenzen.
1744*cdf0e10cSrcweir 	// 	Ist der ArrayPointer 0 dann returne nur, ob im Doc. eine RefMark
1745*cdf0e10cSrcweir 	//	gesetzt ist
1746*cdf0e10cSrcweir 	sal_uInt16 GetRefMarks( SvStringsDtor* = 0 ) const;
1747*cdf0e10cSrcweir 
1748*cdf0e10cSrcweir 	//Einfuegen einer Beschriftung - falls ein FlyFormat erzeugt wird, so
1749*cdf0e10cSrcweir 	// returne dieses.
1750*cdf0e10cSrcweir     SwFlyFrmFmt* InsertLabel( const SwLabelType eType, const String &rTxt, const String& rSeparator,
1751*cdf0e10cSrcweir                     const String& rNumberingSeparator,
1752*cdf0e10cSrcweir 					const sal_Bool bBefore, const sal_uInt16 nId, const sal_uLong nIdx,
1753*cdf0e10cSrcweir                     const String& rCharacterStyle,
1754*cdf0e10cSrcweir 					const sal_Bool bCpyBrd = sal_True );
1755*cdf0e10cSrcweir     SwFlyFrmFmt* InsertDrawLabel(
1756*cdf0e10cSrcweir         const String &rTxt, const String& rSeparator, const String& rNumberSeparator,
1757*cdf0e10cSrcweir         const sal_uInt16 nId, const String& rCharacterStyle, SdrObject& rObj );
1758*cdf0e10cSrcweir 
1759*cdf0e10cSrcweir 	// erfrage den Attribut Pool
1760*cdf0e10cSrcweir 	const SwAttrPool& GetAttrPool() const	{ return *mpAttrPool; }
1761*cdf0e10cSrcweir 		  SwAttrPool& GetAttrPool() 		{ return *mpAttrPool; }
1762*cdf0e10cSrcweir 
1763*cdf0e10cSrcweir 	// suche ueber das Layout eine EditShell und ggfs. eine ViewShell
1764*cdf0e10cSrcweir 	SwEditShell* GetEditShell( ViewShell** ppSh = 0 ) const;
1765*cdf0e10cSrcweir     ::sw::IShellCursorSupplier * GetIShellCursorSupplier();
1766*cdf0e10cSrcweir 
1767*cdf0e10cSrcweir 	// OLE 2.0-Benachrichtung
1768*cdf0e10cSrcweir 	inline		 void  SetOle2Link(const Link& rLink) {aOle2Link = rLink;}
1769*cdf0e10cSrcweir 	inline const Link& GetOle2Link() const {return aOle2Link;}
1770*cdf0e10cSrcweir 
1771*cdf0e10cSrcweir     // insert section (the ODF kind of section, not the nodesarray kind)
1772*cdf0e10cSrcweir     SwSection * InsertSwSection(SwPaM const& rRange, SwSectionData &,
1773*cdf0e10cSrcweir             SwTOXBase const*const pTOXBase = 0,
1774*cdf0e10cSrcweir             SfxItemSet const*const pAttr = 0, bool const bUpdate = true);
1775*cdf0e10cSrcweir 	sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange,
1776*cdf0e10cSrcweir 								const SwNode** ppSttNd = 0 ) const;
1777*cdf0e10cSrcweir 	SwSection* GetCurrSection( const SwPosition& rPos ) const;
1778*cdf0e10cSrcweir 	SwSectionFmts& GetSections() { return *pSectionFmtTbl; }
1779*cdf0e10cSrcweir 	const SwSectionFmts& GetSections() const { return *pSectionFmtTbl; }
1780*cdf0e10cSrcweir 	SwSectionFmt *MakeSectionFmt( SwSectionFmt *pDerivedFrom );
1781*cdf0e10cSrcweir 	void DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes = sal_False );
1782*cdf0e10cSrcweir     void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
1783*cdf0e10cSrcweir             SfxItemSet const*const = 0, bool const bPreventLinkUpdate = false);
1784*cdf0e10cSrcweir 	String GetUniqueSectionName( const String* pChkStr = 0 ) const;
1785*cdf0e10cSrcweir 
1786*cdf0e10cSrcweir     /* @@@MAINTAINABILITY-HORROR@@@
1787*cdf0e10cSrcweir        The model should not have anything to do with a shell.
1788*cdf0e10cSrcweir        Unnecessary compile/link time dependency.
1789*cdf0e10cSrcweir     */
1790*cdf0e10cSrcweir 	// Pointer auf die SfxDocShell vom Doc, kann 0 sein !!!
1791*cdf0e10cSrcweir 		  SwDocShell* GetDocShell() 		{ return pDocShell; }
1792*cdf0e10cSrcweir 	const SwDocShell* GetDocShell() const	{ return pDocShell; }
1793*cdf0e10cSrcweir 	void SetDocShell( SwDocShell* pDSh );
1794*cdf0e10cSrcweir 
1795*cdf0e10cSrcweir 	// in case during copying of embedded object a new shell is created,
1796*cdf0e10cSrcweir     // it should be set here and cleaned later
1797*cdf0e10cSrcweir     void SetTmpDocShell( SfxObjectShellLock rLock )    { xTmpDocShell = rLock; }
1798*cdf0e10cSrcweir     SfxObjectShellLock GetTmpDocShell()    { return xTmpDocShell; }
1799*cdf0e10cSrcweir 
1800*cdf0e10cSrcweir     // fuer die TextBausteine - diese habe nur ein SvPersist zur
1801*cdf0e10cSrcweir     // Verfuegung
1802*cdf0e10cSrcweir     SfxObjectShell* GetPersist() const;
1803*cdf0e10cSrcweir 
1804*cdf0e10cSrcweir 	// Pointer auf den Storage des SfxDocShells, kann 0 sein !!!
1805*cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > GetDocStorage();
1806*cdf0e10cSrcweir 
1807*cdf0e10cSrcweir 		// abfrage/setze Flag, ob das Dokument im asynchronen Laden ist
1808*cdf0e10cSrcweir     bool IsInLoadAsynchron() const             { return mbInLoadAsynchron; }
1809*cdf0e10cSrcweir     void SetInLoadAsynchron( bool bFlag )       { mbInLoadAsynchron = bFlag; }
1810*cdf0e10cSrcweir 
1811*cdf0e10cSrcweir 	// erzeuge um das zu Servende Object eine Selektion
1812*cdf0e10cSrcweir 	sal_Bool SelectServerObj( const String& rStr, SwPaM*& rpPam,
1813*cdf0e10cSrcweir 							SwNodeRange*& rpRange ) const;
1814*cdf0e10cSrcweir 
1815*cdf0e10cSrcweir 	// fuer Drag&Move: ( z.B. RefMarks "verschieben" erlauben )
1816*cdf0e10cSrcweir     bool IsCopyIsMove() const              { return mbCopyIsMove; }
1817*cdf0e10cSrcweir     void SetCopyIsMove( bool bFlag )        { mbCopyIsMove = bFlag; }
1818*cdf0e10cSrcweir 
1819*cdf0e10cSrcweir 	SwDrawContact* GroupSelection( SdrView& );
1820*cdf0e10cSrcweir 	void UnGroupSelection( SdrView& );
1821*cdf0e10cSrcweir 	sal_Bool DeleteSelection( SwDrawView& );
1822*cdf0e10cSrcweir 
1823*cdf0e10cSrcweir 	// Invalidiert OnlineSpell-WrongListen
1824*cdf0e10cSrcweir 	void SpellItAgainSam( sal_Bool bInvalid, sal_Bool bOnlyWrong, sal_Bool bSmartTags );
1825*cdf0e10cSrcweir 	void InvalidateAutoCompleteFlag();
1826*cdf0e10cSrcweir 
1827*cdf0e10cSrcweir     // <--
1828*cdf0e10cSrcweir 	void SetCalcFieldValueHdl(Outliner* pOutliner);
1829*cdf0e10cSrcweir 
1830*cdf0e10cSrcweir 	// erfrage ob die ::com::sun::star::util::URL besucht war. Uebers Doc, falls nur ein ::com::sun::star::text::Bookmark
1831*cdf0e10cSrcweir 	// angegeben ist. Dann muss der Doc. Name davor gesetzt werden!
1832*cdf0e10cSrcweir 	sal_Bool IsVisitedURL( const String& rURL ) const;
1833*cdf0e10cSrcweir 
1834*cdf0e10cSrcweir 	// speicher die akt. Werte fuer die automatische Aufnahme von Ausnahmen
1835*cdf0e10cSrcweir 	// in die Autokorrektur
1836*cdf0e10cSrcweir 	void SetAutoCorrExceptWord( SwAutoCorrExceptWord* pNew );
1837*cdf0e10cSrcweir 	SwAutoCorrExceptWord* GetAutoCorrExceptWord()		{ return pACEWord; }
1838*cdf0e10cSrcweir 
1839*cdf0e10cSrcweir 	const SwFmtINetFmt* FindINetAttr( const String& rName ) const;
1840*cdf0e10cSrcweir 
1841*cdf0e10cSrcweir 	// rufe ins dunkle Basic, mit evt. Return String
1842*cdf0e10cSrcweir 	sal_Bool ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 );
1843*cdf0e10cSrcweir 	// rufe ins dunkle Basic/JavaScript
1844*cdf0e10cSrcweir 	sal_uInt16 CallEvent( sal_uInt16 nEvent, const SwCallMouseEvent& rCallEvent,
1845*cdf0e10cSrcweir 						sal_Bool bChkPtr = sal_False, SbxArray* pArgs = 0,
1846*cdf0e10cSrcweir 						const Link* pCallBack = 0 );
1847*cdf0e10cSrcweir 
1848*cdf0e10cSrcweir 	// linken Rand ueber Objectleiste einstellen (aenhlich dem Stufen von
1849*cdf0e10cSrcweir 	// Numerierungen), optional kann man "um" den Offset stufen oder "auf"
1850*cdf0e10cSrcweir 	// die Position gestuft werden (bModulus = sal_True)
1851*cdf0e10cSrcweir 	void MoveLeftMargin( const SwPaM& rPam, sal_Bool bRight = sal_True,
1852*cdf0e10cSrcweir 						sal_Bool bModulus = sal_True );
1853*cdf0e10cSrcweir 
1854*cdf0e10cSrcweir 	// Numberformatter erfragen
1855*cdf0e10cSrcweir 	inline	  	 SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True );
1856*cdf0e10cSrcweir 	inline const SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True ) const;
1857*cdf0e10cSrcweir 
1858*cdf0e10cSrcweir     bool HasInvisibleContent() const;
1859*cdf0e10cSrcweir     /// delete invisible content, like hidden sections and paragraphs
1860*cdf0e10cSrcweir     bool RemoveInvisibleContent();
1861*cdf0e10cSrcweir     /// restore the invisible content if it's available on the undo stack
1862*cdf0e10cSrcweir     bool RestoreInvisibleContent();
1863*cdf0e10cSrcweir     // replace fields by text - mailmerge support
1864*cdf0e10cSrcweir     sal_Bool ConvertFieldsToText();
1865*cdf0e10cSrcweir 
1866*cdf0e10cSrcweir 	// erzeuge Anhand der vorgebenen Collection Teildokumente
1867*cdf0e10cSrcweir 	// falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene
1868*cdf0e10cSrcweir 	sal_Bool GenerateGlobalDoc( const String& rPath,
1869*cdf0e10cSrcweir 								const SwTxtFmtColl* pSplitColl = 0 );
1870*cdf0e10cSrcweir 	sal_Bool GenerateGlobalDoc( const String& rPath, int nOutlineLevel = 0 );	//#outline level,add by zhaojianwei
1871*cdf0e10cSrcweir 	sal_Bool GenerateHTMLDoc( const String& rPath,
1872*cdf0e10cSrcweir 								const SwTxtFmtColl* pSplitColl = 0 );
1873*cdf0e10cSrcweir 	sal_Bool GenerateHTMLDoc( const String& rPath, int nOutlineLevel = 0 );	//#outline level,add by zhaojianwei
1874*cdf0e10cSrcweir 
1875*cdf0e10cSrcweir 	//  vergleiche zwei Dokument miteinander
1876*cdf0e10cSrcweir 	long CompareDoc( const SwDoc& rDoc );
1877*cdf0e10cSrcweir 	// merge zweier Dokumente
1878*cdf0e10cSrcweir 	long MergeDoc( const SwDoc& rDoc );
1879*cdf0e10cSrcweir 	// setze Kommentar-Text fuers Redline, das dann per AppendRedline
1880*cdf0e10cSrcweir 	// hereinkommt. Wird vom Autoformat benutzt. 0-Pointer setzt den Modus
1881*cdf0e10cSrcweir 	// wieder zurueck. Die SequenceNummer ist fuers UI-seitige zusammen-
1882*cdf0e10cSrcweir 	// fassen von Redlines.
1883*cdf0e10cSrcweir 	void SetAutoFmtRedlineComment( const String* pTxt, sal_uInt16 nSeqNo = 0 );
1884*cdf0e10cSrcweir 
1885*cdf0e10cSrcweir     bool IsAutoFmtRedline() const           { return mbIsAutoFmtRedline; }
1886*cdf0e10cSrcweir     void SetAutoFmtRedline( bool bFlag )    { mbIsAutoFmtRedline = bFlag; }
1887*cdf0e10cSrcweir 
1888*cdf0e10cSrcweir 	// fuer AutoFormat: mit Undo/Redlining - Behandlung
1889*cdf0e10cSrcweir 	void SetTxtFmtCollByAutoFmt( const SwPosition& rPos, sal_uInt16 nPoolId,
1890*cdf0e10cSrcweir 								const SfxItemSet* pSet = 0 );
1891*cdf0e10cSrcweir 	void SetFmtItemByAutoFmt( const SwPaM& rPam, const SfxItemSet& );
1892*cdf0e10cSrcweir 
1893*cdf0e10cSrcweir 	// !!!NUR fuer die SW-Textblocks!! beachtet kein LAYOUT!!!
1894*cdf0e10cSrcweir 	void ClearDoc(); 		// loescht den gesamten Inhalt.
1895*cdf0e10cSrcweir 
1896*cdf0e10cSrcweir 	// erfrage / setze die Daten fuer die PagePreView
1897*cdf0e10cSrcweir 	const SwPagePreViewPrtData* GetPreViewPrtData() const { return pPgPViewPrtData; }
1898*cdf0e10cSrcweir 	// wenn der Pointer == 0 ist, dann wird im Doc der Pointer zerstoert,
1899*cdf0e10cSrcweir 	// ansonsten wird das Object kopiert.
1900*cdf0e10cSrcweir 	// Der Pointer geht NICHT in den Besitz des Doc's!!
1901*cdf0e10cSrcweir 	void SetPreViewPrtData( const SwPagePreViewPrtData* pData );
1902*cdf0e10cSrcweir 
1903*cdf0e10cSrcweir 	// update all modified OLE-Objects. The modification is called over the
1904*cdf0e10cSrcweir 	// StarOne - Interface				--> Bug 67026
1905*cdf0e10cSrcweir 	void SetOLEObjModified()
1906*cdf0e10cSrcweir 	{	if( GetCurrentViewShell() ) aOLEModifiedTimer.Start(); }	//swmod 071107//swmod 071225
1907*cdf0e10cSrcweir 
1908*cdf0e10cSrcweir 	// -------------------- Uno - Schnittstellen ---------------------------
1909*cdf0e10cSrcweir 	const SwUnoCrsrTbl& GetUnoCrsrTbl() const 		{ return *pUnoCrsrTbl; }
1910*cdf0e10cSrcweir 	SwUnoCrsr* CreateUnoCrsr( const SwPosition& rPos, sal_Bool bTblCrsr = sal_False );
1911*cdf0e10cSrcweir 	// -------------------- Uno - Schnittstellen ---------------------------
1912*cdf0e10cSrcweir 
1913*cdf0e10cSrcweir 	// -------------------- FeShell - Schnittstellen -----------------------
1914*cdf0e10cSrcweir 	// !!!!! diese gehen immer davon aus, das ein Layout existiert  !!!!
1915*cdf0e10cSrcweir     sal_Bool ChgAnchor( const SdrMarkList& _rMrkList,
1916*cdf0e10cSrcweir                         RndStdIds _eAnchorType,
1917*cdf0e10cSrcweir                         const sal_Bool _bSameOnly,
1918*cdf0e10cSrcweir                         const sal_Bool _bPosCorr );
1919*cdf0e10cSrcweir 
1920*cdf0e10cSrcweir 	void SetRowHeight( const SwCursor& rCursor, const SwFmtFrmSize &rNew );
1921*cdf0e10cSrcweir 	void GetRowHeight( const SwCursor& rCursor, SwFmtFrmSize *& rpSz ) const;
1922*cdf0e10cSrcweir     void SetRowSplit( const SwCursor& rCursor, const SwFmtRowSplit &rNew );
1923*cdf0e10cSrcweir     void GetRowSplit( const SwCursor& rCursor, SwFmtRowSplit *& rpSz ) const;
1924*cdf0e10cSrcweir 	sal_Bool BalanceRowHeight( const SwCursor& rCursor, sal_Bool bTstOnly = sal_True );
1925*cdf0e10cSrcweir 	void SetRowBackground( const SwCursor& rCursor, const SvxBrushItem &rNew );
1926*cdf0e10cSrcweir 	sal_Bool GetRowBackground( const SwCursor& rCursor, SvxBrushItem &rToFill ) const;
1927*cdf0e10cSrcweir 	void SetTabBorders( const SwCursor& rCursor, const SfxItemSet& rSet );
1928*cdf0e10cSrcweir 	void SetTabLineStyle( const SwCursor& rCursor,
1929*cdf0e10cSrcweir 						  const Color* pColor, sal_Bool bSetLine,
1930*cdf0e10cSrcweir 						  const SvxBorderLine* pBorderLine );
1931*cdf0e10cSrcweir 	void GetTabBorders( const SwCursor& rCursor, SfxItemSet& rSet ) const;
1932*cdf0e10cSrcweir 	void SetBoxAttr( const SwCursor& rCursor, const SfxPoolItem &rNew );
1933*cdf0e10cSrcweir     sal_Bool GetBoxAttr( const SwCursor& rCursor, SfxPoolItem &rToFill ) const;
1934*cdf0e10cSrcweir     void SetBoxAlign( const SwCursor& rCursor, sal_uInt16 nAlign );
1935*cdf0e10cSrcweir 	sal_uInt16 GetBoxAlign( const SwCursor& rCursor ) const;
1936*cdf0e10cSrcweir 	void AdjustCellWidth( const SwCursor& rCursor, sal_Bool bBalance = sal_False );
1937*cdf0e10cSrcweir 
1938*cdf0e10cSrcweir 	int Chainable( const SwFrmFmt &rSource, const SwFrmFmt &rDest );
1939*cdf0e10cSrcweir 	int Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest );
1940*cdf0e10cSrcweir 	void Unchain( SwFrmFmt &rFmt );
1941*cdf0e10cSrcweir 
1942*cdf0e10cSrcweir 	// fuers Copy/Move aus der FrmShell
1943*cdf0e10cSrcweir 	SdrObject* CloneSdrObj( const SdrObject&, sal_Bool bMoveWithinDoc = sal_False,
1944*cdf0e10cSrcweir 							sal_Bool bInsInPage = sal_True );
1945*cdf0e10cSrcweir 
1946*cdf0e10cSrcweir 	//
1947*cdf0e10cSrcweir 	// -------------------- FeShell - Schnittstellen Ende ------------------
1948*cdf0e10cSrcweir 
1949*cdf0e10cSrcweir 
1950*cdf0e10cSrcweir 	// Schnittstelle fuer die TextInputDaten - ( fuer die Texteingabe
1951*cdf0e10cSrcweir 	// von japanischen/chinesischen Zeichen)
1952*cdf0e10cSrcweir 	SwExtTextInput* CreateExtTextInput( const SwPaM& rPam );
1953*cdf0e10cSrcweir 	void DeleteExtTextInput( SwExtTextInput* pDel );
1954*cdf0e10cSrcweir 	SwExtTextInput* GetExtTextInput( const SwNode& rNd,
1955*cdf0e10cSrcweir 								xub_StrLen nCntntPos = STRING_NOTFOUND) const;
1956*cdf0e10cSrcweir 	SwExtTextInput* GetExtTextInput() const;
1957*cdf0e10cSrcweir 
1958*cdf0e10cSrcweir 	// Schnistelle fuer den Zugriff auf die AutoComplete-Liste
1959*cdf0e10cSrcweir 	static SwAutoCompleteWord& GetAutoCompleteWords() { return *pACmpltWords; }
1960*cdf0e10cSrcweir 
1961*cdf0e10cSrcweir     bool ContainsMSVBasic() const          { return mbContains_MSVBasic; }
1962*cdf0e10cSrcweir     void SetContainsMSVBasic( bool bFlag )  { mbContains_MSVBasic = bFlag; }
1963*cdf0e10cSrcweir 
1964*cdf0e10cSrcweir     // Interface for the list of Ruby - texts/attributes
1965*cdf0e10cSrcweir 	sal_uInt16 FillRubyList( const SwPaM& rPam, SwRubyList& rList,
1966*cdf0e10cSrcweir 						sal_uInt16 nMode );
1967*cdf0e10cSrcweir 	sal_uInt16 SetRubyList( const SwPaM& rPam, const SwRubyList& rList,
1968*cdf0e10cSrcweir 						sal_uInt16 nMode );
1969*cdf0e10cSrcweir 
1970*cdf0e10cSrcweir     void ReadLayoutCache( SvStream& rStream );
1971*cdf0e10cSrcweir     void WriteLayoutCache( SvStream& rStream );
1972*cdf0e10cSrcweir     SwLayoutCache* GetLayoutCache() const { return pLayoutCache; }
1973*cdf0e10cSrcweir 
1974*cdf0e10cSrcweir     /** Checks if any of the text node contains hidden characters.
1975*cdf0e10cSrcweir         Used for optimization. Changing the view option 'view hidden text'
1976*cdf0e10cSrcweir         has to trigger a reformatting only if some of the text is hidden.
1977*cdf0e10cSrcweir     */
1978*cdf0e10cSrcweir     bool ContainsHiddenChars() const;
1979*cdf0e10cSrcweir 
1980*cdf0e10cSrcweir 	// call back for API wrapper
1981*cdf0e10cSrcweir 	SwModify*	GetUnoCallBack() const;
1982*cdf0e10cSrcweir 
1983*cdf0e10cSrcweir     IGrammarContact* getGrammarContact() const { return mpGrammarContact; }
1984*cdf0e10cSrcweir 
1985*cdf0e10cSrcweir     // -> #i27615#
1986*cdf0e10cSrcweir     /** Marks/Unmarks a list level of a certain list
1987*cdf0e10cSrcweir 
1988*cdf0e10cSrcweir         OD 2008-04-02 #refactorlists#
1989*cdf0e10cSrcweir         levels of a certain lists are marked now
1990*cdf0e10cSrcweir 
1991*cdf0e10cSrcweir         @param sListId    list Id of the list whose level has to be marked/unmarked
1992*cdf0e10cSrcweir         @param nListLevel level to mark
1993*cdf0e10cSrcweir         @param bValue     - sal_True  mark the level
1994*cdf0e10cSrcweir                           - sal_False unmark the level
1995*cdf0e10cSrcweir     */
1996*cdf0e10cSrcweir     void MarkListLevel( const String& sListId,
1997*cdf0e10cSrcweir                         const int nListLevel,
1998*cdf0e10cSrcweir                         const sal_Bool bValue );
1999*cdf0e10cSrcweir 
2000*cdf0e10cSrcweir     /** Marks/Unmarks a list level of a certain list
2001*cdf0e10cSrcweir 
2002*cdf0e10cSrcweir         OD 2008-04-02 #refactorlists#
2003*cdf0e10cSrcweir         levels of a certain lists are marked now
2004*cdf0e10cSrcweir 
2005*cdf0e10cSrcweir         @param rList      list whose level has to be marked/unmarked
2006*cdf0e10cSrcweir         @param nListLevel level to mark
2007*cdf0e10cSrcweir         @param bValue     - sal_True  mark the level
2008*cdf0e10cSrcweir                           - sal_False unmark the level
2009*cdf0e10cSrcweir      */
2010*cdf0e10cSrcweir     void MarkListLevel( SwList& rList,
2011*cdf0e10cSrcweir                         const int nListLevel,
2012*cdf0e10cSrcweir                         const sal_Bool bValue );
2013*cdf0e10cSrcweir     // <- #i27615#
2014*cdf0e10cSrcweir 
2015*cdf0e10cSrcweir     // Change a format undoable.
2016*cdf0e10cSrcweir     void ChgFmt(SwFmt & rFmt, const SfxItemSet & rSet);
2017*cdf0e10cSrcweir 
2018*cdf0e10cSrcweir     void RenameFmt(SwFmt & rFmt, const String & sNewName,
2019*cdf0e10cSrcweir                    sal_Bool bBroadcast = sal_False);
2020*cdf0e10cSrcweir 
2021*cdf0e10cSrcweir     // Change a TOX undoable.
2022*cdf0e10cSrcweir     void ChgTOX(SwTOXBase & rTOX, const SwTOXBase & rNew);
2023*cdf0e10cSrcweir 
2024*cdf0e10cSrcweir     // #111827#
2025*cdf0e10cSrcweir     /**
2026*cdf0e10cSrcweir        Returns a textual description of a PaM.
2027*cdf0e10cSrcweir 
2028*cdf0e10cSrcweir        @param rPaM     the PaM to describe
2029*cdf0e10cSrcweir 
2030*cdf0e10cSrcweir        If rPaM only spans one paragraph the result is:
2031*cdf0e10cSrcweir 
2032*cdf0e10cSrcweir             '<text in the PaM>'
2033*cdf0e10cSrcweir 
2034*cdf0e10cSrcweir        <text in the PaM> is shortened to nUndoStringLength characters.
2035*cdf0e10cSrcweir 
2036*cdf0e10cSrcweir        If rPaM spans more than one paragraph the result is:
2037*cdf0e10cSrcweir 
2038*cdf0e10cSrcweir             paragraphs                               (STR_PARAGRAPHS)
2039*cdf0e10cSrcweir 
2040*cdf0e10cSrcweir        @return the textual description of rPaM
2041*cdf0e10cSrcweir      */
2042*cdf0e10cSrcweir     String GetPaMDescr(const SwPaM & rPaM) const;
2043*cdf0e10cSrcweir 
2044*cdf0e10cSrcweir     // -> #i23726#
2045*cdf0e10cSrcweir     sal_Bool IsFirstOfNumRule(SwPosition & rPos);
2046*cdf0e10cSrcweir     // <- #i23726#
2047*cdf0e10cSrcweir 
2048*cdf0e10cSrcweir     // --> #i31958# access methods for XForms model(s)
2049*cdf0e10cSrcweir 
2050*cdf0e10cSrcweir     /// access container for XForms model; will be NULL if !isXForms()
2051*cdf0e10cSrcweir 	com::sun::star::uno::Reference<com::sun::star::container::XNameContainer>
2052*cdf0e10cSrcweir         getXForms() const;
2053*cdf0e10cSrcweir 
2054*cdf0e10cSrcweir     com::sun::star::uno::Reference< com::sun::star::linguistic2::XProofreadingIterator > GetGCIterator() const;
2055*cdf0e10cSrcweir 
2056*cdf0e10cSrcweir     /// is this an XForms document?
2057*cdf0e10cSrcweir     bool isXForms() const;
2058*cdf0e10cSrcweir 
2059*cdf0e10cSrcweir     /// initialize XForms models; turn this into an XForms document
2060*cdf0e10cSrcweir     void initXForms( bool bCreateDefaultModel );
2061*cdf0e10cSrcweir     // <-- #i31958# access methods for XForms model(s)
2062*cdf0e10cSrcweir 
2063*cdf0e10cSrcweir     // --> OD 2006-03-21 #b6375613#
2064*cdf0e10cSrcweir     inline bool ApplyWorkaroundForB6375613() const
2065*cdf0e10cSrcweir     {
2066*cdf0e10cSrcweir         return mbApplyWorkaroundForB6375613;
2067*cdf0e10cSrcweir     }
2068*cdf0e10cSrcweir     void SetApplyWorkaroundForB6375613( bool p_bApplyWorkaroundForB6375613 );
2069*cdf0e10cSrcweir     // <--
2070*cdf0e10cSrcweir 
2071*cdf0e10cSrcweir     //Update all the page masters
2072*cdf0e10cSrcweir     void SetDefaultPageMode(bool bSquaredPageMode);
2073*cdf0e10cSrcweir     sal_Bool IsSquaredPageMode() const;
2074*cdf0e10cSrcweir 
2075*cdf0e10cSrcweir 	// i#78591#
2076*cdf0e10cSrcweir 	void Setn32DummyCompatabilityOptions1( sal_uInt32 CompatabilityOptions1 )
2077*cdf0e10cSrcweir 	{
2078*cdf0e10cSrcweir 		n32DummyCompatabilityOptions1 = CompatabilityOptions1;
2079*cdf0e10cSrcweir 	}
2080*cdf0e10cSrcweir 	sal_uInt32 Getn32DummyCompatabilityOptions1( )
2081*cdf0e10cSrcweir 	{
2082*cdf0e10cSrcweir 		return n32DummyCompatabilityOptions1;
2083*cdf0e10cSrcweir 	}
2084*cdf0e10cSrcweir 	void Setn32DummyCompatabilityOptions2( sal_uInt32 CompatabilityOptions2 )
2085*cdf0e10cSrcweir 	{
2086*cdf0e10cSrcweir 		n32DummyCompatabilityOptions2 = CompatabilityOptions2;
2087*cdf0e10cSrcweir 	}
2088*cdf0e10cSrcweir 	sal_uInt32 Getn32DummyCompatabilityOptions2( )
2089*cdf0e10cSrcweir 	{
2090*cdf0e10cSrcweir 		return n32DummyCompatabilityOptions2;
2091*cdf0e10cSrcweir 	}
2092*cdf0e10cSrcweir #ifdef FUTURE_VBA
2093*cdf0e10cSrcweir     com::sun::star::uno::Reference< com::sun::star::script::vba::XVBAEventProcessor > GetVbaEventProcessor();
2094*cdf0e10cSrcweir #endif
2095*cdf0e10cSrcweir     ::sfx2::IXmlIdRegistry& GetXmlIdRegistry();
2096*cdf0e10cSrcweir     ::sw::MetaFieldManager & GetMetaFieldManager();
2097*cdf0e10cSrcweir     ::sw::UndoManager      & GetUndoManager();
2098*cdf0e10cSrcweir     ::sw::UndoManager const& GetUndoManager() const;
2099*cdf0e10cSrcweir     SfxObjectShell* CreateCopy(bool bCallInitNew) const;
2100*cdf0e10cSrcweir 
2101*cdf0e10cSrcweir 	/// must be called only in SwDocShell::InitNew, causes UpdateDrawDefaults to be called when drawing layer is created
2102*cdf0e10cSrcweir 	void SetDrawDefaults();
2103*cdf0e10cSrcweir 
2104*cdf0e10cSrcweir private:
2105*cdf0e10cSrcweir 	/// method to set new graphics pool defaults, must only be called by SetDrawDefaults!
2106*cdf0e10cSrcweir 	void UpdateDrawDefaults();
2107*cdf0e10cSrcweir };
2108*cdf0e10cSrcweir 
2109*cdf0e10cSrcweir 
2110*cdf0e10cSrcweir // Diese Methode wird im Dtor vom SwDoc gerufen und loescht den Cache
2111*cdf0e10cSrcweir // der Konturobjekte
2112*cdf0e10cSrcweir void ClrContourCache();
2113*cdf0e10cSrcweir 
2114*cdf0e10cSrcweir 
2115*cdf0e10cSrcweir //------------------ inline impl. ---------------------------------
2116*cdf0e10cSrcweir 
2117*cdf0e10cSrcweir inline const SwTableNode* SwDoc::IsIdxInTbl( const SwNodeIndex& rIdx ) const
2118*cdf0e10cSrcweir {
2119*cdf0e10cSrcweir 	return ((SwDoc*)this)->IsIdxInTbl( rIdx );
2120*cdf0e10cSrcweir }
2121*cdf0e10cSrcweir 
2122*cdf0e10cSrcweir inline SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate )
2123*cdf0e10cSrcweir {
2124*cdf0e10cSrcweir 	if( bCreate && !pNumberFormatter )
2125*cdf0e10cSrcweir 		_CreateNumberFormatter();
2126*cdf0e10cSrcweir 	return pNumberFormatter;
2127*cdf0e10cSrcweir }
2128*cdf0e10cSrcweir 
2129*cdf0e10cSrcweir inline const SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate ) const
2130*cdf0e10cSrcweir {
2131*cdf0e10cSrcweir 	return ((SwDoc*)this)->GetNumberFormatter( bCreate );
2132*cdf0e10cSrcweir }
2133*cdf0e10cSrcweir 
2134*cdf0e10cSrcweir inline void SwDoc::SetOLEPrtNotifyPending( bool bSet )
2135*cdf0e10cSrcweir {
2136*cdf0e10cSrcweir 	mbOLEPrtNotifyPending = bSet;
2137*cdf0e10cSrcweir 	if( !bSet )
2138*cdf0e10cSrcweir 		mbAllOLENotify = sal_False;
2139*cdf0e10cSrcweir }
2140*cdf0e10cSrcweir 
2141*cdf0e10cSrcweir // --> OD 2006-03-14 #i62875#
2142*cdf0e10cSrcweir // namespace <docfunc> for functions and procedures working on a Writer document.
2143*cdf0e10cSrcweir namespace docfunc
2144*cdf0e10cSrcweir {
2145*cdf0e10cSrcweir     /** method to check, if given Writer document contains at least one drawing object
2146*cdf0e10cSrcweir 
2147*cdf0e10cSrcweir         OD 2006-03-17 #i62875#
2148*cdf0e10cSrcweir 
2149*cdf0e10cSrcweir         @author OD
2150*cdf0e10cSrcweir 
2151*cdf0e10cSrcweir         @param p_rDoc
2152*cdf0e10cSrcweir         input parameter - reference to the Writer document, which is investigated.
2153*cdf0e10cSrcweir     */
2154*cdf0e10cSrcweir     bool ExistsDrawObjs( SwDoc& p_rDoc );
2155*cdf0e10cSrcweir 
2156*cdf0e10cSrcweir     /** method to check, if given Writer document contains only drawing objects,
2157*cdf0e10cSrcweir         which are completely on its page.
2158*cdf0e10cSrcweir 
2159*cdf0e10cSrcweir         OD 2006-03-17 #i62875#
2160*cdf0e10cSrcweir 
2161*cdf0e10cSrcweir         @author OD
2162*cdf0e10cSrcweir 
2163*cdf0e10cSrcweir         @param p_rDoc
2164*cdf0e10cSrcweir         input parameter - reference to the Writer document, which is investigated.
2165*cdf0e10cSrcweir     */
2166*cdf0e10cSrcweir     bool AllDrawObjsOnPage( SwDoc& p_rDoc );
2167*cdf0e10cSrcweir 
2168*cdf0e10cSrcweir     /** method to check, if the outline style has to written as a normal list style
2169*cdf0e10cSrcweir 
2170*cdf0e10cSrcweir         OD 2006-09-27 #i69627#
2171*cdf0e10cSrcweir         The outline style has to written as a normal list style, if a parent
2172*cdf0e10cSrcweir         paragraph style of one of the paragraph styles, which are assigned to
2173*cdf0e10cSrcweir         the list levels of the outline style, has a list style set or inherits
2174*cdf0e10cSrcweir         a list style from its parent paragraphs style.
2175*cdf0e10cSrcweir         This information is needed for the OpenDocument file format export.
2176*cdf0e10cSrcweir 
2177*cdf0e10cSrcweir         @author OD
2178*cdf0e10cSrcweir 
2179*cdf0e10cSrcweir         @param rDoc
2180*cdf0e10cSrcweir         input parameter - reference to the text document, which is investigated.
2181*cdf0e10cSrcweir 
2182*cdf0e10cSrcweir         @return boolean
2183*cdf0e10cSrcweir         indicating, if the outline style has to written as a normal list style
2184*cdf0e10cSrcweir     */
2185*cdf0e10cSrcweir     bool HasOutlineStyleToBeWrittenAsNormalListStyle( SwDoc& rDoc );
2186*cdf0e10cSrcweir }
2187*cdf0e10cSrcweir // <--
2188*cdf0e10cSrcweir #endif	//_DOC_HXX
2189