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