summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/View.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/View.hxx')
-rw-r--r--sd/source/ui/inc/View.hxx261
1 files changed, 261 insertions, 0 deletions
diff --git a/sd/source/ui/inc/View.hxx b/sd/source/ui/inc/View.hxx
new file mode 100644
index 000000000000..efcc6c267777
--- /dev/null
+++ b/sd/source/ui/inc/View.hxx
@@ -0,0 +1,261 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * 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 SD_VIEW_HXX
+#define SD_VIEW_HXX
+
+#include "pres.hxx"
+#include <tools/gen.hxx>
+#include <svtools/transfer.hxx>
+#include <svx/fmview.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdpage.hxx>
+#include "fupoor.hxx"
+
+#include "smarttag.hxx"
+
+class SdDrawDocument;
+class SdrOle2Obj;
+class SdrGrafObj;
+class SdrMediaObj;
+class OutputDevice;
+class VirtualDevice;
+class ImageMap;
+class Point;
+class Graphic;
+class SdrOutliner;
+class TransferableDataHelper;
+struct StyleRequestData;
+class Outliner;
+
+namespace sd {
+
+class DrawDocShell;
+struct SdNavigatorDropEvent;
+class ViewShell;
+class Window;
+class ViewClipboard;
+
+// -------------------
+// - SdViewRedrawRec -
+// -------------------
+
+struct SdViewRedrawRec
+{
+ OutputDevice* mpOut;
+ Rectangle aRect;
+};
+
+
+class View : public FmFormView
+{
+public:
+ TYPEINFO();
+
+ View (
+ SdDrawDocument* pDrawDoc,
+ OutputDevice* pOutDev,
+ ViewShell* pViewSh=NULL);
+ virtual ~View (void);
+
+ void CompleteRedraw( OutputDevice* pOutDev, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L);
+
+ virtual sal_Bool GetAttributes( SfxItemSet& rTargetSet, sal_Bool bOnlyHardAttr=sal_False ) const;
+ virtual sal_Bool SetAttributes(const SfxItemSet& rSet, sal_Bool bReplaceAll = sal_False);
+ virtual void MarkListHasChanged();
+ virtual void ModelHasChanged();
+ virtual void SelectAll();
+ virtual void DoCut(::Window* pWindow=NULL);
+ virtual void DoCopy(::Window* pWindow=NULL);
+ virtual void DoPaste(::Window* pWindow=NULL);
+ virtual void DoConnect(SdrOle2Obj* pOleObj);
+ virtual sal_Bool SetStyleSheet(SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr = sal_False);
+ virtual void StartDrag( const Point& rStartPos, ::Window* pWindow );
+ virtual void DragFinished( sal_Int8 nDropAction );
+ virtual sal_Int8 AcceptDrop (
+ const AcceptDropEvent& rEvt,
+ DropTargetHelper& rTargetHelper,
+ ::sd::Window* pTargetWindow = NULL,
+ sal_uInt16 nPage = SDRPAGE_NOTFOUND,
+ sal_uInt16 nLayer = SDRPAGE_NOTFOUND);
+ virtual sal_Int8 ExecuteDrop (
+ const ExecuteDropEvent& rEvt,
+ DropTargetHelper& rTargetHelper,
+ ::sd::Window* pTargetWindow = NULL,
+ sal_uInt16 nPage = SDRPAGE_NOTFOUND,
+ sal_uInt16 nLayer = SDRPAGE_NOTFOUND);
+
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::datatransfer::XTransferable>
+ CreateClipboardDataObject (::sd::View*, ::Window& rWindow);
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::datatransfer::XTransferable>
+ CreateDragDataObject (::sd::View*, ::Window& rWindow,
+ const Point& rDragPos);
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::datatransfer::XTransferable>
+ CreateSelectionDataObject (::sd::View*, ::Window& rWindow);
+
+ void UpdateSelectionClipboard( sal_Bool bForceDeselect );
+
+ inline DrawDocShell* GetDocSh (void) const;
+ inline SdDrawDocument* GetDoc (void) const;
+ inline ViewShell* GetViewShell (void) const;
+
+ virtual sal_Bool SdrBeginTextEdit(SdrObject* pObj, SdrPageView* pPV = 0L, ::Window* pWin = 0L, sal_Bool bIsNewObj = sal_False,
+ SdrOutliner* pGivenOutliner = 0L, OutlinerView* pGivenOutlinerView = 0L,
+ sal_Bool bDontDeleteOutliner = sal_False, sal_Bool bOnlyOneView = sal_False, sal_Bool bGrabFocus = sal_True);
+
+ virtual SdrEndTextEditKind SdrEndTextEdit(sal_Bool bDontDeleteReally = sal_False);
+
+ bool RestoreDefaultText( SdrTextObj* pTextObj );
+
+ sal_Bool InsertData( const TransferableDataHelper& rDataHelper,
+ const Point& rPos, sal_Int8& rDnDAction, sal_Bool bDrag,
+ sal_uLong nFormat = 0, sal_uInt16 nPage = SDRPAGE_NOTFOUND, sal_uInt16 nLayer = SDRLAYER_NOTFOUND );
+ /** gets the metafile from the given transferable helper and insert it as a graphic shape.
+ @param bOptimize if set to true, the metafile is analyzed and if only one bitmap action is
+ present, then is is inserted as a single graphic.
+ */
+ bool InsertMetaFile( TransferableDataHelper& rDataHelper,
+ const Point& rInsertPos,
+ ImageMap* pImageMap, bool bOptimize );
+
+ SdrGrafObj* InsertGraphic( const Graphic& rGraphic,
+ sal_Int8& rAction, const Point& rPos,
+ SdrObject* pSelectedObj, ImageMap* pImageMap );
+ SdrMediaObj* InsertMediaURL( const rtl::OUString& rMediaURL, sal_Int8& rAction,
+ const Point& rPos, const Size& rSize );
+
+ bool PasteRTFTable( SotStorageStreamRef xStm, SdrPage* pPage, sal_uLong nPasteOptions );
+
+ sal_Bool IsPresObjSelected(sal_Bool bOnPage=sal_True, sal_Bool bOnMasterPage=sal_True, sal_Bool bCheckPresObjListOnly=sal_False, sal_Bool bCheckLayoutOnly=sal_False) const;
+
+ void SetMarkedOriginalSize();
+
+ void LockRedraw(sal_Bool bLock);
+
+ sal_Bool IsMorphingAllowed() const;
+ sal_Bool IsVectorizeAllowed() const;
+
+ virtual SfxStyleSheet* GetStyleSheet() const;
+
+ sal_Bool GetExchangeList( List*& rpExchangeList, List* pBookmarkList, sal_uInt16 nType );
+
+ virtual void onAccessibilityOptionsChanged();
+
+ virtual SdrModel* GetMarkedObjModel() const;
+ virtual sal_Bool Paste(const SdrModel& rMod, const Point& rPos, SdrObjList* pLst=NULL, sal_uInt32 nOptions=0);
+ using SdrExchangeView::Paste;
+
+ /** returns true if we have an undo manager and there is an open list undo action */
+ bool isRecordingUndo() const;
+
+ virtual void AddCustomHdl();
+
+ SmartTagSet& getSmartTags() { return maSmartTags; }
+ void selectSmartTag( const SmartTagReference& xTag );
+ void updateHandles();
+
+ virtual SdrViewContext GetContext() const;
+ virtual sal_Bool HasMarkablePoints() const;
+ virtual sal_uLong GetMarkablePointCount() const;
+ virtual sal_Bool HasMarkedPoints() const;
+ virtual sal_uLong GetMarkedPointCount() const;
+ virtual sal_Bool IsPointMarkable(const SdrHdl& rHdl) const;
+ virtual sal_Bool MarkPoint(SdrHdl& rHdl, sal_Bool bUnmark=sal_False);
+ virtual void CheckPossibilities();
+ virtual sal_Bool MarkPoints(const ::Rectangle* pRect, sal_Bool bUnmark);
+ using SdrMarkView::MarkPoints;
+
+ void SetPossibilitiesDirty() { bPossibilitiesDirty = true; }
+ void SetMoveAllowed( bool bSet ) { bMoveAllowed = bSet; }
+ void SetMoveProtected( bool bSet ) { bMoveProtect = bSet; }
+ void SetResizeFreeAllowed( bool bSet ) { bResizeFreeAllowed = bSet; }
+ void SetResizePropAllowed( bool bSet ) { bResizePropAllowed = bSet; }
+ void SetResizeProtected( bool bSet ) { bResizeProtect = bSet; }
+
+ void SetMarkedPointsSmoothPossible( bool bSet ) { bSetMarkedPointsSmoothPossible = bSet; }
+ void SetMarkedSegmentsKindPossible( bool bSet ) { bSetMarkedSegmentsKindPossible = bSet; }
+
+ SdrObject* GetEmptyPresentationObject( PresObjKind eKind );
+protected:
+ DECL_LINK( OnParagraphInsertedHdl, ::Outliner * );
+ DECL_LINK( OnParagraphRemovingHdl, ::Outliner * );
+
+ virtual void OnBeginPasteOrDrop( PasteOrDropInfos* pInfos );
+ virtual void OnEndPasteOrDrop( PasteOrDropInfos* pInfos );
+
+ SdDrawDocument* mpDoc;
+ DrawDocShell* mpDocSh;
+ ViewShell* mpViewSh;
+ SdrMarkList* mpDragSrcMarkList;
+ SdrObject* mpDropMarkerObj;
+ SdrDropMarkerOverlay* mpDropMarker;
+ sal_uInt16 mnDragSrcPgNum;
+ Point maDropPos;
+ ::std::vector< String > maDropFileVector;
+ sal_Int8 mnAction;
+ Timer maDropErrorTimer;
+ Timer maDropInsertFileTimer;
+ sal_uInt16 mnLockRedrawSmph;
+ List* mpLockedRedraws;
+ bool mbIsDropAllowed;
+
+ DECL_LINK( DropErrorHdl, Timer* );
+ DECL_LINK( DropInsertFileHdl, Timer* );
+ DECL_LINK( ExecuteNavigatorDrop, SdNavigatorDropEvent* pSdNavigatorDropEvent );
+
+ void ImplClearDrawDropMarker();
+
+ SmartTagSet maSmartTags;
+
+private:
+ ::std::auto_ptr<ViewClipboard> mpClipboard;
+};
+
+
+DrawDocShell* View::GetDocSh (void) const
+{
+ return mpDocSh;
+}
+SdDrawDocument* View::GetDoc (void) const
+{
+ return mpDoc;
+}
+
+ViewShell* View::GetViewShell (void) const
+{
+ return mpViewSh;
+}
+
+} // end of namespace sd
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */