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