diff options
Diffstat (limited to 'sd/source/ui/inc/DrawViewShell.hxx')
-rw-r--r-- | sd/source/ui/inc/DrawViewShell.hxx | 506 |
1 files changed, 0 insertions, 506 deletions
diff --git a/sd/source/ui/inc/DrawViewShell.hxx b/sd/source/ui/inc/DrawViewShell.hxx deleted file mode 100644 index b1d6fd084..000000000 --- a/sd/source/ui/inc/DrawViewShell.hxx +++ /dev/null @@ -1,506 +0,0 @@ -/* -*- 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_DRAW_VIEW_SHELL_HXX -#define SD_DRAW_VIEW_SHELL_HXX - -#include "ViewShell.hxx" -#include "tools/AsynchronousCall.hxx" -#include <sfx2/viewfac.hxx> -#include <sfx2/viewsh.hxx> -#include "TabControl.hxx" -#include "pres.hxx" -#include <com/sun/star/lang/XEventListener.hpp> -#include <com/sun/star/scanner/XScannerManager.hpp> -#include <unotools/caserotate.hxx> - -class SdPage; -class DrawDocShell; -class SdAnimationWin; -class SdRuler; -class TabBar; -class SdrObject; -class SdrPageView; -class TransferableDataHelper; -class TransferableClipboardListener; -class AbstractSvxNameDialog; -class SdrLayer; -class SvxClipboardFmtItem; - -namespace sd { - -class DrawView; -class LayerTabBar; -class Ruler; -class SdUnoDrawView; -class AnnotationManager; -class ViewOverlayManager; - -#define CHECK_RANGE(nMin, nValue, nMax) ((nValue >= nMin) && (nValue <= nMax)) - -/** Base class of the stacked shells that provide graphical views to - Draw and Impress documents and editing functionality. In contrast - to this other stacked shells are responsible for showing an - overview over several slides or a textual - overview over the text in an Impress document (OutlineViewShell). -*/ -class DrawViewShell - : public ViewShell, - public SfxListener -{ -public: - static const int SLOTARRAY_COUNT = 24; - - TYPEINFO(); - - SFX_DECL_INTERFACE(SD_IF_SDDRAWVIEWSHELL) - - /** Create a new stackable shell that may take some information - (e.g. the frame view) from the given previous shell. - @param ePageKind - This parameter gives the initial page kind that the new shell - will show. - @param pFrameView - The frame view that makes it possible to pass information from - one view shell to the next. - */ - DrawViewShell ( - SfxViewFrame* pFrame, - ViewShellBase& rViewShellBase, - ::Window* pParentWindow, - PageKind ePageKind = PK_STANDARD, - FrameView* pFrameView = NULL); - - virtual ~DrawViewShell (void); - - virtual void Init (bool bIsMainViewShell); - - virtual void Shutdown (void); - - void PrePaint(); - virtual void Paint(const Rectangle& rRect, ::sd::Window* pWin); - - /** Set the position and size of the area which contains the GUI - elements like rulers, sliders, and buttons as well as the document - view. Both size and position are expected to be in pixel - coordinates. The positions and sizes of the mentioned GUI elements - are updated as well. - - <p> This method is implemented by first setting copying the given - values to internal variables and then calling the - <type>ArrangeGUIElements</type> method which performs the actual - work of sizeing and arranging the UI elements accordingly.</p> - @param rPos - The position of the enclosing window relative to the document - window. This is only interesting if a Draw/Impress document - view is embedded as OLE object into another document view. For - normal documents this position is (0,0). - @param rSize - The new size in pixel. - */ - // virtual void AdjustPosSizePixel(const Point &rPos, const Size &rSize); - - /** Arrange and resize the GUI elements like rulers, sliders, and - buttons as well as the actual document view according to the size of - the enclosing window and current sizes of buttons, rulers, and - sliders. - */ - virtual void ArrangeGUIElements (void); - - void HidePage(); - - virtual sal_Bool KeyInput(const KeyEvent& rKEvt, ::sd::Window* pWin); - virtual void MouseMove(const MouseEvent& rMEvt, ::sd::Window* pWin); - virtual void MouseButtonUp(const MouseEvent& rMEvt, ::sd::Window* pWin); - virtual void MouseButtonDown(const MouseEvent& rMEvt, ::sd::Window* pWin); - virtual void Command(const CommandEvent& rCEvt, ::sd::Window* pWin); - - virtual void Resize (void); - - void ShowMousePosInfo(const Rectangle& rRect, ::sd::Window* pWin); - - virtual void AddWindow(::sd::Window* pWin); - virtual void RemoveWindow(::sd::Window* pWin); - - virtual void ChangeEditMode (EditMode eMode, bool bIsLayerModeActive); - - virtual void SetZoom( long nZoom ); - virtual void SetZoomRect( const Rectangle& rZoomRect ); - - void InsertURLField(const String& rURL, const String& rText, const String& rTarget, - const Point* pPos); - void InsertURLButton(const String& rURL, const String& rText, const String& rTarget, - const Point* pPos); - - virtual void SetUIUnit(FieldUnit eUnit); - - void SelectionHasChanged(); - void ModelHasChanged(); - virtual void Activate(sal_Bool bIsMDIActivate); - virtual void Deactivate(sal_Bool IsMDIActivate); - virtual void UIActivating( SfxInPlaceClient* ); - virtual void UIDeactivated( SfxInPlaceClient* ); - virtual String GetSelectionText( sal_Bool bCompleteWords = sal_False ); - virtual sal_Bool HasSelection( sal_Bool bText = sal_True ) const; - - void ExecCtrl(SfxRequest& rReq); - void GetCtrlState(SfxItemSet& rSet); - void GetMenuState(SfxItemSet& rSet); - void GetTableMenuState(SfxItemSet& rSet); - /** Set the items of the given item set that are related to - switching the editing mode to the correct values. - <p>This function also sets the states of the mode buttons - (those at the upper right corner) accordingly.</p> - */ - void GetModeSwitchingMenuState (SfxItemSet &rSet); - void GetAttrState(SfxItemSet& rSet); - void GetSnapItemState(SfxItemSet& rSet); - - void GetState (SfxItemSet& rSet); - void Execute (SfxRequest& rReq); - - void ExecStatusBar(SfxRequest& rReq); - void GetStatusBarState(SfxItemSet& rSet); - - void ExecOptionsBar(SfxRequest& rReq); - void GetOptionsBarState(SfxItemSet& rSet); - - void ExecRuler(SfxRequest& rReq); - void GetRulerState(SfxItemSet& rSet); - - void ExecFormText(SfxRequest& rReq); - void GetFormTextState(SfxItemSet& rSet); - - void ExecAnimationWin(SfxRequest& rReq); - void GetAnimationWinState(SfxItemSet& rSet); - - void ExecNavigatorWin(SfxRequest& rReq); - void GetNavigatorWinState(SfxItemSet& rSet); - - void ExecEffectWin(SfxRequest& rReq); - - void Update3DWindow(); - void AssignFrom3DWindow(); - - void ExecGallery(SfxRequest& rReq); - void GetGalleryState(SfxItemSet& rSet); - - void ExecBmpMask( SfxRequest& rReq ); - void GetBmpMaskState( SfxItemSet& rSet ); - - void ExecIMap( SfxRequest& rReq ); - void GetIMapState( SfxItemSet& rSet ); - - void FuTemporary(SfxRequest& rReq); - void FuPermanent(SfxRequest& rReq); - void FuSupport(SfxRequest& rReq); - void FuSupportRotate(SfxRequest& rReq); - void FuTable(SfxRequest& rReq); - - void AttrExec (SfxRequest& rReq); - void AttrState (SfxItemSet& rSet); - - void ExecuteAnnotation (SfxRequest& rRequest); - void GetAnnotationState (SfxItemSet& rItemSet); - - void StartRulerDrag ( - const Ruler& rRuler, - const MouseEvent& rMEvt); - - virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False ); - - PageKind GetPageKind() { return mePageKind; } - - Point GetMousePos() { return maMousePos; } - sal_Bool IsMousePosFreezed() { return mbMousePosFreezed; } - void SetMousePosFreezed( sal_Bool bIn ) { mbMousePosFreezed = bIn; } - - EditMode GetEditMode() const { return meEditMode; } - virtual SdPage* GetActualPage() { return mpActualPage; } - - /// inherited from sd::ViewShell - virtual SdPage* getCurrentPage() const; - - void ResetActualPage(); - void ResetActualLayer(); - sal_Bool SwitchPage(sal_uInt16 nPage); - sal_Bool IsSwitchPageAllowed() const; - - sal_Bool GotoBookmark(const String& rBookmark); - void MakeVisible(const Rectangle& rRect, ::Window& rWin); - - virtual void ReadFrameViewData(FrameView* pView); - virtual void WriteFrameViewData(); - - virtual ErrCode DoVerb(long nVerb); - virtual sal_Bool ActivateObject(SdrOle2Obj* pObj, long nVerb); - - void SetZoomOnPage( sal_Bool bZoom = sal_True ) { mbZoomOnPage = bZoom; } - sal_Bool IsZoomOnPage() { return mbZoomOnPage; } - void CheckLineTo (SfxRequest& rReq); - void FuTemp01(SfxRequest& rReq); - void FuTemp02(SfxRequest& rReq); - void FuTemp03(SfxRequest& rReq); - void FuTemp04(SfxRequest& rReq); - void SetChildWindowState( SfxItemSet& rSet ); - - void UpdateIMapDlg( SdrObject* pObj ); - - void LockInput(); - void UnlockInput(); - sal_Bool IsInputLocked() const { return mnLockCount > 0UL; } - - sal_uInt16 GetCurPageId() { return( maTabControl.GetCurPageId() ); } - - /** Show controls of the UI or hide them, depending on the given flag. - Do not call this method directly. Call the method at ViewShellBase - instead. - */ - virtual void ShowUIControls (bool bVisible = true); - - void ScannerEvent( const ::com::sun::star::lang::EventObject& rEventObject ); - - bool IsLayerModeActive (void) const; - - sal_uInt16* GetSlotArray() const { return mpSlotArray; } - - virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTargetHelper, - ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer ); - virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rTargetHelper, - ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer ); - - virtual void WriteUserDataSequence ( ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); - virtual void ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False ); - - virtual void VisAreaChanged(const Rectangle& rRect); - - /** Create an accessible object representing the specified window. - @param pWindow - The returned object makes the document displayed in this window - accessible. - @return - Returns an <type>AccessibleDrawDocumentView</type> object. - */ - virtual ::com::sun::star::uno::Reference< - ::com::sun::star::accessibility::XAccessible> - CreateAccessibleDocumentView (::sd::Window* pWindow); - - /** Return the number of layers managed by the layer tab control. This - will usually differ from the number of layers managed by the layer - administrator. - @return - The number of layers managed by the layer tab control. The - returned value is independent of whether the layer modus is - currently active and the tab control is visible. - */ - virtual int GetTabLayerCount (void) const; - - /** Return the numerical id of the currently active layer as seen by the - layer tab control. - @return - The returned id is a number between zero (inclusive) and the - number of layers as returned by the - <member>GetTabLayerCount</member> method (exclusive). - */ - virtual int GetActiveTabLayerIndex (void) const; - - /** Set the active layer at the layer tab control and update the control - accordingly to reflect the change on screen. - @param nId - The id is expected to be a number between zero (inclusive) and - the number of layers as returned by the - <member>GetTabLayerCount</member> method (exclusive). Note that - Invalid values are ignored. No excpetion is thrown in that case. - */ - virtual void SetActiveTabLayerIndex (int nId); - - /** Return a pointer to the tab control for pages. - */ - TabControl* GetPageTabControl (void); - - /** Return a pointer to the tab control for layers. - */ - LayerTabBar* GetLayerTabControl (void); - - /** Renames the given slide using an SvxNameDialog - - @param nPageId the index of the page in the SdTabControl. - @param rName the new name of the slide. - - @return false, if the new name is invalid for some reason. - - <p>Implemented in <code>drviews8.cxx</code>.</p> - */ - bool RenameSlide( sal_uInt16 nPageId, const String & rName ); - - /** modifies the given layer with the given values */ - void ModifyLayer( SdrLayer* pLayer, const String& rLayerName, const String& rLayerTitle, const String& rLayerDesc, bool bIsVisible, bool bIsLocked, bool bIsPrintable ); - - virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void); - - DrawView* GetDrawView() const { return mpDrawView; } - - /** Relocation to a new parent window is not supported for DrawViewShell - objects so this method always returns <FALSE/>. - */ - virtual bool RelocateToParentWindow (::Window* pParentWindow); - -protected: - DrawView* mpDrawView; - SdPage* mpActualPage; - Rectangle maMarkRect; - Point maMousePos; - sal_Bool mbMousePosFreezed; - TabControl maTabControl; - EditMode meEditMode; - PageKind mePageKind; - sal_Bool mbZoomOnPage; - sal_Bool mbIsRulerDrag; - sal_uLong mnLockCount; - Timer maCloseTimer; - sal_Bool mbReadOnly; - sal_uInt16* mpSlotArray; - - static sal_Bool mbPipette; - - DECL_LINK( ClipboardChanged, TransferableDataHelper* ); - DECL_LINK( CloseHdl, Timer* pTimer ); - DECL_LINK( TabSplitHdl, TabBar * ); - DECL_LINK( NameObjectHdl, AbstractSvxNameDialog* ); - DECL_LINK( RenameSlideHdl, AbstractSvxNameDialog* ); - - void DeleteActualPage(); - void DeleteActualLayer(); - - virtual SvxRuler* CreateHRuler(::sd::Window* pWin, sal_Bool bIsFirst); - virtual SvxRuler* CreateVRuler(::sd::Window* pWin); - virtual void UpdateHRuler(); - virtual void UpdateVRuler(); - virtual long GetHCtrlWidth(); - virtual void SetZoomFactor(const Fraction& rZoomX, const Fraction& rZoomY); - virtual Size GetOptimalSizePixel() const; - - void SetupPage( Size &rSize, long nLeft, long nRight, long nUpper, long nLower, - sal_Bool bSize, sal_Bool bMargin, sal_Bool bScaleAll ); - - sal_uInt16 GetIdBySubId( sal_uInt16 nSId ); - void MapSlot( sal_uInt16 nSId ); - void UpdateToolboxImages( SfxItemSet &rSet, sal_Bool bPermanent = sal_True ); - sal_uInt16 GetMappedSlot( sal_uInt16 nSId ); - sal_uInt16 GetArrayId( sal_uInt16 nSId ); - - void GetMenuStateSel(SfxItemSet& rSet); - -private: - /** This flag controls whether the layer mode is active, i.e. the layer - dialog is visible. - */ - bool mbIsLayerModeActive; - - /** This item contains the clipboard formats of the current clipboard - content that are supported both by that content and by the - DrawViewShell. - */ - ::std::auto_ptr<SvxClipboardFmtItem> mpCurrentClipboardFormats; - - /** On some occasions it is necessary to make SwitchPage calls - asynchronously. - */ - tools::AsynchronousCall maAsynchronousSwitchPageCall; - - /** This flag is used to prevent nested calls to SwitchPage(). - */ - bool mbIsInSwitchPage; - - RotateTransliteration m_aRotateCase; - - void Construct (DrawDocShell* pDocSh, PageKind ePageKind); - - /** Depending on the given request create a new page or duplicate an - existing one. See ViewShell::CreateOrDuplicatePage() for more - information. - */ - virtual SdPage* CreateOrDuplicatePage ( - SfxRequest& rRequest, - PageKind ePageKind, - SdPage* pPage, - const sal_Int32 nInsertPosition = -1); - - ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager > mxScannerManager; - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > mxScannerListener; - TransferableClipboardListener* mpClipEvtLstnr; - sal_Bool mbPastePossible; - - virtual void Notify (SfxBroadcaster& rBC, const SfxHint& rHint); - - /** Stop a running slide show. The frame the show is running in is - destroyed if - a) it is running in its own frame, i.e. is a full screen show and - b) the given flag bCloseFrame is true. - @param bCloseFrame - Be carefull with this flag when stopping a full screen show. - When called from the destructor the flag has to be <FALSE/> or - otherwise we run into a loop of calls to destructors of the view - and the frame. - When called from other places the flag should be <TRUE/> so that - not an empty frame remains. When called with <TRUE/> it is the - responsibility of the caller to avoid an illegal reentrant - call. - */ - void StopSlideShow (bool bCloseFrame); - - /** Show the context menu for snap lines and points. Because snap lines - can not be selected the index of the snap line/point for which the - popup menu is opened has to be passed to the processing slot - handlers. This can be done only by manually showing the popup menu. - @param rPageView - The page view is used to access the help lines. - @param nSnapLineIndex - Index of the snap line or snap point for which to show the - context menu. - @param rMouseLocation - The mouse location defines the location at which to display the - context menu. - */ - void ShowSnapLineContextMenu ( - SdrPageView& rPageView, - const sal_uInt16 nSnapLineIndex, - const Point& rMouseLocation); - - using ViewShell::Notify; - - ::std::auto_ptr< AnnotationManager > mpAnnotationManager; - ::std::auto_ptr< ViewOverlayManager > mpViewOverlayManager; -}; - - -} // end of namespace sd - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |