diff options
Diffstat (limited to 'sw/source/ui/inc/view.hxx')
-rw-r--r-- | sw/source/ui/inc/view.hxx | 698 |
1 files changed, 698 insertions, 0 deletions
diff --git a/sw/source/ui/inc/view.hxx b/sw/source/ui/inc/view.hxx new file mode 100644 index 000000000000..d63149eb7c4f --- /dev/null +++ b/sw/source/ui/inc/view.hxx @@ -0,0 +1,698 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _SWVIEW_HXX +#define _SWVIEW_HXX + +#include <vcl/timer.hxx> +#include <vcl/field.hxx> +#include <svtools/htmlcfg.hxx> +#include <sfx2/viewfac.hxx> +#include <sfx2/viewsh.hxx> +#include <sfx2/objsh.hxx> // SfxObjectShellRef <-> SV_DECL_REF(SfxObjectShell) +#include <editeng/svxenum.hxx> +#include <svx/zoomitem.hxx> +#include <editeng/editstat.hxx> +#include "swdllapi.h" +#include <swtypes.hxx> +#include <shellid.hxx> +#include <layout/layout.hxx> +#include <IMark.hxx> + +class SwBaseShell; +class Button; +class ImageButton; +class SwTxtFmtColl; +class SwPageDesc; +class SwFrmFmt; +class SwCharFmt; +class SwNumRule; +class SwViewOption; +class SwGlossaryHdl; +class SwDrawBase; +class SvxRuler; +class SvxLRSpaceItem; +class SwDocShell; +class SwScrollbar; +class PrintDialog; +class SvxVCBrowser; +class SvBorder; +class Ruler; +class OutlinerView; +class SvxSearchItem; +class SearchAttrItemList; +class SvxSearchDialog; +class SdrView; +class Dialog; +class SdrObject; +class SdrPageView; +class SwNaviImageButton; +class SwHlpImageButton; +class Outliner; +class SwView; +class SwEditWin; +class SwWrtShell; +class SwView_Impl; +class XSelectionObject; +struct SwSearchOptions; +class FmFormShell; +class CommandEvent; +class InsCaptionOpt; +class SvGlobalName; +class SvtAccessibilityOptions; +class SwPrtOptions; +class SwTransferable; +class SwMailMergeConfigItem; +class SwTxtNode; // #i23726# +class SwPrintData; +class SwFormatClipboard; +struct SwConversionArgs; +class Graphic; +class GraphicFilter; +class SwPostItMgr; +class SwFieldBookmark; + +namespace com{ namespace sun { namespace star { + namespace view{ class XSelectionSupplier; } +}}} +namespace sfx2 { class FileDialogHelper; } + +const long nLeftOfst = -370; +const long nScrollX = 30; +const long nScrollY = 30; + +#define MINZOOM 20 +#define MAXZOOM 600 + +#define MAX_MARKS 5 + +#define CHILDWIN_LABEL 1 +#define CHILDWIN_MAILMERGE 2 + +enum ShellModes +{ + SHELL_MODE_TEXT, + SHELL_MODE_FRAME, + SHELL_MODE_GRAPHIC, + SHELL_MODE_OBJECT, + SHELL_MODE_DRAW, + SHELL_MODE_DRAW_CTRL, + SHELL_MODE_DRAW_FORM, + SHELL_MODE_DRAWTEXT, + SHELL_MODE_BEZIER, + SHELL_MODE_LIST_TEXT, + SHELL_MODE_TABLE_TEXT, + SHELL_MODE_TABLE_LIST_TEXT, + SHELL_MODE_MEDIA, + SHELL_MODE_EXTRUDED_CUSTOMSHAPE, + SHELL_MODE_FONTWORK, + SHELL_MODE_POSTIT +}; + +/*-------------------------------------------------------------------- + Beschreibung: Anwendung einer Vorlage + --------------------------------------------------------------------*/ + +struct SwApplyTemplate +{ + union + { + SwTxtFmtColl* pTxtColl; + SwPageDesc* pPageDesc; + SwFrmFmt* pFrmFmt; + SwCharFmt* pCharFmt; + SwNumRule* pNumRule; + } aColl; + + int eType; + USHORT nColor; + SwFormatClipboard* pFormatClipboard; + BOOL bUndo; + + SwApplyTemplate() : + eType(0), + nColor(0), + pFormatClipboard(0), + bUndo(FALSE) + { + aColl.pTxtColl = 0; + } +}; + + +/*-------------------------------------------------------------------- + Beschreibung: Sicht auf ein Dokument + --------------------------------------------------------------------*/ + +class SW_DLLPUBLIC SwView: public SfxViewShell +{ + //Messehack (MA,MBA) + friend void lcl_SelectShellForDrop( SwView &rView ); + + friend class TestTemplateItem; + friend class SwHHCWrapper; + friend class SwHyphWrapper; + friend class SwView_Impl; + friend class SwClipboardChangeListener; + + //suchen & ersetzen + static SvxSearchDialog *pSrchDlg; + static SvxSearchItem *pSrchItem; + + static USHORT nInsertCtrlState; + static USHORT nWebInsertCtrlState; + static USHORT nInsertObjectCtrlState; + static USHORT nInsertFieldCtrlState; + static USHORT nMoveType; // fuer Buttons unter dem Scrollbar (viewmdi) + static sal_Int32 nActMark; // aktuelle Sprungmarke fuer unbenannte Merker + + static BOOL bExtra; + static BOOL bFound; + static BOOL bJustOpened; + + static SearchAttrItemList* pSrchList; + static SearchAttrItemList* pReplList; + + + SvxHtmlOptions aHTMLOpt; + Timer aTimer; //Fuer verzoegerte ChgLnks waehrend + //einer Aktion + String aPageStr; //Statusanzeige, aktuelle Seite + String sSwViewData, + //and the new cursor position if the user double click in the PagePreView + sNewCrsrPos; + // to support keyboard the number of the page to go to can be set too + USHORT nNewPage; + + Point aTabColFromDocPos; //Verschieben von Tabellenspalten aus + //aus dem Dokument heraus. + SwTxtNode * pNumRuleNodeFromDoc; // Moving indent of numrule #i23726# + + Size aDocSz; // aktuelle Dokumentgroesse + Rectangle aVisArea; // sichtbarer Bereich + + SwEditWin *pEditWin; + SwWrtShell *pWrtShell; + + SfxShell *pShell; //aktuelle SubShell auf dem Dispatcher + FmFormShell *pFormShell; // DB-FormShell + + SwView_Impl *pViewImpl; // Impl-Daten fuer UNO + Basic + + + SwScrollbar *pHScrollbar, // MDI Bedienelemente + *pVScrollbar; + + Window *pScrollFill; // Dummy-Window zum Fuellen der rechten + // unteren Ecke, wenn beide Scrollbars + // aktiv sind + + SvxRuler *pHRuler, + *pVRuler; + ImageButton *pTogglePageBtn; + + SwHlpImageButton *pPageUpBtn, + *pPageDownBtn; + + SwNaviImageButton *pNaviBtn; + SwGlossaryHdl *pGlosHdl; // Henkel Textbausteine + SwDrawBase *pDrawActual; + + const SwFrmFmt *pLastTableFormat; + + SwFormatClipboard *pFormatClipboard; //holds data for format paintbrush + + SwPostItMgr *mpPostItMgr; + + int nSelectionType; + + static const int MASTERENUMCOMMANDS = 6; + + String aCurrShapeEnumCommand[ MASTERENUMCOMMANDS ]; + + USHORT nPageCnt; + + // Aktueller Drawmode + USHORT nDrawSfxId; + String sDrawCustom; //some drawing types are marked with strings! + USHORT nFormSfxId; + USHORT nLastPasteDestination; + + // save the border distance status from SwView::StateTabWin to re-use it in SwView::ExecTabWin() + USHORT nLeftBorderDistance; + USHORT nRightBorderDistance; + + BOOL bCenterCrsr : 1, + bTopCrsr : 1, + bAllwaysShowSel : 1, + bTabColFromDoc : 1, + bNumIndentFromDoc : 1, // #i23726# + bTabRowFromDoc : 1, + bSetTabColFromDoc : 1 , + bSetTabRowFromDoc : 1, + bAttrChgNotified : 1, + bAttrChgNotifiedWithRegistrations : 1, + bVerbsActive : 1, + bDrawRotate : 1, + bDrawSelMode : 1, + bShowAtResize : 1, + bInOuterResizePixel : 1, + bInInnerResizePixel : 1, + bPasteState : 1, + bPasteSpecialState : 1, + bInMailMerge : 1, + bInDtor : 1, //detect destructor to prevent creating of sub shells while closing + bOldShellWasPagePreView : 1, + bMakeSelectionVisible : 1 // #b6330459# transport the bookmark selection + ; + + // Methoden fuers Suchen + // Suchkontext setzen + SW_DLLPRIVATE BOOL SearchAndWrap(BOOL bApi = FALSE); + SW_DLLPRIVATE BOOL SearchAll(USHORT* pFound = 0); + SW_DLLPRIVATE ULONG FUNC_Search( const SwSearchOptions& rOptions ); + SW_DLLPRIVATE void Replace(); + + BOOL IsDocumentBorder(); + + SW_DLLPRIVATE BOOL IsTextTool() const; + + // Bedienelemente verwalten anlegen + SW_DLLPRIVATE void CreateBtns(); + SW_DLLPRIVATE DECL_LINK( BtnPage, Button * ); + + SW_DLLPRIVATE DECL_LINK( TimeoutHdl, Timer * ); + SW_DLLPRIVATE DECL_LINK( UpdatePercentHdl, GraphicFilter* ); + + SW_DLLPRIVATE DECL_LINK( HtmlOptionsHdl, void * ); + + inline long GetXScroll() const; + inline long GetYScroll() const; + SW_DLLPRIVATE Point AlignToPixel(const Point& rPt) const; + SW_DLLPRIVATE void CalcPt( Point* pPt,const Rectangle& rRect, + USHORT nRangeX = USHRT_MAX, + USHORT nRangeY = USHRT_MAX); + + SW_DLLPRIVATE BOOL GetPageScrollUpOffset(SwTwips& rOff) const; + SW_DLLPRIVATE BOOL GetPageScrollDownOffset(SwTwips& rOff) const; + + // Scrollbar Movements + SW_DLLPRIVATE long PageUp(); + SW_DLLPRIVATE long PageDown(); + SW_DLLPRIVATE long PageUpCrsr(BOOL bSelect); + SW_DLLPRIVATE long PageDownCrsr(BOOL bSelect); + SW_DLLPRIVATE long PhyPageUp(); + SW_DLLPRIVATE long PhyPageDown(); + + SW_DLLPRIVATE int _CreateScrollbar( BOOL bHori ); + SW_DLLPRIVATE DECL_LINK( ScrollHdl, SwScrollbar * ); + SW_DLLPRIVATE DECL_LINK( EndScrollHdl, SwScrollbar * ); + SW_DLLPRIVATE BOOL UpdateScrollbars(); + SW_DLLPRIVATE void CalcVisArea( const Size &rPixelSz ); + + SW_DLLPRIVATE void CreatePageButtons(BOOL bShow); + + // Linguistik-Funktionen + SW_DLLPRIVATE void HyphenateDocument(); + SW_DLLPRIVATE BOOL IsDrawTextHyphenate(); + SW_DLLPRIVATE void HyphenateDrawText(); + SW_DLLPRIVATE void StartThesaurus(); + + // text conversion + SW_DLLPRIVATE void StartTextConversion( LanguageType nSourceLang, LanguageType nTargetLang, const Font *pTargetFont, sal_Int32 nOptions, sal_Bool bIsInteractive ); + + // used for spell checking and text conversion + SW_DLLPRIVATE void SpellStart( SvxSpellArea eSpell, BOOL bStartDone, + BOOL bEndDone, SwConversionArgs *pConvArgs = 0 ); + SW_DLLPRIVATE void SpellEnd( SwConversionArgs *pConvArgs = 0 ); + + SW_DLLPRIVATE void HyphStart( SvxSpellArea eSpell ); + SW_DLLPRIVATE BOOL CheckSpecialCntnt(); + SW_DLLPRIVATE void SpellKontext(BOOL bOn = TRUE) + { bCenterCrsr = bOn; bAllwaysShowSel = bOn; } + + // Methoden fuers Printing + SW_DLLPRIVATE virtual SfxPrinter* GetPrinter( BOOL bCreate = FALSE ); + SW_DLLPRIVATE virtual PrintDialog* CreatePrintDialog( Window* pParent ); + SfxTabPage* CreatePrintOptionsPage( Window* pParent, + const SfxItemSet& rSet); + // fuer Readonly-Umschaltung + SW_DLLPRIVATE virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + SW_DLLPRIVATE void _CheckReadonlyState(); + SW_DLLPRIVATE void _CheckReadonlySelection(); + + // Methode fuer PageDesc drehen + SW_DLLPRIVATE void SwapPageMargin(const SwPageDesc&, SvxLRSpaceItem& rLR); + + SW_DLLPRIVATE void _SetZoom( const Size &rEditSz, + SvxZoomType eZoomType, + short nFactor = 100, + BOOL bViewOnly = FALSE); + SW_DLLPRIVATE void CalcAndSetBorderPixel( SvBorder &rToFill, BOOL bInner ); + + SW_DLLPRIVATE void ShowAtResize(); + + SW_DLLPRIVATE virtual void Move(); + + SW_DLLPRIVATE BOOL InsertGraphicDlg( SfxRequest& ); + +protected: + + SwView_Impl* GetViewImpl() {return pViewImpl;} + + void ImpSetVerb( int nSelType ); + + int GetSelectionType() const { return nSelectionType; } + void SetSelectionType(int nSet) { nSelectionType = nSet;} + + // fuer die SwWebView + void SetShell( SfxShell* pS ) { pShell = pS; } + void SetFormShell( FmFormShell* pSh ) { pFormShell = pSh; } + + virtual void SelectShell(); + + virtual void Activate(BOOL); + virtual void Deactivate(BOOL); + virtual void InnerResizePixel( const Point &rOfs, const Size &rSize ); + virtual void OuterResizePixel( const Point &rOfs, const Size &rSize ); + virtual Size GetOptimalSizePixel() const; + + void SetImageButtonColor(Color& rColor); + + const SwFrmFmt* GetLastTblFrmFmt() const {return pLastTableFormat;} + void SetLastTblFrmFmt(const SwFrmFmt* pSet) {pLastTableFormat = pSet;} + + // form letter execution + void GenerateFormLetter(BOOL bUseCurrentDocument); + + using SfxShell::GetDispatcher; + +public: + + SFX_DECL_VIEWFACTORY(SwView); + SFX_DECL_INTERFACE(SW_VIEWSHELL) + TYPEINFO(); + + SfxDispatcher &GetDispatcher(); + + void GotFocus() const; + virtual SdrView* GetDrawView() const; + virtual sal_Bool HasUIFeature( sal_uInt32 nFeature ); + virtual void ShowCursor( FASTBOOL bOn = TRUE ); + virtual ErrCode DoVerb( long nVerb ); + + virtual USHORT SetPrinter( SfxPrinter* pNew, + USHORT nDiff = SFX_PRINTER_ALL, bool bIsAPI=false); + ShellModes GetShellMode(); + + com::sun::star::view::XSelectionSupplier* GetUNOObject(); + + String GetSelectionTextParam( BOOL bCompleteWords, + BOOL bEraseTrail ); + virtual BOOL HasSelection( BOOL bText ) const; + virtual String GetSelectionText( BOOL bCompleteWords = FALSE ); + virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE ); + virtual void MarginChanged(); + + // replace word/selection with text from the thesaurus + // (this code has special handling for "in word" character) + void InsertThesaurusSynonym( const String &rSynonmText, const String &rLookUpText, bool bValidSelection ); + bool IsValidSelectionForThesaurus() const; + String GetThesaurusLookUpText( bool bSelection ) const; + + // Shell sofort wechseln -> fuer GetSelectionObject + void StopShellTimer(); + + inline SwWrtShell& GetWrtShell () const { return *pWrtShell; } + inline SwWrtShell* GetWrtShellPtr() const { return pWrtShell; } + + inline SwEditWin &GetEditWin() { return *pEditWin; } + inline const SwEditWin &GetEditWin () const { return *pEditWin; } + +#if defined WIN || defined WNT || defined UNX + void ScannerEventHdl( const ::com::sun::star::lang::EventObject& rEventObject ); +#endif + + //Handler fuer Textbausteine an die Textshell rausreichen, gfs. anlegen + SwGlossaryHdl* GetGlosHdl(); + + inline const Rectangle& GetVisArea() const { return aVisArea; } + + BOOL IsScroll(const Rectangle& rRect) const; + void Scroll( const Rectangle& rRect, + USHORT nRangeX = USHRT_MAX, + USHORT nRangeY = USHRT_MAX); + + long SetVScrollMax(long lMax); + long SetHScrollMax(long lMax); + + DECL_LINK( SpellError, LanguageType * ); + BOOL ExecSpellPopup( const Point& rPt ); + BOOL ExecFieldPopup( const Point& rPt, sw::mark::IFieldmark *fieldBM ); + // SMARTTAGS + BOOL ExecSmartTagPopup( const Point& rPt ); + + DECL_LINK( OnlineSpellCallback, SpellCallbackInfo*); + BOOL ExecDrwTxtSpellPopup(const Point& rPt); + + void SetTabColFromDocPos( const Point &rPt ) { aTabColFromDocPos = rPt; } + void SetTabColFromDoc( BOOL b ) { bTabColFromDoc = b; } + BOOL IsTabColFromDoc() const { return bTabColFromDoc; } + void SetTabRowFromDoc( BOOL b ) { bTabRowFromDoc = b; } + BOOL IsTabRowFromDoc() const { return bTabRowFromDoc; } + + // -> #i23726# + void SetNumRuleNodeFromDoc( SwTxtNode * pNumRuleNode ) + { pNumRuleNodeFromDoc = pNumRuleNode; } + void SetNumIndentFromDoc(BOOL b) { bNumIndentFromDoc = b; } + BOOL IsNumIndentFromDoc() const { return NULL != pNumRuleNodeFromDoc; } + // <- #i23726# + + void DocSzChgd( const Size& rNewSize ); + const Size& GetDocSz() const { return aDocSz; } + virtual void SetVisArea( const Rectangle&, BOOL bUpdateScrollbar = TRUE); + void SetVisArea( const Point&, BOOL bUpdateScrollbar = TRUE); + void CheckVisArea(); + + static LAYOUT_NS Dialog* GetSearchDialog(); + + static USHORT GetMoveType(); + static void SetMoveType(USHORT nSet); + DECL_STATIC_LINK( SwView, MoveNavigationHdl, bool* ); // #i75416# + static void SetActMark(sal_Int32 nSet); + + BOOL HandleWheelCommands( const CommandEvent& ); + + // Rahmen einfuegen + void InsFrmMode(USHORT nCols); + + void SetZoom( SvxZoomType eZoomType, short nFactor = 100, BOOL bViewOnly = FALSE); + virtual void SetZoomFactor( const Fraction &rX, const Fraction & ); + + void SetViewLayout( USHORT nColumns, bool bBookMode, BOOL bViewOnly = FALSE ); + + void ShowHScrollbar(sal_Bool bShow); + sal_Bool IsHScrollbarVisible()const; + + void ShowVScrollbar(sal_Bool bShow); + sal_Bool IsVScrollbarVisible()const; + + int CreateVLineal(); + int KillVLineal(); + int CreateTab(); + int KillTab(); + + int StatVLineal() const { return ((Window*)pVRuler)->IsVisible(); } + void ChangeVLinealMetric(FieldUnit eUnit); + void GetVLinealMetric(FieldUnit& rToFill) const; + + int StatTab() const { return ((Window*)pHRuler)->IsVisible(); } + SvxRuler& GetHLineal() { return *pHRuler; } + SvxRuler& GetVLineal() { return *pVRuler; } + void InvalidateRulerPos(); + void ChangeTabMetric(FieldUnit eUnit); + void GetHLinealMetric(FieldUnit& rToFill) const; + + // Handler + void Execute(SfxRequest&); + void ExecPageMove(SfxRequest&); + void ExecStyle(SfxRequest&); + void ExecLingu(SfxRequest&); + void ExecDataBase(SfxRequest&); + void ExecDlg(SfxRequest&); + void ExecDlgExt(SfxRequest&); + void ExecDBDlg(SfxRequest &); + void ExecColl(SfxRequest&); + void ExecutePrint(SfxRequest&); + void ExecDraw(SfxRequest&); + void ExecTabWin(SfxRequest&); + void ExecuteStatusLine(SfxRequest&); + DECL_LINK( ExecRulerClick, Ruler * ); + void ExecSearch(SfxRequest&, BOOL bNoMessage = FALSE); + void ExecViewOptions(SfxRequest &); + + void StateViewOptions(SfxItemSet &); + void StateSearch(SfxItemSet &); + void GetState(SfxItemSet&); + void StateStatusLine(SfxItemSet&); + + + // Funktionen fuer Drawing + void SetDrawFuncPtr(SwDrawBase* pFuncPtr); + inline SwDrawBase* GetDrawFuncPtr(/*BOOL bBuf = FALSE*/) const { return pDrawActual; } + void GetDrawState(SfxItemSet &rSet); + void ExitDraw(); + inline BOOL IsDrawRotate() { return bDrawRotate; } + inline void FlipDrawRotate() { bDrawRotate = !bDrawRotate; } + inline BOOL IsDrawSelMode() { return bDrawSelMode; } + void SetSelDrawSlot(); + inline void FlipDrawSelMode() { bDrawSelMode = !bDrawSelMode; } + void NoRotate(); // Rotate-Mode abschalten + BOOL EnterDrawTextMode(const Point& aDocPos); + void LeaveDrawCreate() { nDrawSfxId = nFormSfxId = USHRT_MAX; sDrawCustom.Erase();} + BOOL IsDrawMode() { return (nDrawSfxId != USHRT_MAX || nFormSfxId != USHRT_MAX); } + BOOL IsFormMode() const; + BOOL IsBezierEditMode(); + BOOL AreOnlyFormsSelected() const; + BOOL HasDrwObj(SdrObject *pSdrObj) const; + BOOL HasOnlyObj(SdrObject *pSdrObj, UINT32 eObjInventor) const; + BOOL BeginTextEdit( SdrObject* pObj, SdrPageView* pPV=NULL, + Window* pWin=NULL, bool bIsNewObj=false, bool bSetSelectionToStart=false ); + + void StateTabWin(SfxItemSet&); + + // Attribute haben sich geaendert + DECL_LINK( AttrChangedNotify, SwWrtShell * ); + + // form control has been activated + DECL_LINK( FormControlActivated, FmFormShell* ); + + // Links bearbeiten + void EditLinkDlg(); + void AutoCaption(const USHORT nType, const SvGlobalName *pOleId = 0); + void InsertCaption(const InsCaptionOpt *pOpt); + + // Async Aufruf durch Core + void UpdatePageNums(USHORT nPhyNum, USHORT nVirtNum, const String& rPgStr); + + String GetPageStr(USHORT nPhyNum, USHORT nVirtNum, const String& rPgStr); + + // Shell rausreichen + SfxShell *GetCurShell() { return pShell; } + SwDocShell *GetDocShell(); + inline const SwDocShell *GetDocShell() const; + inline FmFormShell *GetFormShell() { return pFormShell; } + inline const FmFormShell *GetFormShell() const { return pFormShell; } + + //damit in DToren der SubShells ggf. pShell zurueckgesetzt werden kann + void ResetSubShell() { pShell = 0; } + + virtual void WriteUserData(String &, BOOL bBrowse = FALSE ); + virtual void ReadUserData(const String &, BOOL bBrowse = FALSE ); + virtual void ReadUserDataSequence ( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse ); + virtual void WriteUserDataSequence ( com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse ); + + void SetCrsrAtTop( BOOL bFlag, BOOL bCenter = FALSE ) + { bTopCrsr = bFlag, bCenterCrsr = bCenter; } + BOOL IsCrsrAtTop() const { return bTopCrsr; } + BOOL IsCrsrAtCenter() const { return bCenterCrsr; } + + BOOL JumpToSwMark( const String& rMark ); + + long InsertDoc( USHORT nSlotId, const String& rFileName, + const String& rFilterName, INT16 nVersion = 0 ); + + void ExecuteInsertDoc( SfxRequest& rRequest, const SfxPoolItem* pItem ); + long InsertMedium( USHORT nSlotId, SfxMedium* pMedium, INT16 nVersion ); + DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper * ); + + // status methods for clipboard. + // Status changes now notified from the clipboard. + BOOL IsPasteAllowed(); + BOOL IsPasteSpecialAllowed(); + + // Enable mail merge - mail merge field dialog enabled + void EnableMailMerge(BOOL bEnable = TRUE); + //apply Accessiblity options + void ApplyAccessiblityOptions(SvtAccessibilityOptions& rAccessibilityOptions); + + SwView(SfxViewFrame* pFrame, SfxViewShell*); + ~SwView(); + + void NotifyDBChanged(); + + SfxObjectShellRef & GetTmpSelectionDoc(); + SfxObjectShellRef & GetOrCreateTmpSelectionDoc(); + + void AddTransferable(SwTransferable& rTransferable); + + // store MailMerge data while "Back to Mail Merge Wizard" FloatingWindow is active + // or to support printing + void SetMailMergeConfigItem(SwMailMergeConfigItem* pConfigItem, sal_uInt16 nRestart, sal_Bool bIsSource); + SwMailMergeConfigItem* GetMailMergeConfigItem(); + sal_uInt16 GetMailMergeRestartPage() const; + sal_Bool IsMailMergeSourceView() const; + + void ExecFormatPaintbrush(SfxRequest &); + void StateFormatPaintbrush(SfxItemSet &); + + //public fuer D&D + int InsertGraphic( const String &rPath, const String &rFilter, + BOOL bLink = TRUE, GraphicFilter *pFlt = 0, + Graphic* pPreviewGrf = 0, + BOOL bRule = FALSE ); + + void ExecuteScan( SfxRequest& rReq ); + + SwPostItMgr* GetPostItMgr() { return mpPostItMgr;} + const SwPostItMgr* GetPostItMgr() const { return mpPostItMgr;} +}; + +// ----------------- inline Methoden ---------------------- + +inline long SwView::GetXScroll() const +{ + return aVisArea.GetWidth() * nScrollX / 100L; +} + +inline long SwView::GetYScroll() const +{ + return aVisArea.GetHeight() * nScrollY / 100L; +} + +inline const SwDocShell *SwView::GetDocShell() const +{ + return ((SwView*)this)->GetDocShell(); +} + +//*********************************************************** + +SfxTabPage* CreatePrintOptionsPage( Window *pParent, + const SfxItemSet &rOptions, + BOOL bPreview); + +#endif + |