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