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 _SWVIEW_HXX
24 #define _SWVIEW_HXX
25
26 #include <vcl/timer.hxx>
27 #include <vcl/field.hxx>
28 #include <svtools/htmlcfg.hxx>
29 #include <sfx2/viewfac.hxx>
30 #include <sfx2/viewsh.hxx>
31 #include <sfx2/objsh.hxx>
32 #include <editeng/svxenum.hxx>
33 #include <svx/zoomitem.hxx>
34 #include <editeng/editstat.hxx>
35 #include "swdllapi.h"
36 #include <swtypes.hxx>
37 #include <shellid.hxx>
38 #include <layout/layout.hxx>
39 #include <IMark.hxx>
40
41 class SwBaseShell;
42 class Button;
43 class ImageButton;
44 class SwTxtFmtColl;
45 class SwPageDesc;
46 class SwFrmFmt;
47 class SwCharFmt;
48 class SwNumRule;
49 class SwViewOption;
50 class SwGlossaryHdl;
51 class SwDrawBase;
52 class SvxRuler;
53 class SvxLRSpaceItem;
54 class SwDocShell;
55 class SwScrollbar;
56 class SvxVCBrowser;
57 class SvBorder;
58 class Ruler;
59 class OutlinerView;
60 class SvxSearchItem;
61 class SearchAttrItemList;
62 class SvxSearchDialog;
63 class SdrView;
64 class Dialog;
65 class SdrObject;
66 class SdrPageView;
67 class SwNaviImageButton;
68 class SwHlpImageButton;
69 class Outliner;
70 class SwView;
71 class SwEditWin;
72 class SwWrtShell;
73 class SwView_Impl;
74 class XSelectionObject;
75 struct SwSearchOptions;
76 class FmFormShell;
77 class CommandEvent;
78 class InsCaptionOpt;
79 class SvGlobalName;
80 class SvtAccessibilityOptions;
81 class SwTransferable;
82 class SwMailMergeConfigItem;
83 class SwTxtNode; // #i23726#
84 class SwPrintData;
85 class SwFormatClipboard;
86 struct SwConversionArgs;
87 class Graphic;
88 class GraphicFilter;
89 class SwPostItMgr;
90 class SwFieldBookmark;
91
92 namespace com{ namespace sun { namespace star {
93 namespace view{ class XSelectionSupplier; }
94 }}}
95 namespace sfx2 { class FileDialogHelper; }
96
97 const long nLeftOfst = -370;
98 const long nScrollX = 30;
99 const long nScrollY = 30;
100
101 #define MINZOOM 20
102 #define MAXZOOM 600
103
104 #define MAX_MARKS 5
105
106 #define CHILDWIN_LABEL 1
107 #define CHILDWIN_MAILMERGE 2
108
109 enum ShellModes
110 {
111 SHELL_MODE_TEXT,
112 SHELL_MODE_FRAME,
113 SHELL_MODE_GRAPHIC,
114 SHELL_MODE_OBJECT,
115 SHELL_MODE_DRAW,
116 SHELL_MODE_DRAW_CTRL,
117 SHELL_MODE_DRAW_FORM,
118 SHELL_MODE_DRAWTEXT,
119 SHELL_MODE_BEZIER,
120 SHELL_MODE_LIST_TEXT,
121 SHELL_MODE_TABLE_TEXT,
122 SHELL_MODE_TABLE_LIST_TEXT,
123 SHELL_MODE_MEDIA,
124 SHELL_MODE_EXTRUDED_CUSTOMSHAPE,
125 SHELL_MODE_FONTWORK,
126 SHELL_MODE_POSTIT
127 };
128
129 /*--------------------------------------------------------------------
130 Beschreibung: Anwendung einer Vorlage
131 --------------------------------------------------------------------*/
132
133 struct SwApplyTemplate
134 {
135 union
136 {
137 SwTxtFmtColl* pTxtColl;
138 SwPageDesc* pPageDesc;
139 SwFrmFmt* pFrmFmt;
140 SwCharFmt* pCharFmt;
141 SwNumRule* pNumRule;
142 } aColl;
143
144 int eType;
145 sal_uInt16 nColor;
146 SwFormatClipboard* pFormatClipboard;
147 sal_Bool bUndo;
148
SwApplyTemplateSwApplyTemplate149 SwApplyTemplate() :
150 eType(0),
151 nColor(0),
152 pFormatClipboard(0),
153 bUndo(sal_False)
154 {
155 aColl.pTxtColl = 0;
156 }
157 };
158
159
160 /*--------------------------------------------------------------------
161 Beschreibung: Sicht auf ein Dokument
162 --------------------------------------------------------------------*/
163
164 class SW_DLLPUBLIC SwView: public SfxViewShell
165 {
166 //Messehack (MA,MBA)
167 friend void lcl_SelectShellForDrop( SwView &rView );
168
169 friend class TestTemplateItem;
170 friend class SwHHCWrapper;
171 friend class SwHyphWrapper;
172 friend class SwView_Impl;
173 friend class SwClipboardChangeListener;
174
175 //suchen & ersetzen
176 static SvxSearchDialog *pSrchDlg;
177 static SvxSearchItem *pSrchItem;
178
179 static sal_uInt16 nInsertCtrlState;
180 static sal_uInt16 nWebInsertCtrlState;
181 static sal_uInt16 nInsertObjectCtrlState;
182 static sal_uInt16 nInsertFieldCtrlState;
183 static sal_uInt16 nMoveType; // fuer Buttons unter dem Scrollbar (viewmdi)
184 static sal_Int32 nActMark; // aktuelle Sprungmarke fuer unbenannte Merker
185
186 static sal_Bool bExtra;
187 static sal_Bool bFound;
188 static sal_Bool bJustOpened;
189
190 static SearchAttrItemList* pSrchList;
191 static SearchAttrItemList* pReplList;
192
193
194 SvxHtmlOptions aHTMLOpt;
195 Timer aTimer; //Fuer verzoegerte ChgLnks waehrend
196 //einer Aktion
197 String aPageStr; //Statusanzeige, aktuelle Seite
198 String sSwViewData,
199 //and the new cursor position if the user double click in the PagePreView
200 sNewCrsrPos;
201 // to support keyboard the number of the page to go to can be set too
202 sal_uInt16 nNewPage;
203 sal_uInt16 nOldPageNum;
204 String nOldSectionName;
205 Point aTabColFromDocPos; //Verschieben von Tabellenspalten aus
206 //aus dem Dokument heraus.
207 SwTxtNode * pNumRuleNodeFromDoc; // Moving indent of numrule #i23726#
208
209 Size aDocSz; // aktuelle Dokumentgroesse
210 Rectangle aVisArea; // sichtbarer Bereich
211
212 SwEditWin *pEditWin;
213 SwWrtShell *pWrtShell;
214
215 SfxShell *pShell; //aktuelle SubShell auf dem Dispatcher
216 FmFormShell *pFormShell; // DB-FormShell
217
218 SwView_Impl *pViewImpl; // Impl-Daten fuer UNO + Basic
219
220
221 SwScrollbar *pHScrollbar, // MDI Bedienelemente
222 *pVScrollbar;
223
224 Window *pScrollFill; // Dummy-Window zum Fuellen der rechten
225 // unteren Ecke, wenn beide Scrollbars
226 // aktiv sind
227
228 SvxRuler *pHRuler,
229 *pVRuler;
230 ImageButton *pTogglePageBtn;
231
232 SwHlpImageButton *pPageUpBtn,
233 *pPageDownBtn;
234
235 SwNaviImageButton *pNaviBtn;
236 SwGlossaryHdl *pGlosHdl; // Henkel Textbausteine
237 SwDrawBase *pDrawActual;
238
239 const SwFrmFmt *pLastTableFormat;
240
241 SwFormatClipboard *pFormatClipboard; //holds data for format paintbrush
242
243 SwPostItMgr *mpPostItMgr;
244
245 int nSelectionType;
246
247 static const int MASTERENUMCOMMANDS = 6;
248
249 String aCurrShapeEnumCommand[ MASTERENUMCOMMANDS ];
250
251 sal_uInt16 nPageCnt;
252
253 // Aktueller Drawmode
254 sal_uInt16 nDrawSfxId;
255 String sDrawCustom; //some drawing types are marked with strings!
256 sal_uInt16 nFormSfxId;
257 sal_uInt16 nLastPasteDestination;
258
259 // save the border distance status from SwView::StateTabWin to re-use it in SwView::ExecTabWin()
260 sal_uInt16 nLeftBorderDistance;
261 sal_uInt16 nRightBorderDistance;
262
263 sal_Bool bCenterCrsr : 1,
264 bTopCrsr : 1,
265 bAllwaysShowSel : 1,
266 bTabColFromDoc : 1,
267 bNumIndentFromDoc : 1, // #i23726#
268 bTabRowFromDoc : 1,
269 bSetTabColFromDoc : 1 ,
270 bSetTabRowFromDoc : 1,
271 bAttrChgNotified : 1,
272 bAttrChgNotifiedWithRegistrations : 1,
273 bVerbsActive : 1,
274 bDrawRotate : 1,
275 bDrawSelMode : 1,
276 bShowAtResize : 1,
277 bInOuterResizePixel : 1,
278 bInInnerResizePixel : 1,
279 bPasteState : 1,
280 bPasteSpecialState : 1,
281 bInMailMerge : 1,
282 bInDtor : 1, //detect destructor to prevent creating of sub shells while closing
283 bOldShellWasPagePreView : 1,
284 bIsPreviewDoubleClick : 1, // #i114045#
285 bMakeSelectionVisible : 1 // #b6330459# transport the bookmark selection
286 ;
287
288 // Methoden fuers Suchen
289 // Suchkontext setzen
290 SW_DLLPRIVATE sal_Bool SearchAndWrap(sal_Bool bApi = sal_False);
291 SW_DLLPRIVATE sal_Bool SearchAll(sal_uInt16* pFound = 0);
292 SW_DLLPRIVATE sal_uLong FUNC_Search( const SwSearchOptions& rOptions );
293 SW_DLLPRIVATE void Replace();
294
295 sal_Bool IsDocumentBorder();
296
297 SW_DLLPRIVATE sal_Bool IsTextTool() const;
298
299 // Bedienelemente verwalten anlegen
300 SW_DLLPRIVATE void CreateBtns();
301 SW_DLLPRIVATE DECL_LINK( BtnPage, Button * );
302
303 SW_DLLPRIVATE DECL_LINK( TimeoutHdl, Timer * );
304 SW_DLLPRIVATE DECL_LINK( UpdatePercentHdl, GraphicFilter* );
305
306 SW_DLLPRIVATE DECL_LINK( HtmlOptionsHdl, void * );
307
308 inline long GetXScroll() const;
309 inline long GetYScroll() const;
310 SW_DLLPRIVATE Point AlignToPixel(const Point& rPt) const;
311 SW_DLLPRIVATE void CalcPt( Point* pPt,const Rectangle& rRect,
312 sal_uInt16 nRangeX = USHRT_MAX,
313 sal_uInt16 nRangeY = USHRT_MAX);
314
315 SW_DLLPRIVATE sal_Bool GetPageScrollUpOffset(SwTwips& rOff) const;
316 SW_DLLPRIVATE sal_Bool GetPageScrollDownOffset(SwTwips& rOff) const;
317
318 // Scrollbar Movements
319 SW_DLLPRIVATE long PageUp();
320 SW_DLLPRIVATE long PageDown();
321 SW_DLLPRIVATE long PageUpCrsr(sal_Bool bSelect);
322 SW_DLLPRIVATE long PageDownCrsr(sal_Bool bSelect);
323 SW_DLLPRIVATE long PhyPageUp();
324 SW_DLLPRIVATE long PhyPageDown();
325
326 SW_DLLPRIVATE int _CreateScrollbar( sal_Bool bHori );
327 SW_DLLPRIVATE DECL_LINK( ScrollHdl, SwScrollbar * );
328 SW_DLLPRIVATE DECL_LINK( EndScrollHdl, SwScrollbar * );
329 SW_DLLPRIVATE sal_Bool UpdateScrollbars();
330 SW_DLLPRIVATE void CalcVisArea( const Size &rPixelSz );
331
332 SW_DLLPRIVATE void CreatePageButtons(sal_Bool bShow);
333
334 // Linguistik-Funktionen
335 SW_DLLPRIVATE void HyphenateDocument();
336 SW_DLLPRIVATE sal_Bool IsDrawTextHyphenate();
337 SW_DLLPRIVATE void HyphenateDrawText();
338 SW_DLLPRIVATE void StartThesaurus();
339
340 // text conversion
341 SW_DLLPRIVATE void StartTextConversion( LanguageType nSourceLang, LanguageType nTargetLang, const Font *pTargetFont, sal_Int32 nOptions, sal_Bool bIsInteractive );
342
343 // used for spell checking and text conversion
344 SW_DLLPRIVATE void SpellStart( SvxSpellArea eSpell, sal_Bool bStartDone,
345 sal_Bool bEndDone, SwConversionArgs *pConvArgs = 0 );
346 SW_DLLPRIVATE void SpellEnd( SwConversionArgs *pConvArgs = 0 );
347
348 SW_DLLPRIVATE void HyphStart( SvxSpellArea eSpell );
349 SW_DLLPRIVATE sal_Bool CheckSpecialCntnt();
SpellKontext(sal_Bool bOn=sal_True)350 SW_DLLPRIVATE void SpellKontext(sal_Bool bOn = sal_True)
351 { bCenterCrsr = bOn; bAllwaysShowSel = bOn; }
352
353 // Methoden fuers Printing
354 SW_DLLPRIVATE virtual SfxPrinter* GetPrinter( sal_Bool bCreate = sal_False );
355 SfxTabPage* CreatePrintOptionsPage( Window* pParent,
356 const SfxItemSet& rSet);
357 // fuer Readonly-Umschaltung
358 SW_DLLPRIVATE virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
359 SW_DLLPRIVATE void _CheckReadonlyState();
360 SW_DLLPRIVATE void _CheckReadonlySelection();
361
362 // Methode fuer PageDesc drehen
363 SW_DLLPRIVATE void SwapPageMargin(const SwPageDesc&, SvxLRSpaceItem& rLR);
364
365 SW_DLLPRIVATE void _SetZoom( const Size &rEditSz,
366 SvxZoomType eZoomType,
367 short nFactor = 100,
368 sal_Bool bViewOnly = sal_False);
369 SW_DLLPRIVATE void CalcAndSetBorderPixel( SvBorder &rToFill, sal_Bool bInner );
370
371 SW_DLLPRIVATE void ShowAtResize();
372
373 SW_DLLPRIVATE virtual void Move();
374
375 public: // #123922# Needs to be called from a 2nd place now as a helper method
376 SW_DLLPRIVATE sal_Bool InsertGraphicDlg( SfxRequest& );
377
378 protected:
379
GetViewImpl()380 SwView_Impl* GetViewImpl() {return pViewImpl;}
381
382 void ImpSetVerb( int nSelType );
383
GetSelectionType() const384 int GetSelectionType() const { return nSelectionType; }
SetSelectionType(int nSet)385 void SetSelectionType(int nSet) { nSelectionType = nSet;}
386
387 // fuer die SwWebView
SetShell(SfxShell * pS)388 void SetShell( SfxShell* pS ) { pShell = pS; }
SetFormShell(FmFormShell * pSh)389 void SetFormShell( FmFormShell* pSh ) { pFormShell = pSh; }
390
391 virtual void SelectShell();
392
393 virtual void Activate(sal_Bool);
394 virtual void Deactivate(sal_Bool);
395 virtual void InnerResizePixel( const Point &rOfs, const Size &rSize );
396 virtual void OuterResizePixel( const Point &rOfs, const Size &rSize );
397 virtual Size GetOptimalSizePixel() const;
398
399 void SetImageButtonColor(Color& rColor);
400
GetLastTblFrmFmt() const401 const SwFrmFmt* GetLastTblFrmFmt() const {return pLastTableFormat;}
SetLastTblFrmFmt(const SwFrmFmt * pSet)402 void SetLastTblFrmFmt(const SwFrmFmt* pSet) {pLastTableFormat = pSet;}
403
404 // form letter execution
405 void GenerateFormLetter(sal_Bool bUseCurrentDocument);
406
407 using SfxShell::GetDispatcher;
408
409 public:
410
411 SFX_DECL_VIEWFACTORY(SwView);
412 SFX_DECL_INTERFACE(SW_VIEWSHELL)
413 TYPEINFO();
414
415 SfxDispatcher &GetDispatcher();
416
417 void GotFocus() const;
418 virtual SdrView* GetDrawView() const;
419 virtual sal_Bool HasUIFeature( sal_uInt32 nFeature );
420 virtual void ShowCursor( FASTBOOL bOn = sal_True );
421 virtual ErrCode DoVerb( long nVerb );
422
423 virtual sal_uInt16 SetPrinter( SfxPrinter* pNew,
424 sal_uInt16 nDiff = SFX_PRINTER_ALL, bool bIsAPI=false);
425 ShellModes GetShellMode();
426
427 com::sun::star::view::XSelectionSupplier* GetUNOObject();
428
429 String GetSelectionTextParam( sal_Bool bCompleteWords,
430 sal_Bool bEraseTrail );
431 virtual sal_Bool HasSelection( sal_Bool bText ) const;
432 virtual String GetSelectionText( sal_Bool bCompleteWords = sal_False );
433 virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False );
434 virtual void MarginChanged();
435
436 // replace word/selection with text from the thesaurus
437 // (this code has special handling for "in word" character)
438 void InsertThesaurusSynonym( const String &rSynonmText, const String &rLookUpText, bool bValidSelection );
439 bool IsValidSelectionForThesaurus() const;
440 String GetThesaurusLookUpText( bool bSelection ) const;
441
442 // Shell sofort wechseln -> fuer GetSelectionObject
443 void StopShellTimer();
444
GetWrtShell() const445 inline SwWrtShell& GetWrtShell () const { return *pWrtShell; }
GetWrtShellPtr() const446 inline SwWrtShell* GetWrtShellPtr() const { return pWrtShell; }
447
GetEditWin()448 inline SwEditWin &GetEditWin() { return *pEditWin; }
GetEditWin() const449 inline const SwEditWin &GetEditWin () const { return *pEditWin; }
450
451 #if defined WNT || defined UNX
452 void ScannerEventHdl( const ::com::sun::star::lang::EventObject& rEventObject );
453 #endif
454
455 //Handler fuer Textbausteine an die Textshell rausreichen, gfs. anlegen
456 SwGlossaryHdl* GetGlosHdl();
457
GetVisArea() const458 inline const Rectangle& GetVisArea() const { return aVisArea; }
459
460 sal_Bool IsScroll(const Rectangle& rRect) const;
461 void Scroll( const Rectangle& rRect,
462 sal_uInt16 nRangeX = USHRT_MAX,
463 sal_uInt16 nRangeY = USHRT_MAX);
464
465 long SetVScrollMax(long lMax);
466 long SetHScrollMax(long lMax);
467
468 DECL_LINK( SpellError, LanguageType * );
469 sal_Bool ExecSpellPopup( const Point& rPt );
470 sal_Bool ExecFieldPopup( const Point& rPt, sw::mark::IFieldmark *fieldBM );
471 // SMARTTAGS
472 sal_Bool ExecSmartTagPopup( const Point& rPt );
473
474 DECL_LINK( OnlineSpellCallback, SpellCallbackInfo*);
475 sal_Bool ExecDrwTxtSpellPopup(const Point& rPt);
476
SetTabColFromDocPos(const Point & rPt)477 void SetTabColFromDocPos( const Point &rPt ) { aTabColFromDocPos = rPt; }
SetTabColFromDoc(sal_Bool b)478 void SetTabColFromDoc( sal_Bool b ) { bTabColFromDoc = b; }
IsTabColFromDoc() const479 sal_Bool IsTabColFromDoc() const { return bTabColFromDoc; }
SetTabRowFromDoc(sal_Bool b)480 void SetTabRowFromDoc( sal_Bool b ) { bTabRowFromDoc = b; }
IsTabRowFromDoc() const481 sal_Bool IsTabRowFromDoc() const { return bTabRowFromDoc; }
482
483 // -> #i23726#
SetNumRuleNodeFromDoc(SwTxtNode * pNumRuleNode)484 void SetNumRuleNodeFromDoc( SwTxtNode * pNumRuleNode )
485 { pNumRuleNodeFromDoc = pNumRuleNode; }
SetNumIndentFromDoc(sal_Bool b)486 void SetNumIndentFromDoc(sal_Bool b) { bNumIndentFromDoc = b; }
IsNumIndentFromDoc() const487 sal_Bool IsNumIndentFromDoc() const { return NULL != pNumRuleNodeFromDoc; }
488 // <- #i23726#
489
490 void DocSzChgd( const Size& rNewSize );
GetDocSz() const491 const Size& GetDocSz() const { return aDocSz; }
492 virtual void SetVisArea( const Rectangle&, sal_Bool bUpdateScrollbar = sal_True);
493 void SetVisArea( const Point&, sal_Bool bUpdateScrollbar = sal_True);
494 void CheckVisArea();
495
496 void RecheckBrowseMode();
497 static LAYOUT_NS Dialog* GetSearchDialog();
498
499 static sal_uInt16 GetMoveType();
500 static void SetMoveType(sal_uInt16 nSet);
501 DECL_STATIC_LINK( SwView, MoveNavigationHdl, bool* ); // #i75416#
502 static void SetActMark(sal_Int32 nSet);
503
504 sal_Bool HandleWheelCommands( const CommandEvent& );
505
506 // Rahmen einfuegen
507 void InsFrmMode(sal_uInt16 nCols);
508
509 void SetZoom( SvxZoomType eZoomType, short nFactor = 100, sal_Bool bViewOnly = sal_False);
510 virtual void SetZoomFactor( const Fraction &rX, const Fraction & );
511
512 void SetViewLayout( sal_uInt16 nColumns, bool bBookMode, sal_Bool bViewOnly = sal_False );
513
514 void ShowHScrollbar(sal_Bool bShow);
515 sal_Bool IsHScrollbarVisible()const;
516
517 void ShowVScrollbar(sal_Bool bShow);
518 sal_Bool IsVScrollbarVisible()const;
519
520 int CreateVLineal();
521 int KillVLineal();
522 int CreateTab();
523 int KillTab();
524
StatVLineal() const525 int StatVLineal() const { return ((Window*)pVRuler)->IsVisible(); }
526 void ChangeVLinealMetric(FieldUnit eUnit);
527 void GetVLinealMetric(FieldUnit& rToFill) const;
528
StatTab() const529 int StatTab() const { return ((Window*)pHRuler)->IsVisible(); }
GetHLineal()530 SvxRuler& GetHLineal() { return *pHRuler; }
GetVLineal()531 SvxRuler& GetVLineal() { return *pVRuler; }
532 void InvalidateRulerPos();
533 void ChangeTabMetric(FieldUnit eUnit);
534 void GetHLinealMetric(FieldUnit& rToFill) const;
535
536 // Handler
537 void Execute(SfxRequest&);
538 void ExecPageMove(SfxRequest&);
539 void ExecStyle(SfxRequest&);
540 void ExecLingu(SfxRequest&);
541 void ExecDataBase(SfxRequest&);
542 void ExecDlg(SfxRequest&);
543 void ExecDlgExt(SfxRequest&);
544 void ExecDBDlg(SfxRequest &);
545 void ExecColl(SfxRequest&);
546 void ExecutePrint(SfxRequest&);
547 void ExecDraw(SfxRequest&);
548 void ExecTabWin(SfxRequest&);
549 void ExecuteStatusLine(SfxRequest&);
550 DECL_LINK( ExecRulerClick, Ruler * );
551 void ExecSearch(SfxRequest&, sal_Bool bNoMessage = sal_False);
552 void ExecViewOptions(SfxRequest &);
553
554 void StateViewOptions(SfxItemSet &);
555 void StateSearch(SfxItemSet &);
556 void GetState(SfxItemSet&);
557 void StateStatusLine(SfxItemSet&);
558
559
560 // Funktionen fuer Drawing
561 void SetDrawFuncPtr(SwDrawBase* pFuncPtr);
GetDrawFuncPtr() const562 inline SwDrawBase* GetDrawFuncPtr(/*sal_Bool bBuf = sal_False*/) const { return pDrawActual; }
563 void GetDrawState(SfxItemSet &rSet);
564 void ExitDraw();
IsDrawRotate()565 inline sal_Bool IsDrawRotate() { return bDrawRotate; }
FlipDrawRotate()566 inline void FlipDrawRotate() { bDrawRotate = !bDrawRotate; }
IsDrawSelMode()567 inline sal_Bool IsDrawSelMode() { return bDrawSelMode; }
568 void SetSelDrawSlot();
FlipDrawSelMode()569 inline void FlipDrawSelMode() { bDrawSelMode = !bDrawSelMode; }
570 void NoRotate(); // Rotate-Mode abschalten
571 sal_Bool EnterDrawTextMode(const Point& aDocPos);
LeaveDrawCreate()572 void LeaveDrawCreate() { nDrawSfxId = nFormSfxId = USHRT_MAX; sDrawCustom.Erase();}
IsDrawMode()573 sal_Bool IsDrawMode() { return (nDrawSfxId != USHRT_MAX || nFormSfxId != USHRT_MAX); }
574 sal_Bool IsFormMode() const;
575 sal_Bool IsBezierEditMode();
576 sal_Bool AreOnlyFormsSelected() const;
577 sal_Bool HasDrwObj(SdrObject *pSdrObj) const;
578 sal_Bool HasOnlyObj(SdrObject *pSdrObj, sal_uInt32 eObjInventor) const;
579 sal_Bool BeginTextEdit( SdrObject* pObj, SdrPageView* pPV=NULL,
580 Window* pWin=NULL, bool bIsNewObj=false, bool bSetSelectionToStart=false );
581
582 void StateTabWin(SfxItemSet&);
583
584 // Attribute haben sich geaendert
585 DECL_LINK( AttrChangedNotify, SwWrtShell * );
586
587 // form control has been activated
588 DECL_LINK( FormControlActivated, FmFormShell* );
589
590 // Links bearbeiten
591 void EditLinkDlg();
592 void AutoCaption(const sal_uInt16 nType, const SvGlobalName *pOleId = 0);
593 void InsertCaption(const InsCaptionOpt *pOpt);
594
595 // Async Aufruf durch Core
596 void UpdatePageNums(sal_uInt16 nPhyNum, sal_uInt16 nVirtNum, const String& rPgStr);
597
598 String GetPageStr(sal_uInt16 nPhyNum, sal_uInt16 nVirtNum, const String& rPgStr);
599
600 // Shell rausreichen
GetCurShell()601 SfxShell *GetCurShell() { return pShell; }
602 SwDocShell *GetDocShell();
603 inline const SwDocShell *GetDocShell() const;
GetFormShell()604 inline FmFormShell *GetFormShell() { return pFormShell; }
GetFormShell() const605 inline const FmFormShell *GetFormShell() const { return pFormShell; }
606
607 //damit in DToren der SubShells ggf. pShell zurueckgesetzt werden kann
ResetSubShell()608 void ResetSubShell() { pShell = 0; }
609
610 virtual void WriteUserData(String &, sal_Bool bBrowse = sal_False );
611 virtual void ReadUserData(const String &, sal_Bool bBrowse = sal_False );
612 virtual void ReadUserDataSequence ( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse );
613 virtual void WriteUserDataSequence ( com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse );
614
SetCrsrAtTop(sal_Bool bFlag,sal_Bool bCenter=sal_False)615 void SetCrsrAtTop( sal_Bool bFlag, sal_Bool bCenter = sal_False )
616 { bTopCrsr = bFlag, bCenterCrsr = bCenter; }
IsCrsrAtTop() const617 sal_Bool IsCrsrAtTop() const { return bTopCrsr; }
IsCrsrAtCenter() const618 sal_Bool IsCrsrAtCenter() const { return bCenterCrsr; }
619
620 sal_Bool JumpToSwMark( const String& rMark );
621
622 long InsertDoc( sal_uInt16 nSlotId, const String& rFileName,
623 const String& rFilterName, sal_Int16 nVersion = 0 );
624
625 void ExecuteInsertDoc( SfxRequest& rRequest, const SfxPoolItem* pItem );
626 long InsertMedium( sal_uInt16 nSlotId, SfxMedium* pMedium, sal_Int16 nVersion );
627 DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper * );
628
629 // status methods for clipboard.
630 // Status changes now notified from the clipboard.
631 sal_Bool IsPasteAllowed();
632 sal_Bool IsPasteSpecialAllowed();
633
634 // Enable mail merge - mail merge field dialog enabled
635 void EnableMailMerge(sal_Bool bEnable = sal_True);
636 //apply Accessiblity options
637 void ApplyAccessiblityOptions(SvtAccessibilityOptions& rAccessibilityOptions);
638
639 SwView(SfxViewFrame* pFrame, SfxViewShell*);
640 ~SwView();
641
642 void NotifyDBChanged();
643
644 SfxObjectShellLock & GetTmpSelectionDoc();
645 SfxObjectShellLock & GetOrCreateTmpSelectionDoc();
646
647 void AddTransferable(SwTransferable& rTransferable);
648
649 // store MailMerge data while "Back to Mail Merge Wizard" FloatingWindow is active
650 // or to support printing
651 void SetMailMergeConfigItem(SwMailMergeConfigItem* pConfigItem, sal_uInt16 nRestart, sal_Bool bIsSource);
652 SwMailMergeConfigItem* GetMailMergeConfigItem();
653 sal_uInt16 GetMailMergeRestartPage() const;
654 sal_Bool IsMailMergeSourceView() const;
655
656 void ExecFormatPaintbrush(SfxRequest &);
657 void StateFormatPaintbrush(SfxItemSet &);
658
659 //public fuer D&D
660 int InsertGraphic( const String &rPath, const String &rFilter,
661 sal_Bool bLink = sal_True, GraphicFilter *pFlt = 0,
662 Graphic* pPreviewGrf = 0,
663 sal_Bool bRule = sal_False );
664
665 void ExecuteScan( SfxRequest& rReq );
666
GetPostItMgr()667 SwPostItMgr* GetPostItMgr() { return mpPostItMgr;}
GetPostItMgr() const668 const SwPostItMgr* GetPostItMgr() const { return mpPostItMgr;}
669 };
670
671 // ----------------- inline Methoden ----------------------
672
GetXScroll() const673 inline long SwView::GetXScroll() const
674 {
675 return aVisArea.GetWidth() * nScrollX / 100L;
676 }
677
GetYScroll() const678 inline long SwView::GetYScroll() const
679 {
680 return aVisArea.GetHeight() * nScrollY / 100L;
681 }
682
GetDocShell() const683 inline const SwDocShell *SwView::GetDocShell() const
684 {
685 return ((SwView*)this)->GetDocShell();
686 }
687
688 //***********************************************************
689
690 SfxTabPage* CreatePrintOptionsPage( Window *pParent,
691 const SfxItemSet &rOptions,
692 sal_Bool bPreview);
693
694 #endif
695
696