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