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 _OUTLINER_HXX 24 #define _OUTLINER_HXX 25 26 #include <tools/gen.hxx> 27 #include <tools/string.hxx> 28 #include <tools/debug.hxx> 29 30 #include <svl/brdcst.hxx> 31 32 #include <editeng/editdata.hxx> 33 #include <i18npool/lang.h> 34 #include <tools/color.hxx> 35 #include <vcl/graph.hxx> 36 #include <tools/list.hxx> 37 #include <tools/link.hxx> 38 #include <rsc/rscsfx.hxx> 39 #include "editeng/editengdllapi.h" 40 #include <editeng/numitem.hxx> 41 #include <svtools/grfmgr.hxx> 42 43 #include <tools/rtti.hxx> // wegen typedef TypeId 44 #include <vector> 45 46 class OutlinerEditEng; 47 class Outliner; 48 class EditView; 49 class EditUndo; 50 class ParagraphList; 51 class OutlinerParaObject; 52 class SvStream; 53 class SvxBulletItem; 54 class SvxFont; 55 class SvxSearchItem; 56 class SvxFieldItem; 57 class OLUndoRemove; 58 class Window; 59 class KeyEvent; 60 class MouseEvent; 61 class Pointer; 62 class CommandEvent; 63 class MapMode; 64 class OutputDevice; 65 class PolyPolygon; 66 class SfxStyleSheetPool; 67 class SfxStyleSheet; 68 class SfxItemPool; 69 class SfxItemSet; 70 class SvxNumBulletItem; 71 class SvxNumberFormat; 72 class SvxLRSpaceItem; 73 class EditEngine; 74 class SvKeyValueIterator; 75 class SvxForbiddenCharactersTable; 76 77 namespace svl 78 { 79 class IUndoManager; 80 } 81 82 #include <com/sun/star/uno/Reference.h> 83 84 #include <vos/ref.hxx> 85 #include <editeng/svxfont.hxx> 86 #include <editeng/eedata.hxx> 87 #include <editeng/paragraphdata.hxx> 88 89 class SvxFieldData; 90 ////////////////////////////////////////////////////////////////////////////// 91 92 namespace com { namespace sun { namespace star { namespace linguistic2 { 93 class XSpellChecker1; 94 class XHyphenator; 95 }}}} 96 namespace svx{ 97 struct SpellPortion; 98 typedef std::vector<SpellPortion> SpellPortions; 99 } 100 101 namespace basegfx { class B2DPolyPolygon; } 102 103 // nur interner Gebrauch! 104 #define PARAFLAG_DROPTARGET 0x1000 105 #define PARAFLAG_DROPTARGET_EMPTY 0x2000 106 #define PARAFLAG_HOLDDEPTH 0x4000 107 #define PARAFLAG_SETBULLETTEXT 0x8000 108 #define PARAFLAG_ISPAGE 0x0100 109 110 // Undo-Action-Ids 111 #define OLUNDO_DEPTH EDITUNDO_USER 112 // #define OLUNDO_HEIGHT EDITUNDO_USER+1 113 #define OLUNDO_EXPAND EDITUNDO_USER+2 114 #define OLUNDO_COLLAPSE EDITUNDO_USER+3 115 // #define OLUNDO_REMOVE EDITUNDO_USER+4 116 #define OLUNDO_ATTR EDITUNDO_USER+5 117 #define OLUNDO_INSERT EDITUNDO_USER+6 118 // #define OLUNDO_MOVEPARAGRAPHS EDITUNDO_USER+7 119 #define OLUNDO_CHECKPARA EDITUNDO_USER+8 120 121 class Paragraph : protected ParagraphData 122 { 123 private: 124 friend class Outliner; 125 friend class ParagraphList; 126 friend class OutlinerView; 127 friend class OutlinerParaObject; 128 friend class OutlinerEditEng; 129 friend class OLUndoDepth; 130 friend class OutlinerUndoCheckPara; 131 friend class OutlinerUndoChangeParaFlags; 132 133 Paragraph& operator=(const Paragraph& rPara ); 134 135 sal_uInt16 nFlags; 136 XubString aBulText; 137 Size aBulSize; 138 sal_Bool bVisible; 139 140 sal_Bool IsVisible() const { return bVisible; } 141 void SetText( const XubString& rText ) { aBulText = rText; aBulSize.Width() = -1; } 142 void Invalidate() { aBulSize.Width() = -1; } 143 void SetDepth( sal_Int16 nNewDepth ) { nDepth = nNewDepth; aBulSize.Width() = -1; } 144 const XubString& GetText() const { return aBulText; } 145 146 Paragraph( sal_Int16 nDepth ); 147 Paragraph( const Paragraph& ); 148 Paragraph( const ParagraphData& ); 149 ~Paragraph(); 150 151 sal_Int16 GetDepth() const { return nDepth; } 152 153 sal_Int16 GetNumberingStartValue() const { return mnNumberingStartValue; } 154 void SetNumberingStartValue( sal_Int16 nNumberingStartValue ); 155 156 sal_Bool IsParaIsNumberingRestart() const { return mbParaIsNumberingRestart; } 157 void SetParaIsNumberingRestart( sal_Bool bParaIsNumberingRestart ); 158 159 void SetFlag( sal_uInt16 nFlag ) { nFlags |= nFlag; } 160 void RemoveFlag( sal_uInt16 nFlag ) { nFlags &= ~nFlag; } 161 bool HasFlag( sal_uInt16 nFlag ) const { return (nFlags & nFlag) != 0; } 162 }; 163 164 struct ParaRange 165 { 166 sal_uInt16 nStartPara; 167 sal_uInt16 nEndPara; 168 169 ParaRange( sal_uInt16 nS, sal_uInt16 nE ) { nStartPara = nS, nEndPara = nE; } 170 171 void Adjust(); 172 sal_uInt16 Len() const { return 1 + ( ( nEndPara > nStartPara ) ? (nEndPara-nStartPara) : (nStartPara-nEndPara) ); } 173 }; 174 175 inline void ParaRange::Adjust() 176 { 177 if ( nStartPara > nEndPara ) 178 { 179 sal_uInt16 nTmp = nStartPara; 180 nStartPara = nEndPara; 181 nEndPara = nTmp; 182 } 183 } 184 185 #define OL_ROOTPARENT (Paragraph*)NULL 186 187 class EDITENG_DLLPUBLIC OutlinerView 188 { 189 friend class Outliner; 190 191 private: 192 193 Outliner* pOwner; 194 EditView* pEditView; 195 196 // Drag & Drop 197 sal_Bool bBeginDragAtMove_OLDMEMBER; 198 sal_Bool bInDragMode; 199 Point aDDStartPosRef; 200 Point aDDStartPosPix; 201 sal_uLong nDDStartPara; 202 sal_uLong nDDStartParaVisChildCount; 203 sal_uLong nDDCurPara; 204 sal_uInt16 nDDStartDepth; 205 sal_uInt16 nDDCurDepth; 206 sal_uInt16 nDDMaxDepth; 207 sal_Bool bDDChangingDepth; 208 sal_Bool bDDCursorVisible; 209 long* pHorTabArrDoc; 210 long nDDScrollLRBorderWidthWin; // Left Right 211 long nDDScrollTBBorderWidthWin; // Top Bottom 212 long nDDScrollLROffs; 213 long nDDScrollTDOffs; 214 215 void* pDummy; 216 sal_uLong nDummy; 217 218 enum MouseTarget { 219 MouseText = 0, 220 MouseBullet = 1, 221 MouseHypertext = 2, // ausserhalb OutputArea 222 MouseOutside = 3, // ausserhalb OutputArea 223 MouseDontKnow = 4 224 }; 225 MouseTarget OLD_ePrevMouseTarget; 226 227 #ifdef _OUTLINER_CXX 228 229 EDITENG_DLLPRIVATE void ImplExpandOrCollaps( sal_uInt16 nStartPara, sal_uInt16 nEndPara, sal_Bool bExpand ); 230 231 EDITENG_DLLPRIVATE sal_uLong ImpCheckMousePos( const Point& rPosPixel, MouseTarget& reTarget); 232 EDITENG_DLLPRIVATE void ImpToggleExpand( Paragraph* pParentPara ); 233 EDITENG_DLLPRIVATE ParaRange ImpGetSelectedParagraphs( sal_Bool bIncludeHiddenChilds ); 234 EDITENG_DLLPRIVATE void ImpHideDDCursor(); 235 EDITENG_DLLPRIVATE void ImpShowDDCursor(); 236 EDITENG_DLLPRIVATE void ImpPaintDDCursor(); 237 238 EDITENG_DLLPRIVATE void ImpDragScroll( const Point& rPosPix ); 239 EDITENG_DLLPRIVATE void ImpScrollLeft(); 240 EDITENG_DLLPRIVATE void ImpScrollRight(); 241 EDITENG_DLLPRIVATE void ImpScrollUp(); 242 EDITENG_DLLPRIVATE void ImpScrollDown(); 243 244 EDITENG_DLLPRIVATE sal_uLong ImpGetInsertionPara( const Point& rPosPixel ); 245 EDITENG_DLLPRIVATE Point ImpGetDocPos( const Point& rPosPixel ); 246 EDITENG_DLLPRIVATE Pointer ImpGetMousePointer( MouseTarget eTarget ); 247 EDITENG_DLLPRIVATE sal_uInt16 ImpInitPaste( sal_uLong& rStart ); 248 EDITENG_DLLPRIVATE void ImpPasted( sal_uLong nStart, sal_uLong nPrevParaCount, sal_uInt16 nSize); 249 EDITENG_DLLPRIVATE sal_uInt16 ImpCalcSelectedPages( sal_Bool bIncludeFirstSelected ); 250 EDITENG_DLLPRIVATE sal_Bool ImpIsIndentingPages(); 251 252 #endif 253 254 public: 255 OutlinerView( Outliner* pOut, Window* pWindow ); 256 virtual ~OutlinerView(); 257 258 EditView& GetEditView() const { return *pEditView; } 259 260 void Scroll( long nHorzScroll, long nVertScroll ); 261 262 void Paint( const Rectangle& rRect, OutputDevice* pTargetDevice = 0 ); 263 sal_Bool PostKeyEvent( const KeyEvent& rKEvt ); 264 sal_Bool MouseButtonDown( const MouseEvent& ); 265 sal_Bool MouseButtonUp( const MouseEvent& ); 266 sal_Bool MouseMove( const MouseEvent& ); 267 268 void ShowCursor( sal_Bool bGotoCursor = sal_True ); 269 void HideCursor(); 270 271 void SetOutliner( Outliner* pOutliner ); 272 Outliner* GetOutliner() const { return pOwner; } 273 274 void SetWindow( Window* pWindow ); 275 Window* GetWindow() const; 276 277 void SetReadOnly( sal_Bool bReadOnly ); 278 sal_Bool IsReadOnly() const; 279 280 void SetOutputArea( const Rectangle& rRect ); 281 Rectangle GetOutputArea() const; 282 283 Rectangle GetVisArea() const; 284 285 List* CreateSelectionList(); 286 287 // gibt Anzahl selektierter Absaetze zurueck 288 // MT 07/00: Who needs this? 289 sal_uLong Select( Paragraph* pParagraph, 290 sal_Bool bSelect=sal_True, 291 sal_Bool bWChilds=sal_True); 292 293 String GetSelected() const; 294 void SelectRange( sal_uLong nFirst, sal_uInt16 nCount ); 295 void SetAttribs( const SfxItemSet& ); 296 void Indent( short nDiff ); 297 void AdjustDepth( short nDX ); // Spaeter gegeb Indent ersetzen! 298 299 sal_Bool AdjustHeight( long nDY ); 300 void AdjustDepth( Paragraph* pPara, short nDX, 301 sal_Bool bWithChilds = sal_False ); 302 void AdjustHeight( Paragraph* pPara, long nDY, 303 sal_Bool bWithChilds=sal_False ); 304 305 sal_uLong Read( SvStream& rInput, const String& rBaseURL, EETextFormat eFormat, sal_Bool bSelect = sal_False, SvKeyValueIterator* pHTTPHeaderAttrs = NULL ); 306 sal_uLong Write( SvStream& rOutput, EETextFormat eFormat ); 307 308 void InsertText( const String& rNew, sal_Bool bSelect = sal_False ); 309 void InsertText( const OutlinerParaObject& rParaObj ); 310 void Expand(); 311 void Collapse(); 312 void Expand( Paragraph* ); 313 void Collapse( Paragraph* ); 314 void ExpandAll(); 315 void CollapseAll(); 316 317 void SetBackgroundColor( const Color& rColor ); 318 Color GetBackgroundColor(); 319 320 SfxItemSet GetAttribs(); 321 322 void Cut(); 323 void Copy(); 324 void Paste(); 325 void PasteSpecial(); 326 void EnablePaste( sal_Bool bEnable ); 327 328 void Undo(); 329 void Redo(); 330 331 void SetStyleSheet( SfxStyleSheet* ); 332 SfxStyleSheet* GetStyleSheet() const; 333 334 void SetControlWord( sal_uLong nWord ); 335 sal_uLong GetControlWord() const; 336 337 void SetAnchorMode( EVAnchorMode eMode ); 338 EVAnchorMode GetAnchorMode() const; 339 340 Pointer GetPointer( const Point& rPosPixel ); 341 void Command( const CommandEvent& rCEvt ); 342 void RemoveCharAttribs( sal_uLong nPara, sal_uInt16 nWhich = 0 ); 343 344 void CompleteAutoCorrect(); 345 346 EESpellState StartSpeller( sal_Bool bMultipleDoc = sal_False ); 347 EESpellState StartThesaurus(); 348 sal_uInt16 StartSearchAndReplace( const SvxSearchItem& rSearchItem ); 349 350 // for text conversion 351 void StartTextConversion( LanguageType nSrcLang, LanguageType nDestLang, const Font *pDestFont, sal_Int32 nOptions, sal_Bool bIsInteractive, sal_Bool bMultipleDoc ); 352 353 void TransliterateText( sal_Int32 nTransliterationMode ); 354 355 ESelection GetSelection(); 356 357 sal_uInt16 GetSelectedScriptType() const; 358 359 void SetVisArea( const Rectangle& rRec ); 360 void SetSelection( const ESelection& ); 361 362 void RemoveAttribs( sal_Bool bRemoveParaAttribs = sal_False, sal_uInt16 nWhich = 0, sal_Bool bKeepLanguages = sal_False ); 363 void RemoveAttribsKeepLanguages( sal_Bool bRemoveParaAttribs ); 364 sal_Bool HasSelection() const; 365 366 void InsertField( const SvxFieldItem& rFld ); 367 const SvxFieldItem* GetFieldUnderMousePointer() const; 368 const SvxFieldItem* GetFieldUnderMousePointer( sal_uInt16& nPara, xub_StrLen& nPos ) const; 369 const SvxFieldItem* GetFieldAtSelection() const; 370 371 /** enables numbering for the selected paragraphs if the numbering of the first paragraph is off 372 or disables numbering for the selected paragraphs if the numbering of the first paragraph is on 373 */ 374 void ToggleBullets(); 375 sal_Bool ToggleBullets(sal_Bool bBulletOnOff, sal_Bool bNormalBullet, sal_Bool bMasterView, SvxNumRule* pNumRule = NULL, sal_Bool bForceBulletOnOff = false); 376 sal_Bool ToggleAllParagraphsBullets(sal_Bool bBulletOnOffMode, sal_Bool bNormalBullet, sal_Bool bToggleOn, sal_Bool bMasterView, SvxNumRule* pNumRule = NULL); 377 /** enables numbering for the selected paragraphs that are not enabled and ignore all selected 378 paragraphs that already have numbering enabled. 379 */ 380 void EnableBullets(); 381 382 sal_Bool IsCursorAtWrongSpelledWord( sal_Bool bMarkIfWrong = sal_False ); 383 sal_Bool IsWrongSpelledWordAtPos( const Point& rPosPixel, sal_Bool bMarkIfWrong = sal_False ); 384 void SpellIgnoreWord(); 385 void ExecuteSpellPopup( const Point& rPosPixel, Link* pCallBack = 0 ); 386 387 void SetInvalidateMore( sal_uInt16 nPixel ); 388 sal_uInt16 GetInvalidateMore() const; 389 390 String GetSurroundingText() const; 391 Selection GetSurroundingTextSelection() const; 392 }; 393 394 395 // some thesaurus functionality to avoid code duplication in different projects... 396 bool EDITENG_DLLPUBLIC GetStatusValueForThesaurusFromContext( String &rStatusVal, LanguageType &rLang, const EditView &rEditView ); 397 void EDITENG_DLLPUBLIC ReplaceTextWithSynonym( EditView &rEditView, const String &rSynonmText ); 398 399 400 //#if 0 // _SOLAR__PRIVATE 401 DECLARE_LIST(ViewList,OutlinerView*) 402 //#else 403 //typedef List ViewList; 404 //#endif 405 406 class EDITENG_DLLPUBLIC DrawPortionInfo 407 { 408 public: 409 const Point& mrStartPos; 410 const String& mrText; 411 sal_uInt16 mnTextStart; 412 sal_uInt16 mnTextLen; 413 sal_uInt16 mnPara; 414 xub_StrLen mnIndex; 415 const SvxFont& mrFont; 416 const sal_Int32* mpDXArray; 417 418 const EEngineData::WrongSpellVector* mpWrongSpellVector; 419 const SvxFieldData* mpFieldData; 420 const ::com::sun::star::lang::Locale* mpLocale; 421 const Color maOverlineColor; 422 const Color maTextLineColor; 423 424 // #101498# BiDi level needs to be transported, too. 425 sal_uInt8 mnBiDiLevel; 426 427 // bitfield 428 unsigned mbEndOfLine : 1; 429 unsigned mbEndOfParagraph : 1; 430 unsigned mbEndOfBullet : 1; 431 432 sal_uInt8 GetBiDiLevel() const { return mnBiDiLevel; } 433 sal_Bool IsRTL() const; 434 435 DrawPortionInfo( 436 const Point& rPos, 437 const String& rTxt, 438 sal_uInt16 nTxtStart, 439 sal_uInt16 nTxtLen, 440 const SvxFont& rFnt, 441 sal_uInt16 nPar, 442 xub_StrLen nIdx, 443 const sal_Int32* pDXArr, 444 const EEngineData::WrongSpellVector* pWrongSpellVector, 445 const SvxFieldData* pFieldData, 446 const ::com::sun::star::lang::Locale* pLocale, 447 const Color& rOverlineColor, 448 const Color& rTextLineColor, 449 sal_uInt8 nBiDiLevel, 450 bool bEndOfLine, 451 bool bEndOfParagraph, 452 bool bEndOfBullet) 453 : mrStartPos(rPos), 454 mrText(rTxt), 455 mnTextStart(nTxtStart), 456 mnTextLen(nTxtLen), 457 mnPara(nPar), 458 mnIndex(nIdx), 459 mrFont(rFnt), 460 mpDXArray(pDXArr), 461 mpWrongSpellVector(pWrongSpellVector), 462 mpFieldData(pFieldData), 463 mpLocale(pLocale), 464 maOverlineColor(rOverlineColor), 465 maTextLineColor(rTextLineColor), 466 mnBiDiLevel(nBiDiLevel), 467 mbEndOfLine(bEndOfLine), 468 mbEndOfParagraph(bEndOfParagraph), 469 mbEndOfBullet(bEndOfBullet) 470 {} 471 }; 472 473 class EDITENG_DLLPUBLIC DrawBulletInfo 474 { 475 public: 476 const GraphicObject maBulletGraphicObject; 477 Point maBulletPosition; 478 Size maBulletSize; 479 480 DrawBulletInfo( 481 const GraphicObject& rBulletGraphicObject, 482 const Point& rBulletPosition, 483 const Size& rBulletSize) 484 : maBulletGraphicObject(rBulletGraphicObject), 485 maBulletPosition(rBulletPosition), 486 maBulletSize(rBulletSize) 487 {} 488 }; 489 490 struct EDITENG_DLLPUBLIC PaintFirstLineInfo 491 { 492 sal_uInt16 mnPara; 493 const Point& mrStartPos; 494 long mnBaseLineY; 495 const Point& mrOrigin; 496 short mnOrientation; 497 OutputDevice* mpOutDev; 498 499 PaintFirstLineInfo( sal_uInt16 nPara, const Point& rStartPos, long nBaseLineY, const Point& rOrigin, short nOrientation, OutputDevice* pOutDev ) 500 : mnPara( nPara ), mrStartPos( rStartPos ), mnBaseLineY( nBaseLineY ), mrOrigin( rOrigin ), mnOrientation( nOrientation ), mpOutDev( pOutDev ) 501 {} 502 }; 503 504 class SdrPage; 505 506 class EditFieldInfo 507 { 508 private: 509 Outliner* pOutliner; 510 const SvxFieldItem& rFldItem; 511 512 Color* pTxtColor; 513 Color* pFldColor; 514 515 String aRepresentation; 516 517 sal_uInt16 nPara; 518 xub_StrLen nPos; 519 sal_Bool bSimpleClick; 520 521 EditFieldInfo(); 522 EditFieldInfo( const EditFieldInfo& ); 523 524 SdrPage* mpSdrPage; 525 526 public: 527 EditFieldInfo( Outliner* pOutl, const SvxFieldItem& rFItem, sal_uInt16 nPa, xub_StrLen nPo ) 528 : rFldItem( rFItem ) 529 { 530 pOutliner = pOutl; 531 nPara = nPa; nPos = nPo; 532 pTxtColor = 0; pFldColor = 0; bSimpleClick = sal_False; 533 mpSdrPage = 0; 534 } 535 ~EditFieldInfo() 536 { 537 delete pTxtColor; 538 delete pFldColor; 539 } 540 541 Outliner* GetOutliner() const { return pOutliner; } 542 543 const SvxFieldItem& GetField() const { return rFldItem; } 544 545 Color* GetTxtColor() const { return pTxtColor; } 546 void SetTxtColor( const Color& rColor ) 547 { delete pTxtColor; pTxtColor = new Color( rColor ); } 548 549 Color* GetFldColor() const { return pFldColor; } 550 void SetFldColor( const Color& rColor ) 551 { delete pFldColor; pFldColor = new Color( rColor ); } 552 void ClearFldColor() 553 { delete pFldColor; pFldColor = 0; } 554 555 sal_uInt16 GetPara() const { return nPara; } 556 xub_StrLen GetPos() const { return nPos; } 557 558 sal_Bool IsSimpleClick() const { return bSimpleClick; } 559 void SetSimpleClick( sal_Bool bSimple ) { bSimpleClick = bSimple; } 560 561 const String& GetRepresentation() const { return aRepresentation; } 562 String& GetRepresentation() { return aRepresentation; } 563 void SetRepresentation( const String& rStr ) { aRepresentation = rStr; } 564 565 void SetSdrPage( SdrPage* pPage ) { mpSdrPage = pPage; } 566 SdrPage* GetSdrPage() const { return mpSdrPage; } 567 }; 568 569 struct EBulletInfo 570 { 571 sal_Bool bVisible; 572 sal_uInt16 nType; // see SvxNumberType 573 String aText; 574 SvxFont aFont; 575 Graphic aGraphic; 576 sal_uInt16 nParagraph; 577 Rectangle aBounds; 578 579 EBulletInfo() : bVisible( sal_False ), nType( 0 ), nParagraph( EE_PARA_NOT_FOUND ) {} 580 }; 581 582 #define OUTLINERMODE_DONTKNOW 0x0000 583 #define OUTLINERMODE_TEXTOBJECT 0x0001 584 #define OUTLINERMODE_TITLEOBJECT 0x0002 585 #define OUTLINERMODE_OUTLINEOBJECT 0x0003 586 #define OUTLINERMODE_OUTLINEVIEW 0x0004 587 588 #define OUTLINERMODE_USERMASK 0x00FF 589 590 #define OUTLINERMODE_SUBTITLE (0x0100|OUTLINERMODE_TEXTOBJECT) 591 #define OUTLINERMODE_NOTE (0x0200|OUTLINERMODE_TEXTOBJECT) 592 593 class EDITENG_DLLPUBLIC Outliner : public SfxBroadcaster 594 { 595 friend class OutlinerView; 596 friend class OutlinerEditEng; 597 friend class OutlinerParaObject; 598 friend class OLUndoExpand; 599 friend class OutlinerUndoChangeDepth; 600 friend class OutlinerUndoCheckPara; 601 friend class OutlinerUndoChangeParaFlags; 602 603 OutlinerEditEng* pEditEngine; 604 605 ParagraphList* pParaList; 606 ViewList aViewList; 607 608 Paragraph* pHdlParagraph; 609 sal_uLong mnFirstSelPage; 610 Link aDrawPortionHdl; 611 Link aDrawBulletHdl; 612 Link aExpandHdl; 613 Link aParaInsertedHdl; 614 Link aParaRemovingHdl; 615 Link aDepthChangedHdl; 616 Link aWidthArrReqHdl; 617 Link aBeginMovingHdl; 618 Link aEndMovingHdl; 619 Link aIndentingPagesHdl; 620 Link aRemovingPagesHdl; 621 Link aFieldClickedHdl; 622 Link aCalcFieldValueHdl; 623 Link maPaintFirstLineHdl; 624 Link maBeginPasteOrDropHdl; 625 Link maEndPasteOrDropHdl; 626 627 sal_Int16 nDepthChangedHdlPrevDepth; 628 sal_uInt16 mnDepthChangeHdlPrevFlags; 629 sal_Int16 nMaxDepth; 630 const sal_Int16 nMinDepth; 631 sal_uInt16 nFirstPage; 632 633 sal_uInt16 nOutlinerMode; 634 635 sal_Bool bIsExpanding; // Nur in Expand/Collaps-Hdl gueltig, mal umstellen 636 sal_Bool bFirstParaIsEmpty; 637 sal_Bool bBlockInsCallback; 638 sal_Bool bStrippingPortions; 639 sal_Bool bPasting; 640 641 sal_uLong nDummy; 642 643 #ifdef _OUTLINER_CXX 644 645 DECL_LINK( ParaVisibleStateChangedHdl, Paragraph* ); 646 DECL_LINK( BeginMovingParagraphsHdl, MoveParagraphsInfo* ); 647 DECL_LINK( EndMovingParagraphsHdl, MoveParagraphsInfo* ); 648 DECL_LINK( BeginPasteOrDropHdl, PasteOrDropInfos* ); 649 DECL_LINK( EndPasteOrDropHdl, PasteOrDropInfos* ); 650 DECL_LINK( EditEngineNotifyHdl, EENotify* ); 651 void ImplCheckParagraphs( sal_uInt16 nStart, sal_uInt16 nEnd ); 652 sal_Bool ImplHasBullet( sal_uInt16 nPara ) const; 653 Size ImplGetBulletSize( sal_uInt16 nPara ); 654 sal_uInt16 ImplGetNumbering( sal_uInt16 nPara, const SvxNumberFormat* pParaFmt ); 655 void ImplCalcBulletText( sal_uInt16 nPara, sal_Bool bRecalcLevel, sal_Bool bRecalcChilds ); 656 String ImplGetBulletText( sal_uInt16 nPara ); 657 void ImplCheckNumBulletItem( sal_uInt16 nPara ); 658 void ImplInitDepth( sal_uInt16 nPara, sal_Int16 nDepth, sal_Bool bCreateUndo, sal_Bool bUndoAction = sal_False ); 659 void ImplSetLevelDependendStyleSheet( sal_uInt16 nPara, SfxStyleSheet* pLevelStyle = NULL ); 660 661 void ImplBlockInsertionCallbacks( sal_Bool b ); 662 663 void ImplCheckStyleSheet( sal_uInt16 nPara, sal_Bool bReplaceExistingStyle ); 664 void ImpRecalcBulletIndent( sal_uLong nPara ); 665 666 const SvxBulletItem& ImpGetBullet( sal_uLong nPara, sal_uInt16& ); 667 void ImpFilterIndents( sal_uLong nFirstPara, sal_uLong nLastPara ); 668 bool ImpConvertEdtToOut( sal_uInt32 nPara, EditView* pView = 0 ); 669 670 void ImpTextPasted( sal_uLong nStartPara, sal_uInt16 nCount ); 671 long ImpCalcMaxBulletWidth( sal_uInt16 nPara, const SvxBulletItem& rBullet ); 672 Font ImpCalcBulletFont( sal_uInt16 nPara ) const; 673 Rectangle ImpCalcBulletArea( sal_uInt16 nPara, sal_Bool bAdjust, sal_Bool bReturnPaperPos ); 674 long ImpGetTextIndent( sal_uLong nPara ); 675 sal_Bool ImpCanIndentSelectedPages( OutlinerView* pCurView ); 676 sal_Bool ImpCanDeleteSelectedPages( OutlinerView* pCurView ); 677 sal_Bool ImpCanDeleteSelectedPages( OutlinerView* pCurView, sal_uInt16 nFirstPage, sal_uInt16 nPages ); 678 679 sal_uInt16 ImplGetOutlinerMode() const { return nOutlinerMode & OUTLINERMODE_USERMASK; } 680 void ImplCheckDepth( sal_Int16& rnDepth ) const; 681 #endif 682 683 protected: 684 void ParagraphInserted( sal_uInt16 nParagraph ); 685 void ParagraphDeleted( sal_uInt16 nParagraph ); 686 void ParaAttribsChanged( sal_uInt16 nParagraph ); 687 688 virtual void StyleSheetChanged( SfxStyleSheet* pStyle ); 689 690 void InvalidateBullet( Paragraph* pPara, sal_uLong nPara ); 691 void PaintBullet( sal_uInt16 nPara, const Point& rStartPos, 692 const Point& rOrigin, short nOrientation, 693 OutputDevice* pOutDev ); 694 695 // used by OutlinerEditEng. Allows Outliner objects to provide 696 // bullet access to the EditEngine. 697 virtual const SvxNumberFormat* GetNumberFormat( sal_uInt16 nPara ) const; 698 699 public: 700 701 Outliner( SfxItemPool* pPool, sal_uInt16 nOutlinerMode ); 702 virtual ~Outliner(); 703 704 void Init( sal_uInt16 nOutlinerMode ); 705 sal_uInt16 GetMode() const { return nOutlinerMode; } 706 707 void SetVertical( sal_Bool bVertical ); 708 sal_Bool IsVertical() const; 709 710 void SetFixedCellHeight( sal_Bool bUseFixedCellHeight ); 711 sal_Bool IsFixedCellHeight() const; 712 713 void SetDefaultHorizontalTextDirection( EEHorizontalTextDirection eHTextDir ); 714 EEHorizontalTextDirection GetDefaultHorizontalTextDirection() const; 715 716 sal_uInt16 GetScriptType( const ESelection& rSelection ) const; 717 LanguageType GetLanguage( sal_uInt16 nPara, sal_uInt16 nPos ) const; 718 719 void SetAsianCompressionMode( sal_uInt16 nCompressionMode ); 720 sal_uInt16 GetAsianCompressionMode() const; 721 722 void SetKernAsianPunctuation( sal_Bool bEnabled ); 723 sal_Bool IsKernAsianPunctuation() const; 724 725 void SetAddExtLeading( sal_Bool b ); 726 sal_Bool IsAddExtLeading() const; 727 728 sal_uLong InsertView( OutlinerView* pView, sal_uLong nIndex=LIST_APPEND); 729 OutlinerView* RemoveView( OutlinerView* pView ); 730 OutlinerView* RemoveView( sal_uLong nIndex ); 731 OutlinerView* GetView( sal_uLong nIndex ) const; 732 sal_uLong GetViewCount() const; 733 734 Paragraph* Insert( const String& rText, sal_uLong nAbsPos = LIST_APPEND, sal_Int16 nDepth = 0 ); 735 void SetText( const OutlinerParaObject& ); 736 void AddText( const OutlinerParaObject& ); 737 void SetText( const String& rText, Paragraph* pParagraph ); 738 String GetText( Paragraph* pPara, sal_uLong nParaCount=1 ) const; 739 740 OutlinerParaObject* CreateParaObject( sal_uInt16 nStartPara = 0, sal_uInt16 nParaCount = 0xFFFF ) const; 741 742 const SfxItemSet& GetEmptyItemSet() const; 743 744 void SetRefMapMode( const MapMode& ); 745 MapMode GetRefMapMode() const; 746 747 void SetBackgroundColor( const Color& rColor ); 748 Color GetBackgroundColor() const; 749 750 sal_Int16 GetMinDepth() const { return -1; } 751 752 void SetMaxDepth( sal_Int16 nDepth, sal_Bool bCheckParas = sal_False ); 753 sal_Int16 GetMaxDepth() const { return nMaxDepth; } 754 755 void SetUpdateMode( sal_Bool bUpdate ); 756 sal_Bool GetUpdateMode() const; 757 758 void Clear(); 759 760 void RemoveAttribs( const ESelection& rSelection, sal_Bool bRemoveParaAttribs, sal_uInt16 nWhich ); 761 762 sal_uLong GetParagraphCount() const; 763 Paragraph* GetParagraph( sal_uLong nAbsPos ) const; 764 765 sal_Bool HasParent( Paragraph* pParagraph ) const; 766 sal_Bool HasChilds( Paragraph* pParagraph ) const; 767 sal_uLong GetChildCount( Paragraph* pParent ) const; 768 sal_Bool IsExpanded( Paragraph* pPara ) const; 769 // Paragraph* GetParagraph( Paragraph* pParent, sal_uLong nRelPos ) const; 770 Paragraph* GetParent( Paragraph* pParagraph ) const; 771 // sal_uLong GetRelPos( Paragraph* pParent, Paragraph* pPara ) const; 772 sal_uLong GetAbsPos( Paragraph* pPara ); 773 774 sal_Int16 GetDepth( sal_uLong nPara ) const; 775 void SetDepth( Paragraph* pParagraph, sal_Int16 nNewDepth ); 776 777 void SetVisible( Paragraph* pPara, sal_Bool bVisible ); 778 sal_Bool IsVisible( Paragraph* pPara ) const { return pPara->IsVisible(); } 779 780 void EnableUndo( sal_Bool bEnable ); 781 sal_Bool IsUndoEnabled() const; 782 void UndoActionStart( sal_uInt16 nId ); 783 void UndoActionEnd( sal_uInt16 nId ); 784 void InsertUndo( EditUndo* pUndo ); 785 sal_Bool IsInUndo(); 786 787 void ClearModifyFlag(); 788 sal_Bool IsModified() const; 789 790 Paragraph* GetHdlParagraph() const { return pHdlParagraph; } 791 sal_Bool IsExpanding() const { return bIsExpanding; } 792 793 virtual void ExpandHdl(); 794 void SetExpandHdl( const Link& rLink ) { aExpandHdl = rLink; } 795 Link GetExpandHdl() const { return aExpandHdl; } 796 797 virtual void ParagraphInsertedHdl(); 798 void SetParaInsertedHdl(const Link& rLink){aParaInsertedHdl=rLink;} 799 Link GetParaInsertedHdl() const { return aParaInsertedHdl; } 800 801 virtual void ParagraphRemovingHdl(); 802 void SetParaRemovingHdl(const Link& rLink){aParaRemovingHdl=rLink;} 803 Link GetParaRemovingHdl() const { return aParaRemovingHdl; } 804 805 virtual void DepthChangedHdl(); 806 void SetDepthChangedHdl(const Link& rLink){aDepthChangedHdl=rLink;} 807 Link GetDepthChangedHdl() const { return aDepthChangedHdl; } 808 sal_Int16 GetPrevDepth() const { return nDepthChangedHdlPrevDepth; } 809 sal_uInt16 GetPrevFlags() const { return mnDepthChangeHdlPrevFlags; } 810 811 virtual long RemovingPagesHdl( OutlinerView* ); 812 void SetRemovingPagesHdl(const Link& rLink){aRemovingPagesHdl=rLink;} 813 Link GetRemovingPagesHdl() const { return aRemovingPagesHdl; } 814 virtual long IndentingPagesHdl( OutlinerView* ); 815 void SetIndentingPagesHdl(const Link& rLink){aIndentingPagesHdl=rLink;} 816 Link GetIndentingPagesHdl() const { return aIndentingPagesHdl; } 817 // nur gueltig in den beiden oberen Handlern 818 sal_uInt16 GetSelPageCount() const { return nDepthChangedHdlPrevDepth; } 819 // nur gueltig in den beiden oberen Handlern 820 sal_uLong GetFirstSelPage() const { return mnFirstSelPage; } 821 822 void SetCalcFieldValueHdl(const Link& rLink ) { aCalcFieldValueHdl= rLink; } 823 Link GetCalcFieldValueHdl() const { return aCalcFieldValueHdl; } 824 825 void SetFieldClickedHdl(const Link& rLink ) { aFieldClickedHdl= rLink; } 826 Link GetFieldClickedHdl() const { return aFieldClickedHdl; } 827 828 void SetDrawPortionHdl(const Link& rLink){aDrawPortionHdl=rLink;} 829 Link GetDrawPortionHdl() const { return aDrawPortionHdl; } 830 831 void SetDrawBulletHdl(const Link& rLink){aDrawBulletHdl=rLink;} 832 Link GetDrawBulletHdl() const { return aDrawBulletHdl; } 833 834 void SetPaintFirstLineHdl(const Link& rLink) { maPaintFirstLineHdl = rLink; } 835 Link GetPaintFirstLineHdl() const { return maPaintFirstLineHdl; } 836 837 void SetModifyHdl( const Link& rLink ); 838 Link GetModifyHdl() const; 839 840 void SetNotifyHdl( const Link& rLink ); 841 Link GetNotifyHdl() const; 842 843 void SetStatusEventHdl( const Link& rLink ); 844 Link GetStatusEventHdl() const; 845 846 void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect ); 847 void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect, const Point& rStartDocPos ); 848 void Draw( OutputDevice* pOutDev, const Point& rStartPos, short nOrientation = 0 ); 849 850 const Size& GetPaperSize() const; 851 void SetPaperSize( const Size& rSize ); 852 853 void SetFirstPageNumber( sal_uInt16 n ) { nFirstPage = n; } 854 sal_uInt16 GetFirstPageNumber() const { return nFirstPage; } 855 856 void SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon ); 857 void SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::B2DPolyPolygon* pLinePolyPolygon); 858 void ClearPolygon(); 859 const PolyPolygon* GetPolygon(); 860 861 const Size& GetMinAutoPaperSize() const; 862 void SetMinAutoPaperSize( const Size& rSz ); 863 864 const Size& GetMaxAutoPaperSize() const; 865 void SetMaxAutoPaperSize( const Size& rSz ); 866 867 void SetDefTab( sal_uInt16 nTab ); 868 sal_uInt16 GetDefTab() const; 869 870 sal_Bool IsFlatMode() const; 871 void SetFlatMode( sal_Bool bFlat ); 872 873 void EnableAutoColor( sal_Bool b ); 874 sal_Bool IsAutoColorEnabled() const; 875 876 void ForceAutoColor( sal_Bool b ); 877 sal_Bool IsForceAutoColor() const; 878 879 EBulletInfo GetBulletInfo( sal_uInt16 nPara ); 880 881 void SetWordDelimiters( const String& rDelimiters ); 882 String GetWordDelimiters() const; 883 String GetWord( sal_uInt16 nPara, xub_StrLen nIndex ); 884 885 void StripPortions(); 886 887 // #101498# 888 virtual void DrawingText( 889 const Point& rStartPos, const String& rText, sal_uInt16 nTextStart, sal_uInt16 nTextLen, 890 const sal_Int32* pDXArray, const SvxFont& rFont, sal_uInt16 nPara, xub_StrLen nIndex, sal_uInt8 nRightToLeft, 891 const EEngineData::WrongSpellVector* pWrongSpellVector, 892 const SvxFieldData* pFieldData, 893 bool bEndOfLine, 894 bool bEndOfParagraph, 895 bool bEndOfBullet, 896 const ::com::sun::star::lang::Locale* pLocale, 897 const Color& rOverlineColor, 898 const Color& rTextLineColor); 899 900 Size CalcTextSize(); 901 902 Point GetDocPos( Paragraph* pPara ); 903 904 void SetStyleSheetPool( SfxStyleSheetPool* pSPool ); 905 SfxStyleSheetPool* GetStyleSheetPool(); 906 907 sal_Bool IsInSelectionMode() const; 908 909 void SetStyleSheet( sal_uLong nPara, SfxStyleSheet* pStyle ); 910 SfxStyleSheet* GetStyleSheet( sal_uLong nPara ); 911 912 void SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& ); 913 SfxItemSet GetParaAttribs( sal_uInt16 nPara ); 914 915 void Remove( Paragraph* pPara, sal_uLong nParaCount ); 916 sal_Bool Expand( Paragraph* ); 917 sal_Bool Collapse( Paragraph* ); 918 919 void SetParaFlag( Paragraph* pPara, sal_uInt16 nFlag ); 920 void RemoveParaFlag( Paragraph* pPara, sal_uInt16 nFlag ); 921 bool HasParaFlag( const Paragraph* pPara, sal_uInt16 nFlag ) const; 922 923 // gibt ein Array mit den Bulletbreiten der n Einrueckebenen 924 // zurueck. Letzter Wert muss -1 sein. Wird vom Outliner geloescht. 925 Link GetWidthArrReqHdl() const{ return aWidthArrReqHdl; } 926 void SetWidthArrReqHdl(const Link& rLink){aWidthArrReqHdl=rLink; } 927 928 void SetControlWord( sal_uLong nWord ); 929 sal_uLong GetControlWord() const; 930 931 Link GetBeginMovingHdl() const { return aBeginMovingHdl; } 932 void SetBeginMovingHdl(const Link& rLink) {aBeginMovingHdl=rLink;} 933 Link GetEndMovingHdl() const {return aEndMovingHdl;} 934 void SetEndMovingHdl( const Link& rLink){aEndMovingHdl=rLink;} 935 936 sal_uLong GetLineCount( sal_uLong nParagraph ) const; 937 sal_uInt16 GetLineLen( sal_uLong nParagraph, sal_uInt16 nLine ) const; 938 sal_uLong GetLineHeight( sal_uLong nParagraph, sal_uLong nLine = 0 ); 939 940 // nFormat muss ein Wert aus dem enum EETextFormat sein (wg.CLOOKS) 941 sal_uLong Read( SvStream& rInput, const String& rBaseURL, sal_uInt16, SvKeyValueIterator* pHTTPHeaderAttrs = NULL ); 942 943 ::svl::IUndoManager& GetUndoManager(); 944 ::svl::IUndoManager* SetUndoManager(::svl::IUndoManager* pNew); 945 946 void QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel ); 947 void QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel ); 948 void QuickInsertLineBreak( const ESelection& rSel ); 949 950 // nur fuer EditEngine-Modus 951 void QuickInsertText( const String& rText, const ESelection& rSel ); 952 void QuickDelete( const ESelection& rSel ); 953 void QuickRemoveCharAttribs( sal_uInt16 nPara, sal_uInt16 nWhich = 0 ); 954 void QuickFormatDoc( sal_Bool bFull = sal_False ); 955 956 sal_Bool UpdateFields(); 957 void RemoveFields( sal_Bool bKeepFieldText, TypeId aType = NULL ); 958 959 virtual void FieldClicked( const SvxFieldItem& rField, sal_uInt16 nPara, xub_StrLen nPos ); 960 virtual void FieldSelected( const SvxFieldItem& rField, sal_uInt16 nPara, xub_StrLen nPos ); 961 virtual String CalcFieldValue( const SvxFieldItem& rField, sal_uInt16 nPara, xub_StrLen nPos, Color*& rTxtColor, Color*& rFldColor ); 962 963 void SetSpeller( ::com::sun::star::uno::Reference< 964 ::com::sun::star::linguistic2::XSpellChecker1 > &xSpeller ); 965 ::com::sun::star::uno::Reference< 966 ::com::sun::star::linguistic2::XSpellChecker1 > 967 GetSpeller(); 968 ::com::sun::star::uno::Reference< 969 ::com::sun::star::linguistic2::XHyphenator > 970 GetHyphenator() const; 971 void SetHyphenator( ::com::sun::star::uno::Reference< 972 ::com::sun::star::linguistic2::XHyphenator >& xHyph ); 973 974 void SetForbiddenCharsTable( vos::ORef<SvxForbiddenCharactersTable> xForbiddenChars ); 975 vos::ORef<SvxForbiddenCharactersTable> GetForbiddenCharsTable() const; 976 977 // Depricated 978 void SetDefaultLanguage( LanguageType eLang ); 979 LanguageType GetDefaultLanguage() const; 980 981 sal_Bool HasOnlineSpellErrors() const; 982 void CompleteOnlineSpelling(); 983 984 EESpellState HasSpellErrors(); 985 sal_Bool HasText( const SvxSearchItem& rSearchItem ); 986 virtual sal_Bool SpellNextDocument(); 987 988 // for text conversion 989 sal_Bool HasConvertibleTextPortion( LanguageType nLang ); 990 virtual sal_Bool ConvertNextDocument(); 991 992 void SetEditTextObjectPool( SfxItemPool* pPool ); 993 SfxItemPool* GetEditTextObjectPool() const; 994 995 void SetRefDevice( OutputDevice* pRefDev ); 996 OutputDevice* GetRefDevice() const; 997 998 sal_uInt16 GetFirstLineOffset( sal_uLong nParagraph ); 999 1000 sal_uLong GetTextHeight() const; 1001 sal_uLong GetTextHeight( sal_uLong nParagraph ) const; 1002 Point GetDocPosTopLeft( sal_uLong nParagraph ); 1003 Point GetDocPos( const Point& rPaperPos ) const; 1004 sal_Bool IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder = 0 ); 1005 sal_Bool IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder, sal_Bool* pbBuuletPos ); 1006 1007 void SetGlobalCharStretching( sal_uInt16 nX = 100, sal_uInt16 nY = 100 ); 1008 void GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY ); 1009 void DoStretchChars( sal_uInt16 nX, sal_uInt16 nY ); 1010 void EraseVirtualDevice(); 1011 1012 void SetBigTextObjectStart( sal_uInt16 nStartAtPortionCount ); 1013 sal_uInt16 GetBigTextObjectStart() const; 1014 sal_Bool ShouldCreateBigTextObject() const; 1015 1016 const EditEngine& GetEditEngine() const { return *((EditEngine*)pEditEngine); } 1017 1018 // this is needed for StarOffice Api 1019 void SetLevelDependendStyleSheet( sal_uInt16 nPara ); 1020 1021 sal_uInt16 GetOutlinerMode() const { return nOutlinerMode & OUTLINERMODE_USERMASK; } 1022 1023 void StartSpelling(EditView& rEditView, sal_Bool bMultipleDoc); 1024 //spell and return a sentence 1025 bool SpellSentence(EditView& rEditView, ::svx::SpellPortions& rToFill, bool bIsGrammarChecking ); 1026 // put spell position to start of current sentence 1027 void PutSpellingToSentenceStart( EditView& rEditView ); 1028 //applies a changed sentence 1029 void ApplyChangedSentence(EditView& rEditView, const ::svx::SpellPortions& rNewPortions, bool bRecheck ); 1030 void EndSpelling(); 1031 1032 /** sets a link that is called at the beginning of a drag operation at an edit view */ 1033 void SetBeginDropHdl( const Link& rLink ); 1034 Link GetBeginDropHdl() const; 1035 1036 /** sets a link that is called at the end of a drag operation at an edit view */ 1037 void SetEndDropHdl( const Link& rLink ); 1038 Link GetEndDropHdl() const; 1039 1040 /** sets a link that is called before a drop or paste operation. */ 1041 void SetBeginPasteOrDropHdl( const Link& rLink ); 1042 Link GetBeginPasteOrDropHdl() const { return maBeginPasteOrDropHdl; } 1043 1044 /** sets a link that is called after a drop or paste operation. */ 1045 void SetEndPasteOrDropHdl( const Link& rLink ); 1046 Link GetEndPasteOrDropHdl() const { return maEndPasteOrDropHdl; } 1047 1048 virtual sal_Int16 GetNumberingStartValue( sal_uInt16 nPara ); 1049 virtual void SetNumberingStartValue( sal_uInt16 nPara, sal_Int16 nNumberingStartValue ); 1050 1051 virtual sal_Bool IsParaIsNumberingRestart( sal_uInt16 nPara ); 1052 virtual void SetParaIsNumberingRestart( sal_uInt16 nPara, sal_Bool bParaIsNumberingRestart ); 1053 1054 sal_Int16 GetBulletsNumberingStatus(); 1055 }; 1056 1057 #endif 1058 1059