xref: /trunk/main/sw/inc/doc.hxx (revision ffd38472365e95f6a578737bc9a5eb0fac624a86)
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 SwDrawModel;
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 declaration
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     SwDrawModel*     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:
718     virtual void setDocReadOnly( sal_Bool b) { bReadOnly = b; }
719     virtual sal_Bool getDocReadOnly() const { return bReadOnly; }
720     virtual void setDocAccTitle( const String& rTitle ) { msDocAccTitle = rTitle; }
721     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;
728     DocumentType    GetDocumentType(){ return meDocType; }
729     void            SetDocumentType( DocumentType eDocType ) { meDocType = eDocType; }
730 
731     /** Life cycle
732     */
733     SwDoc();
734     ~SwDoc();
735 
736     inline bool IsInDtor() const { return mbDtor; }
737 
738     /* @@@MAINTAINABILITY-HORROR@@@
739        Implementation details made public.
740     */
741     SwNodes      & GetNodes()       { return *m_pNodes; }
742     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 SwDrawModel* GetDrawModel() const;
961     virtual SwDrawModel* 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 SwDrawModel* _MakeDrawModel();
973     virtual SwDrawModel* 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     */
1057     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
1062     bool InXMLExport() const            { return mbXMLExport; }
1063     void SetXMLExport( bool bFlag )     { mbXMLExport = bFlag; }
1064 #endif
1065     void SetSelAll( sal_Bool bSel )
1066     {
1067         bIsPrepareSelAll = bSel;
1068     }
1069     sal_Bool IsPrepareSelAll()  { return bIsPrepareSelAll; }
1070     void SetPrepareSelAll() { bIsPrepareSelAll = sal_True; }
1071 
1072     void SetContainsAtPageObjWithContentAnchor( const bool bFlag )
1073     {
1074         mbContainsAtPageObjWithContentAnchor = bFlag;
1075     }
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     //UUUU Helper that checks for unique items for DrawingLayer items of type NameOrIndex
1124     // and evtl. corrects that items to ensure unique names for that type. This call may
1125     // modify/correct entries inside of the given SfxItemSet, and it will apply a name to
1126     // the items in question (what is essential to make the named slots associated with
1127     // these items work for the UNO API and thus e.g. for ODF im/export)
1128     void CheckForUniqueItemForLineFillNameOrIndex(SfxItemSet& rSet);
1129 
1130     sal_Bool SetFlyFrmAttr( SwFrmFmt& rFlyFmt, SfxItemSet& rSet );
1131 
1132     sal_Bool SetFrmFmtToFly( SwFrmFmt& rFlyFmt, SwFrmFmt& rNewFmt,
1133                         SfxItemSet* pSet = 0, sal_Bool bKeepOrient = sal_False );
1134     // --> OD 2009-07-20 #i73249#
1135     void SetFlyFrmTitle( SwFlyFrmFmt& rFlyFrmFmt,
1136                          const String& sNewTitle );
1137     void SetFlyFrmDescription( SwFlyFrmFmt& rFlyFrmFmt,
1138                                const String& sNewDescription );
1139     // <--
1140 
1141     /** Footnotes
1142     */
1143     // Fussnoten Informationen
1144     const SwFtnInfo& GetFtnInfo() const         { return *pFtnInfo; }
1145     void SetFtnInfo(const SwFtnInfo& rInfo);
1146     const SwEndNoteInfo& GetEndNoteInfo() const { return *pEndNoteInfo; }
1147     void SetEndNoteInfo(const SwEndNoteInfo& rInfo);
1148           SwFtnIdxs& GetFtnIdxs()       { return *pFtnIdxs; }
1149     const SwFtnIdxs& GetFtnIdxs() const { return *pFtnIdxs; }
1150     // change footnotes in area
1151     bool SetCurFtn( const SwPaM& rPam, const String& rNumStr,
1152                     sal_uInt16 nNumber, bool bIsEndNote );
1153 
1154     /** Operations on the content of the document e.g.
1155         spell-checking/hyphenating/word-counting
1156     */
1157     ::com::sun::star::uno::Any
1158             Spell( SwPaM&, ::com::sun::star::uno::Reference<
1159                             ::com::sun::star::linguistic2::XSpellChecker1 > &,
1160                    sal_uInt16* pPageCnt, sal_uInt16* pPageSt, bool bGrammarCheck,
1161                    SwConversionArgs *pConvArgs = 0 ) const;
1162 
1163     ::com::sun::star::uno::Reference<
1164         ::com::sun::star::linguistic2::XHyphenatedWord >
1165             Hyphenate( SwPaM *pPam, const Point &rCrsrPos,
1166                        sal_uInt16* pPageCnt, sal_uInt16* pPageSt );
1167 
1168     // count words in pam
1169     void CountWords( const SwPaM& rPaM, SwDocStat& rStat ) const;
1170 
1171 
1172     /** ???
1173     */
1174     // Textbaustein Dokument?
1175     void SetGlossDoc( bool bGlssDc = true ) { mbGlossDoc = bGlssDc; }
1176     bool IsInsOnlyTextGlossary() const      { return mbInsOnlyTxtGlssry; }
1177 
1178     // Abstakt fuellen
1179     void Summary( SwDoc* pExtDoc, sal_uInt8 nLevel, sal_uInt8 nPara, sal_Bool bImpress );
1180 
1181     void ChangeAuthorityData(const SwAuthEntry* pNewData);
1182 
1183     bool IsInCallModified() const      { return mbInCallModified; }
1184     sal_Bool IsInHeaderFooter( const SwNodeIndex& rIdx ) const;
1185     short GetTextDirection( const SwPosition& rPos,
1186                             const Point* pPt = 0 ) const;
1187     sal_Bool IsInVerticalText( const SwPosition& rPos,
1188                                const Point* pPt = 0 ) const;
1189     /** Database ???
1190     */
1191 
1192     /*  Datenbank &&  DB-Manager */
1193     void SetNewDBMgr( SwNewDBMgr* pNewMgr )     { pNewDBMgr = pNewMgr; }
1194     SwNewDBMgr* GetNewDBMgr() const             { return pNewDBMgr; }
1195     void ChangeDBFields( const SvStringsDtor& rOldNames,
1196                         const String& rNewName );
1197     void SetInitDBFields(sal_Bool b);
1198     // Von Feldern verwendete Datenbanken herausfinden
1199     void GetAllUsedDB( SvStringsDtor& rDBNameList,
1200                        const SvStringsDtor* pAllDBNames = 0 );
1201 
1202     void ChgDBData( const SwDBData& rNewData );
1203     SwDBData GetDBData();
1204     const SwDBData& GetDBDesc();
1205     const SwDBData& _GetDBDesc() const { return aDBData; }
1206 
1207     /** Some helper functions
1208     */
1209     String GetUniqueGrfName() const;
1210     String GetUniqueOLEName() const;
1211     String GetUniqueFrameName() const;
1212 
1213     std::set<SwRootFrm*> GetAllLayouts();//swmod 080225
1214 
1215     void SetFlyName( SwFlyFrmFmt& rFmt, const String& rName );
1216     const SwFlyFrmFmt* FindFlyByName( const String& rName, sal_Int8 nNdTyp = 0 ) const;
1217 
1218     void GetGrfNms( const SwFlyFrmFmt& rFmt, String* pGrfName,
1219                     String* pFltName ) const;
1220 
1221     // setze bei allen Flys ohne Namen einen gueltigen (Wird von den Readern
1222     // nach dem Einlesen gerufen )
1223     void SetAllUniqueFlyNames();
1224 
1225         //Zuruecksetzen der Attribute; es werden alle TxtHints und bei
1226         //vollstaendiger Selektion harte Formatierung (AUTO-Formate) entfernt
1227     // --> OD 2008-11-28 #i96644#
1228     // introduce new optional parameter <bSendDataChangedEvents> in order to
1229     // control, if the side effect "send data changed events" is triggered or not.
1230     void ResetAttrs( const SwPaM &rRg,
1231                      sal_Bool bTxtAttr = sal_True,
1232                      const SvUShortsSort* = 0,
1233                      const bool bSendDataChangedEvents = true );
1234     // <--
1235     void RstTxtAttrs(const SwPaM &rRg, sal_Bool bInclRefToxMark = sal_False );
1236 
1237         // Setze das Attribut im angegebenen Format. Ist Undo aktiv, wird
1238         // das alte in die Undo-History aufgenommen
1239     void SetAttr( const SfxPoolItem&, SwFmt& );
1240     void SetAttr( const SfxItemSet&, SwFmt& );
1241 
1242     // --> OD 2008-02-12 #newlistlevelattrs#
1243     // method to reset a certain attribute at the given format
1244     void ResetAttrAtFormat( const sal_uInt16 nWhichId,
1245                             SwFmt& rChangedFormat );
1246     // <--
1247 
1248         // Setze das Attribut als neues default Attribut in diesem Dokument.
1249         // Ist Undo aktiv, wird das alte in die Undo-History aufgenommen
1250     void SetDefault( const SfxPoolItem& );
1251     void SetDefault( const SfxItemSet& );
1252 
1253     // Erfrage das Default Attribut in diesem Dokument.
1254     const SfxPoolItem& GetDefault( sal_uInt16 nFmtHint ) const;
1255     // TextAttribute nicht mehr aufspannen lassen
1256     sal_Bool DontExpandFmt( const SwPosition& rPos, sal_Bool bFlag = sal_True );
1257 
1258     /* Formate */
1259     const SwFrmFmts* GetFrmFmts() const     { return pFrmFmtTbl; }
1260           SwFrmFmts* GetFrmFmts()           { return pFrmFmtTbl; }
1261     const SwCharFmts* GetCharFmts() const   { return pCharFmtTbl;}
1262 
1263     /* LayoutFormate (Rahmen, DrawObjecte), mal const mal nicht */
1264     const SwSpzFrmFmts* GetSpzFrmFmts() const   { return pSpzFrmFmtTbl; }
1265           SwSpzFrmFmts* GetSpzFrmFmts()         { return pSpzFrmFmtTbl; }
1266 
1267     const SwFrmFmt *GetDfltFrmFmt() const   { return pDfltFrmFmt; }
1268           SwFrmFmt *GetDfltFrmFmt()         { return pDfltFrmFmt; }
1269     const SwFrmFmt *GetEmptyPageFmt() const { return pEmptyPageFmt; }
1270           SwFrmFmt *GetEmptyPageFmt()       { return pEmptyPageFmt; }
1271     const SwFrmFmt *GetColumnContFmt() const{ return pColumnContFmt; }
1272           SwFrmFmt *GetColumnContFmt()      { return pColumnContFmt; }
1273     const SwCharFmt *GetDfltCharFmt() const { return pDfltCharFmt;}
1274           SwCharFmt *GetDfltCharFmt()       { return pDfltCharFmt;}
1275 
1276     // Returns the interface of the management of (auto)styles
1277     IStyleAccess& GetIStyleAccess() { return *pStyleAccess; }
1278 
1279     // Remove all language dependencies from all existing formats
1280     void RemoveAllFmtLanguageDependencies();
1281 
1282     SwFrmFmt  *MakeFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom,
1283                           sal_Bool bBroadcast = sal_False, sal_Bool bAuto = sal_True);
1284     void       DelFrmFmt( SwFrmFmt *pFmt, sal_Bool bBroadcast = sal_False );
1285     SwFrmFmt* FindFrmFmtByName( const String& rName ) const
1286         {   return (SwFrmFmt*)FindFmtByName( (SvPtrarr&)*pFrmFmtTbl, rName ); }
1287 
1288     // --> OD 2005-01-13 #i40550#
1289     SwCharFmt *MakeCharFmt(const String &rFmtName, SwCharFmt *pDerivedFrom,
1290                            sal_Bool bBroadcast = sal_False,
1291                            sal_Bool bAuto = sal_True );
1292     // <--
1293     void       DelCharFmt(sal_uInt16 nFmt, sal_Bool bBroadcast = sal_False);
1294     void       DelCharFmt(SwCharFmt* pFmt, sal_Bool bBroadcast = sal_False);
1295     SwCharFmt* FindCharFmtByName( const String& rName ) const
1296         {   return (SwCharFmt*)FindFmtByName( (SvPtrarr&)*pCharFmtTbl, rName ); }
1297 
1298     /* Formatcollections (Vorlagen) */
1299     // TXT
1300     const SwTxtFmtColl* GetDfltTxtFmtColl() const { return pDfltTxtFmtColl; }
1301     const SwTxtFmtColls *GetTxtFmtColls() const { return pTxtFmtCollTbl; }
1302     // --> OD 2005-01-13 #i40550#
1303     SwTxtFmtColl *MakeTxtFmtColl( const String &rFmtName,
1304                                   SwTxtFmtColl *pDerivedFrom,
1305                                   sal_Bool bBroadcast = sal_False,
1306                                   sal_Bool bAuto = sal_True );
1307     // <--
1308     SwConditionTxtFmtColl* MakeCondTxtFmtColl( const String &rFmtName,
1309                                                SwTxtFmtColl *pDerivedFrom,
1310                                                sal_Bool bBroadcast = sal_False);
1311     void DelTxtFmtColl(sal_uInt16 nFmt, sal_Bool bBroadcast = sal_False);
1312     void DelTxtFmtColl( SwTxtFmtColl* pColl, sal_Bool bBroadcast = sal_False );
1313 
1314     // Add 4th optional parameter <bResetListAttrs>.
1315     // 'side effect' of <SetTxtFmtColl> with <bReset = true> is that the hard
1316     // attributes of the affected text nodes are cleared, except the break
1317     // attribute, the page description attribute and the list style attribute.
1318     // The new parameter <bResetListAttrs> indicates, if the list attributes
1319     // (list style, restart at and restart with) are cleared as well in case
1320     // that <bReset = true> and the paragraph style has a list style attribute set.
1321     sal_Bool SetTxtFmtColl(
1322         const SwPaM &rRg,
1323         SwTxtFmtColl *pFmt,
1324         const bool bReset = true,
1325         const bool bResetListAttrs = false );
1326 
1327     SwTxtFmtColl* FindTxtFmtCollByName( const String& rName ) const
1328         {   return (SwTxtFmtColl*)FindFmtByName( (SvPtrarr&)*pTxtFmtCollTbl, rName ); }
1329 
1330     void ChkCondColls();
1331 
1332         // GRF
1333     const SwGrfFmtColl* GetDfltGrfFmtColl() const   { return pDfltGrfFmtColl; }
1334     const SwGrfFmtColls *GetGrfFmtColls() const     { return pGrfFmtCollTbl; }
1335     SwGrfFmtColl *MakeGrfFmtColl(const String &rFmtName,
1336                                     SwGrfFmtColl *pDerivedFrom);
1337     SwGrfFmtColl* FindGrfFmtCollByName( const String& rName ) const
1338         {   return (SwGrfFmtColl*)FindFmtByName( (SvPtrarr&)*pGrfFmtCollTbl, rName ); }
1339 
1340         // Tabellen-Formate
1341     const SwFrmFmts* GetTblFrmFmts() const  { return pTblFrmFmtTbl; }
1342           SwFrmFmts* GetTblFrmFmts()        { return pTblFrmFmtTbl; }
1343     sal_uInt16 GetTblFrmFmtCount( sal_Bool bUsed ) const;
1344     SwFrmFmt& GetTblFrmFmt(sal_uInt16 nFmt, sal_Bool bUsed ) const;
1345     SwTableFmt* MakeTblFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom);
1346     void        DelTblFrmFmt( SwTableFmt* pFmt );
1347     SwTableFmt* FindTblFmtByName( const String& rName, sal_Bool bAll = sal_False ) const;
1348 
1349     //Rahmenzugriff
1350     //iterieren ueber Flys - fuer Basic-Collections
1351     sal_uInt16 GetFlyCount( FlyCntType eType = FLYCNTTYPE_ALL) const;
1352     SwFrmFmt* GetFlyNum(sal_uInt16 nIdx, FlyCntType eType = FLYCNTTYPE_ALL);
1353 
1354 
1355     // kopiere die Formate in die eigenen Arrays und returne diese
1356     SwFrmFmt  *CopyFrmFmt ( const SwFrmFmt& );
1357     SwCharFmt *CopyCharFmt( const SwCharFmt& );
1358     SwTxtFmtColl* CopyTxtColl( const SwTxtFmtColl& rColl );
1359     SwGrfFmtColl* CopyGrfColl( const SwGrfFmtColl& rColl );
1360 
1361         // ersetze alle Formate mit denen aus rSource
1362     void ReplaceStyles( SwDoc& rSource );
1363 
1364     // erfrage ob die Absatz-/Zeichen-/Rahmen-/Seiten - Vorlage benutzt wird
1365     sal_Bool IsUsed( const SwModify& ) const;
1366     sal_Bool IsUsed( const SwNumRule& ) const;
1367 
1368         // setze den Namen der neu geladenen Dokument-Vorlage
1369     sal_uInt16 SetDocPattern( const String& rPatternName );
1370         // gebe den Dok-VorlagenNamen zurueck. !!! Kann auch 0 sein !!!
1371     String* GetDocPattern( sal_uInt16 nPos ) const { return aPatternNms[nPos]; }
1372 
1373         // Loesche alle nicht referenzierten FeldTypen
1374     void GCFieldTypes();                // impl. in docfld.cxx
1375 
1376         // akt. Dokument mit Textbausteindokument verbinden/erfragen
1377     void SetGlossaryDoc( SwDoc* pDoc ) { pGlossaryDoc = pDoc; }
1378 
1379     // travel over PaM Ring
1380     sal_Bool InsertGlossary( SwTextBlocks& rBlock, const String& rEntry,
1381                         SwPaM& rPaM, SwCrsrShell* pShell = 0);
1382 
1383     // get the set of printable pages for the XRenderable API by
1384     // evaluating the respective settings (see implementation)
1385     void CalculatePagesForPrinting( const SwRootFrm& rLayout, SwRenderData &rData, const SwPrintUIOptions &rOptions, bool bIsPDFExport,
1386             sal_Int32 nDocPageCount );
1387     void UpdatePagesForPrintingWithPostItData( SwRenderData &rData, const SwPrintUIOptions &rOptions, bool bIsPDFExport,
1388             sal_Int32 nDocPageCount );
1389     void CalculatePagePairsForProspectPrinting( const SwRootFrm& rLayout, SwRenderData &rData, const SwPrintUIOptions &rOptions,
1390             sal_Int32 nDocPageCount );
1391 
1392         //PageDescriptor-Schnittstelle
1393     sal_uInt16 GetPageDescCnt() const { return aPageDescs.Count(); }
1394     const SwPageDesc& GetPageDesc( const sal_uInt16 i ) const { return *aPageDescs[i]; }
1395     SwPageDesc* FindPageDescByName( const String& rName,
1396                                     sal_uInt16* pPos = 0 ) const;
1397 
1398         // kopiere den gesamten PageDesc - ueber Dokumentgrenzen und "tief"!
1399         // optional kann das kopieren der PoolFmtId, -HlpId verhindert werden
1400     void CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc,
1401                         sal_Bool bCopyPoolIds = sal_True );
1402 
1403         // kopiere die Kopzeile (mit dem Inhalt!) aus dem SrcFmt
1404         // ins DestFmt ( auch ueber Doc grenzen hinaus!)
1405     void CopyHeader( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt )
1406         { CopyPageDescHeaderFooterImpl( true, rSrcFmt, rDestFmt ); }
1407         // kopiere die Fusszeile (mit dem Inhalt!) aus dem SrcFmt
1408         // ins DestFmt ( auch ueber Doc grenzen hinaus!)
1409     void CopyFooter( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt )
1410         { CopyPageDescHeaderFooterImpl( false, rSrcFmt, rDestFmt ); }
1411 
1412         //fuer Reader
1413 
1414     SwPageDesc * GetPageDesc( const String & rName );
1415     SwPageDesc& _GetPageDesc( sal_uInt16 i ) const { return *aPageDescs[i]; }
1416     void ChgPageDesc( const String & rName, const SwPageDesc& );
1417     void ChgPageDesc( sal_uInt16 i, const SwPageDesc& );
1418     sal_Bool FindPageDesc( const String & rName, sal_uInt16 * pFound );
1419     // -> #116530#
1420     void DelPageDesc( const String & rName, sal_Bool bBroadcast = sal_False);
1421     void DelPageDesc( sal_uInt16 i, sal_Bool bBroadcast = sal_False );
1422     // <- #116530#
1423     void PreDelPageDesc(SwPageDesc * pDel); // #i7983#
1424     // -> #116530#
1425     sal_uInt16 MakePageDesc( const String &rName, const SwPageDesc* pCpy = 0,
1426                              sal_Bool bRegardLanguage = sal_True,
1427                              sal_Bool bBroadcast = sal_False);
1428     void BroadcastStyleOperation(String rName, SfxStyleFamily eFamily,
1429                                  sal_uInt16 nOp);
1430     // <- #116530#
1431 
1432 
1433     // --> FME 2005-03-16 #i44963# The HTML import sometimes overwrites the
1434     // page sizes set in the page descriptions. This function is used to
1435     // correct this.
1436     void CheckDefaultPageFmt();
1437     // <--
1438 
1439         // Methoden fuer die Verzeichnisse:
1440         // - Verzeichnismarke einfuegen loeschen travel
1441     sal_uInt16 GetCurTOXMark( const SwPosition& rPos, SwTOXMarks& ) const;
1442     void DeleteTOXMark( const SwTOXMark* pTOXMark );
1443     const SwTOXMark& GotoTOXMark( const SwTOXMark& rCurTOXMark,
1444                                 SwTOXSearch eDir, sal_Bool bInReadOnly );
1445 
1446         // - Verzeichnis einfuegen, und bei Bedarf erneuern
1447     const SwTOXBaseSection* InsertTableOf( const SwPosition& rPos,
1448                                             const SwTOXBase& rTOX,
1449                                             const SfxItemSet* pSet = 0,
1450                                             sal_Bool bExpand = sal_False );
1451     const SwTOXBaseSection* InsertTableOf( sal_uLong nSttNd, sal_uLong nEndNd,
1452                                             const SwTOXBase& rTOX,
1453                                             const SfxItemSet* pSet = 0                                          );
1454     const SwTOXBase* GetCurTOX( const SwPosition& rPos ) const;
1455     const SwAttrSet& GetTOXBaseAttrSet(const SwTOXBase& rTOX) const;
1456 
1457     sal_Bool DeleteTOX( const SwTOXBase& rTOXBase, sal_Bool bDelNodes = sal_False );
1458     String GetUniqueTOXBaseName( const SwTOXType& rType,
1459                                 const String* pChkStr = 0 ) const;
1460 
1461     sal_Bool SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName);
1462     void SetTOXBaseProtection(const SwTOXBase& rTOXBase, sal_Bool bProtect);
1463 
1464     // nach einlesen einer Datei alle Verzeichnisse updaten
1465     void SetUpdateTOX( bool bFlag = true )     { mbUpdateTOX = bFlag; }
1466     bool IsUpdateTOX() const                   { return mbUpdateTOX; }
1467 
1468     const String&   GetTOIAutoMarkURL() const {return sTOIAutoMarkURL;}
1469     void            SetTOIAutoMarkURL(const String& rSet)  {sTOIAutoMarkURL = rSet;}
1470     void            ApplyAutoMark();
1471 
1472     bool IsInReading() const                    { return mbInReading; }
1473     void SetInReading( bool bNew )              { mbInReading = bNew; }
1474 
1475     bool IsClipBoard() const                    { return mbClipBoard; }
1476     // N.B.: must be called right after constructor! (@see GetXmlIdRegistry)
1477     void SetClipBoard( bool bNew )              { mbClipBoard = bNew; }
1478 
1479     bool IsColumnSelection() const              { return mbColumnSelection; }
1480     void SetColumnSelection( bool bNew )        { mbColumnSelection = bNew; }
1481 
1482     bool IsInXMLImport() const { return mbInXMLImport; }
1483     void SetInXMLImport( bool bNew ) { mbInXMLImport = bNew; }
1484 
1485     // - Verzeichnis-Typen verwalten
1486     sal_uInt16 GetTOXTypeCount( TOXTypes eTyp ) const;
1487     const SwTOXType* GetTOXType( TOXTypes eTyp, sal_uInt16 nId ) const;
1488     sal_Bool DeleteTOXType( TOXTypes eTyp, sal_uInt16 nId );
1489     const SwTOXType* InsertTOXType( const SwTOXType& rTyp );
1490     const SwTOXTypes& GetTOXTypes() const { return *pTOXTypes; }
1491 
1492     const SwTOXBase*    GetDefaultTOXBase( TOXTypes eTyp, sal_Bool bCreate = sal_False );
1493     void                SetDefaultTOXBase(const SwTOXBase& rBase);
1494 
1495     // - Schluessel fuer die Indexverwaltung
1496     sal_uInt16 GetTOIKeys( SwTOIKeyType eTyp, SvStringsSort& rArr ) const;
1497 
1498     // Sortieren Tabellen Text
1499     sal_Bool SortTbl(const SwSelBoxes& rBoxes, const SwSortOptions&);
1500     sal_Bool SortText(const SwPaM&, const SwSortOptions&);
1501 
1502         // korrigiere die im Dokument angemeldeten SwPosition-Objecte,
1503         // wie z.B. die ::com::sun::star::text::Bookmarks oder die Verzeichnisse.
1504         // JP 22.06.95: ist bMoveCrsr gesetzt, verschiebe auch die Crsr
1505 
1506     // Setzt alles in rOldNode auf rNewPos + Offset
1507     void CorrAbs(
1508         const SwNodeIndex& rOldNode,
1509         const SwPosition& rNewPos,
1510         const xub_StrLen nOffset = 0,
1511         sal_Bool bMoveCrsr = sal_False );
1512 
1513     // Setzt alles im Bereich von [rStartNode, rEndNode] nach rNewPos
1514     void CorrAbs(
1515         const SwNodeIndex& rStartNode,
1516         const SwNodeIndex& rEndNode,
1517         const SwPosition& rNewPos,
1518         sal_Bool bMoveCrsr = sal_False );
1519 
1520     // Setzt alles im Bereich von rRange nach rNewPos
1521     void CorrAbs(
1522         const SwPaM& rRange,
1523         const SwPosition& rNewPos,
1524         sal_Bool bMoveCrsr = sal_False );
1525 
1526     // Setzt alles in rOldNode auf relative Pos
1527     void CorrRel(
1528         const SwNodeIndex& rOldNode,
1529         const SwPosition& rNewPos,
1530         const xub_StrLen nOffset = 0,
1531         sal_Bool bMoveCrsr = sal_False );
1532 
1533         // GliederungsRegeln erfragen / setzen
1534     // --> OD 2005-11-02 #i51089 - TUNING#
1535     inline SwNumRule* GetOutlineNumRule() const
1536     {
1537         return pOutlineRule;
1538     }
1539     // <--
1540     void SetOutlineNumRule( const SwNumRule& rRule );
1541     void PropagateOutlineRule();
1542 
1543     // Gliederung - hoch-/runterstufen
1544     sal_Bool OutlineUpDown( const SwPaM& rPam, short nOffset = 1 );
1545     // Gliederung - hoch-/runtermoven
1546     sal_Bool MoveOutlinePara( const SwPaM& rPam, short nOffset = 1);
1547         // zu diesem Gliederungspunkt
1548     sal_Bool GotoOutline( SwPosition& rPos, const String& rName ) const;
1549     // die Aenderungen an den Gliederungsvorlagen in die OutlineRule uebernehmen
1550 
1551     // Optional parameter <bResetIndentAttrs> - default value false:
1552     //  If <bResetIndentAttrs> equals true, the indent attributes "before text"
1553     //  and "first line indent" are additionally reset at the provided PaM, if
1554     //  the list style makes use of the new list level attributes.
1555     // Parameters <bCreateNewList> and <sContinuedListId>:
1556     //  <bCreateNewList> indicates, if a new list is created by applying the given list style.
1557     //  If <bCreateNewList> equals false, <sContinuedListId> may contain the
1558     //  list Id of a list, which has to be continued by applying the given list style
1559     void SetNumRule( const SwPaM&,
1560                      const SwNumRule&,
1561                      const bool bCreateNewList,
1562                      const String sContinuedListId = String(),
1563                      bool bSetItem = true,
1564                      const bool bResetIndentAttrs = false );
1565 
1566     void SetCounted( const SwPaM&, bool bCounted);
1567 
1568     void MakeUniqueNumRules(const SwPaM & rPaM);
1569 
1570     void SetNumRuleStart( const SwPosition& rPos, sal_Bool bFlag = sal_True );
1571     void SetNodeNumStart( const SwPosition& rPos, sal_uInt16 nStt );
1572 
1573     SwNumRule* GetNumRuleAtPos( const SwPosition& rPos ) const;
1574 
1575     const SwNumRuleTbl& GetNumRuleTbl() const { return *pNumRuleTbl; }
1576 
1577     // #i36749#
1578     /**
1579        Add numbering rule to document.
1580 
1581        @param pRule    rule to add
1582     */
1583     void AddNumRule(SwNumRule * pRule);
1584 
1585     // --> OD 2008-02-11 #newlistlevelattrs#
1586     // add optional parameter <eDefaultNumberFormatPositionAndSpaceMode>
1587     sal_uInt16 MakeNumRule( const String &rName,
1588         const SwNumRule* pCpy = 0,
1589         sal_Bool bBroadcast = sal_False,
1590         const SvxNumberFormat::SvxNumPositionAndSpaceMode eDefaultNumberFormatPositionAndSpaceMode =
1591             SvxNumberFormat::LABEL_WIDTH_AND_POSITION );
1592     // <--
1593     sal_uInt16 FindNumRule( const String& rName ) const;
1594     SwNumRule* FindNumRulePtr( const String& rName ) const;
1595 
1596     // loeschen geht nur, wenn die ::com::sun::star::chaos::Rule niemand benutzt!
1597     // #106897#
1598     sal_Bool RenameNumRule(const String & aOldName, const String & aNewName,
1599                            sal_Bool bBroadcast = sal_False);
1600     sal_Bool DelNumRule( const String& rName, sal_Bool bBroadCast = sal_False );
1601     String GetUniqueNumRuleName( const String* pChkStr = 0, sal_Bool bAutoNum = sal_True ) const;
1602 
1603     void UpdateNumRule();   // alle invaliden Updaten
1604     // #106897#
1605     void ChgNumRuleFmts( const SwNumRule& rRule, const String * pOldName = 0 );
1606     sal_Bool ReplaceNumRule( const SwPosition& rPos, const String& rOldRule,
1607                         const String& rNewRule );
1608 
1609         // zum naechsten/vorhergehenden Punkt auf gleicher Ebene
1610     sal_Bool GotoNextNum( SwPosition&, sal_Bool bOverUpper = sal_True,
1611                         sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 );
1612     sal_Bool GotoPrevNum( SwPosition&, sal_Bool bOverUpper = sal_True,
1613                         sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 );
1614 
1615     // #i23731#
1616     /** Searches for a text node with a numbering rule.
1617 
1618        OD 2005-10-24 #i55391# - add optional parameter <bInvestigateStartNode>
1619        OD 2008-03-18 #refactorlists# - add output parameter <sListId>
1620 
1621        \param rPos         position to start search
1622        \param bForward     - sal_True:  search forward
1623                            - sal_False: search backward
1624        \param bNum         - sal_True:  search for enumeration
1625                            - sal_False: search for itemize
1626        \param bOutline     - sal_True:  search for outline numbering rule
1627                            - sal_False: search for non-outline numbering rule
1628        \param nNonEmptyAllowed   number of non-empty paragraphs allowed between
1629                                  rPos and found paragraph
1630 
1631         @param sListId
1632         output parameter - in case a list style is found, <sListId> holds the
1633         list id, to which the text node belongs, which applies the found list style.
1634 
1635         @param bInvestigateStartNode
1636         input parameter - boolean, indicating, if start node, determined by given
1637         start position has to be investigated or not.
1638      */
1639     const SwNumRule * SearchNumRule(const SwPosition & rPos,
1640                                     const bool bForward,
1641                                     const bool bNum,
1642                                     const bool bOutline,
1643                                     int nNonEmptyAllowed,
1644                                     String& sListId,
1645                                     const bool bInvestigateStartNode = false );
1646 
1647         // Absaetze ohne Numerierung, aber mit Einzuegen
1648     sal_Bool NoNum( const SwPaM& );
1649         // Loeschen, Splitten der Aufzaehlungsliste
1650     void DelNumRules( const SwPaM& );
1651 
1652     // Invalidates all numrules
1653     void InvalidateNumRules();
1654 
1655         // Hoch-/Runterstufen
1656     sal_Bool NumUpDown( const SwPaM&, sal_Bool bDown = sal_True );
1657         // Bewegt selektierte Absaetze (nicht nur Numerierungen)
1658         // entsprechend des Offsets. (negativ: zum Doc-Anf.)
1659     sal_Bool MoveParagraph( const SwPaM&, long nOffset = 1, sal_Bool bIsOutlMv = sal_False );
1660         // No-/Numerierung ueber Delete/Backspace ein/abschalten #115901#
1661     sal_Bool NumOrNoNum( const SwNodeIndex& rIdx, sal_Bool bDel = sal_False);
1662         // Animation der Grafiken stoppen
1663     void StopNumRuleAnimations( OutputDevice* );
1664 
1665         // fuege eine neue Tabelle auf der Position rPos ein. (es
1666         // wird vor dem Node eingefuegt !!)
1667         //JP 28.10.96:
1668         //  fuer AutoFormat bei der Eingabe: dann muessen die Spalten
1669         //  auf die vordefinierten Breite gesetzt werden. Im Array stehen die
1670         //  Positionen der Spalten!! (nicht deren Breite!)
1671     /* #109161# new parameter bCalledFromShell:
1672 
1673        sal_True: called from shell -> propagate existing adjust item at
1674        rPos to every new cell. A existing adjust item in the table
1675        heading or table contents paragraph style prevent that
1676        propagation.
1677 
1678        sal_False: do not propagate
1679     */
1680     const SwTable* InsertTable( const SwInsertTableOptions& rInsTblOpts,  // HEADLINE_NO_BORDER
1681                                 const SwPosition& rPos, sal_uInt16 nRows,
1682                                 sal_uInt16 nCols, short eAdjust,
1683                                 const SwTableAutoFmt* pTAFmt = 0,
1684                                 const SvUShorts* pColArr = 0,
1685                                 sal_Bool bCalledFromShell = sal_False,
1686                                 sal_Bool bNewModel = sal_True );
1687 
1688     // steht der Index in einer Tabelle, dann returne den TableNode sonst 0
1689                  SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx );
1690     inline const SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx ) const;
1691 
1692         // erzeuge aus dem makierten Bereich eine ausgeglichene Tabelle
1693     const SwTable* TextToTable( const SwInsertTableOptions& rInsTblOpts, // HEADLINE_NO_BORDER,
1694                                 const SwPaM& rRange, sal_Unicode cCh,
1695                                 short eAdjust,
1696                                 const SwTableAutoFmt* = 0 );
1697     // text to table conversion - API support
1698     const SwTable* TextToTable( const std::vector< std::vector<SwNodeRange> >& rTableNodes );
1699         // erzeuge aus der Tabelle wieder normalen Text
1700     sal_Bool TableToText( const SwTableNode* pTblNd, sal_Unicode cCh );
1701         // einfuegen von Spalten/Zeilen in der Tabelle
1702     sal_Bool InsertCol( const SwCursor& rCursor,
1703                     sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1704     sal_Bool InsertCol( const SwSelBoxes& rBoxes,
1705                     sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1706     sal_Bool InsertRow( const SwCursor& rCursor,
1707                     sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1708     sal_Bool InsertRow( const SwSelBoxes& rBoxes,
1709                     sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True );
1710         // loeschen von Spalten/Zeilen in der Tabelle
1711     sal_Bool DeleteRowCol( const SwSelBoxes& rBoxes, bool bColumn = false );
1712     sal_Bool DeleteRow( const SwCursor& rCursor );
1713     sal_Bool DeleteCol( const SwCursor& rCursor );
1714         // teilen / zusammenfassen von Boxen in der Tabelle
1715     sal_Bool SplitTbl( const SwSelBoxes& rBoxes, sal_Bool bVert = sal_True,
1716                        sal_uInt16 nCnt = 1, sal_Bool bSameHeight = sal_False );
1717         // returnt den enum TableMergeErr
1718     sal_uInt16 MergeTbl( SwPaM& rPam );
1719     String GetUniqueTblName() const;
1720     sal_Bool IsInsTblFormatNum() const;
1721     sal_Bool IsInsTblChangeNumFormat() const;
1722     sal_Bool IsInsTblAlignNum() const;
1723 
1724         // aus der FEShell wg.. Undo und bModified
1725     void GetTabCols( SwTabCols &rFill, const SwCursor* pCrsr,
1726                     const SwCellFrm* pBoxFrm = 0 ) const;
1727     void SetTabCols( const SwTabCols &rNew, sal_Bool bCurRowOnly,
1728                     const SwCursor* pCrsr, const SwCellFrm* pBoxFrm = 0 );
1729     void GetTabRows( SwTabCols &rFill, const SwCursor* pCrsr,
1730                     const SwCellFrm* pBoxFrm = 0 ) const;
1731     void SetTabRows( const SwTabCols &rNew, sal_Bool bCurColOnly, const SwCursor* pCrsr,
1732                      const SwCellFrm* pBoxFrm = 0 );
1733 
1734 
1735     // Direktzugriff fuer Uno
1736     void SetTabCols(SwTable& rTab, const SwTabCols &rNew, const SwTabCols &rOld,
1737                                     const SwTableBox *pStart, sal_Bool bCurRowOnly);
1738 
1739     void SetRowsToRepeat( SwTable &rTable, sal_uInt16 nSet );
1740 
1741         // AutoFormat fuer die Tabelle/TabellenSelection
1742     sal_Bool SetTableAutoFmt( const SwSelBoxes& rBoxes, const SwTableAutoFmt& rNew );
1743         // Erfrage wie attributiert ist
1744     sal_Bool GetTableAutoFmt( const SwSelBoxes& rBoxes, SwTableAutoFmt& rGet );
1745         // setze das InsertDB als Tabelle Undo auf:
1746     void AppendUndoForInsertFromDB( const SwPaM& rPam, sal_Bool bIsTable );
1747         // setze die Spalten/Zeilen/ZTellen Breite/Hoehe
1748     sal_Bool SetColRowWidthHeight( SwTableBox& rAktBox, sal_uInt16 eType,
1749                                 SwTwips nAbsDiff, SwTwips nRelDiff );
1750     SwTableBoxFmt* MakeTableBoxFmt();
1751     SwTableLineFmt* MakeTableLineFmt();
1752     // teste ob die Box ein numerischen Wert darstellt und aender dann ggfs.
1753     // das Format der Box
1754     void ChkBoxNumFmt( SwTableBox& rAktBox, sal_Bool bCallUpdate );
1755     void SetTblBoxFormulaAttrs( SwTableBox& rBox, const SfxItemSet& rSet );
1756     void ClearBoxNumAttrs( const SwNodeIndex& rNode );
1757 
1758     sal_Bool InsCopyOfTbl( SwPosition& rInsPos, const SwSelBoxes& rBoxes,
1759                         const SwTable* pCpyTbl = 0, sal_Bool bCpyName = sal_False,
1760                         sal_Bool bCorrPos = sal_False );
1761 
1762     sal_Bool UnProtectCells( const String& rTblName );
1763     sal_Bool UnProtectCells( const SwSelBoxes& rBoxes );
1764     sal_Bool UnProtectTbls( const SwPaM& rPam );
1765     sal_Bool HasTblAnyProtection( const SwPosition* pPos,
1766                               const String* pTblName = 0,
1767                               sal_Bool* pFullTblProtection = 0 );
1768 
1769     // Tabelle an der Position in der GrundLine aufsplitten, sprich eine
1770     // neue Tabelle erzeugen.
1771     sal_Bool SplitTable( const SwPosition& rPos, sal_uInt16 eMode = 0,
1772                         sal_Bool bCalcNewSize = sal_False );
1773     // und die Umkehrung davon. rPos muss in der Tabelle stehen, die bestehen
1774     // bleibt. Das Flag besagt ob die aktuelle mit der davor oder dahinter
1775     // stehenden vereint wird.
1776     sal_Bool MergeTable( const SwPosition& rPos, sal_Bool bWithPrev = sal_True,
1777                         sal_uInt16 nMode = 0 );
1778 
1779     // Charts der angegebenen Tabelle zum Update bewegen
1780     void UpdateCharts( const String &rName ) const;
1781     // update all charts, for that exists any table
1782     void UpdateAllCharts()          { DoUpdateAllCharts( 0 ); }
1783     // Tabelle wird umbenannt und aktualisiert die Charts
1784     void SetTableName( SwFrmFmt& rTblFmt, const String &rNewName );
1785 
1786     // returne zum Namen die im Doc gesetzte Referenz
1787     const SwFmtRefMark* GetRefMark( const String& rName ) const;
1788     // returne die RefMark per Index - fuer Uno
1789     const SwFmtRefMark* GetRefMark( sal_uInt16 nIndex ) const;
1790     // returne die Namen aller im Doc gesetzten Referenzen.
1791     //  Ist der ArrayPointer 0 dann returne nur, ob im Doc. eine RefMark
1792     //  gesetzt ist
1793     sal_uInt16 GetRefMarks( SvStringsDtor* = 0 ) const;
1794 
1795     //Einfuegen einer Beschriftung - falls ein FlyFormat erzeugt wird, so
1796     // returne dieses.
1797     SwFlyFrmFmt* InsertLabel( const SwLabelType eType, const String &rTxt, const String& rSeparator,
1798                     const String& rNumberingSeparator,
1799                     const sal_Bool bBefore, const sal_uInt16 nId, const sal_uLong nIdx,
1800                     const String& rCharacterStyle,
1801                     const sal_Bool bCpyBrd = sal_True );
1802     SwFlyFrmFmt* InsertDrawLabel(
1803         const String &rTxt, const String& rSeparator, const String& rNumberSeparator,
1804         const sal_uInt16 nId, const String& rCharacterStyle, SdrObject& rObj );
1805 
1806     // erfrage den Attribut Pool
1807     const SwAttrPool& GetAttrPool() const   { return *mpAttrPool; }
1808           SwAttrPool& GetAttrPool()         { return *mpAttrPool; }
1809 
1810     // suche ueber das Layout eine EditShell und ggfs. eine ViewShell
1811     SwEditShell* GetEditShell( ViewShell** ppSh = 0 ) const;
1812     ::sw::IShellCursorSupplier * GetIShellCursorSupplier();
1813 
1814     // OLE 2.0-Benachrichtung
1815     inline       void  SetOle2Link(const Link& rLink) {aOle2Link = rLink;}
1816     inline const Link& GetOle2Link() const {return aOle2Link;}
1817 
1818     // insert section (the ODF kind of section, not the nodesarray kind)
1819     SwSection * InsertSwSection(SwPaM const& rRange, SwSectionData &,
1820             SwTOXBase const*const pTOXBase = 0,
1821             SfxItemSet const*const pAttr = 0, bool const bUpdate = true);
1822     sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange,
1823                                 const SwNode** ppSttNd = 0 ) const;
1824     SwSection* GetCurrSection( const SwPosition& rPos ) const;
1825     SwSectionFmts& GetSections() { return *pSectionFmtTbl; }
1826     const SwSectionFmts& GetSections() const { return *pSectionFmtTbl; }
1827     SwSectionFmt *MakeSectionFmt( SwSectionFmt *pDerivedFrom );
1828     void DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes = sal_False );
1829     void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
1830             SfxItemSet const*const = 0, bool const bPreventLinkUpdate = false);
1831     String GetUniqueSectionName( const String* pChkStr = 0 ) const;
1832 
1833     /* @@@MAINTAINABILITY-HORROR@@@
1834        The model should not have anything to do with a shell.
1835        Unnecessary compile/link time dependency.
1836     */
1837     // Pointer auf die SfxDocShell vom Doc, kann 0 sein !!!
1838           SwDocShell* GetDocShell()         { return pDocShell; }
1839     const SwDocShell* GetDocShell() const   { return pDocShell; }
1840     void SetDocShell( SwDocShell* pDSh );
1841 
1842     void ShareLayout( boost::shared_ptr<SwRootFrm>& rPtr);
1843 
1844     // in case during copying of embedded object a new shell is created,
1845     // it should be set here and cleaned later
1846     void SetTmpDocShell( SfxObjectShellLock rLock )    { xTmpDocShell = rLock; }
1847     SfxObjectShellLock GetTmpDocShell()    { return xTmpDocShell; }
1848 
1849     // fuer die TextBausteine - diese habe nur ein SvPersist zur
1850     // Verfuegung
1851     SfxObjectShell* GetPersist() const;
1852 
1853     // Pointer auf den Storage des SfxDocShells, kann 0 sein !!!
1854     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > GetDocStorage();
1855 
1856         // abfrage/setze Flag, ob das Dokument im asynchronen Laden ist
1857     bool IsInLoadAsynchron() const             { return mbInLoadAsynchron; }
1858     void SetInLoadAsynchron( bool bFlag )       { mbInLoadAsynchron = bFlag; }
1859 
1860     // erzeuge um das zu Servende Object eine Selektion
1861     sal_Bool SelectServerObj( const String& rStr, SwPaM*& rpPam,
1862                             SwNodeRange*& rpRange ) const;
1863 
1864     // fuer Drag&Move: ( z.B. RefMarks "verschieben" erlauben )
1865     bool IsCopyIsMove() const              { return mbCopyIsMove; }
1866     void SetCopyIsMove( bool bFlag )        { mbCopyIsMove = bFlag; }
1867 
1868     SwDrawContact* GroupSelection( SdrView& );
1869     void UnGroupSelection( SdrView& );
1870     sal_Bool DeleteSelection( SwDrawView& );
1871 
1872     // Invalidiert OnlineSpell-WrongListen
1873     void SpellItAgainSam( sal_Bool bInvalid, sal_Bool bOnlyWrong, sal_Bool bSmartTags );
1874     void InvalidateAutoCompleteFlag();
1875 
1876     // <--
1877     void SetCalcFieldValueHdl(Outliner* pOutliner);
1878 
1879     // erfrage ob die ::com::sun::star::util::URL besucht war. Uebers Doc, falls nur ein ::com::sun::star::text::Bookmark
1880     // angegeben ist. Dann muss der Doc. Name davor gesetzt werden!
1881     sal_Bool IsVisitedURL( const String& rURL ) const;
1882 
1883     // speicher die akt. Werte fuer die automatische Aufnahme von Ausnahmen
1884     // in die Autokorrektur
1885     void SetAutoCorrExceptWord( SwAutoCorrExceptWord* pNew );
1886     SwAutoCorrExceptWord* GetAutoCorrExceptWord()       { return pACEWord; }
1887 
1888     const SwFmtINetFmt* FindINetAttr( const String& rName ) const;
1889 
1890     // rufe ins dunkle Basic, mit evt. Return String
1891     sal_Bool ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 );
1892     // rufe ins dunkle Basic/JavaScript
1893     sal_uInt16 CallEvent( sal_uInt16 nEvent, const SwCallMouseEvent& rCallEvent,
1894                         sal_Bool bChkPtr = sal_False, SbxArray* pArgs = 0,
1895                         const Link* pCallBack = 0 );
1896 
1897     // linken Rand ueber Objectleiste einstellen (aenhlich dem Stufen von
1898     // Numerierungen), optional kann man "um" den Offset stufen oder "auf"
1899     // die Position gestuft werden (bModulus = sal_True)
1900     void MoveLeftMargin( const SwPaM& rPam, sal_Bool bRight = sal_True,
1901                         sal_Bool bModulus = sal_True );
1902 
1903     // Numberformatter erfragen
1904     inline       SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True );
1905     inline const SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True ) const;
1906 
1907     bool HasInvisibleContent() const;
1908     /// delete invisible content, like hidden sections and paragraphs
1909     bool RemoveInvisibleContent();
1910     /// restore the invisible content if it's available on the undo stack
1911     bool RestoreInvisibleContent();
1912     // replace fields by text - mailmerge support
1913     sal_Bool ConvertFieldsToText();
1914 
1915     // erzeuge Anhand der vorgebenen Collection Teildokumente
1916     // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene
1917     sal_Bool GenerateGlobalDoc( const String& rPath,
1918                                 const SwTxtFmtColl* pSplitColl = 0 );
1919     sal_Bool GenerateGlobalDoc( const String& rPath, int nOutlineLevel = 0 );   //#outline level,add by zhaojianwei
1920     sal_Bool GenerateHTMLDoc( const String& rPath,
1921                                 const SwTxtFmtColl* pSplitColl = 0 );
1922     sal_Bool GenerateHTMLDoc( const String& rPath, int nOutlineLevel = 0 ); //#outline level,add by zhaojianwei
1923 
1924     //  vergleiche zwei Dokument miteinander
1925     long CompareDoc( const SwDoc& rDoc );
1926     // merge zweier Dokumente
1927     long MergeDoc( const SwDoc& rDoc );
1928     // setze Kommentar-Text fuers Redline, das dann per AppendRedline
1929     // hereinkommt. Wird vom Autoformat benutzt. 0-Pointer setzt den Modus
1930     // wieder zurueck. Die SequenceNummer ist fuers UI-seitige zusammen-
1931     // fassen von Redlines.
1932     void SetAutoFmtRedlineComment( const String* pTxt, sal_uInt16 nSeqNo = 0 );
1933 
1934     bool IsAutoFmtRedline() const           { return mbIsAutoFmtRedline; }
1935     void SetAutoFmtRedline( bool bFlag )    { mbIsAutoFmtRedline = bFlag; }
1936 
1937     // fuer AutoFormat: mit Undo/Redlining - Behandlung
1938     void SetTxtFmtCollByAutoFmt( const SwPosition& rPos, sal_uInt16 nPoolId,
1939                                 const SfxItemSet* pSet = 0 );
1940     void SetFmtItemByAutoFmt( const SwPaM& rPam, const SfxItemSet& );
1941 
1942     // !!!NUR fuer die SW-Textblocks!! beachtet kein LAYOUT!!!
1943     void ClearDoc();        // loescht den gesamten Inhalt.
1944 
1945     // erfrage / setze die Daten fuer die PagePreView
1946     const SwPagePreViewPrtData* GetPreViewPrtData() const { return pPgPViewPrtData; }
1947     // wenn der Pointer == 0 ist, dann wird im Doc der Pointer zerstoert,
1948     // ansonsten wird das Object kopiert.
1949     // Der Pointer geht NICHT in den Besitz des Doc's!!
1950     void SetPreViewPrtData( const SwPagePreViewPrtData* pData );
1951 
1952     // update all modified OLE-Objects. The modification is called over the
1953     // StarOne - Interface              --> Bug 67026
1954     void SetOLEObjModified()
1955     {   if( GetCurrentViewShell() ) aOLEModifiedTimer.Start(); }    //swmod 071107//swmod 071225
1956 
1957     // -------------------- Uno - Schnittstellen ---------------------------
1958     const SwUnoCrsrTbl& GetUnoCrsrTbl() const       { return *pUnoCrsrTbl; }
1959     SwUnoCrsr* CreateUnoCrsr( const SwPosition& rPos, sal_Bool bTblCrsr = sal_False );
1960     // -------------------- Uno - Schnittstellen ---------------------------
1961 
1962     // -------------------- FeShell - Schnittstellen -----------------------
1963     // !!!!! diese gehen immer davon aus, das ein Layout existiert  !!!!
1964     sal_Bool ChgAnchor( const SdrMarkList& _rMrkList,
1965                         RndStdIds _eAnchorType,
1966                         const sal_Bool _bSameOnly,
1967                         const sal_Bool _bPosCorr );
1968 
1969     void SetRowHeight( const SwCursor& rCursor, const SwFmtFrmSize &rNew );
1970     void GetRowHeight( const SwCursor& rCursor, SwFmtFrmSize *& rpSz ) const;
1971     void SetRowSplit( const SwCursor& rCursor, const SwFmtRowSplit &rNew );
1972     void GetRowSplit( const SwCursor& rCursor, SwFmtRowSplit *& rpSz ) const;
1973     sal_Bool BalanceRowHeight( const SwCursor& rCursor, sal_Bool bTstOnly = sal_True );
1974     void SetRowBackground( const SwCursor& rCursor, const SvxBrushItem &rNew );
1975     sal_Bool GetRowBackground( const SwCursor& rCursor, SvxBrushItem &rToFill ) const;
1976     void SetTabBorders( const SwCursor& rCursor, const SfxItemSet& rSet );
1977     void SetTabLineStyle( const SwCursor& rCursor,
1978                           const Color* pColor, sal_Bool bSetLine,
1979                           const SvxBorderLine* pBorderLine );
1980     void GetTabBorders( const SwCursor& rCursor, SfxItemSet& rSet ) const;
1981     void SetBoxAttr( const SwCursor& rCursor, const SfxPoolItem &rNew );
1982     sal_Bool GetBoxAttr( const SwCursor& rCursor, SfxPoolItem &rToFill ) const;
1983     void SetBoxAlign( const SwCursor& rCursor, sal_uInt16 nAlign );
1984     sal_uInt16 GetBoxAlign( const SwCursor& rCursor ) const;
1985     void AdjustCellWidth( const SwCursor& rCursor, sal_Bool bBalance = sal_False );
1986 
1987     int Chainable( const SwFrmFmt &rSource, const SwFrmFmt &rDest );
1988     int Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest );
1989     void Unchain( SwFrmFmt &rFmt );
1990 
1991     // fuers Copy/Move aus der FrmShell
1992     SdrObject* CloneSdrObj( const SdrObject&, sal_Bool bMoveWithinDoc = sal_False,
1993                             sal_Bool bInsInPage = sal_True );
1994 
1995     //
1996     // -------------------- FeShell - Schnittstellen Ende ------------------
1997 
1998 
1999     // Schnittstelle fuer die TextInputDaten - ( fuer die Texteingabe
2000     // von japanischen/chinesischen Zeichen)
2001     SwExtTextInput* CreateExtTextInput( const SwPaM& rPam );
2002     void DeleteExtTextInput( SwExtTextInput* pDel );
2003     SwExtTextInput* GetExtTextInput( const SwNode& rNd,
2004                                 xub_StrLen nCntntPos = STRING_NOTFOUND) const;
2005     SwExtTextInput* GetExtTextInput() const;
2006 
2007     // Schnistelle fuer den Zugriff auf die AutoComplete-Liste
2008     static SwAutoCompleteWord& GetAutoCompleteWords() { return *pACmpltWords; }
2009 
2010     bool ContainsMSVBasic() const          { return mbContains_MSVBasic; }
2011     void SetContainsMSVBasic( bool bFlag )  { mbContains_MSVBasic = bFlag; }
2012 
2013     // Interface for the list of Ruby - texts/attributes
2014     sal_uInt16 FillRubyList( const SwPaM& rPam, SwRubyList& rList,
2015                         sal_uInt16 nMode );
2016     sal_uInt16 SetRubyList( const SwPaM& rPam, const SwRubyList& rList,
2017                         sal_uInt16 nMode );
2018 
2019     void ReadLayoutCache( SvStream& rStream );
2020     void WriteLayoutCache( SvStream& rStream );
2021     SwLayoutCache* GetLayoutCache() const { return pLayoutCache; }
2022 
2023     /** Checks if any of the text node contains hidden characters.
2024         Used for optimization. Changing the view option 'view hidden text'
2025         has to trigger a reformatting only if some of the text is hidden.
2026     */
2027     bool ContainsHiddenChars() const;
2028 
2029     // call back for API wrapper
2030     SwModify*   GetUnoCallBack() const;
2031 
2032     IGrammarContact* getGrammarContact() const { return mpGrammarContact; }
2033 
2034     // -> #i27615#
2035     /** Marks/Unmarks a list level of a certain list
2036 
2037         OD 2008-04-02 #refactorlists#
2038         levels of a certain lists are marked now
2039 
2040         @param sListId    list Id of the list whose level has to be marked/unmarked
2041         @param nListLevel level to mark
2042         @param bValue     - sal_True  mark the level
2043                           - sal_False unmark the level
2044     */
2045     void MarkListLevel( const String& sListId,
2046                         const int nListLevel,
2047                         const sal_Bool bValue );
2048 
2049     /** Marks/Unmarks a list level of a certain list
2050 
2051         OD 2008-04-02 #refactorlists#
2052         levels of a certain lists are marked now
2053 
2054         @param rList      list whose level has to be marked/unmarked
2055         @param nListLevel level to mark
2056         @param bValue     - sal_True  mark the level
2057                           - sal_False unmark the level
2058      */
2059     void MarkListLevel( SwList& rList,
2060                         const int nListLevel,
2061                         const sal_Bool bValue );
2062     // <- #i27615#
2063 
2064     // Change a format undoable.
2065     void ChgFmt(SwFmt & rFmt, const SfxItemSet & rSet);
2066 
2067     void RenameFmt(SwFmt & rFmt, const String & sNewName,
2068                    sal_Bool bBroadcast = sal_False);
2069 
2070     // Change a TOX undoable.
2071     void ChgTOX(SwTOXBase & rTOX, const SwTOXBase & rNew);
2072 
2073     // #111827#
2074     /**
2075        Returns a textual description of a PaM.
2076 
2077        @param rPaM     the PaM to describe
2078 
2079        If rPaM only spans one paragraph the result is:
2080 
2081             '<text in the PaM>'
2082 
2083        <text in the PaM> is shortened to nUndoStringLength characters.
2084 
2085        If rPaM spans more than one paragraph the result is:
2086 
2087             paragraphs                               (STR_PARAGRAPHS)
2088 
2089        @return the textual description of rPaM
2090      */
2091     String GetPaMDescr(const SwPaM & rPaM) const;
2092 
2093     bool IsFirstOfNumRuleAtPos( const SwPosition & rPos );
2094 
2095 
2096     // access methods for XForms model(s)
2097 
2098     /// access container for XForms model; will be NULL if !isXForms()
2099     com::sun::star::uno::Reference<com::sun::star::container::XNameContainer>
2100         getXForms() const;
2101 
2102     com::sun::star::uno::Reference< com::sun::star::linguistic2::XProofreadingIterator > GetGCIterator() const;
2103 
2104     /// is this an XForms document?
2105     bool isXForms() const;
2106 
2107     /// initialize XForms models; turn this into an XForms document
2108     void initXForms( bool bCreateDefaultModel );
2109     // <-- #i31958# access methods for XForms model(s)
2110 
2111     void disposeXForms( );  // #i113606#, for disposing XForms
2112 
2113 
2114     inline bool ApplyWorkaroundForB6375613() const
2115     {
2116         return mbApplyWorkaroundForB6375613;
2117     }
2118     void SetApplyWorkaroundForB6375613( bool p_bApplyWorkaroundForB6375613 );
2119 
2120 
2121     //Update all the page masters
2122     void SetDefaultPageMode(bool bSquaredPageMode);
2123     sal_Bool IsSquaredPageMode() const;
2124 
2125 
2126     void Setn32DummyCompatabilityOptions1( const sal_uInt32 CompatabilityOptions1 )
2127     {
2128         n32DummyCompatabilityOptions1 = CompatabilityOptions1;
2129     }
2130     sal_uInt32 Getn32DummyCompatabilityOptions1()
2131     {
2132         return n32DummyCompatabilityOptions1;
2133     }
2134     void Setn32DummyCompatabilityOptions2( const sal_uInt32 CompatabilityOptions2 )
2135     {
2136         n32DummyCompatabilityOptions2 = CompatabilityOptions2;
2137     }
2138     sal_uInt32 Getn32DummyCompatabilityOptions2()
2139     {
2140         return n32DummyCompatabilityOptions2;
2141     }
2142 #ifdef FUTURE_VBA
2143     com::sun::star::uno::Reference< com::sun::star::script::vba::XVBAEventProcessor > GetVbaEventProcessor();
2144 #endif
2145     ::sfx2::IXmlIdRegistry& GetXmlIdRegistry();
2146     ::sw::MetaFieldManager & GetMetaFieldManager();
2147     ::sw::UndoManager      & GetUndoManager();
2148     ::sw::UndoManager const& GetUndoManager() const;
2149     SfxObjectShell* CreateCopy(bool bCallInitNew) const;
2150 };
2151 
2152 
2153 // Diese Methode wird im Dtor vom SwDoc gerufen und loescht den Cache
2154 // der Konturobjekte
2155 void ClrContourCache();
2156 
2157 
2158 //------------------ inline impl. ---------------------------------
2159 
2160 inline const SwTableNode* SwDoc::IsIdxInTbl( const SwNodeIndex& rIdx ) const
2161 {
2162     return ((SwDoc*)this)->IsIdxInTbl( rIdx );
2163 }
2164 
2165 inline SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate )
2166 {
2167     if( bCreate && !pNumberFormatter )
2168         _CreateNumberFormatter();
2169     return pNumberFormatter;
2170 }
2171 
2172 inline const SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate ) const
2173 {
2174     return ((SwDoc*)this)->GetNumberFormatter( bCreate );
2175 }
2176 
2177 inline void SwDoc::SetOLEPrtNotifyPending( bool bSet )
2178 {
2179     mbOLEPrtNotifyPending = bSet;
2180     if( !bSet )
2181         mbAllOLENotify = sal_False;
2182 }
2183 
2184 // --> OD 2006-03-14 #i62875#
2185 // namespace <docfunc> for functions and procedures working on a Writer document.
2186 namespace docfunc
2187 {
2188     /** method to check, if given Writer document contains at least one drawing object
2189 
2190         OD 2006-03-17 #i62875#
2191 
2192         @author OD
2193 
2194         @param p_rDoc
2195         input parameter - reference to the Writer document, which is investigated.
2196     */
2197     bool ExistsDrawObjs( SwDoc& p_rDoc );
2198 
2199     /** method to check, if given Writer document contains only drawing objects,
2200         which are completely on its page.
2201 
2202         OD 2006-03-17 #i62875#
2203 
2204         @author OD
2205 
2206         @param p_rDoc
2207         input parameter - reference to the Writer document, which is investigated.
2208     */
2209     bool AllDrawObjsOnPage( SwDoc& p_rDoc );
2210 
2211     /** method to check, if the outline style has to written as a normal list style
2212 
2213         OD 2006-09-27 #i69627#
2214         The outline style has to written as a normal list style, if a parent
2215         paragraph style of one of the paragraph styles, which are assigned to
2216         the list levels of the outline style, has a list style set or inherits
2217         a list style from its parent paragraphs style.
2218         This information is needed for the OpenDocument file format export.
2219 
2220         @author OD
2221 
2222         @param rDoc
2223         input parameter - reference to the text document, which is investigated.
2224 
2225         @return boolean
2226         indicating, if the outline style has to written as a normal list style
2227     */
2228     bool HasOutlineStyleToBeWrittenAsNormalListStyle( SwDoc& rDoc );
2229 }
2230 // <--
2231 #endif  //_DOC_HXX
2232