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