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