summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/ViewShell.hxx
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2004-07-13 13:03:59 +0000
committerRüdiger Timm <rt@openoffice.org>2004-07-13 13:03:59 +0000
commitd7770d37d5a48e665aad457ceaf7de24118bb73b (patch)
treecf201f28472d74e36278ccd8cc9d35db3f6ceb21 /sd/source/ui/inc/ViewShell.hxx
parent14a7dd7c6fe3281de613d58741f575d99e77832d (diff)
INTEGRATION: CWS impress2 (1.2.26); FILE MERGED
2004/07/13 12:03:12 af 1.2.26.25: RESYNC: (1.3-1.4); FILE MERGED 2004/07/10 14:28:24 af 1.2.26.24: #i22705# Made mpImpl protected. 2004/07/08 07:50:59 af 1.2.26.23: #i22705# Added mpImpl member. 2004/07/06 08:02:42 af 1.2.26.22: #i22705# Added argument to CreateOrDuplicatePage(). 2004/07/02 16:51:05 af 1.2.26.21: #i22705# Added CreateOrDuplicatePage() and moved most of the implemenatation from DrawViewShell to this class. 2004/06/30 11:58:19 af 1.2.26.20: #i22705# Added mpLayerTabBar member. 2004/06/22 11:11:15 af 1.2.26.19: #i22705# Added virtual GetController() method. Made ViewShellBase a friend. Member mpController now is an ImplementationReference<> and replaces mpController and mxController. 2004/06/18 00:19:06 af 1.2.26.18: RESYNC: (1.2-1.3); FILE MERGED 2004/06/15 14:47:36 af 1.2.26.17: #i22705# Factored out creation of rulers to SetupRulers(). 2004/06/12 12:16:25 af 1.2.26.16: #i22705# Replaced OuterResizePixel(), InnerResizePixel(), AdjustPosSizePixel() by GetBorder() and Resize(). 2004/06/11 07:19:22 af 1.2.26.15: #i22705# Using GetActiveWindow() instead of pWindow or GetWindow(). 2004/06/09 13:17:23 af 1.2.26.14: #i22705# Moved some inline function definitions to viewshel.cxx. 2004/06/06 12:51:43 af 1.2.26.13: #i22705# Made the ScrollBarBox member an auto_ptr. 2004/06/04 06:46:31 af 1.2.26.12: #i22705# Cleanup. Support of changes in ViewShellManager. 2004/04/27 12:36:18 af 1.2.26.11: #i22705# Moved the view tab bar to the ViewShellBase. 2004/04/23 11:25:08 af 1.2.26.10: #i22705# Removed edit-, master-,and layer button. 2004/04/22 07:34:20 af 1.2.26.9: #i22705# Removed buttons that switch between views. 2004/04/21 15:13:46 af 1.2.26.8: #i22705# Added new ST_TASK_PANEL shell type. Modified comment. 2004/04/15 12:05:29 af 1.2.26.7: #i22705# Splitter removed: Replaced pointer arrays by single auto_ptr. 2004/04/15 08:15:23 af 1.2.26.6: #i22705# Removed splitters. 2004/03/05 09:37:16 af 1.2.26.5: #i22705# Added two set methods. 2004/03/03 17:21:36 af 1.2.26.4: #i22705# Extended a comment. 2004/03/02 09:44:15 af 1.2.26.3: #i22705# Moved implementation of GetViewFrame() to viewshel. Moved printing to PrintManager. 2004/02/25 16:40:33 af 1.2.26.2: #i22705# Added Exit() method. 2004/02/19 14:17:28 af 1.2.26.1: #i22705# Changed several method signatures.
Diffstat (limited to 'sd/source/ui/inc/ViewShell.hxx')
-rw-r--r--sd/source/ui/inc/ViewShell.hxx461
1 files changed, 315 insertions, 146 deletions
diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx
index 9647d657b334..8bb88599e7f0 100644
--- a/sd/source/ui/inc/ViewShell.hxx
+++ b/sd/source/ui/inc/ViewShell.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ViewShell.hxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: obo $ $Date: 2004-07-06 14:44:34 $
+ * last change: $Author: rt $ $Date: 2004-07-13 14:03:59 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -62,12 +62,6 @@
#ifndef SD_VIEW_SHELL_HXX
#define SD_VIEW_SHELL_HXX
-#ifndef _IMAGEBTN_HXX //autogen
-#include <vcl/imagebtn.hxx>
-#endif
-#ifndef _SPLIT_HXX //autogen
-#include <vcl/split.hxx>
-#endif
#ifndef _SV_FIELD_HXX //autogen
#include <vcl/field.hxx>
#endif
@@ -83,13 +77,14 @@
#ifndef _TRANSFER_HXX //autogen
#include <svtools/transfer.hxx>
#endif
+#include <comphelper/implementationreference.hxx>
#ifndef _SD_GLOB_HXX
#include "glob.hxx"
#endif
#include "pres.hxx"
#include "cfgids.hxx"
-
+#include "View.hxx"
#include <memory>
class SdPage;
@@ -114,9 +109,11 @@ class FrameView;
class FuPoor;
class FuSearch;
class FuSlideShow;
+class LayerTabBar;
class ObjectBarManager;
class View;
class ViewShellBase;
+class ViewTabBar;
class Window;
class WindowUpdater;
class ZoomList;
@@ -145,27 +142,45 @@ class ViewShell
public:
enum ShellType {
ST_NONE,
- ST_DRAW, ST_IMPRESS, ST_NOTES, ST_HANDOUT, ST_OUTLINE,
- ST_SLIDE, ST_PREVIEW, ST_PRESENTATION };
- static const int MAX_HSPLIT_CNT = 2;
- static const int MAX_VSPLIT_CNT = 2;
+ ST_DRAW, // The Draw application.
+ ST_IMPRESS, // Main view of the Impress application.
+ ST_NOTES,
+ ST_HANDOUT,
+ ST_OUTLINE,
+ ST_SLIDE, // Old slide view shell
+ ST_SLIDE_SORTER, // New Slide sorter.
+ ST_PREVIEW,
+ 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 ULONG OUTPUT_DRAWMODE_COLOR = DRAWMODE_DEFAULT;
- static const 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;
+ static const 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, ViewShellBase& rViewShellBase,
+ ViewShell (
+ SfxViewFrame *pFrame,
+ ::Window* pParentWindow,
+ ViewShellBase& rViewShellBase,
bool bAllowCenter = true);
- ViewShell (SfxViewFrame *pFrame, const ViewShell& rShell);
+ ViewShell (
+ SfxViewFrame *pFrame,
+ ::Window* pParentWindow,
+ const ViewShell& rShell);
virtual ~ViewShell (void);
/** The Init method has to be called from the outside directly
@@ -176,28 +191,49 @@ public:
*/
virtual void Init (void);
+ /** 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();
void CancelSearching();
- virtual ::sd::View* GetView() const { return (pView); }
- virtual SdrView* GetDrawView() const { return ( (SdrView*) pView); } // fuer den Sfx
+ /** 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;
DrawDocShell* GetDocSh (void) const;
SdDrawDocument* GetDoc (void) const;
SfxViewFrame* GetViewFrame (void) const;
- // diese Funktionen werden gerufen, wenn Fenster gesplittet wird
- // bzw., wenn Splitting aufgehoben wird
- virtual void AddWindow(::sd::Window* pWin) {}
- virtual void RemoveWindow(::sd::Window* pWin) {}
+ /** 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;
- ::sd::Window* GetActiveWindow() { return pWindow; }
+ /** 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);
- const Rectangle& GetAllWindowRect();
+ /** 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 Paint(const Rectangle& rRect, ::sd::Window* pWin) {}
+ virtual void Paint (const Rectangle& rRect, ::sd::Window* pWin);
virtual 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);
@@ -205,41 +241,19 @@ public:
virtual void Command(const CommandEvent& rCEvt, ::sd::Window* pWin);
virtual BOOL RequestHelp( const HelpEvent& rEvt, ::sd::Window* pWin );
- virtual void Draw(OutputDevice &rDev, const Region &rReg) {}
-
- /** 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.
+ virtual void Draw(OutputDevice &rDev, const Region &rReg);
- <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);
virtual void SetUIUnit(FieldUnit eUnit);
virtual void SetDefTabHRuler( UINT16 nDefTab );
- BOOL HasRuler() { return bHasRuler; }
- void SetRuler(BOOL bRuler);
+ BOOL HasRuler (void);
+ void SetRuler(BOOL bRuler);
- void UpdateScrollBars();
+ /** 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);
@@ -249,15 +263,42 @@ public:
void InvalidateWindows();
void UpdateWindows();
virtual void UpdatePreview( SdPage* pPage, BOOL bInit = FALSE );
+
+ ObjectBarManager& GetObjectBarManager (void) const;
+
+ /** Get a list of sub shells by appending them to the end of the given
+ list of shells. This is restricted to the object bars that are
+ placed BELOW the called shell. This method is typically called to
+ gather all shells that are to be taken from or pushed on the stack
+ of sub-shells.
+ */
+ virtual void GetLowerShellList (
+ ::std::vector<SfxShell*>& rShellList) const;
+
+ /** Get a list of sub shells by appending them to the end of the given
+ list of shells. This is restricted to the object bars that are
+ placed ABOVE the called shell. This method is typically called to
+ gather all shells that are to be taken from or pushed on the stack
+ of sub-shells.
+ */
+ virtual void GetUpperShellList (
+ ::std::vector<SfxShell*>& rShellList) const;
+
void DrawMarkRect(const Rectangle& rRect) const;
void DrawFilledRect( const Rectangle& rRect, const Color& rLColor,
const Color& rFColor ) const;
void ExecReq( SfxRequest &rReq );
- ZoomList* GetZoomList() { return pZoomList; }
+ 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);
@@ -267,10 +308,16 @@ public:
virtual SdPage* GetActualPage() = 0;
// kann auch NULL sein
+
FuPoor* GetOldFunction() const { return pFuOld; }
FuPoor* GetActualFunction() const { return pFuActual; }
+ void SetCurrentFunction (FuPoor* pFunction);
+ void SetOldFunction (FuPoor* pFunction);
FuSlideShow* GetSlideShow() const { return pFuSlideShow; }
+ /** Set the slide show function to the given function.
+ */
+ void SetSlideShowFunction (FuSlideShow* pFunction);
void SetPageSizeAndBorder(PageKind ePageKind, const Size& rNewSize,
long nLeft, long nRight, long nUpper, long nLower,
@@ -328,15 +375,69 @@ public:
*/
::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);
+
+ /** Place all UI elements that are controlled by the view shell inside
+ the specified rectangle. This includes the border elements like
+ rulers and scroll bars as well as the document view. It is the
+ responsibility of the caller to give an appropriate rectangle for an
+ Inner- or OuterResizePixel().
+ The rectangle is given in pixel coordinates relative to the parent
+ window.
+ */
+ virtual void Resize (const Point &rPos, const Size &rSize);
+
+ /** 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);
- /** Return the current/main window of this view shell.
- This method exists for reasons of compatibility.
- May change later.
+ /** 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.
*/
- ::Window* GetWindow (void) const;
+ 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;
- ObjectBarManager& GetObjectBarManager (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;
/** Return an object that implements the necessary UNO interfaces to act
as a controller for the ViewShellBase object. The controller is
@@ -345,72 +446,96 @@ public:
Returns NULL when the controller does not yet exist and can not
be created.
*/
- DrawController* GetController (void);
+ virtual DrawController* GetController (void);
/** Return the type of the shell.
*/
virtual ShellType GetShellType (void) const;
- virtual void InnerResizePixel(const Point &rPos, const Size &rSize);
- virtual void OuterResizePixel(const Point &rPos, const Size &rSize);
+ /** 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. The closing of a preview window, with its
+ FuSlideShow instance calls the wrong bindings and crashes.</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);
- void PrintOutline(SfxPrinter& rPrinter, SfxProgress& rProgress,
- const MultiSelection& rSelPages,
- const String& rTimeDateStr, const Font& rTimeDateFont,
- const SdOptionsPrintItem* pPrintOpts,
- USHORT nPage, USHORT nPageMax,
- USHORT nCopies, USHORT nProgressOffset, USHORT nTotal );
- void PrintHandout(SfxPrinter& rPrinter, SfxProgress& rProgress,
- const MultiSelection& rSelPages,
- const String& rTimeDateStr, const Font& rTimeDateFont,
- const SdOptionsPrintItem* pPrintOpts,
- USHORT nPage, USHORT nPageMax,
- USHORT nCopies, USHORT nProgressOffset, USHORT nTotal );
- void PrintStdOrNotes(SfxPrinter& rPrinter, SfxProgress& rProgress,
- const MultiSelection& rSelPages,
- const String& rTimeDateStr, const Font& rTimeDateFont,
- const SdOptionsPrintItem* pPrintOpts,
- USHORT nPage, USHORT nPageMax,
- USHORT nCopies, USHORT nProgressOffset, USHORT nTotal,
- PageKind ePageKind, BOOL bPrintMarkedOnly);
+ void PrintOutline (
+ SfxPrinter& rPrinter,
+ SfxProgress& rProgress,
+ const MultiSelection& rSelPages,
+ const String& rTimeDateStr,
+ const Font& rTimeDateFont,
+ const SdOptionsPrintItem* pPrintOpts,
+ USHORT nPage,
+ USHORT nPageMax,
+ USHORT nCopies,
+ USHORT nProgressOffset,
+ USHORT nTotal );
+ void PrintHandout (
+ SfxPrinter& rPrinter,
+ SfxProgress& rProgress,
+ const MultiSelection& rSelPages,
+ const String& rTimeDateStr,
+ const Font& rTimeDateFont,
+ const SdOptionsPrintItem* pPrintOpts,
+ USHORT nPage,
+ USHORT nPageMax,
+ USHORT nCopies,
+ USHORT nProgressOffset,
+ USHORT nTotal);
+ void PrintStdOrNotes (
+ SfxPrinter& rPrinter,
+ SfxProgress& rProgress,
+ const MultiSelection& rSelPages,
+ const String& rTimeDateStr,
+ const Font& rTimeDateFont,
+ const SdOptionsPrintItem* pPrintOpts,
+ USHORT nPage,
+ USHORT nPageMax,
+ USHORT nCopies,
+ USHORT nProgressOffset,
+ USHORT nTotal,
+ PageKind ePageKind,
+ BOOL bPrintMarkedOnly);
protected:
friend class ViewShellBase;
- // #96090# Support methods for centralized UNDO/REDO
- /** Return the undo manager of the currently active object bar.
- This is usually the one of the document. Only the outline
- view has its own (the one of its Outliner object.)
+ /** Window inside the rulers and scroll bars that shows a view of the
+ document.
*/
- void CreateBorder();
- SfxUndoManager* ImpGetUndoManager (void) const;
- void ImpGetUndoStrings(SfxItemSet &rSet) const;
- void ImpGetRedoStrings(SfxItemSet &rSet) const;
- void ImpSidUndo(BOOL bDrawViewShell, SfxRequest& rReq);
- void ImpSidRedo(BOOL bDrawViewShell, SfxRequest& rReq);
- // zweidimensionales Zeigerarray (X/Y) mit Fensterzeigern fuer alle
- // moeglichen Splitter-Aufteilungen
- ::sd::Window* pWinArray[MAX_HSPLIT_CNT][MAX_VSPLIT_CNT];
- // Zeigerarrays fuer die ScrollBars
- ScrollBar* pHScrlArray[MAX_HSPLIT_CNT];
- ScrollBar* pVScrlArray[MAX_VSPLIT_CNT];
- // Zeigerarrays fuer die Lineale
- SvxRuler* pHRulerArray[MAX_HSPLIT_CNT];
- SvxRuler* pVRulerArray[MAX_VSPLIT_CNT];
- ScrollBarBox* pScrlBox;
-
- BOOL bIsHSplit;
- BOOL bIsVSplit;
- BOOL bHasRuler;
- // aktives Fenster
- ::sd::Window* pWindow;
- ::sd::View* pView;
+ ::std::auto_ptr< ::sd::Window> mpContentWindow;
+
+ /// Horizontal scroll bar for the current slide is displayed when needed.
+ ::std::auto_ptr<ScrollBar> mpHorizontalScrollBar;
+ /// Vertical scroll bar for whole document is always visible.
+ ::std::auto_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.
+ ::std::auto_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* pFrameView;
FuPoor* pFuActual;
@@ -419,16 +544,6 @@ protected:
FuSlideShow* pFuSlideShow;
ZoomList* pZoomList;
- Splitter aHSplit;
- Splitter aVSplit;
-
- ImageButton aDrawBtn;
- ImageButton aOutlineBtn;
- ImageButton aSlideBtn;
- ImageButton aNotesBtn;
- ImageButton aHandoutBtn;
- ImageButton aPresentationBtn;
-
Point aViewPos;
Size aViewSize;
Size aScrBarWH;
@@ -438,25 +553,43 @@ protected:
BOOL bStartShowWithDialog; // Praesentation wurde ueber Dialog gestartet
USHORT nPrintedHandoutPageNum; // Seitennummer der zu durckenden Handzettelseite
- // Bereich aller Fenster, wenn Splitter aktiv sind
- Rectangle aAllWindowRect;
+ //af BOOL bPrintDirectSelected; // Print only selected objects in direct print
+ //afString sPageRange; // pagerange if selected objects in direct print
- /// The sub-controller. Returned by GetSubController. Owned by
- /// this base class once it has been created.
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>
- mxSubController;
- /// The controller. Returned by GetController().
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>
- mxController;
- DrawController* mpController;
+ /** 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;
- DECL_LINK( SplitHdl, Splitter * );
+ /** Main controller of the view shell. During the switching from one
+ stacked shell to another this pointer may be NULL.
+ */
+ ::comphelper::ImplementationReference<
+ DrawController,
+ ::com::sun::star::uno::XInterface,
+ ::com::sun::star::uno::XWeak>
+ mpController;
+
+ class Implementation;
+ ::std::auto_ptr<Implementation> mpImpl;
+
+ // #96090# Support methods for centralized UNDO/REDO
+ SfxUndoManager* ImpGetUndoManager (void) const;
+ void ImpGetUndoStrings(SfxItemSet &rSet) const;
+ void ImpGetRedoStrings(SfxItemSet &rSet) const;
+ void ImpSidUndo(BOOL bDrawViewShell, SfxRequest& rReq);
+ void ImpSidRedo(BOOL bDrawViewShell, SfxRequest& rReq);
+
DECL_LINK( HScrollHdl, ScrollBar * );
DECL_LINK( VScrollHdl, ScrollBar * );
- DECL_LINK( ModeBtnHdl, Button * );
// virt. Scroll-Handler, hier koennen sich abgeleitete Klassen einklinken
virtual long VirtHScrollHdl(ScrollBar* pHScroll);
@@ -488,25 +621,61 @@ protected:
void PrintPage( SfxPrinter& rPrinter, ::sd::View* pPrintView,
SdPage* pPage, BOOL bPrintMarkedOnly );
-private:
- void CreateHSplitElems(long nSplitXPixel);
- void CreateVSplitElems(long nSplitYPixel);
-
- /** Code common to all constructors. It generally is a bad idea
- to call this function from outside a constructor.
+ /** 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.
*/
- void Construct (void);
+ virtual void CreateOrDuplicatePage (
+ SfxRequest& rRequest,
+ PageKind ePageKind,
+ SdPage* pPage);
+private:
+ ::Window* mpParentWindow;
+ ::std::auto_ptr<ObjectBarManager> mpObjectBarManager;
/** 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