summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/ViewShell.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/ViewShell.hxx')
-rw-r--r--sd/source/ui/inc/ViewShell.hxx628
1 files changed, 0 insertions, 628 deletions
diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx
deleted file mode 100644
index bf2f098a3..000000000
--- a/sd/source/ui/inc/ViewShell.hxx
+++ /dev/null
@@ -1,628 +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_VIEW_SHELL_HXX
-#define SD_VIEW_SHELL_HXX
-
-#include <rtl/ref.hxx>
-
-#include <vcl/field.hxx>
-#include <sfx2/viewsh.hxx>
-#include <vcl/field.hxx>
-#include <vcl/prntypes.hxx>
-#include <svtools/transfer.hxx>
-#include <comphelper/implementationreference.hxx>
-#include "glob.hxx"
-#include "pres.hxx"
-#include "cfgids.hxx"
-#include "View.hxx"
-#include "sddllapi.h"
-
-#include <com/sun/star/drawing/XDrawSubController.hpp>
-#include <memory>
-#include <boost/shared_ptr.hpp>
-
-class SdPage;
-class SvxRuler;
-class SdrOle2Obj; // fuer die, die Teile von SVDRAW rausdefiniert haben
-class ScrollBarBox;
-class SdDrawDocument;
-class ScrollBar;
-class FmFormShell;
-class SdOptionsPrintItem;
-class MultiSelection;
-
-extern const String aEmptyStr;
-
-namespace com { namespace sun { namespace star {
-namespace embed {
- class XEmbeddedObject;
-}}}}
-
-namespace css = ::com::sun::star;
-
-namespace sd {
-
-class Client;
-class DrawDocShell;
-class DrawSubController;
-class FrameView;
-class FuPoor;
-class FuSearch;
-class SlideShow;
-class LayerTabBar;
-class View;
-class ViewShellBase;
-class ViewTabBar;
-class Window;
-class WindowUpdater;
-class ZoomList;
-
-#undef OUTPUT_DRAWMODE_COLOR
-#undef OUTPUT_DRAWMODE_CONTRAST
-
-/** Base class of the stacked shell hierarchy.
-
- <p>Despite its name this class is not a descendant of SfxViewShell
- but of SfxShell. Its name expresses the fact that it acts like a
- view shell. Beeing a stacked shell rather then being an actual view shell
- there can be several instances of this class that
- <ul>
- <li>all are based on the same view shell and thus show the same
- document and share common view functionality and</li>
- <li>are all visible at the same time and live in the same
- frame.</li>
- <ul></p>
-
- <p>This class replaces the former ViewShell class.</p>
-*/
-class ViewShell
- : public SfxShell
-{
-public:
- enum ShellType {
- ST_NONE,
- ST_DRAW, // The Draw application.
- ST_IMPRESS, // Main view of the Impress application.
- ST_NOTES,
- ST_HANDOUT,
- ST_OUTLINE,
- ST_SLIDE_SORTER,
- ST_PRESENTATION,
- ST_TASK_PANE
- };
- static const int MAX_HSPLIT_CNT = 1;
- static const int MAX_VSPLIT_CNT = 1;
- static const int MIN_SCROLLBAR_SIZE = 50;
-
- static const sal_uLong OUTPUT_DRAWMODE_COLOR = DRAWMODE_DEFAULT;
- static const sal_uLong OUTPUT_DRAWMODE_GRAYSCALE
- = DRAWMODE_GRAYLINE | DRAWMODE_GRAYFILL
- | DRAWMODE_BLACKTEXT | DRAWMODE_GRAYBITMAP
- | DRAWMODE_GRAYGRADIENT;
- static const int OUTPUT_DRAWMODE_BLACKWHITE
- = DRAWMODE_BLACKLINE | DRAWMODE_BLACKTEXT
- | DRAWMODE_WHITEFILL | DRAWMODE_GRAYBITMAP
- | DRAWMODE_WHITEGRADIENT;
- static const int OUTPUT_DRAWMODE_CONTRAST
- = DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL
- | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT;
-
- TYPEINFO();
-
- ViewShell (
- SfxViewFrame *pFrame,
- ::Window* pParentWindow,
- ViewShellBase& rViewShellBase,
- bool bAllowCenter = true);
- virtual ~ViewShell (void);
-
- /** The Init method has to be called from the outside directly
- after a new object of this class has been created. It can be
- used for that part of the initialisation that can be run only
- after the creation of the new object is finished. This
- includes registration as listener at event broadcasters.
-
- Derived classes should call this method at the head of their
- Init() methods.
- @param bIsMainViewShell
- This flag tells the Init() method whether the new ViewShell will
- be the main view shell.
- */
- virtual void Init (bool bIsMainViewShell);
-
- /** The Exit() method has to be called before the destructor so that the
- view shell is still a valid object and can safely call methods that
- rely on that.
- */
- virtual void Exit (void);
-
- void Cancel();
-
- /** Return the window that is the parent of all controls of this view
- shell. This may or may not be the window of the frame.
- */
- inline ::Window* GetParentWindow (void) const;
-
- inline ::sd::View* GetView (void) const;
- inline SdrView* GetDrawView (void) const;
- SD_DLLPUBLIC DrawDocShell* GetDocSh (void) const;
-
- SdDrawDocument* GetDoc (void) const;
-
- SD_DLLPUBLIC SfxViewFrame* GetViewFrame (void) const;
-
- /** The active window is usually the mpContentWindow. When there is a
- show running then the active window is a ShowWindow.
- */
- ::sd::Window* GetActiveWindow (void) const;
-
- /** Set the active window. When the shell is displayed in the center
- pane then the window of the ViewShellBase is also set to the given
- window.
- */
- void SetActiveWindow (::sd::Window* pWindow);
-
- /** Return the rectangle that encloses all windows of the view. That
- excludes the controls in the frame like rulers, scroll bars, tab
- bar, and buttons.
- @return
- The rectangle is returned in screen coordinates, i.e. pixel
- values relative to the upper left corner of the screen?.
- */
- const Rectangle& GetAllWindowRect (void);
-
- // Mouse- & Key-Events
- virtual void PrePaint();
- virtual void Paint (const Rectangle& rRect, ::sd::Window* pWin);
- 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 sal_Bool RequestHelp( const HelpEvent& rEvt, ::sd::Window* pWin );
- virtual long Notify( NotifyEvent& rNEvt, ::sd::Window* pWin );
-
- virtual bool HandleScrollCommand(const CommandEvent& rCEvt, ::sd::Window* pWin);
-
- virtual void Draw(OutputDevice &rDev, const Region &rReg);
-
- virtual void SetUIUnit(FieldUnit eUnit);
- virtual void SetDefTabHRuler( sal_uInt16 nDefTab );
-
- sal_Bool HasRuler (void);
- void SetRuler(sal_Bool bRuler);
-
- /** Set internal values of all scroll bars that determine thumb size and
- position. The external values like size and position of the scroll
- bar controls are not modified.
- */
- virtual void UpdateScrollBars (void);
- void Scroll(long nX, long nY);
- void ScrollLines(long nX, long nY);
- virtual void SetZoom(long nZoom);
- virtual void SetZoomRect(const Rectangle& rZoomRect);
- void InitWindows(const Point& rViewOrigin, const Size& rViewSize,
- const Point& rWinPos, sal_Bool bUpdate = sal_False);
- void InvalidateWindows();
- /** This method is still used by the OutlineViewShell to update the
- model according to the content of the outline view. This in turn
- updates the previews in the slide sorter.
- */
- virtual void UpdatePreview (SdPage* pPage, sal_Bool bInit = sal_False);
-
- void DrawMarkRect(const Rectangle& rRect) const;
-
- void ExecReq( SfxRequest &rReq );
-
- ZoomList* GetZoomList (void);
-
- FrameView* GetFrameView (void);
- /** Setting a frame view triggers ReadFrameViewData() for the new
- frame.
- @param pFrameView
- The new frame view that replaces the old one.
- */
- void SetFrameView (FrameView* pFrameView);
- virtual void ReadFrameViewData(FrameView* pView);
- virtual void WriteFrameViewData();
- virtual void WriteUserData(String& rString);
- virtual void ReadUserData(const String& rString);
-
- virtual sal_Bool ActivateObject(SdrOle2Obj* pObj, long nVerb);
-
- /** @returns
- current or selected page or 0. This method
- will fail in master page mode.
-
- @deprecated, please use getCurrentPage();
- */
- virtual SdPage* GetActualPage() = 0;
-
- /** @returns
- current or selected page or 0.
- */
- virtual SdPage* getCurrentPage() const = 0;
-
- FunctionReference GetOldFunction() const { return mxOldFunction; }
- bool HasOldFunction() const { return mxOldFunction.is(); }
- FunctionReference GetCurrentFunction() const { return mxCurrentFunction; }
- bool HasCurrentFunction( sal_uInt16 nSID ) { return mxCurrentFunction.is() && (mxCurrentFunction->GetSlotID() == nSID ); }
- bool HasCurrentFunction() { return mxCurrentFunction.is(); }
-
- void SetCurrentFunction(const FunctionReference& xFunction);
- void SetOldFunction(const FunctionReference& xFunction);
- void DeactivateCurrentFunction( bool bPermanent = false );
-
- void SetPageSizeAndBorder(PageKind ePageKind, const Size& rNewSize,
- long nLeft, long nRight, long nUpper, long nLower,
- sal_Bool bScaleAll, Orientation eOrient, sal_uInt16 nPaperBin,
- sal_Bool bBackgroundFullSize );
-
- void SetStartShowWithDialog( sal_Bool bIn = sal_True ) { mbStartShowWithDialog = bIn; }
- sal_Bool IsStartShowWithDialog() const { return mbStartShowWithDialog; }
-
- sal_uInt16 GetPrintedHandoutPageNum (void) const { return mnPrintedHandoutPageNum; }
- void SetPrintedHandoutPageNum (sal_uInt16 nPageNumber) {mnPrintedHandoutPageNum=nPageNumber; }
-
- sal_uInt16 GetPrintedHandoutPageCount(void) const { return mnPrintedHandoutPageCount; }
- void SetPrintedHandoutPageCount (sal_uInt16 nPageCount) {mnPrintedHandoutPageCount=nPageCount; }
-
- virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False );
-
- void GetMenuState(SfxItemSet& rSet);
-
- 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 );
-
- /** this method is called when the visible area of the view from this viewshell is changed */
- virtual void VisAreaChanged(const Rectangle& rRect);
-
- /** Create an accessible object representing the specified window.
- Overload this method to provide view mode specific objects. The
- default implementation returns an empty reference.
- @param pWindow
- Make the document displayed in this window accessible.
- @return
- This default implementation returns an empty reference.
- */
- virtual ::com::sun::star::uno::Reference<
- ::com::sun::star::accessibility::XAccessible>
- CreateAccessibleDocumentView (::sd::Window* pWindow);
-
- void SetWinViewPos(const Point& rWinPos, bool bUpdate);
- Point GetWinViewPos() const;
- Point GetViewOrigin() const;
-
- /** Return the window updater of this view shell.
- @return
- In rare circumstances the returned pointer may be <null/>,
- i.e. when no memory is available anymore.
- */
- ::sd::WindowUpdater* GetWindowUpdater (void) const;
-
- /** Return the border that is drawn arround the actual document view.
- The border contains typically rulers and scroll bars.
- @param bOuterResize
- When this flag is <TRUE/> then the border is used for an
- OuterResizePixel(), i.e. there is a given window size and the
- border elements are placed inside so that the document view has
- the given window size minus the border.
- When the flag is <FALSE/> then the border is used for an
- InnerResizePixel(), i.e. the document view has a given size and
- the border is placed outside. In this scenario the parent
- window has the size of the document view plus the border.
- */
- SvBorder GetBorder (bool bOuterResize);
-
- /** Notify the view shell that its parent window has been resized.
- The ViewShell places and resizes its UI elements accordingly.
- The new size can be obtained from the parent window.
- */
- virtual void Resize (void);
-
- /** 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.
- */
- // This is to be replaced by Resize.
- // virtual void AdjustPosSizePixel(const Point &rPos, const Size &rSize);
-
- /** Set position and size of the GUI elements that are controllerd by
- the view shell like rulers and scroll bars as well as the actual
- document view according to the position and size that were given
- with the last Resize() call.
- */
- virtual void ArrangeGUIElements (void);
-
- // virtual void OuterResizePixel(const Point &rPos, const Size &rSize);
- // virtual void InnerResizePixel(const Point &rPos, const Size &rSize);
-
- ViewShellBase& GetViewShellBase (void) const;
-
- /** Return <TRUE/> when the called view shell is the main sub shell of
- its ViewShellBase object, i.e. is display in the center pane. This
- convenience function is equivalent to comparing the this pointer to
- the result of ViewShellBase::GetViewShell(PT_CENTER).
- */
- bool IsMainViewShell (void) const;
-
- /** Set or reset the flag that indicates whether the called shell is the
- one displayed in the center pane. By default this flag is set to
- <FALSE/>. For the main view shell it thus has to be set to <TRUE/>.
- */
- void SetIsMainViewShell (bool bIsMainViewShell);
-
- /** Return a sub controller that implements the view shell specific
- part of the DrawController.
- */
- virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void) = 0;
-
- /** Return the type of the shell.
- */
- virtual ShellType GetShellType (void) const;
-
- /** This method is more or less an alias to Deactivate(). It is called
- before an object of this class is taken from the stack of view
- shells.
-
- <p>When this method is not called before a view shell is taken from
- a stack then the Deactivate() call from the SFX as a response to
- RemoveSubShell() comes to late when the view shell is not on the
- stack anymore.</p>
- */
- virtual void Shutdown (void);
-
- /** This function is called from the underlying ViewShellBase
- object to handle a verb execution request.
- */
- virtual ErrCode DoVerb (long nVerb);
-
- virtual void UIActivating( SfxInPlaceClient* );
- virtual void UIDeactivated( SfxInPlaceClient* );
-
- /** Show controls of the UI or hide them, depending on the given flag.
- As a result the border is adapted.
- */
- virtual void ShowUIControls (bool bVisible = true);
- sal_Bool IsPageFlipMode(void) const;
-
- /** Set the given window as new parent window. This is not possible for
- all views, so the return value tells the caller if the relocation
- was successfull.
- */
- virtual bool RelocateToParentWindow (::Window* pParentWindow);
-
- void AdaptDefaultsForChart(
- const ::com::sun::star::uno::Reference < ::com::sun::star::embed::XEmbeddedObject > & xEmbObj );
-
- /** Depending on the given request create a new page or duplicate an
- existing one. A new page is created behind the given slide.
- @param rRequest
- The request as passed to an Execute() method. Its arguments are
- evaluated. Its slot id determines whether to create or
- duplicate a slide.
- @param pPage
- This page is either duplicated or becomes the predecessor of the
- new slide. If NULL a duplication request is ignored. A new
- slide is inserted as first slide.
- @param nInsertPosition
- When -1 (the default) then insert after pPage. Otherwise insert
- before the given index (of a standard page).
- @return
- The new slide is returned. If for some reason a new page can
- not be created then NULL is returned.
- */
- virtual SdPage* CreateOrDuplicatePage (
- SfxRequest& rRequest,
- PageKind ePageKind,
- SdPage* pPage,
- const sal_Int32 nInsertPosition = -1);
-
-
- class Implementation;
-
-protected:
- /** must be called in the beginning of each subclass d'tor.
- disposes and clears both current and old function. */
- void DisposeFunctions();
-
- friend class ViewShellBase;
-
- /** Window inside the rulers and scroll bars that shows a view of the
- document.
- */
-
- ::boost::shared_ptr<sd::Window> mpContentWindow;
-
- /// Horizontal scroll bar for the current slide is displayed when needed.
- ::boost::shared_ptr<ScrollBar> mpHorizontalScrollBar;
- /// Vertical scroll bar for whole document is always visible.
- ::boost::shared_ptr<ScrollBar> mpVerticalScrollBar;
- /// Horizontal ruler is not shown by default.
- ::std::auto_ptr<SvxRuler> mpHorizontalRuler;
- /// Vertical ruler is not shown by default.
- ::std::auto_ptr<SvxRuler> mpVerticalRuler;
- /// Filler of the little square enclosed by the two scroll bars.
- ::boost::shared_ptr<ScrollBarBox> mpScrollBarBox;
- /// Layer tab bar.
- ::std::auto_ptr<LayerTabBar> mpLayerTabBar;
-
- /// This flag controls whether the rulers are visible.
- bool mbHasRulers;
-
- /// The active window.
- ::sd::Window* mpActiveWindow;
- ::sd::View* mpView;
- FrameView* mpFrameView;
-
- FunctionReference mxCurrentFunction;
- FunctionReference mxOldFunction;
- ZoomList* mpZoomList;
-
- Point maViewPos;
- Size maViewSize;
- Size maScrBarWH;
-
- sal_Bool mbCenterAllowed; // wird an Fenster weitergegeben
-
- sal_Bool mbStartShowWithDialog; // Praesentation wurde ueber Dialog gestartet
- sal_uInt16 mnPrintedHandoutPageNum; // Page number of the handout page that is to be printed.
- sal_uInt16 mnPrintedHandoutPageCount; // Page count of the handout pages that are to be printed.
-
- //af sal_Bool bPrintDirectSelected; // Print only selected objects in direct print
- //afString sPageRange; // pagerange if selected objects in direct print
-
- /** Area covered by all windows, i.e. the area of the parent window
- without the controls at the borders like rulers, scroll bars, tab
- bar, buttons.
- This rectangle may be set in window coordinates (i.e. pixel values
- relative to the parent window). It is transformed by every call to
- GetAllWindowRectangle() into screen coordinates (relative to the
- upper left corner of the screen.
- */
- Rectangle maAllWindowRectangle;
-
- /// The type of the shell. Returned by GetShellType().
- ShellType meShellType;
-
- ::std::auto_ptr<Implementation> mpImpl;
-
- // Support methods for centralized UNDO/REDO
- virtual ::svl::IUndoManager* ImpGetUndoManager (void) const;
- void ImpGetUndoStrings(SfxItemSet &rSet) const;
- void ImpGetRedoStrings(SfxItemSet &rSet) const;
- void ImpSidUndo(sal_Bool bDrawViewShell, SfxRequest& rReq);
- void ImpSidRedo(sal_Bool bDrawViewShell, SfxRequest& rReq);
-
- DECL_LINK( HScrollHdl, ScrollBar * );
- DECL_LINK( VScrollHdl, ScrollBar * );
-
- // virt. Scroll-Handler, hier koennen sich abgeleitete Klassen einklinken
- virtual long VirtHScrollHdl(ScrollBar* pHScroll);
- virtual long VirtVScrollHdl(ScrollBar* pVScroll);
-
- // virtuelle Funktionen fuer Lineal-Handling
- virtual SvxRuler* CreateHRuler(::sd::Window* pWin, sal_Bool bIsFirst);
- virtual SvxRuler* CreateVRuler(::sd::Window* pWin);
- virtual void UpdateHRuler();
- virtual void UpdateVRuler();
-
- // Zeiger auf ein zusaetzliches Control im horizontalen ScrollBar
- // abgeleiteter Klassen (z.B. ein TabBar) zurueckgeben
- virtual long GetHCtrlWidth();
-
- virtual void Activate(sal_Bool IsMDIActivate);
- virtual void Deactivate(sal_Bool IsMDIActivate);
-
- virtual void SetZoomFactor( const Fraction &rZoomX,
- const Fraction &rZoomY );
-
- /**
- This must be called after the ctor, but before anything else.
- It's the part of construction that is dependent
- on showing the top-level window.
-
- Showing a window with a11y enabled causes various callbacks
- to be triggered.
-
- Due to the "virtual methods are not virtual during constructors"
- problem, this is a disaster to call from the ctor
-
- i.e. construct calls Show, and if a11y is enabled this
- reenters the not-fully constructed object and calls
- CreateAccessibleDocumentView, so if construct is called
- from the ctor then if a derived class is contructed the base-cass
- CreateAccessibleDocumentView is used, not the derived
- CreateAccessibleDocumentView. i.e. run smoketest under a11y with
- debugging assertions enabled
- */
- void doShow();
-
-private:
- ::Window* mpParentWindow;
- /** This window updater is used to keep all relevant windows up to date
- with reference to the digit langugage used to display digits in text
- shapes.
- */
- ::std::auto_ptr< ::sd::WindowUpdater> mpWindowUpdater;
-
- /** Code common to all constructors. It generally is a bad idea
- to call this function from outside a constructor.
- */
- void construct (void);
-
- DECL_LINK(FrameWindowEventListener, VclSimpleEvent*);
-
- /** Create the rulers.
- */
- void SetupRulers (void);
-};
-
-
-
-
-::Window* ViewShell::GetParentWindow (void) const
-{
- return mpParentWindow;
-}
-
-::sd::View* ViewShell::GetView (void) const
-{
- return mpView;
-}
-
-SdrView* ViewShell::GetDrawView (void) const
-{
- return static_cast<SdrView*>(mpView);
-}
-
-} // end of namespace sd
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */