LibreOffice Module sw (master)  1
doc.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 #ifndef INCLUDED_SW_INC_DOC_HXX
20 #define INCLUDED_SW_INC_DOC_HXX
21 
22 // SwDoc interfaces
23 #include <o3tl/deleter.hxx>
24 #include <o3tl/sorted_vector.hxx>
25 #include <vcl/idle.hxx>
26 #include "swdllapi.h"
27 #include "swtypes.hxx"
28 #include "toxe.hxx"
29 #include "flyenum.hxx"
30 #include "flypos.hxx"
31 #include "swdbdata.hxx"
32 #include <sfx2/objsh.hxx>
33 #include <svl/style.hxx>
34 #include <editeng/numitem.hxx>
35 #include "tox.hxx"
36 #include "frmfmt.hxx"
37 #include "charfmt.hxx"
38 #include "docary.hxx"
39 #include "pagedesc.hxx"
40 #include "tblenum.hxx"
41 #include "ndarr.hxx"
42 #include "ndtyp.hxx"
43 #include <atomic>
44 #include <memory>
45 #include <set>
46 #include <unordered_map>
47 #include <vector>
48 
49 namespace editeng { class SvxBorderLine; }
50 
51 class SwExtTextInput;
52 class EditFieldInfo;
53 class Outliner;
54 class OutputDevice;
55 class Point;
56 class SbxArray;
57 class SdrObject;
58 class SdrUndoAction;
59 class SvNumberFormatter;
60 class SvxMacro;
61 class SwAutoCompleteWord;
63 class SwCellFrame;
64 class SwCellStyleTable;
65 class SwCursorShell;
66 class SwCursor;
67 class SwDocShell;
68 class SwDrawView;
69 class SwEditShell;
70 class SwFormat;
71 class SwFormatINetFormat;
72 class SwFormatRefMark;
73 class SwFootnoteIdxs;
74 class SwFootnoteInfo;
75 class SwEndNoteInfo;
76 class SwLineNumberInfo;
77 class SwDBManager;
78 class SwNodeIndex;
79 class SwNodeRange;
80 class SwNumRule;
82 class SwRootFrame;
83 class SwRubyListEntry;
84 class SwSectionFormat;
85 class SwSectionData;
86 class SwSelBoxes;
88 class SwTOXBaseSection;
89 class SwTabCols;
90 class SwTable;
91 class SwTableAutoFormat;
92 class SwTableBox;
93 class SwTableBoxFormat;
94 class SwTableFormat;
95 class SwTableLineFormat;
96 class SwTableNode;
97 class SwTextBlocks;
98 class SwURLStateChanged;
99 class SwUnoCursor;
100 class SwViewShell;
101 class SwDrawContact;
102 class SdrView;
103 class SdrMarkList;
104 class SwAuthEntry;
105 class SwLayoutCache;
106 class IStyleAccess;
107 struct SwCallMouseEvent;
108 struct SwDocStat;
109 struct SwSortOptions;
110 struct SwDefTOXBase_Impl;
111 class SwPrintUIOptions;
112 struct SwConversionArgs;
113 class IGrammarContact;
114 class SwRenderData;
115 class IDocumentUndoRedo;
122 class IDocumentListItems;
127 class IDocumentStatistics;
128 class IDocumentState;
132 class IDocumentMarkAccess;
133 class SetGetExpFields;
134 struct SwInsertTableOptions;
135 enum class SvMacroItemId : sal_uInt16;
136 enum class SvxFrameDirection;
137 enum class RndStdIds;
138 
139 namespace sw::mark { class MarkManager; }
140 namespace sw {
141  enum class RedlineMode;
142  class MetaFieldManager;
143  class UndoManager;
144  class IShellCursorSupplier;
145  class DocumentSettingManager;
146  class DocumentDeviceManager;
147  class DocumentDrawModelManager;
148  class DocumentChartDataProviderManager;
149  class DocumentTimerManager;
150  class DocumentLinksAdministrationManager;
151  class DocumentListItemsManager;
152  class DocumentListsManager;
153  class DocumentOutlineNodesManager;
154  class DocumentContentOperationsManager;
155  class DocumentRedlineManager;
156  class DocumentFieldsManager;
157  class DocumentStatisticsManager;
158  class DocumentStateManager;
159  class DocumentLayoutManager;
160  class DocumentStylePoolManager;
161  class DocumentExternalDataManager;
162 }
163 
164 namespace com::sun::star {
165  namespace container {
166  class XNameContainer; //< for getXForms()/isXForms()/initXForms() methods
167  }
168  namespace embed { class XStorage; }
169  namespace linguistic2 { class XHyphenatedWord; }
170  namespace linguistic2 { class XProofreadingIterator; }
171  namespace linguistic2 { class XSpellChecker1; }
172  namespace script::vba { class XVBAEventProcessor; }
173 }
174 
175 namespace sfx2 {
176  class IXmlIdRegistry;
177 }
178 
179 void SetAllScriptItem( SfxItemSet& rSet, const SfxPoolItem& rItem );
180 
181 using SwRubyList = std::vector<std::unique_ptr<SwRubyListEntry>>;
182 
183 // Represents the model of a Writer document.
184 class SW_DLLPUBLIC SwDoc final
185 {
186  friend class ::sw::DocumentContentOperationsManager;
187 
188  friend void InitCore();
189  friend void FinitCore();
190 
191  // private Member
192  std::unique_ptr<SwNodes> m_pNodes; //< document content (Nodes Array)
193  SwAttrPool* mpAttrPool; //< the attribute pool
194  SwPageDescs m_PageDescs; //< PageDescriptors
195  Link<bool,void> maOle2Link; //< OLE 2.0-notification
196  /* @@@MAINTAINABILITY-HORROR@@@
197  Timer should not be members of the model
198  */
199  Idle maOLEModifiedIdle; //< Timer for update modified OLE-Objects
200  SwDBData maDBData; //< database descriptor
201  OUString msTOIAutoMarkURL; //< URL of table of index AutoMark file
202  std::vector<OUString> m_PatternNames; //< Array for names of document-templates
203  css::uno::Reference<css::container::XNameContainer>
204  mxXForms; //< container with XForms models
205  mutable css::uno::Reference< css::linguistic2::XProofreadingIterator > m_xGCIterator;
206 
207  const std::unique_ptr< ::sw::mark::MarkManager> mpMarkManager;
208  const std::unique_ptr< ::sw::MetaFieldManager > m_pMetaFieldManager;
209  const std::unique_ptr< ::sw::DocumentDrawModelManager > m_pDocumentDrawModelManager;
210  const std::unique_ptr< ::sw::DocumentRedlineManager > m_pDocumentRedlineManager;
211  const std::unique_ptr< ::sw::DocumentStateManager > m_pDocumentStateManager;
212  const std::unique_ptr< ::sw::UndoManager > m_pUndoManager;
213  const std::unique_ptr< ::sw::DocumentSettingManager > m_pDocumentSettingManager;
214  const std::unique_ptr< ::sw::DocumentChartDataProviderManager > m_pDocumentChartDataProviderManager;
215  std::unique_ptr< ::sw::DocumentDeviceManager > m_pDeviceAccess;
216  const std::unique_ptr< ::sw::DocumentTimerManager > m_pDocumentTimerManager;
217  const std::unique_ptr< ::sw::DocumentLinksAdministrationManager > m_pDocumentLinksAdministrationManager;
218  const std::unique_ptr< ::sw::DocumentListItemsManager > m_pDocumentListItemsManager;
219  const std::unique_ptr< ::sw::DocumentListsManager > m_pDocumentListsManager;
220  const std::unique_ptr< ::sw::DocumentOutlineNodesManager > m_pDocumentOutlineNodesManager;
221  const std::unique_ptr< ::sw::DocumentContentOperationsManager > m_pDocumentContentOperationsManager;
222  const std::unique_ptr< ::sw::DocumentFieldsManager > m_pDocumentFieldsManager;
223  const std::unique_ptr< ::sw::DocumentStatisticsManager > m_pDocumentStatisticsManager;
224  const std::unique_ptr< ::sw::DocumentLayoutManager > m_pDocumentLayoutManager;
225  const std::unique_ptr< ::sw::DocumentStylePoolManager > m_pDocumentStylePoolManager;
226  const std::unique_ptr< ::sw::DocumentExternalDataManager > m_pDocumentExternalDataManager;
227 
228  // Pointer
229  std::unique_ptr<SwFrameFormat> mpDfltFrameFormat; //< Default formats.
230  std::unique_ptr<SwFrameFormat> mpEmptyPageFormat; //< Format for the default empty page
231  std::unique_ptr<SwFrameFormat> mpColumnContFormat; //< Format for column container
232  std::unique_ptr<SwCharFormat> mpDfltCharFormat;
233  std::unique_ptr<SwTextFormatColl> mpDfltTextFormatColl; //< Defaultformatcollections
234  std::unique_ptr<SwGrfFormatColl> mpDfltGrfFormatColl;
235 
236  std::unique_ptr<SwFrameFormats> mpFrameFormatTable; //< Format table
237  std::unique_ptr<SwCharFormats> mpCharFormatTable;
238  std::unique_ptr<SwFrameFormats> mpSpzFrameFormatTable;
239  std::unique_ptr<SwSectionFormats> mpSectionFormatTable;
240  std::unique_ptr<SwFrameFormats> mpTableFrameFormatTable; //< For tables
241  std::unique_ptr<SwTextFormatColls> mpTextFormatCollTable; //< FormatCollections
242  std::unique_ptr<SwGrfFormatColls> mpGrfFormatCollTable;
243 
244  std::unique_ptr<SwTOXTypes> mpTOXTypes; //< Tables/indices
245  std::unique_ptr<SwDefTOXBase_Impl> mpDefTOXBases; //< defaults of SwTOXBase's
246 
247  std::unique_ptr<SwDBManager, o3tl::default_delete<SwDBManager>> m_pOwnDBManager; //< own DBManager
248  SwDBManager * m_pDBManager; //< DBManager for evaluation of DB-fields.
249 
251  std::unique_ptr<SwFootnoteInfo> mpFootnoteInfo;
252  std::unique_ptr<SwEndNoteInfo> mpEndNoteInfo;
253  std::unique_ptr<SwLineNumberInfo> mpLineNumberInfo;
254  std::unique_ptr<SwFootnoteIdxs> mpFootnoteIdxs;
255 
256  SwDocShell *mpDocShell; //< Ptr to SfxDocShell of Doc.
257  SfxObjectShellLock mxTmpDocShell; //< A temporary shell that is used to copy OLE-Nodes
258 
259  std::unique_ptr<SwAutoCorrExceptWord> mpACEWord;
261  std::unique_ptr<SwURLStateChanged> mpURLStateChgd; //< SfxClient for changes in INetHistory
262  std::atomic<SvNumberFormatter*> mpNumberFormatter; //< NumFormatter for tables / fields
263 
264  mutable std::unique_ptr<SwNumRuleTable> mpNumRuleTable; //< List of all named NumRules.
265 
266  // Hash map to find numrules by name
267  mutable std::unordered_map<OUString, SwNumRule *> maNumRuleMap;
268 
269  std::unique_ptr<SwPagePreviewPrtData> m_pPgPViewPrtData; //< Indenting / spacing for printing of page view.
271 
272  std::unique_ptr<IStyleAccess> mpStyleAccess; //< handling of automatic styles
273  std::unique_ptr<SwLayoutCache> mpLayoutCache;
276  std::unique_ptr<IGrammarContact> mpGrammarContact; //< for grammar checking in paragraphs during editing
277 
278  css::uno::Reference< css::script::vba::XVBAEventProcessor > mxVbaEvents;
279  css::uno::Reference<css::container::XNameContainer> m_xTemplateToProjectCache;
280 
282  std::unique_ptr<SwTableAutoFormatTable> m_pTableStyles;
284  std::unique_ptr<SwCellStyleTable> mpCellStyles;
285 private:
286  std::unique_ptr< ::sfx2::IXmlIdRegistry > m_pXmlIdRegistry;
287 
288  // other
289 
290  sal_uInt32 mnRsid; //< current session ID of the document
291  sal_uInt32 mnRsidRoot; //< session ID when the document was created
292 
293  oslInterlockedCount mReferenceCount;
294 
295  bool mbDtor : 1;
299  bool mbCopyIsMove : 1; //< TRUE: Copy is a hidden Move.
300  bool mbInReading : 1; //< TRUE: Document is in the process of being read.
301  bool mbInWriting : 1; //< TRUE: Document is in the process of being written.
302  bool mbInMailMerge : 1; //< TRUE: Document is in the process of being written by mail merge.
303  bool mbInXMLImport : 1; //< TRUE: During xml import, attribute portion building is not necessary.
304  bool mbInWriterfilterImport : 1; //< TRUE: writerfilter import (DOCX,RTF)
305  bool mbUpdateTOX : 1; //< TRUE: After loading document, update TOX.
306  bool mbInLoadAsynchron : 1; //< TRUE: Document is in the process of being loaded asynchronously.
307  bool mbIsAutoFormatRedline : 1; //< TRUE: Redlines are recorded by Autoformat.
308  bool mbOLEPrtNotifyPending : 1;
310  bool mbAllOLENotify : 1; //< True: Notification of all objects is required.
311  bool mbInsOnlyTextGlssry : 1; //< True: insert 'only text' glossary into doc
312  bool mbContains_MSVBasic : 1; //< True: MS-VBasic exist is in our storage
313  bool mbClipBoard : 1; //< TRUE: this document represents the clipboard
314  bool mbColumnSelection : 1; //< TRUE: this content has been created by a column selection (clipboard docs only)
315  bool mbIsPrepareSelAll : 1;
316 
317  enum MissingDictionary { False = -1, Undefined = 0, True = 1 };
319 
320  // true: Document contains at least one anchored object, which is anchored AT_PAGE with a content position.
321  // Thus, certain adjustment needed during formatting for these kind of anchored objects.
322  bool mbContainsAtPageObjWithContentAnchor : 1;
323 
324  static SwAutoCompleteWord *s_pAutoCompleteWords; //< List of all words for AutoComplete
325 
326  // private methods
327  SwFlyFrameFormat* MakeFlySection_( const SwPosition& rAnchPos,
328  const SwContentNode& rNode, RndStdIds eRequestId,
329  const SfxItemSet* pFlyAttrSet,
330  SwFrameFormat* );
331  sal_Int8 SetFlyFrameAnchor( SwFrameFormat& rFlyFormat, SfxItemSet& rSet, bool bNewFrames );
332 
333  typedef SwFormat* (SwDoc:: *FNCopyFormat)( const OUString&, SwFormat*, bool, bool );
334  SwFormat* CopyFormat( const SwFormat& rFormat, const SwFormatsBase& rFormatArr,
335  FNCopyFormat fnCopyFormat, const SwFormat& rDfltFormat );
336  void CopyFormatArr( const SwFormatsBase& rSourceArr, SwFormatsBase const & rDestArr,
337  FNCopyFormat fnCopyFormat, SwFormat& rDfltFormat );
338  void CopyPageDescHeaderFooterImpl( bool bCpyHeader,
339  const SwFrameFormat& rSrcFormat, SwFrameFormat& rDestFormat );
340 
341  SwDoc( const SwDoc &) = delete;
342 
343  // Database fields:
344  void AddUsedDBToList( std::vector<OUString>& rDBNameList,
345  const std::vector<OUString>& rUsedDBNames );
346  void AddUsedDBToList( std::vector<OUString>& rDBNameList, const OUString& rDBName );
347  static bool IsNameInArray( const std::vector<OUString>& rOldNames, const OUString& rName );
348  void GetAllDBNames( std::vector<OUString>& rAllDBNames );
349  static OUString ReplaceUsedDBs( const std::vector<OUString>& rUsedDBNames,
350  const OUString& rNewName, const OUString& rFormula );
351  static std::vector<OUString>& FindUsedDBs( const std::vector<OUString>& rAllDBNames,
352  const OUString& rFormula,
353  std::vector<OUString>& rUsedDBNames );
354 
355  void EnsureNumberFormatter();
356 
357  bool UnProtectTableCells( SwTable& rTable );
358 
361  bool SplitDoc( sal_uInt16 eDocType, const OUString& rPath, bool bOutline,
362  const SwTextFormatColl* pSplitColl, int nOutlineLevel = 0 );
363 
364  // Update charts of given table.
365  void UpdateCharts_( const SwTable& rTable, SwViewShell const & rVSh ) const;
366 
367  static bool SelectNextRubyChars( SwPaM& rPam, SwRubyListEntry& rRubyEntry );
368 
369  // CharTimer calls this method.
370  void DoUpdateAllCharts();
371  DECL_LINK( DoUpdateModifiedOLE, Timer *, void );
372 
373 public:
374  SwFormat *MakeCharFormat_(const OUString &, SwFormat *, bool, bool );
375  SwFormat *MakeFrameFormat_(const OUString &, SwFormat *, bool, bool );
376 
377 private:
378  SwFormat *MakeTextFormatColl_(const OUString &, SwFormat *, bool, bool );
379 
380 private:
381  OUString msDocAccTitle;
382 
383  void InitTOXTypes();
384 
385 public:
388  DOCTYPE_MSWORD // This doc model comes from MS Word
389  };
391  DocumentType GetDocumentType() const { return meDocType; }
392  void SetDocumentType( DocumentType eDocType ) { meDocType = eDocType; }
393 
394  // Life cycle
395  SwDoc();
396  ~SwDoc();
397 
398  bool IsInDtor() const { return mbDtor; }
399 
400  /* @@@MAINTAINABILITY-HORROR@@@
401  Implementation details made public.
402  */
403  SwNodes & GetNodes() { return *m_pNodes; }
404  SwNodes const& GetNodes() const { return *m_pNodes; }
405 
406 private:
407  friend class ::rtl::Reference<SwDoc>;
408 
416  sal_Int32 acquire();
425  sal_Int32 release();
429 public:
430  sal_Int32 getReferenceCount() const;
431 
432  // IDocumentSettingAccess
433  IDocumentSettingAccess const & getIDocumentSettingAccess() const; //The IDocumentSettingAccess interface
434  IDocumentSettingAccess & getIDocumentSettingAccess();
435  ::sw::DocumentSettingManager & GetDocumentSettingManager(); //The implementation of the interface with some additional methods
436  ::sw::DocumentSettingManager const& GetDocumentSettingManager() const;
437  sal_uInt32 getRsid() const;
438  void setRsid( sal_uInt32 nVal );
439  sal_uInt32 getRsidRoot() const;
440  void setRsidRoot( sal_uInt32 nVal );
441 
442  // IDocumentDeviceAccess
443  IDocumentDeviceAccess const & getIDocumentDeviceAccess() const;
444  IDocumentDeviceAccess & getIDocumentDeviceAccess();
445 
446  // IDocumentMarkAccess
447  IDocumentMarkAccess* getIDocumentMarkAccess();
448  const IDocumentMarkAccess* getIDocumentMarkAccess() const;
449 
450  // IDocumentRedlineAccess
451  IDocumentRedlineAccess const& getIDocumentRedlineAccess() const;
452  IDocumentRedlineAccess& getIDocumentRedlineAccess();
453 
454  ::sw::DocumentRedlineManager const& GetDocumentRedlineManager() const;
455  ::sw::DocumentRedlineManager& GetDocumentRedlineManager();
456 
457  // IDocumentUndoRedo
458  IDocumentUndoRedo & GetIDocumentUndoRedo();
459  IDocumentUndoRedo const& GetIDocumentUndoRedo() const;
460 
461  // IDocumentLinksAdministration
462  IDocumentLinksAdministration const & getIDocumentLinksAdministration() const;
463  IDocumentLinksAdministration & getIDocumentLinksAdministration();
464 
465  ::sw::DocumentLinksAdministrationManager const & GetDocumentLinksAdministrationManager() const;
466  ::sw::DocumentLinksAdministrationManager & GetDocumentLinksAdministrationManager();
467 
468  // IDocumentFieldsAccess
469  IDocumentFieldsAccess const & getIDocumentFieldsAccess() const;
470  IDocumentFieldsAccess & getIDocumentFieldsAccess();
471 
472  ::sw::DocumentFieldsManager & GetDocumentFieldsManager();
473 
474  // Returns 0 if the field cannot hide para, or a positive integer indicating the field type
475  // "weight" when several hiding fields' FieldHidesPara() give conflicting results
476  int FieldCanHideParaWeight(SwFieldIds eFieldId) const;
477  bool FieldHidesPara(const SwField& rField) const;
478 
479  // IDocumentContentOperations
480  IDocumentContentOperations const & getIDocumentContentOperations() const;
481  IDocumentContentOperations & getIDocumentContentOperations();
482  ::sw::DocumentContentOperationsManager const & GetDocumentContentOperationsManager() const;
483  ::sw::DocumentContentOperationsManager & GetDocumentContentOperationsManager();
484 
485  bool UpdateParRsid( SwTextNode *pTextNode, sal_uInt32 nVal = 0 );
486  void UpdateRsid( const SwPaM &rRg, sal_Int32 nLen );
487 
488  // IDocumentStylePoolAccess
489  IDocumentStylePoolAccess const & getIDocumentStylePoolAccess() const;
490  IDocumentStylePoolAccess & getIDocumentStylePoolAccess();
491 
492  // SwLineNumberInfo
493  const SwLineNumberInfo& GetLineNumberInfo() const;
494  void SetLineNumberInfo(const SwLineNumberInfo& rInfo);
495 
496  // IDocumentStatistics
497  IDocumentStatistics const & getIDocumentStatistics() const;
498  IDocumentStatistics & getIDocumentStatistics();
499 
500  ::sw::DocumentStatisticsManager const & GetDocumentStatisticsManager() const;
501  ::sw::DocumentStatisticsManager & GetDocumentStatisticsManager();
502 
503  // IDocumentState
504  IDocumentState const & getIDocumentState() const;
505  IDocumentState & getIDocumentState();
506 
507  // IDocumentDrawModelAccess
508  void AddDrawUndo( std::unique_ptr<SdrUndoAction> );
509  IDocumentDrawModelAccess const & getIDocumentDrawModelAccess() const;
510  IDocumentDrawModelAccess & getIDocumentDrawModelAccess();
511 
512  ::sw::DocumentDrawModelManager const & GetDocumentDrawModelManager() const;
513  ::sw::DocumentDrawModelManager & GetDocumentDrawModelManager();
514 
515  // IDocumentLayoutAccess
516  IDocumentLayoutAccess const & getIDocumentLayoutAccess() const;
517  IDocumentLayoutAccess & getIDocumentLayoutAccess();
518 
519  ::sw::DocumentLayoutManager const & GetDocumentLayoutManager() const;
520  ::sw::DocumentLayoutManager & GetDocumentLayoutManager();
521 
522  // IDocumentTimerAccess
523  // Our own 'IdleTimer' calls the following method
524  IDocumentTimerAccess const & getIDocumentTimerAccess() const;
525  IDocumentTimerAccess & getIDocumentTimerAccess();
526 
527  // IDocumentChartDataProviderAccess
528  IDocumentChartDataProviderAccess const & getIDocumentChartDataProviderAccess() const;
529  IDocumentChartDataProviderAccess & getIDocumentChartDataProviderAccess();
530 
531  // IDocumentListItems
532  IDocumentListItems const & getIDocumentListItems() const;
533  IDocumentListItems & getIDocumentListItems();
534 
535  // IDocumentOutlineNodes
536  IDocumentOutlineNodes const & getIDocumentOutlineNodes() const;
537  IDocumentOutlineNodes & getIDocumentOutlineNodes();
538 
539  // IDocumentListsAccess
540  IDocumentListsAccess const & getIDocumentListsAccess() const;
541  IDocumentListsAccess & getIDocumentListsAccess();
542 
543  //IDocumentExternalData
544  IDocumentExternalData const & getIDocumentExternalData() const;
545  IDocumentExternalData & getIDocumentExternalData();
546 
547  //End of Interfaces
548 
549  void setDocAccTitle( const OUString& rTitle ) { msDocAccTitle = rTitle; }
550  const OUString& getDocAccTitle() const { return msDocAccTitle; }
551 
552  // INextInterface here
553  DECL_LINK(CalcFieldValueHdl, EditFieldInfo*, void);
554 
555  // OLE ???
556  bool IsOLEPrtNotifyPending() const { return mbOLEPrtNotifyPending; }
557  inline void SetOLEPrtNotifyPending( bool bSet = true );
558  void PrtOLENotify( bool bAll ); // All or only marked
559 
560  bool IsPrepareSelAll() const { return mbIsPrepareSelAll; }
561  void SetPrepareSelAll() { mbIsPrepareSelAll = true; }
562 
563  void SetContainsAtPageObjWithContentAnchor( const bool bFlag )
564  {
565  mbContainsAtPageObjWithContentAnchor = bFlag;
566  }
568  {
569  return mbContainsAtPageObjWithContentAnchor;
570  }
571 
577  SwPosFlyFrames GetAllFlyFormats( const SwPaM*,
578  bool bDrawAlso,
579  bool bAsCharAlso = false ) const;
580 
581  SwFlyFrameFormat *MakeFlyFrameFormat (const OUString &rFormatName, SwFrameFormat *pDerivedFrom);
582  SwDrawFrameFormat *MakeDrawFrameFormat(const OUString &rFormatName, SwFrameFormat *pDerivedFrom);
583 
584  // From now on this interface has to be used for Flys.
585  // pAnchorPos must be set, if they are not attached to pages AND
586  // Anchor is not already set at valid ContentPos
587  // in FlySet/FrameFormat.
588  /* new parameter bCalledFromShell
589 
590  true: An existing adjust item at pAnchorPos is propagated to
591  the content node of the new fly section. That propagation only
592  takes place if there is no adjust item in the paragraph style
593  for the new fly section.
594 
595  false: no propagation
596  */
597  SwFlyFrameFormat* MakeFlySection( RndStdIds eAnchorType,
598  const SwPosition* pAnchorPos,
599  const SfxItemSet* pSet = nullptr,
600  SwFrameFormat *pParent = nullptr,
601  bool bCalledFromShell = false );
602  SwFlyFrameFormat* MakeFlyAndMove( const SwPaM& rPam, const SfxItemSet& rSet,
603  const SwSelBoxes* pSelBoxes,
604  SwFrameFormat *pParent );
605 
606  // Helper that checks for unique items for DrawingLayer items of type NameOrIndex
607  // and evtl. corrects that items to ensure unique names for that type. This call may
608  // modify/correct entries inside of the given SfxItemSet, and it will apply a name to
609  // the items in question (what is essential to make the named slots associated with
610  // these items work for the UNO API and thus e.g. for ODF import/export)
611  void CheckForUniqueItemForLineFillNameOrIndex(SfxItemSet& rSet);
612 
613  bool SetFlyFrameAttr( SwFrameFormat& rFlyFormat, SfxItemSet& rSet );
614 
615  bool SetFrameFormatToFly( SwFrameFormat& rFlyFormat, SwFrameFormat& rNewFormat,
616  SfxItemSet* pSet = nullptr, bool bKeepOrient = false );
617  void SetFlyFrameTitle( SwFlyFrameFormat& rFlyFrameFormat,
618  const OUString& sNewTitle );
619  void SetFlyFrameDescription( SwFlyFrameFormat& rFlyFrameFormat,
620  const OUString& sNewDescription );
621 
622  // Footnotes
623  // Footnote information
624  const SwFootnoteInfo& GetFootnoteInfo() const { return *mpFootnoteInfo; }
625  void SetFootnoteInfo(const SwFootnoteInfo& rInfo);
626  const SwEndNoteInfo& GetEndNoteInfo() const { return *mpEndNoteInfo; }
627  void SetEndNoteInfo(const SwEndNoteInfo& rInfo);
628  SwFootnoteIdxs& GetFootnoteIdxs() { return *mpFootnoteIdxs; }
629  const SwFootnoteIdxs& GetFootnoteIdxs() const { return *mpFootnoteIdxs; }
631  bool SetCurFootnote( const SwPaM& rPam, const OUString& rNumStr,
632  bool bIsEndNote );
633 
637  css::uno::Any
638  Spell( SwPaM&, css::uno::Reference< css::linguistic2::XSpellChecker1 > const &,
639  sal_uInt16* pPageCnt, sal_uInt16* pPageSt, bool bGrammarCheck,
640  SwRootFrame const* pLayout, // for grammar-check
641  SwConversionArgs *pConvArgs = nullptr ) const;
642 
643  css::uno::Reference< css::linguistic2::XHyphenatedWord >
644  Hyphenate( SwPaM *pPam, const Point &rCursorPos,
645  sal_uInt16* pPageCnt, sal_uInt16* pPageSt );
646 
647  // count words in pam
648  static void CountWords( const SwPaM& rPaM, SwDocStat& rStat );
649 
650  // Glossary Document
651  bool IsInsOnlyTextGlossary() const { return mbInsOnlyTextGlssry; }
652 
653  void Summary( SwDoc* pExtDoc, sal_uInt8 nLevel, sal_uInt8 nPara, bool bImpress );
654 
655  void ChangeAuthorityData(const SwAuthEntry* pNewData);
656 
657  bool IsInHeaderFooter( const SwNodeIndex& rIdx ) const;
658  SvxFrameDirection GetTextDirection( const SwPosition& rPos,
659  const Point* pPt = nullptr ) const;
660  bool IsInVerticalText( const SwPosition& rPos ) const;
661 
662  // Database and DB-Manager
663  void SetDBManager( SwDBManager* pNewMgr ) { m_pDBManager = pNewMgr; }
664  SwDBManager* GetDBManager() const { return m_pDBManager; }
665  void ChangeDBFields( const std::vector<OUString>& rOldNames,
666  const OUString& rNewName );
667  void SetInitDBFields(bool b);
668 
669  // Find out which databases are used by fields.
670  void GetAllUsedDB( std::vector<OUString>& rDBNameList,
671  const std::vector<OUString>* pAllDBNames = nullptr );
672 
673  void ChgDBData( const SwDBData& rNewData );
674  SwDBData const & GetDBData();
675  const SwDBData& GetDBDesc();
676 
677  // Some helper functions
678  OUString GetUniqueGrfName() const;
679  OUString GetUniqueOLEName() const;
680  OUString GetUniqueFrameName() const;
681  OUString GetUniqueShapeName() const;
682  OUString GetUniqueDrawObjectName() const;
683 
684  o3tl::sorted_vector<SwRootFrame*> GetAllLayouts();
685 
686  void SetFlyName( SwFlyFrameFormat& rFormat, const OUString& rName );
687  const SwFlyFrameFormat* FindFlyByName( const OUString& rName, SwNodeType nNdTyp = SwNodeType::NONE ) const;
688 
689  static void GetGrfNms( const SwFlyFrameFormat& rFormat, OUString* pGrfName, OUString* pFltName );
690 
691  // Set a valid name for all Flys that have none (Called by Readers after reading).
692  void SetAllUniqueFlyNames();
693 
698  void ResetAttrs( const SwPaM &rRg,
699  bool bTextAttr = true,
700  const std::set<sal_uInt16> &rAttrs = std::set<sal_uInt16>(),
701  const bool bSendDataChangedEvents = true,
702  SwRootFrame const* pLayout = nullptr);
703  void RstTextAttrs(const SwPaM &rRg, bool bInclRefToxMark = false,
704  bool bExactRange = false, SwRootFrame const* pLayout = nullptr);
705 
708  void SetAttr( const SfxPoolItem&, SwFormat& );
711  void SetAttr( const SfxItemSet&, SwFormat& );
712 
713  // method to reset a certain attribute at the given format
714  void ResetAttrAtFormat( const sal_uInt16 nWhichId,
715  SwFormat& rChangedFormat );
716 
719  void SetDefault( const SfxPoolItem& );
720  void SetDefault( const SfxItemSet& );
721 
722  // Query default attribute in this document.
723  const SfxPoolItem& GetDefault( sal_uInt16 nFormatHint ) const;
724  template<class T> const T& GetDefault( TypedWhichId<T> nWhich ) const
725  {
726  return static_cast<const T&>(GetDefault(sal_uInt16(nWhich)));
727  }
728 
729  // Do not expand text attributes.
730  bool DontExpandFormat( const SwPosition& rPos, bool bFlag = true );
731 
732  // Formats
733  const SwFrameFormats* GetFrameFormats() const { return mpFrameFormatTable.get(); }
734  SwFrameFormats* GetFrameFormats() { return mpFrameFormatTable.get(); }
735  const SwCharFormats* GetCharFormats() const { return mpCharFormatTable.get();}
736  SwCharFormats* GetCharFormats() { return mpCharFormatTable.get();}
737 
738  // LayoutFormats (frames, DrawObjects), sometimes const sometimes not
739  const SwFrameFormats* GetSpzFrameFormats() const { return mpSpzFrameFormatTable.get(); }
740  SwFrameFormats* GetSpzFrameFormats() { return mpSpzFrameFormatTable.get(); }
741 
742  const SwFrameFormat *GetDfltFrameFormat() const { return mpDfltFrameFormat.get(); }
743  SwFrameFormat *GetDfltFrameFormat() { return mpDfltFrameFormat.get(); }
744  const SwFrameFormat *GetEmptyPageFormat() const { return mpEmptyPageFormat.get(); }
745  SwFrameFormat *GetEmptyPageFormat() { return mpEmptyPageFormat.get(); }
746  const SwFrameFormat *GetColumnContFormat() const{ return mpColumnContFormat.get(); }
747  SwFrameFormat *GetColumnContFormat() { return mpColumnContFormat.get(); }
748  const SwCharFormat *GetDfltCharFormat() const { return mpDfltCharFormat.get();}
749  SwCharFormat *GetDfltCharFormat() { return mpDfltCharFormat.get();}
750 
751  // @return the interface of the management of (auto)styles
752  IStyleAccess& GetIStyleAccess() { return *mpStyleAccess; }
753 
754  // Remove all language dependencies from all existing formats
755  void RemoveAllFormatLanguageDependencies();
756 
757  static SwFormat* FindFormatByName(const SwFormatsBase& rFormatArr, const OUString& rName);
758 
759  SwFrameFormat *MakeFrameFormat(const OUString &rFormatName, SwFrameFormat *pDerivedFrom,
760  bool bBroadcast = false, bool bAuto = true);
761  void DelFrameFormat( SwFrameFormat *pFormat, bool bBroadcast = false );
762  SwFrameFormat* FindFrameFormatByName( const OUString& rName ) const;
763 
764  SwCharFormat *MakeCharFormat(const OUString &rFormatName, SwCharFormat *pDerivedFrom,
765  bool bBroadcast = false );
766  void DelCharFormat(size_t nFormat, bool bBroadcast = false);
767  void DelCharFormat(SwCharFormat const * pFormat, bool bBroadcast = false);
768  SwCharFormat* FindCharFormatByName( const OUString& rName ) const
769  { return static_cast<SwCharFormat*>(FindFormatByName( *mpCharFormatTable, rName )); }
770 
771  // Formatcollections (styles)
772  // TXT
773  const SwTextFormatColl* GetDfltTextFormatColl() const { return mpDfltTextFormatColl.get(); }
774  SwTextFormatColl* GetDfltTextFormatColl() { return mpDfltTextFormatColl.get(); }
775  const SwTextFormatColls *GetTextFormatColls() const { return mpTextFormatCollTable.get(); }
776  SwTextFormatColls *GetTextFormatColls() { return mpTextFormatCollTable.get(); }
777  SwTextFormatColl *MakeTextFormatColl( const OUString &rFormatName,
778  SwTextFormatColl *pDerivedFrom,
779  bool bBroadcast = false);
780  SwConditionTextFormatColl* MakeCondTextFormatColl( const OUString &rFormatName,
781  SwTextFormatColl *pDerivedFrom,
782  bool bBroadcast = false);
783  void DelTextFormatColl(size_t nFormat, bool bBroadcast = false);
784  void DelTextFormatColl( SwTextFormatColl const * pColl, bool bBroadcast = false );
792  bool SetTextFormatColl(const SwPaM &rRg, SwTextFormatColl *pFormat,
793  const bool bReset = true,
794  const bool bResetListAttrs = false,
795  SwRootFrame const* pLayout = nullptr);
796  SwTextFormatColl* FindTextFormatCollByName( const OUString& rName ) const
797  { return static_cast<SwTextFormatColl*>(FindFormatByName( *mpTextFormatCollTable, rName )); }
798 
799  void ChkCondColls();
800 
801  const SwGrfFormatColl* GetDfltGrfFormatColl() const { return mpDfltGrfFormatColl.get(); }
802  SwGrfFormatColl* GetDfltGrfFormatColl() { return mpDfltGrfFormatColl.get(); }
803  const SwGrfFormatColls *GetGrfFormatColls() const { return mpGrfFormatCollTable.get(); }
804  SwGrfFormatColl *MakeGrfFormatColl(const OUString &rFormatName,
805  SwGrfFormatColl *pDerivedFrom);
806 
807  // Table formatting
808  const SwFrameFormats* GetTableFrameFormats() const { return mpTableFrameFormatTable.get(); }
809  SwFrameFormats* GetTableFrameFormats() { return mpTableFrameFormatTable.get(); }
810  size_t GetTableFrameFormatCount( bool bUsed ) const;
811  SwFrameFormat& GetTableFrameFormat(size_t nFormat, bool bUsed ) const;
812  SwTableFormat* MakeTableFrameFormat(const OUString &rFormatName, SwFrameFormat *pDerivedFrom);
813  void DelTableFrameFormat( SwTableFormat* pFormat );
814  SwTableFormat* FindTableFormatByName( const OUString& rName, bool bAll = false ) const;
815 
818  size_t GetFlyCount( FlyCntType eType, bool bIgnoreTextBoxes = false ) const;
819  SwFrameFormat* GetFlyNum(size_t nIdx, FlyCntType eType, bool bIgnoreTextBoxes = false );
820  std::vector<SwFrameFormat const*> GetFlyFrameFormats(
821  FlyCntType eType,
822  bool bIgnoreTextBoxes);
823 
824  // Copy formats in own arrays and return them.
825  SwFrameFormat *CopyFrameFormat ( const SwFrameFormat& );
826  SwCharFormat *CopyCharFormat( const SwCharFormat& );
827  SwTextFormatColl* CopyTextColl( const SwTextFormatColl& rColl );
828  SwGrfFormatColl* CopyGrfColl( const SwGrfFormatColl& rColl );
829 
830  // Replace all styles with those from rSource.
831  void ReplaceStyles( const SwDoc& rSource, bool bIncludePageStyles = true );
832 
833  // Replace all property defaults with those from rSource.
834  void ReplaceDefaults( const SwDoc& rSource );
835 
836  // Replace all compatibility options with those from rSource.
837  void ReplaceCompatibilityOptions( const SwDoc& rSource );
838 
842  void ReplaceUserDefinedDocumentProperties( const css::uno::Reference< css::document::XDocumentProperties >& xSourceDocProps );
843 
848  void ReplaceDocumentProperties(const SwDoc& rSource, bool mailMerge = false);
849 
850  // Query if style (paragraph- / character- / frame- / page-) is used.
851  bool IsUsed( const SwModify& ) const;
853  bool IsUsed( const SwTableAutoFormat& ) const;
854  static bool IsUsed( const SwNumRule& );
855 
856  // Set name of newly loaded document template.
857  size_t SetDocPattern(const OUString& rPatternName);
858 
859  // @return name of document template. Can be 0!
860  const OUString* GetDocPattern(size_t nPos) const;
861 
862  // travel over PaM Ring
863  bool InsertGlossary( SwTextBlocks& rBlock, const OUString& rEntry,
864  SwPaM& rPaM, SwCursorShell* pShell = nullptr);
865 
868  static void CalculatePagesForPrinting( const SwRootFrame& rLayout, SwRenderData &rData, const SwPrintUIOptions &rOptions, bool bIsPDFExport,
869  sal_Int32 nDocPageCount );
870  static void UpdatePagesForPrintingWithPostItData( SwRenderData &rData, const SwPrintUIOptions &rOptions,
871  sal_Int32 nDocPageCount );
872  static void CalculatePagePairsForProspectPrinting( const SwRootFrame& rLayout, SwRenderData &rData, const SwPrintUIOptions &rOptions,
873  sal_Int32 nDocPageCount );
874  static void CalculateNonBlankPages( const SwRootFrame& rLayout, sal_uInt16& nDocPageCount, sal_uInt16& nActualPage );
875 
876  // PageDescriptor interface.
877  size_t GetPageDescCnt() const { return m_PageDescs.size(); }
878  const SwPageDesc& GetPageDesc(const size_t i) const { return *m_PageDescs[i]; }
879  SwPageDesc& GetPageDesc(size_t const i) { return *m_PageDescs[i]; }
880  SwPageDesc* FindPageDesc(const OUString& rName, size_t* pPos = nullptr) const;
881  // Just searches the pointer in the m_PageDescs vector!
882  bool ContainsPageDesc(const SwPageDesc *pDesc, size_t* pPos) const;
883 
886  void CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc,
887  bool bCopyPoolIds = true );
888 
891  void CopyHeader( const SwFrameFormat& rSrcFormat, SwFrameFormat& rDestFormat )
892  { CopyPageDescHeaderFooterImpl( true, rSrcFormat, rDestFormat ); }
893 
896  void CopyFooter( const SwFrameFormat& rSrcFormat, SwFrameFormat& rDestFormat )
897  { CopyPageDescHeaderFooterImpl( false, rSrcFormat, rDestFormat ); }
898 
899  // For Reader
900  void ChgPageDesc( const OUString & rName, const SwPageDesc& );
901  void ChgPageDesc( size_t i, const SwPageDesc& );
902  void DelPageDesc( const OUString & rName, bool bBroadcast = false);
903  void DelPageDesc( size_t i, bool bBroadcast = false );
904  void PreDelPageDesc(SwPageDesc const * pDel);
905  SwPageDesc* MakePageDesc(const OUString &rName, const SwPageDesc* pCpy = nullptr,
906  bool bRegardLanguage = true,
907  bool bBroadcast = false);
908  void BroadcastStyleOperation(const OUString& rName, SfxStyleFamily eFamily,
909  SfxHintId nOp);
910 
913  void CheckDefaultPageFormat();
914 
915  // Methods for tables/indices
916  static sal_uInt16 GetCurTOXMark( const SwPosition& rPos, SwTOXMarks& );
917  void DeleteTOXMark( const SwTOXMark* pTOXMark );
918  const SwTOXMark& GotoTOXMark( const SwTOXMark& rCurTOXMark,
919  SwTOXSearch eDir, bool bInReadOnly );
920 
921  // Insert/Renew table/index
922  SwTOXBaseSection* InsertTableOf( const SwPosition& rPos,
923  const SwTOXBase& rTOX,
924  const SfxItemSet* pSet = nullptr,
925  bool bExpand = false,
926  SwRootFrame const* pLayout = nullptr);
927  SwTOXBaseSection* InsertTableOf( const SwPaM& aPam,
928  const SwTOXBase& rTOX,
929  const SfxItemSet* pSet = nullptr,
930  bool bExpand = false,
931  SwRootFrame const* pLayout = nullptr );
932  void InsertTableOf( sal_uLong nSttNd, sal_uLong nEndNd,
933  const SwTOXBase& rTOX,
934  const SfxItemSet* pSet );
935  static SwTOXBase* GetCurTOX( const SwPosition& rPos );
936  static const SwAttrSet& GetTOXBaseAttrSet(const SwTOXBase& rTOX);
937 
938  bool DeleteTOX( const SwTOXBase& rTOXBase, bool bDelNodes );
939  OUString GetUniqueTOXBaseName( const SwTOXType& rType,
940  const OUString& sChkStr ) const;
941 
942  bool SetTOXBaseName(const SwTOXBase& rTOXBase, const OUString& rName);
943 
944  // After reading file update all tables/indices
945  void SetUpdateTOX( bool bFlag ) { mbUpdateTOX = bFlag; }
946  bool IsUpdateTOX() const { return mbUpdateTOX; }
947 
948  const OUString& GetTOIAutoMarkURL() const {return msTOIAutoMarkURL;}
949  void SetTOIAutoMarkURL(const OUString& rSet) {msTOIAutoMarkURL = rSet;}
950 
951  bool IsInReading() const { return mbInReading; }
952  void SetInReading( bool bNew ) { mbInReading = bNew; }
953 
954  bool IsInWriting() const { return mbInWriting; }
955  void SetInWriting(bool bNew) { mbInWriting = bNew; }
956 
957  bool IsInMailMerge() const { return mbInMailMerge; }
958  void SetInMailMerge( bool bNew ) { mbInMailMerge = bNew; }
959 
960  bool IsClipBoard() const { return mbClipBoard; }
961  // N.B.: must be called right after constructor! (@see GetXmlIdRegistry)
962  void SetClipBoard( bool bNew ) { mbClipBoard = bNew; }
963 
964  bool IsColumnSelection() const { return mbColumnSelection; }
965  void SetColumnSelection( bool bNew ) { mbColumnSelection = bNew; }
966 
967  bool IsInXMLImport() const { return mbInXMLImport; }
968  void SetInXMLImport( bool bNew ) { mbInXMLImport = bNew; }
969  bool IsInWriterfilterImport() const { return mbInWriterfilterImport; }
970  void SetInWriterfilterImport(bool const b) { mbInWriterfilterImport = b; }
971 
972  // Manage types of tables/indices
973  sal_uInt16 GetTOXTypeCount( TOXTypes eTyp ) const;
974  const SwTOXType* GetTOXType( TOXTypes eTyp, sal_uInt16 nId ) const;
975  const SwTOXType* InsertTOXType( const SwTOXType& rTyp );
976  const SwTOXTypes& GetTOXTypes() const { return *mpTOXTypes; }
977 
978  const SwTOXBase* GetDefaultTOXBase( TOXTypes eTyp, bool bCreate );
979  void SetDefaultTOXBase(const SwTOXBase& rBase);
980 
981  // Key for management of index.
982  void GetTOIKeys(SwTOIKeyType eTyp, std::vector<OUString>& rArr,
983  SwRootFrame const& rLayout) const;
984 
985  // Sort table text.
986  bool SortTable(const SwSelBoxes& rBoxes, const SwSortOptions&);
987  bool SortText(const SwPaM&, const SwSortOptions&);
988 
989  // Correct the SwPosition-Objects that are registered with the document
990  // e. g. Bookmarks or tables/indices.
991  // If bMoveCursor is set move Cursor too.
992 
993  // Set everything in rOldNode on rNewPos + Offset.
994  void CorrAbs(
995  const SwNodeIndex& rOldNode,
996  const SwPosition& rNewPos,
997  const sal_Int32 nOffset = 0,
998  bool bMoveCursor = false );
999 
1000  // Set everything in the range of [rStartNode, rEndNode] to rNewPos.
1001  static void CorrAbs(
1002  const SwNodeIndex& rStartNode,
1003  const SwNodeIndex& rEndNode,
1004  const SwPosition& rNewPos,
1005  bool bMoveCursor = false );
1006 
1007  // Set everything in this range from rRange to rNewPos.
1008  static void CorrAbs(
1009  const SwPaM& rRange,
1010  const SwPosition& rNewPos,
1011  bool bMoveCursor = false );
1012 
1013  // Set everything in rOldNode to relative Pos.
1014  void CorrRel(
1015  const SwNodeIndex& rOldNode,
1016  const SwPosition& rNewPos,
1017  const sal_Int32 nOffset = 0,
1018  bool bMoveCursor = false );
1019 
1020  // Query / set rules for Outline.
1022  {
1023  return mpOutlineRule;
1024  }
1025  void SetOutlineNumRule( const SwNumRule& rRule );
1026  void PropagateOutlineRule();
1027 
1028  // Outline - promote / demote.
1029  bool OutlineUpDown(const SwPaM& rPam, short nOffset, SwRootFrame const* pLayout = nullptr);
1030 
1032  bool MoveOutlinePara( const SwPaM& rPam, SwOutlineNodes::difference_type nOffset);
1033 
1034  bool GotoOutline(SwPosition& rPos, const OUString& rName, SwRootFrame const* = nullptr) const;
1035 
1046  OUString SetNumRule( const SwPaM&,
1047  const SwNumRule&,
1048  bool bCreateNewList,
1049  SwRootFrame const* pLayout = nullptr,
1050  const OUString& sContinuedListId = OUString(),
1051  bool bSetItem = true,
1052  const bool bResetIndentAttrs = false );
1053  void SetCounted(const SwPaM&, bool bCounted, SwRootFrame const* pLayout);
1054 
1055  void MakeUniqueNumRules(const SwPaM & rPaM);
1056 
1057  void SetNumRuleStart( const SwPosition& rPos, bool bFlag = true );
1058  void SetNodeNumStart( const SwPosition& rPos, sal_uInt16 nStt );
1059 
1060  // sw_redlinehide: may set rPos to different node (the one with the NumRule)
1061  static SwNumRule* GetNumRuleAtPos(SwPosition& rPos, SwRootFrame const* pLayout = nullptr);
1062 
1063  const SwNumRuleTable& GetNumRuleTable() const { return *mpNumRuleTable; }
1064 
1070  void AddNumRule(SwNumRule * pRule);
1071 
1072  // add optional parameter <eDefaultNumberFormatPositionAndSpaceMode>
1073  sal_uInt16 MakeNumRule( const OUString &rName,
1074  const SwNumRule* pCpy = nullptr,
1075  bool bBroadcast = false,
1076  const SvxNumberFormat::SvxNumPositionAndSpaceMode eDefaultNumberFormatPositionAndSpaceMode =
1078  sal_uInt16 FindNumRule( const OUString& rName ) const;
1079  SwNumRule* FindNumRulePtr( const OUString& rName ) const;
1080 
1081  // Deletion only possible if Rule is not used!
1082  bool RenameNumRule(const OUString & aOldName, const OUString & aNewName,
1083  bool bBroadcast = false);
1084  bool DelNumRule( const OUString& rName, bool bBroadCast = false );
1085  OUString GetUniqueNumRuleName( const OUString* pChkStr = nullptr, bool bAutoNum = true ) const;
1086 
1087  void UpdateNumRule(); // Update all invalids.
1088  void ChgNumRuleFormats( const SwNumRule& rRule );
1089  bool ReplaceNumRule( const SwPosition& rPos, const OUString& rOldRule,
1090  const OUString& rNewRule );
1091 
1092  // Goto next/previous on same level.
1093  static bool GotoNextNum( SwPosition&, SwRootFrame const* pLayout,
1094  bool bOverUpper = true,
1095  sal_uInt8* pUpper = nullptr, sal_uInt8* pLower = nullptr );
1096  static bool GotoPrevNum( SwPosition&, SwRootFrame const* pLayout,
1097  bool bOverUpper = true );
1098 
1122  const SwNumRule * SearchNumRule(const SwPosition & rPos,
1123  const bool bForward,
1124  const bool bNum,
1125  const bool bOutline,
1126  int nNonEmptyAllowed,
1127  OUString& sListId,
1128  SwRootFrame const* pLayout,
1129  const bool bInvestigateStartNode = false );
1130 
1131  // Paragraphs without numbering but with indents.
1132  bool NoNum( const SwPaM& );
1133 
1134  // Delete, splitting of numbering list.
1135  void DelNumRules(const SwPaM&, SwRootFrame const* pLayout = nullptr);
1136 
1137  // Invalidates all numrules
1138  void InvalidateNumRules();
1139 
1140  bool NumUpDown(const SwPaM&, bool bDown, SwRootFrame const* pLayout = nullptr);
1141 
1144  bool MoveParagraph(SwPaM&, long nOffset, bool bIsOutlMv = false);
1145  bool MoveParagraphImpl(SwPaM&, long nOffset, bool bIsOutlMv, SwRootFrame const*);
1146 
1147  bool NumOrNoNum( const SwNodeIndex& rIdx, bool bDel = false);
1148 
1149  void StopNumRuleAnimations( OutputDevice* );
1150 
1161  const SwTable* InsertTable( const SwInsertTableOptions& rInsTableOpts, // HeadlineNoBorder
1162  const SwPosition& rPos, sal_uInt16 nRows,
1163  sal_uInt16 nCols, sal_Int16 eAdjust,
1164  const SwTableAutoFormat* pTAFormat = nullptr,
1165  const std::vector<sal_uInt16> *pColArr = nullptr,
1166  bool bCalledFromShell = false,
1167  bool bNewModel = true );
1168 
1169  // If index is in a table, return TableNode, else 0.
1170  SwTableNode* IsIdxInTable( const SwNodeIndex& rIdx );
1171  inline const SwTableNode* IsIdxInTable( const SwNodeIndex& rIdx ) const;
1172 
1173  // Create a balanced table out of the selected range.
1174  const SwTable* TextToTable( const SwInsertTableOptions& rInsTableOpts, // HeadlineNoBorder,
1175  const SwPaM& rRange, sal_Unicode cCh,
1176  sal_Int16 eAdjust,
1177  const SwTableAutoFormat* );
1178 
1179  // text to table conversion - API support
1180  const SwTable* TextToTable( const std::vector< std::vector<SwNodeRange> >& rTableNodes );
1181 
1182  bool TableToText( const SwTableNode* pTableNd, sal_Unicode cCh );
1183 
1184  // Create columns / rows in table.
1185  void InsertCol( const SwCursor& rCursor,
1186  sal_uInt16 nCnt = 1, bool bBehind = true );
1187  bool InsertCol( const SwSelBoxes& rBoxes,
1188  sal_uInt16 nCnt = 1, bool bBehind = true );
1189  void InsertRow( const SwCursor& rCursor,
1190  sal_uInt16 nCnt = 1, bool bBehind = true );
1191  bool InsertRow( const SwSelBoxes& rBoxes,
1192  sal_uInt16 nCnt = 1, bool bBehind = true );
1193 
1194  // Delete Columns/Rows in table.
1195  bool DeleteRowCol( const SwSelBoxes& rBoxes, bool bColumn = false );
1196  void DeleteRow( const SwCursor& rCursor );
1197  void DeleteCol( const SwCursor& rCursor );
1198 
1199  // Split / concatenate boxes in table.
1200  bool SplitTable( const SwSelBoxes& rBoxes, bool bVert,
1201  sal_uInt16 nCnt, bool bSameHeight = false );
1202 
1203  TableMergeErr MergeTable( SwPaM& rPam );
1204  OUString GetUniqueTableName() const;
1205  bool IsInsTableFormatNum() const;
1206  bool IsInsTableChangeNumFormat() const;
1207  bool IsInsTableAlignNum() const;
1208  bool IsSplitVerticalByDefault() const;
1209  void SetSplitVerticalByDefault(bool value);
1210 
1211  // From FEShell (for Undo and BModified).
1212  static void GetTabCols( SwTabCols &rFill, const SwCellFrame* pBoxFrame );
1213  void SetTabCols( const SwTabCols &rNew, bool bCurRowOnly,
1214  const SwCellFrame* pBoxFrame );
1215  static void GetTabRows( SwTabCols &rFill, const SwCellFrame* pBoxFrame );
1216  void SetTabRows( const SwTabCols &rNew, bool bCurColOnly,
1217  const SwCellFrame* pBoxFrame );
1218 
1219  // Direct access for UNO.
1220  void SetTabCols(SwTable& rTab, const SwTabCols &rNew, const SwTabCols &rOld,
1221  const SwTableBox *pStart, bool bCurRowOnly);
1222 
1223  void SetRowsToRepeat( SwTable &rTable, sal_uInt16 nSet );
1224 
1227  bool SetTableAutoFormat(const SwSelBoxes& rBoxes, const SwTableAutoFormat& rNew, bool bResetDirect = false, bool isSetStyleName = false);
1228 
1229  // Query attributes.
1230  bool GetTableAutoFormat( const SwSelBoxes& rBoxes, SwTableAutoFormat& rGet );
1231 
1233  SwTableAutoFormatTable& GetTableStyles();
1235  {
1236  return const_cast<SwDoc*>(this)->GetTableStyles();
1237  }
1239  bool HasTableStyles() const { return m_pTableStyles != nullptr; }
1240  // Create a new table style. Tracked by Undo.
1241  SwTableAutoFormat* MakeTableStyle(const OUString& rName, bool bBroadcast = false);
1242  // Delete table style named rName. Tracked by undo.
1243  std::unique_ptr<SwTableAutoFormat> DelTableStyle(const OUString& rName, bool bBroadcast = false);
1244  // Change (replace) a table style named rName. Tracked by undo.
1245  void ChgTableStyle(const OUString& rName, const SwTableAutoFormat& rNewFormat);
1246 
1247  const SwCellStyleTable& GetCellStyles() const { return *mpCellStyles; }
1248  SwCellStyleTable& GetCellStyles() { return *mpCellStyles; }
1249 
1250  void AppendUndoForInsertFromDB( const SwPaM& rPam, bool bIsTable );
1251 
1252  bool SetColRowWidthHeight( SwTableBox& rCurrentBox, TableChgWidthHeightType eType,
1253  SwTwips nAbsDiff, SwTwips nRelDiff );
1254  SwTableBoxFormat* MakeTableBoxFormat();
1255  SwTableLineFormat* MakeTableLineFormat();
1256 
1257  // helper function: cleanup before checking number value
1258  bool IsNumberFormat( const OUString& rString, sal_uInt32& F_Index, double& fOutNumber);
1259  // Check if box has numerical value. Change format of box if required.
1260  void ChkBoxNumFormat( SwTableBox& rCurrentBox, bool bCallUpdate );
1261  void SetTableBoxFormulaAttrs( SwTableBox& rBox, const SfxItemSet& rSet );
1262  void ClearBoxNumAttrs( const SwNodeIndex& rNode );
1263  void ClearLineNumAttrs( SwPosition const & rPos );
1264 
1265  bool InsCopyOfTable( SwPosition& rInsPos, const SwSelBoxes& rBoxes,
1266  const SwTable* pCpyTable, bool bCpyName = false,
1267  bool bCorrPos = false );
1268 
1269  void UnProtectCells( const OUString& rTableName );
1270  bool UnProtectCells( const SwSelBoxes& rBoxes );
1271  void UnProtectTables( const SwPaM& rPam );
1272  bool HasTableAnyProtection( const SwPosition* pPos,
1273  const OUString* pTableName,
1274  bool* pFullTableProtection );
1275 
1276  // Split table at baseline position, i.e. create a new table.
1277  bool SplitTable( const SwPosition& rPos, SplitTable_HeadlineOption eMode,
1278  bool bCalcNewSize );
1279 
1282  bool MergeTable( const SwPosition& rPos, bool bWithPrev,
1283  sal_uInt16 nMode = 0 );
1284 
1285  // Make charts of given table update.
1286  void UpdateCharts( const OUString &rName ) const;
1287 
1288  // Update all charts, for that exists any table.
1289  void UpdateAllCharts() { DoUpdateAllCharts(); }
1290 
1291  // Table is renamed and refreshes charts.
1292  void SetTableName( SwFrameFormat& rTableFormat, const OUString &rNewName );
1293 
1294  // @return the reference in document that is set for name.
1295  const SwFormatRefMark* GetRefMark( const OUString& rName ) const;
1296 
1297  // @return RefMark via index - for UNO.
1298  const SwFormatRefMark* GetRefMark( sal_uInt16 nIndex ) const;
1299 
1302  sal_uInt16 GetRefMarks( std::vector<OUString>* = nullptr ) const;
1303 
1304  // Insert label. If a FlyFormat is created, return it.
1305  SwFlyFrameFormat* InsertLabel( const SwLabelType eType, const OUString &rText, const OUString& rSeparator,
1306  const OUString& rNumberingSeparator,
1307  const bool bBefore, const sal_uInt16 nId, const sal_uLong nIdx,
1308  const OUString& rCharacterStyle,
1309  const bool bCpyBrd );
1310  SwFlyFrameFormat* InsertDrawLabel(
1311  const OUString &rText, const OUString& rSeparator, const OUString& rNumberSeparator,
1312  const sal_uInt16 nId, const OUString& rCharacterStyle, SdrObject& rObj );
1313 
1314  // Query attribute pool.
1315  const SwAttrPool& GetAttrPool() const { return *mpAttrPool; }
1316  SwAttrPool& GetAttrPool() { return *mpAttrPool; }
1317 
1318  // Search for an EditShell.
1319  SwEditShell const * GetEditShell() const;
1320  SwEditShell* GetEditShell();
1321  ::sw::IShellCursorSupplier * GetIShellCursorSupplier();
1322 
1323  // OLE 2.0-notification.
1324  void SetOle2Link(const Link<bool,void>& rLink) {maOle2Link = rLink;}
1325  const Link<bool,void>& GetOle2Link() const {return maOle2Link;}
1326 
1327  // insert section (the ODF kind of section, not the nodesarray kind)
1328  SwSection * InsertSwSection(SwPaM const& rRange, SwSectionData &,
1329  std::pair<SwTOXBase const*, sw::RedlineMode> const* pTOXBase,
1330  SfxItemSet const*const pAttr, bool const bUpdate = true);
1331  static sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange,
1332  const SwNode** ppSttNd = nullptr );
1333  static SwSection* GetCurrSection( const SwPosition& rPos );
1334  SwSectionFormats& GetSections() { return *mpSectionFormatTable; }
1335  const SwSectionFormats& GetSections() const { return *mpSectionFormatTable; }
1336  SwSectionFormat *MakeSectionFormat();
1337  void DelSectionFormat( SwSectionFormat *pFormat, bool bDelNodes = false );
1338  void UpdateSection(size_t const nSect, SwSectionData &,
1339  SfxItemSet const*const = nullptr, bool const bPreventLinkUpdate = false);
1340  OUString GetUniqueSectionName( const OUString* pChkStr = nullptr ) const;
1341 
1342  /* @@@MAINTAINABILITY-HORROR@@@
1343  The model should not have anything to do with a shell.
1344  Unnecessary compile/link time dependency.
1345  */
1346 
1347  // Pointer to SfxDocShell from Doc. Can be 0!!
1348  SwDocShell* GetDocShell() { return mpDocShell; }
1349  const SwDocShell* GetDocShell() const { return mpDocShell; }
1350  void SetDocShell( SwDocShell* pDSh );
1351 
1354  void SetTmpDocShell( SfxObjectShellLock rLock ) { mxTmpDocShell = rLock; }
1355  const SfxObjectShellLock& GetTmpDocShell() const { return mxTmpDocShell; }
1356 
1357  // For Autotexts? (text modules) They have only one SVPersist at their disposal.
1358  SfxObjectShell* GetPersist() const;
1359 
1360  // Pointer to storage of SfxDocShells. Can be 0!!!
1361  css::uno::Reference< css::embed::XStorage > GetDocStorage();
1362 
1363  // Query / set flag indicating if document is loaded asynchronously at this moment.
1364  bool IsInLoadAsynchron() const { return mbInLoadAsynchron; }
1365  void SetInLoadAsynchron( bool bFlag ) { mbInLoadAsynchron = bFlag; }
1366 
1367  // For Drag&Move: (e.g. allow "moving" of RefMarks)
1368  bool IsCopyIsMove() const { return mbCopyIsMove; }
1369  void SetCopyIsMove( bool bFlag ) { mbCopyIsMove = bFlag; }
1370 
1371  SwDrawContact* GroupSelection( SdrView& );
1372  void UnGroupSelection( SdrView& );
1373  bool DeleteSelection( SwDrawView& );
1374 
1375  // Invalidates OnlineSpell-WrongLists.
1376  void SpellItAgainSam( bool bInvalid, bool bOnlyWrong, bool bSmartTags );
1377  void InvalidateAutoCompleteFlag();
1378 
1379  void SetCalcFieldValueHdl(Outliner* pOutliner);
1380 
1381  // Query if URL was visited.
1382  // Query via Doc, if only a Bookmark has been given.
1383  // In this case the document name has to be set in front.
1384  bool IsVisitedURL( const OUString& rURL );
1385 
1386  // Save current values for automatic registration of exceptions in Autocorrection.
1387  void SetAutoCorrExceptWord( std::unique_ptr<SwAutoCorrExceptWord> pNew );
1388  SwAutoCorrExceptWord* GetAutoCorrExceptWord() { return mpACEWord.get(); }
1389  void DeleteAutoCorrExceptWord();
1390 
1391  const SwFormatINetFormat* FindINetAttr( const OUString& rName ) const;
1392 
1393  // Call into intransparent Basic; expect possible Return String.
1394  void ExecMacro( const SvxMacro& rMacro, OUString* pRet, SbxArray* pArgs );
1395 
1396  // Call into intransparent Basic / JavaScript.
1397  sal_uInt16 CallEvent( SvMacroItemId nEvent, const SwCallMouseEvent& rCallEvent,
1398  bool bChkPtr = false );
1399 
1403  void MoveLeftMargin(const SwPaM& rPam, bool bRight, bool bModulus,
1404  SwRootFrame const* pLayout = nullptr);
1405 
1406  // Query NumberFormatter.
1408  {
1409  if (bCreate)
1410  EnsureNumberFormatter();
1411  return mpNumberFormatter;
1412  }
1413 
1414  const SvNumberFormatter* GetNumberFormatter(bool bCreate = true) const
1415  {
1416  return const_cast<SwDoc*>(this)->GetNumberFormatter(bCreate);
1417  }
1418 
1419  bool HasInvisibleContent() const;
1420  // delete invisible content, like hidden sections and paragraphs
1421  bool RemoveInvisibleContent();
1422  // restore the invisible content if it's available on the undo stack
1423  bool RestoreInvisibleContent();
1424 
1425  bool ConvertFieldsToText(SwRootFrame const& rLayout);
1426 
1427  // Create sub-documents according to given collection.
1428  // If no collection is given, use chapter styles for 1st level.
1429  bool GenerateGlobalDoc( const OUString& rPath,
1430  const SwTextFormatColl* pSplitColl );
1431  bool GenerateGlobalDoc( const OUString& rPath, int nOutlineLevel );
1432  bool GenerateHTMLDoc( const OUString& rPath,
1433  const SwTextFormatColl* pSplitColl );
1434  bool GenerateHTMLDoc( const OUString& rPath, int nOutlineLevel );
1435 
1436  // Compare two documents.
1437  long CompareDoc( const SwDoc& rDoc );
1438 
1439  // Merge two documents.
1440  long MergeDoc( const SwDoc& rDoc );
1441 
1442  bool IsAutoFormatRedline() const { return mbIsAutoFormatRedline; }
1443  void SetAutoFormatRedline( bool bFlag ) { mbIsAutoFormatRedline = bFlag; }
1444 
1445  // For AutoFormat: with Undo/Redlining.
1446  void SetTextFormatCollByAutoFormat( const SwPosition& rPos, sal_uInt16 nPoolId,
1447  const SfxItemSet* pSet );
1448  void SetFormatItemByAutoFormat( const SwPaM& rPam, const SfxItemSet& );
1449 
1450  // Only for SW-textbloxks! Does not pay any attention to layout!
1451  void ClearDoc(); // Deletes all content!
1452 
1453  // Query /set data for PagePreview.
1454  const SwPagePreviewPrtData* GetPreviewPrtData() const { return m_pPgPViewPrtData.get(); }
1455 
1456  // If pointer == 0 destroy pointer in document.
1457  // Else copy object.
1458  // Pointer is not transferred to ownership by document!
1459  void SetPreviewPrtData( const SwPagePreviewPrtData* pData );
1460 
1463  void SetOLEObjModified();
1464 
1465  // Uno - Interfaces
1466  std::shared_ptr<SwUnoCursor> CreateUnoCursor( const SwPosition& rPos, bool bTableCursor = false );
1467 
1468  // FeShell - Interfaces
1469  // !!! These assume always an existing layout !!!
1470  bool ChgAnchor( const SdrMarkList& _rMrkList,
1471  RndStdIds _eAnchorType,
1472  const bool _bSameOnly,
1473  const bool _bPosCorr );
1474 
1475  void SetRowHeight( const SwCursor& rCursor, const SwFormatFrameSize &rNew );
1476  static std::unique_ptr<SwFormatFrameSize> GetRowHeight( const SwCursor& rCursor );
1477  void SetRowSplit( const SwCursor& rCursor, const SwFormatRowSplit &rNew );
1478  static std::unique_ptr<SwFormatRowSplit> GetRowSplit( const SwCursor& rCursor );
1479 
1483  bool BalanceRowHeight( const SwCursor& rCursor, bool bTstOnly, const bool bOptimize );
1484  void SetRowBackground( const SwCursor& rCursor, const SvxBrushItem &rNew );
1485  static bool GetRowBackground( const SwCursor& rCursor, std::unique_ptr<SvxBrushItem>& rToFill );
1486  void SetTabBorders( const SwCursor& rCursor, const SfxItemSet& rSet );
1487  void SetTabLineStyle( const SwCursor& rCursor,
1488  const Color* pColor, bool bSetLine,
1489  const editeng::SvxBorderLine* pBorderLine );
1490  static void GetTabBorders( const SwCursor& rCursor, SfxItemSet& rSet );
1491  void SetBoxAttr( const SwCursor& rCursor, const SfxPoolItem &rNew );
1502  static bool GetBoxAttr( const SwCursor& rCursor, std::unique_ptr<SfxPoolItem>& rToFill );
1503  void SetBoxAlign( const SwCursor& rCursor, sal_uInt16 nAlign );
1504  static sal_uInt16 GetBoxAlign( const SwCursor& rCursor );
1508  void AdjustCellWidth( const SwCursor& rCursor, const bool bBalance, const bool bNoShrink );
1509 
1510  SwChainRet Chainable( const SwFrameFormat &rSource, const SwFrameFormat &rDest );
1511  SwChainRet Chain( SwFrameFormat &rSource, const SwFrameFormat &rDest );
1512  void Unchain( SwFrameFormat &rFormat );
1513 
1514  // For Copy/Move from FrameShell.
1515  SdrObject* CloneSdrObj( const SdrObject&, bool bMoveWithinDoc = false,
1516  bool bInsInPage = true );
1517 
1518  // FeShell - Interface end
1519 
1520  // Interface for TextInputData - for text input of Chinese and Japanese.
1521  SwExtTextInput* CreateExtTextInput( const SwPaM& rPam );
1522  void DeleteExtTextInput( SwExtTextInput* pDel );
1523  SwExtTextInput* GetExtTextInput( const SwNode& rNd,
1524  sal_Int32 nContentPos = -1) const;
1525  SwExtTextInput* GetExtTextInput() const;
1526 
1527  // Interface for access to AutoComplete-List.
1528  static SwAutoCompleteWord& GetAutoCompleteWords() { return *s_pAutoCompleteWords; }
1529 
1530  bool ContainsMSVBasic() const { return mbContains_MSVBasic; }
1531  void SetContainsMSVBasic( bool bFlag ) { mbContains_MSVBasic = bFlag; }
1532 
1533  // Interface for the list of Ruby - texts/attributes
1534  static sal_uInt16 FillRubyList( const SwPaM& rPam, SwRubyList& rList );
1535  void SetRubyList( const SwPaM& rPam, const SwRubyList& rList );
1536 
1537  void ReadLayoutCache( SvStream& rStream );
1538  void WriteLayoutCache( SvStream& rStream );
1539  SwLayoutCache* GetLayoutCache() const { return mpLayoutCache.get(); }
1540 
1545  bool ContainsHiddenChars() const;
1546 
1547  IGrammarContact* getGrammarContact() const { return mpGrammarContact.get(); }
1548 
1558  void MarkListLevel( const OUString& sListId,
1559  const int nListLevel,
1560  const bool bValue );
1561 
1562  // Change a format undoable.
1563  void ChgFormat(SwFormat & rFormat, const SfxItemSet & rSet);
1564 
1565  void RenameFormat(SwFormat & rFormat, const OUString & sNewName,
1566  bool bBroadcast = false);
1567 
1568  // Change a TOX undoable.
1569  void ChangeTOX(SwTOXBase & rTOX, const SwTOXBase & rNew);
1570 
1588  static OUString GetPaMDescr(const SwPaM & rPaM);
1589 
1590  static bool IsFirstOfNumRuleAtPos(const SwPosition & rPos, SwRootFrame const& rLayout);
1591 
1592  // access methods for XForms model(s)
1593 
1594  // access container for XForms model; will be NULL if !isXForms()
1595  const css::uno::Reference<css::container::XNameContainer>&
1596  getXForms() const { return mxXForms;}
1597 
1598  css::uno::Reference< css::linguistic2::XProofreadingIterator > const & GetGCIterator() const;
1599 
1600  // #i31958# is this an XForms document?
1601  bool isXForms() const;
1602 
1603  // #i31958# initialize XForms models; turn this into an XForms document
1604  void initXForms( bool bCreateDefaultModel );
1605 
1606  // #i113606# for disposing XForms
1607  void disposeXForms( );
1608 
1609  //Update all the page masters
1610  void SetDefaultPageMode(bool bSquaredPageMode);
1611  bool IsSquaredPageMode() const;
1612 
1613  css::uno::Reference< css::script::vba::XVBAEventProcessor > const & GetVbaEventProcessor();
1614  void SetVBATemplateToProjectCache( css::uno::Reference< css::container::XNameContainer > const & xCache ) { m_xTemplateToProjectCache = xCache; };
1615  const css::uno::Reference< css::container::XNameContainer >& GetVBATemplateToProjectCache() const { return m_xTemplateToProjectCache; };
1616  ::sfx2::IXmlIdRegistry& GetXmlIdRegistry();
1617  ::sw::MetaFieldManager & GetMetaFieldManager();
1618  ::sw::UndoManager & GetUndoManager();
1619  ::sw::UndoManager const& GetUndoManager() const;
1620 
1621  SfxObjectShell* CreateCopy(bool bCallInitNew, bool bEmpty) const;
1622  SwNodeIndex AppendDoc(const SwDoc& rSource, sal_uInt16 nStartPageNumber,
1623  bool bDeletePrevious, int physicalPageOffset,
1624  const sal_uLong nDocNo);
1625 
1629  void dumpAsXml(xmlTextWriterPtr = nullptr) const;
1630 
1631  std::set<Color> GetDocColors();
1632  std::vector< std::weak_ptr<SwUnoCursor> > mvUnoCursorTable;
1633 
1634  // Remove expired UnoCursor weak pointers the document keeps to notify about document death.
1636  {
1637  auto & rTable = const_cast<SwDoc*>(this)->mvUnoCursorTable;
1638  // In most cases we'll remove most of the elements.
1639  rTable.erase( std::remove_if(rTable.begin(),
1640  rTable.end(),
1641  [] (std::weak_ptr<SwUnoCursor> const & x) { return x.expired(); }),
1642  rTable.end());
1643  }
1644 
1649  bool StartGrammarChecking( bool bSkipStart = false );
1650 
1652  void SetMissingDictionaries( bool bIsMissing );
1654  bool IsDictionaryMissing() const { return meDictionaryMissing == MissingDictionary::True; }
1655 
1656 private:
1657  // Copies master header to left / first one, if necessary - used by ChgPageDesc().
1658  void CopyMasterHeader(const SwPageDesc &rChged, const SwFormatHeader &rHead, SwPageDesc &pDesc, bool bLeft, bool bFirst);
1659  // Copies master footer to left / first one, if necessary - used by ChgPageDesc().
1660  void CopyMasterFooter(const SwPageDesc &rChged, const SwFormatFooter &rFoot, SwPageDesc &pDesc, bool bLeft, bool bFirst);
1661 
1662 };
1663 
1664 // This method is called in Dtor of SwDoc and deletes cache of ContourObjects.
1665 void ClrContourCache();
1666 
1667 inline const SwTableNode* SwDoc::IsIdxInTable( const SwNodeIndex& rIdx ) const
1668 {
1669  return const_cast<SwDoc*>(this)->IsIdxInTable( rIdx );
1670 }
1671 
1672 inline void SwDoc::SetOLEPrtNotifyPending( bool bSet )
1673 {
1674  mbOLEPrtNotifyPending = bSet;
1675  if( !bSet )
1676  mbAllOLENotify = false;
1677 }
1678 
1679 bool sw_GetPostIts( IDocumentFieldsAccess const * pIDFA, SetGetExpFields * pSrtLst );
1680 
1681 #endif //_DOC_HXX
1682 
1683 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SwFrameFormats * GetSpzFrameFormats()
Definition: doc.hxx:740
SwPageDesc & GetPageDesc(size_t const i)
Definition: doc.hxx:879
void SetCopyIsMove(bool bFlag)
Definition: doc.hxx:1369
OUString msDocAccTitle
Definition: doc.hxx:381
const std::unique_ptr< ::sw::UndoManager > m_pUndoManager
Definition: doc.hxx:212
sal_uInt32 mnRsidRoot
Definition: doc.hxx:291
const SwGrfFormatColls * GetGrfFormatColls() const
Definition: doc.hxx:803
std::set< SwPosFlyFramePtr, SwPosFlyFrameCmp > SwPosFlyFrames
Definition: flypos.hxx:51
TOXTypes
Definition: toxe.hxx:39
SwPageDescs m_PageDescs
Definition: doc.hxx:194
bool IsInMailMerge() const
Definition: doc.hxx:957
SwCellStyleTable & GetCellStyles()
Definition: doc.hxx:1248
SfxHintId
SwAutoCorrExceptWord * GetAutoCorrExceptWord()
Definition: doc.hxx:1388
const T & GetDefault(TypedWhichId< T > nWhich) const
Definition: doc.hxx:724
SwLabelType
Definition: swtypes.hxx:87
Represents the style of a paragraph.
Definition: fmtcol.hxx:55
std::unique_ptr< SwDefTOXBase_Impl > mpDefTOXBases
Definition: doc.hxx:245
std::atomic< SvNumberFormatter * > mpNumberFormatter
Definition: doc.hxx:262
Marks a position in the document model.
Definition: pam.hxx:35
const OUString & GetTOIAutoMarkURL() const
Definition: doc.hxx:948
size_t size() const
Definition: pagedesc.hxx:421
const std::unique_ptr< ::sw::DocumentOutlineNodesManager > m_pDocumentOutlineNodesManager
Definition: doc.hxx:220
void SetPrepareSelAll()
Definition: doc.hxx:561
const std::unique_ptr< ::sw::DocumentListItemsManager > m_pDocumentListItemsManager
Definition: doc.hxx:218
IGrammarContact * getGrammarContact() const
Definition: doc.hxx:1547
static SwAutoCompleteWord & GetAutoCompleteWords()
Definition: doc.hxx:1528
oslInterlockedCount mReferenceCount
Definition: doc.hxx:293
SwDocShell * GetDocShell()
Definition: doc.hxx:1348
SfxObjectShellLock mxTmpDocShell
Definition: doc.hxx:257
SvNumberFormatter * GetNumberFormatter(bool bCreate=true)
Definition: doc.hxx:1407
const SwFrameFormats * GetTableFrameFormats() const
Definition: doc.hxx:808
signed char sal_Int8
const std::unique_ptr< ::sw::DocumentLayoutManager > m_pDocumentLayoutManager
Definition: doc.hxx:224
const std::unique_ptr< ::sw::DocumentContentOperationsManager > m_pDocumentContentOperationsManager
Definition: doc.hxx:221
std::vector< OUString > m_PatternNames
Definition: doc.hxx:202
std::vector< SwNode * >::difference_type difference_type
sal_uInt16 char char * pDesc
SwDBManager * m_pDBManager
Definition: doc.hxx:248
Idle maOLEModifiedIdle
Definition: doc.hxx:199
SwTextFormatColl * FindTextFormatCollByName(const OUString &rName) const
Definition: doc.hxx:796
std::unique_ptr< SwNodes > m_pNodes
Definition: doc.hxx:192
SwAttrPool & GetAttrPool()
Definition: doc.hxx:1316
sal_uIntPtr sal_uLong
std::vector< SwTOXMark * > SwTOXMarks
Definition: tox.hxx:43
Provides numbered items of a document.
SwTextFormatColl * GetDfltTextFormatColl()
Definition: doc.hxx:774
std::vector< std::unique_ptr< SwRubyListEntry >> SwRubyList
Definition: doc.hxx:181
Base class of all fields.
Definition: fldbas.hxx:293
Handle the background jobs of a Writer document.
DocumentType meDocType
Definition: doc.hxx:390
knows all meta-fields in the document.
Definition: fmtmeta.hxx:198
exports com.sun.star. embed
Provides access to the marks of a document.
Definition: doc.hxx:184
SwAttrPool * mpAttrPool
Definition: doc.hxx:193
void SetOle2Link(const Link< bool, void > &rLink)
Definition: doc.hxx:1324
TableChgWidthHeightType
Definition: tblenum.hxx:25
bool IsColumnSelection() const
Definition: doc.hxx:964
bool IsInWriting() const
Definition: doc.hxx:954
bool IsUpdateTOX() const
Definition: doc.hxx:946
const SwTableAutoFormatTable & GetTableStyles() const
Definition: doc.hxx:1234
SvMacroItemId
void SetTmpDocShell(SfxObjectShellLock rLock)
in case during copying of embedded object a new shell is created, it should be set here and cleaned l...
Definition: doc.hxx:1354
long SwTwips
Definition: swtypes.hxx:49
SvxFrameDirection
Dialog to specify the properties of date form field.
std::unordered_map< OUString, SwNumRule * > maNumRuleMap
Definition: doc.hxx:267
std::unique_ptr< IStyleAccess > mpStyleAccess
Definition: doc.hxx:272
void SetClipBoard(bool bNew)
Definition: doc.hxx:962
const SwCellStyleTable & GetCellStyles() const
Definition: doc.hxx:1247
float x
The root element of a Writer document layout.
Definition: rootfrm.hxx:79
bool IsInsOnlyTextGlossary() const
Definition: doc.hxx:651
const SwFrameFormats * GetSpzFrameFormats() const
Definition: doc.hxx:739
exports com.sun.star. linguistic2
Array of Undo-history.
Definition: docary.hxx:197
exports com.sun.star. container
SwFormat *(SwDoc::* FNCopyFormat)(const OUString &, SwFormat *, bool, bool)
Definition: doc.hxx:333
std::unique_ptr< SwURLStateChanged > mpURLStateChgd
Definition: doc.hxx:261
const SwSectionFormats & GetSections() const
Definition: doc.hxx:1335
TableMergeErr
Definition: tblenum.hxx:62
sal_uInt16 sal_Unicode
bool DoesContainAtPageObjWithContentAnchor()
Definition: doc.hxx:567
const SwCharFormat * GetDfltCharFormat() const
Definition: doc.hxx:748
A class that stores temporary data that is needed for rendering the document.
Definition: printdata.hxx:203
provides some methods for generic operations on lists that contain SwFormat* subclasses.
Definition: docary.hxx:43
static SwAutoCompleteWord * s_pAutoCompleteWords
Definition: doc.hxx:324
std::unique_ptr< SwFrameFormats > mpTableFrameFormatTable
Definition: doc.hxx:240
void cleanupUnoCursorTable() const
Definition: doc.hxx:1635
const std::unique_ptr< ::sw::DocumentRedlineManager > m_pDocumentRedlineManager
Definition: doc.hxx:210
const SwTextFormatColl * GetDfltTextFormatColl() const
Definition: doc.hxx:773
SwTOXSearch
Definition: toxe.hxx:22
const Link< bool, void > & GetOle2Link() const
Definition: doc.hxx:1325
std::unique_ptr< SwNumRuleTable > mpNumRuleTable
Definition: doc.hxx:264
Footer, for pageformats Client of FrameFormat describing the footer.
Definition: fmthdft.hxx:64
SwTOIKeyType
Definition: toxe.hxx:30
std::unique_ptr< IGrammarContact > mpGrammarContact
Definition: doc.hxx:276
void SetTOIAutoMarkURL(const OUString &rSet)
Definition: doc.hxx:949
std::unique_ptr< ::sw::DocumentDeviceManager > m_pDeviceAccess
Definition: doc.hxx:215
css::uno::Reference< css::container::XNameContainer > mxXForms
Definition: doc.hxx:204
sal_uInt32 mnRsid
Definition: doc.hxx:290
std::unique_ptr< SwFrameFormats > mpSpzFrameFormatTable
Definition: doc.hxx:238
void SetInXMLImport(bool bNew)
Definition: doc.hxx:968
SwDocShell * mpDocShell
Definition: doc.hxx:256
const std::unique_ptr< ::sw::DocumentListsManager > m_pDocumentListsManager
Definition: doc.hxx:219
SfxStyleFamily
SwFrameFormats * GetTableFrameFormats()
Definition: doc.hxx:809
SwCharFormat * GetDfltCharFormat()
Definition: doc.hxx:749
const std::unique_ptr< ::sw::DocumentStateManager > m_pDocumentStateManager
Definition: doc.hxx:211
void SetDocumentType(DocumentType eDocType)
Definition: doc.hxx:392
Specific frame formats (frames, DrawObjects).
SwLayoutCache * GetLayoutCache() const
Definition: doc.hxx:1539
void SetContainsAtPageObjWithContentAnchor(const bool bFlag)
Definition: doc.hxx:563
Base class for various Writer styles.
Definition: format.hxx:43
SwDBData maDBData
Definition: doc.hxx:200
const std::unique_ptr< ::sw::DocumentChartDataProviderManager > m_pDocumentChartDataProviderManager
Definition: doc.hxx:214
const SwPagePreviewPrtData * GetPreviewPrtData() const
Definition: doc.hxx:1454
PaM is Point and Mark: a selection of the document model.
Definition: pam.hxx:136
struct _xmlTextWriter * xmlTextWriterPtr
std::unique_ptr< SwTableAutoFormatTable > m_pTableStyles
Table styles (autoformats that are applied with table changes).
Definition: doc.hxx:282
void SetOLEPrtNotifyPending(bool bSet=true)
Definition: doc.hxx:1672
std::unique_ptr< SwTextFormatColls > mpTextFormatCollTable
Definition: doc.hxx:241
void SetInWriterfilterImport(bool const b)
Definition: doc.hxx:970
const OUString & getDocAccTitle() const
Definition: doc.hxx:550
Style of a layout element.
Definition: frmfmt.hxx:57
bool IsPrepareSelAll() const
Definition: doc.hxx:560
bool IsOLEPrtNotifyPending() const
Definition: doc.hxx:556
SwNodeType
Definition: ndtyp.hxx:28
MissingDictionary meDictionaryMissing
Definition: doc.hxx:318
std::unique_ptr< SwTOXTypes > mpTOXTypes
Definition: doc.hxx:244
const SfxObjectShellLock & GetTmpDocShell() const
Definition: doc.hxx:1355
void SetDBManager(SwDBManager *pNewMgr)
Definition: doc.hxx:663
void SetAllScriptItem(SfxItemSet &rSet, const SfxPoolItem &rItem)
Definition: poolfmt.cxx:39
std::unique_ptr< SwLayoutCache > mpLayoutCache
Layout cache to read and save with the document for a faster formatting.
Definition: doc.hxx:273
Document statistics information.
const SwPageDesc & GetPageDesc(const size_t i) const
Definition: doc.hxx:878
std::vector< std::weak_ptr< SwUnoCursor > > mvUnoCursorTable
Definition: doc.hxx:1632
void SetInWriting(bool bNew)
Definition: doc.hxx:955
std::unique_ptr< SwEndNoteInfo > mpEndNoteInfo
Definition: doc.hxx:252
FlyCntType
Definition: flyenum.hxx:23
const std::unique_ptr< ::sw::mark::MarkManager > mpMarkManager
Definition: doc.hxx:207
const SwDocShell * GetDocShell() const
Definition: doc.hxx:1349
Document fields related interfaces.
void FinitCore()
Definition: init.cxx:672
SplitTable_HeadlineOption
Definition: tblenum.hxx:53
SwFieldIds
Definition: fldbas.hxx:44
void SetTextFormatColl(const css::uno::Any &rAny, SwPaM &rPaM)
const SwFrameFormat * GetEmptyPageFormat() const
Definition: doc.hxx:744
void SetUpdateTOX(bool bFlag)
Definition: doc.hxx:945
std::unique_ptr< SwTextFormatColl > mpDfltTextFormatColl
Definition: doc.hxx:233
std::unique_ptr< SwFrameFormat > mpColumnContFormat
Definition: doc.hxx:231
size_t GetPageDescCnt() const
Definition: doc.hxx:877
void setDocAccTitle(const OUString &rTitle)
Definition: doc.hxx:549
void UpdateAllCharts()
Definition: doc.hxx:1289
const SwFrameFormat * GetColumnContFormat() const
Definition: doc.hxx:746
void SetInLoadAsynchron(bool bFlag)
Definition: doc.hxx:1365
css::uno::Reference< css::linguistic2::XProofreadingIterator > m_xGCIterator
Definition: doc.hxx:205
Provides access to settings of a document.
SwNumRule * mpOutlineRule
Definition: doc.hxx:250
std::unique_ptr< SwPagePreviewPrtData > m_pPgPViewPrtData
Definition: doc.hxx:269
Link< bool, void > maOle2Link
Definition: doc.hxx:195
Marks a node in the document model.
Definition: ndindex.hxx:31
DocumentType
Definition: doc.hxx:386
Document links administration interface.
Text operation/manipulation interface.
void SetInReading(bool bNew)
Definition: doc.hxx:952
std::unique_ptr< SwGrfFormatColls > mpGrfFormatCollTable
Definition: doc.hxx:242
SwNodes const & GetNodes() const
Definition: doc.hxx:404
#define SW_DLLPUBLIC
Definition: swdllapi.h:28
void CopyHeader(const SwFrameFormat &rSrcFormat, SwFrameFormat &rDestFormat)
Copy header (with contents) from SrcFormat to DestFormat (can also be copied into other document)...
Definition: doc.hxx:891
std::unique_ptr< SwFrameFormat > mpEmptyPageFormat
Definition: doc.hxx:230
bool IsInReading() const
Definition: doc.hxx:951
const std::unique_ptr< ::sw::DocumentDrawModelManager > m_pDocumentDrawModelManager
Definition: doc.hxx:209
SwTable is one table in the document model, containing rows (which contain cells).
Definition: swtable.hxx:110
SwFrameFormats * GetFrameFormats()
Definition: doc.hxx:734
RedlineMode
Definition: rootfrm.hxx:44
const SwTOXTypes & GetTOXTypes() const
Definition: doc.hxx:976
Provides access to the lists of a document.
< purpose of derivation from SwClient: character style for displaying the numbers.
Definition: lineinfo.hxx:37
The Undo actions need to create new Shell cursors.
const SwFrameFormat * GetDfltFrameFormat() const
Definition: doc.hxx:742
std::unique_ptr< SwSectionFormats > mpSectionFormatTable
Definition: doc.hxx:239
std::unique_ptr< ::sfx2::IXmlIdRegistry > m_pXmlIdRegistry
Definition: doc.hxx:286
bool IsDictionaryMissing() const
Returns true if no dictionary can be found for any content.
Definition: doc.hxx:1654
Provides access to the formatting devices of a document.
const css::uno::Reference< css::container::XNameContainer > & getXForms() const
Definition: doc.hxx:1596
void ClrContourCache()
Definition: txtfly.cxx:144
OUString msTOIAutoMarkURL
Definition: doc.hxx:201
SwCharFormat * FindCharFormatByName(const OUString &rName) const
Definition: doc.hxx:768
bool mbOLEPrtNotifyPending
TRUE: Printer has changed.
Definition: doc.hxx:308
const SvNumberFormatter * GetNumberFormatter(bool bCreate=true) const
Definition: doc.hxx:1414
const std::unique_ptr< ::sw::DocumentTimerManager > m_pDocumentTimerManager
Definition: doc.hxx:216
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:80
void InitCore()
Definition: init.cxx:455
const SwFootnoteIdxs & GetFootnoteIdxs() const
Definition: doc.hxx:629
const std::unique_ptr< ::sw::MetaFieldManager > m_pMetaFieldManager
Definition: doc.hxx:208
std::unique_ptr< SwAutoCorrExceptWord > mpACEWord
For the automated takeover of auto-corrected words that are "re-corrected".
Definition: doc.hxx:259
const SwCharFormats * GetCharFormats() const
Definition: doc.hxx:735
const std::unique_ptr< ::sw::DocumentStatisticsManager > m_pDocumentStatisticsManager
Definition: doc.hxx:223
void CopyFooter(const SwFrameFormat &rSrcFormat, SwFrameFormat &rDestFormat)
Copy footer (with contents) from SrcFormat to DestFormat.
Definition: doc.hxx:896
SwTableNode * IsIdxInTable(const SwNodeIndex &rIdx)
Definition: ndtbl.cxx:212
const SwTextFormatColls * GetTextFormatColls() const
Definition: doc.hxx:775
std::unique_ptr< SwCharFormat > mpDfltCharFormat
Definition: doc.hxx:232
bool IsInLoadAsynchron() const
Definition: doc.hxx:1364
unsigned char sal_uInt8
Provides outline nodes of a document.
css::uno::Reference< css::container::XNameContainer > m_xTemplateToProjectCache
Definition: doc.hxx:279
bool IsCopyIsMove() const
Definition: doc.hxx:1368
const SwNumRuleTable & GetNumRuleTable() const
Definition: doc.hxx:1063
void SetColumnSelection(bool bNew)
Definition: doc.hxx:965
const css::uno::Reference< css::container::XNameContainer > & GetVBATemplateToProjectCache() const
Definition: doc.hxx:1615
std::unique_ptr< SwCharFormats > mpCharFormatTable
Definition: doc.hxx:237
bool IsClipBoard() const
Definition: doc.hxx:960
SwNodes & GetNodes()
Definition: doc.hxx:403
SwFrameFormat * GetColumnContFormat()
Definition: doc.hxx:747
const std::unique_ptr< ::sw::DocumentExternalDataManager > m_pDocumentExternalDataManager
Definition: doc.hxx:226
SwFrameFormat * GetEmptyPageFormat()
Definition: doc.hxx:745
std::unique_ptr< SwFrameFormats > mpFrameFormatTable
Definition: doc.hxx:236
bool sw_GetPostIts(IDocumentFieldsAccess const *pIDFA, SetGetExpFields *pSrtLst)
Definition: doc.cxx:514
SwTableBox is one table cell in the document model.
Definition: swtable.hxx:386
Get information about the current document state.
Organizer of the contact between SwTextNodes and grammar checker.
std::unique_ptr< SwFootnoteIdxs > mpFootnoteIdxs
Definition: doc.hxx:254
SwTextFormatColls * GetTextFormatColls()
Definition: doc.hxx:776
const std::unique_ptr< ::sw::DocumentFieldsManager > m_pDocumentFieldsManager
Definition: doc.hxx:222
Header, for PageFormats Client of FrameFormat describing the header.
Definition: fmthdft.hxx:33
bool IsAutoFormatRedline() const
Definition: doc.hxx:1442
std::unique_ptr< SwCellStyleTable > mpCellStyles
Cell Styles not assigned to a Table Style.
Definition: doc.hxx:284
const std::unique_ptr< ::sw::DocumentStylePoolManager > m_pDocumentStylePoolManager
Definition: doc.hxx:225
std::unique_ptr< SwDBManager, o3tl::default_delete< SwDBManager > > m_pOwnDBManager
Definition: doc.hxx:247
bool IsInDtor() const
Definition: doc.hxx:398
Provides access to the layout of a document.
SwFootnoteIdxs & GetFootnoteIdxs()
Definition: doc.hxx:628
Access to the style pool.
bool HasTableStyles() const
Counts table styles without triggering lazy-load of them.
Definition: doc.hxx:1239
RndStdIds
std::unique_ptr< SwFrameFormat > mpDfltFrameFormat
Definition: doc.hxx:229
std::unique_ptr< SwLineNumberInfo > mpLineNumberInfo
Definition: doc.hxx:253
Give access to the data-provider for chart.
css::uno::Reference< css::script::vba::XVBAEventProcessor > mxVbaEvents
Definition: doc.hxx:278
const std::unique_ptr< ::sw::DocumentSettingManager > m_pDocumentSettingManager
Definition: doc.hxx:213
void SetInMailMerge(bool bNew)
Definition: doc.hxx:958
const SwFrameFormats * GetFrameFormats() const
Definition: doc.hxx:733
bool ContainsMSVBasic() const
Definition: doc.hxx:1530
const std::unique_ptr< ::sw::DocumentLinksAdministrationManager > m_pDocumentLinksAdministrationManager
Definition: doc.hxx:217
const SwGrfFormatColl * GetDfltGrfFormatColl() const
Definition: doc.hxx:801
IStyleAccess & GetIStyleAccess()
Definition: doc.hxx:752
std::unique_ptr< SwFootnoteInfo > mpFootnoteInfo
Definition: doc.hxx:251
SwFrameFormat * GetDfltFrameFormat()
Definition: doc.hxx:743
SwSectionFormats & GetSections()
Definition: doc.hxx:1334
void SetContainsMSVBasic(bool bFlag)
Definition: doc.hxx:1531
bool mbAllOLENotify
Definition: doc.hxx:310
SwChainRet
Definition: flyenum.hxx:33
const SwFootnoteInfo & GetFootnoteInfo() const
Definition: doc.hxx:624
SwGrfFormatColl * GetDfltGrfFormatColl()
Definition: doc.hxx:802
DocumentType GetDocumentType() const
Definition: doc.hxx:391
const SwEndNoteInfo & GetEndNoteInfo() const
Definition: doc.hxx:626
SwCellFrame is one table cell in the document layout.
Definition: cellfrm.hxx:30
SwExtTextInput * mpExtInputRing
Definition: doc.hxx:270
SwDBManager * GetDBManager() const
Definition: doc.hxx:664
static SwPageDesc * FindPageDesc(SwDoc *pDoc, sal_uInt16 nPoolId)
Definition: htmlcss1.cxx:1327
bool IsInWriterfilterImport() const
Definition: doc.hxx:969
bool IsInXMLImport() const
Definition: doc.hxx:967
const SwAttrPool & GetAttrPool() const
Definition: doc.hxx:1315
std::unique_ptr< SwGrfFormatColl > mpDfltGrfFormatColl
Definition: doc.hxx:234
SwNumRule * GetOutlineNumRule() const
Definition: doc.hxx:1021
void SetVBATemplateToProjectCache(css::uno::Reference< css::container::XNameContainer > const &xCache)
Definition: doc.hxx:1614
MissingDictionary
Definition: doc.hxx:317
void SetAutoFormatRedline(bool bFlag)
Definition: doc.hxx:1443
SwCharFormats * GetCharFormats()
Definition: doc.hxx:736
Base class of the Writer document model elements.
Definition: node.hxx:79