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