xref: /trunk/main/sd/source/ui/inc/DrawViewShell.hxx (revision c45d927ae478a6b27be268f8970f881a09d05b3f)
1*c45d927aSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*c45d927aSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*c45d927aSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*c45d927aSAndrew Rist  * distributed with this work for additional information
6*c45d927aSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*c45d927aSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*c45d927aSAndrew Rist  * "License"); you may not use this file except in compliance
9*c45d927aSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*c45d927aSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*c45d927aSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*c45d927aSAndrew Rist  * software distributed under the License is distributed on an
15*c45d927aSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*c45d927aSAndrew Rist  * KIND, either express or implied.  See the License for the
17*c45d927aSAndrew Rist  * specific language governing permissions and limitations
18*c45d927aSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*c45d927aSAndrew Rist  *************************************************************/
21*c45d927aSAndrew Rist 
22*c45d927aSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef SD_DRAW_VIEW_SHELL_HXX
25cdf0e10cSrcweir #define SD_DRAW_VIEW_SHELL_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "ViewShell.hxx"
28cdf0e10cSrcweir #include "tools/AsynchronousCall.hxx"
29cdf0e10cSrcweir #include <sfx2/viewfac.hxx>
30cdf0e10cSrcweir #include <sfx2/viewsh.hxx>
31cdf0e10cSrcweir #include "TabControl.hxx"
32cdf0e10cSrcweir #include "pres.hxx"
33cdf0e10cSrcweir #include <com/sun/star/lang/XEventListener.hpp>
34cdf0e10cSrcweir #include <com/sun/star/scanner/XScannerManager.hpp>
35cdf0e10cSrcweir 
36cdf0e10cSrcweir class SdPage;
37cdf0e10cSrcweir class DrawDocShell;
38cdf0e10cSrcweir class SdAnimationWin;
39cdf0e10cSrcweir class SdRuler;
40cdf0e10cSrcweir class TabBar;
41cdf0e10cSrcweir class SdrObject;
42cdf0e10cSrcweir class SdrPageView;
43cdf0e10cSrcweir class TransferableDataHelper;
44cdf0e10cSrcweir class TransferableClipboardListener;
45cdf0e10cSrcweir class AbstractSvxNameDialog;
46cdf0e10cSrcweir class SdrLayer;
47cdf0e10cSrcweir class SvxClipboardFmtItem;
48cdf0e10cSrcweir 
49cdf0e10cSrcweir namespace sd {
50cdf0e10cSrcweir 
51cdf0e10cSrcweir class DrawView;
52cdf0e10cSrcweir class LayerTabBar;
53cdf0e10cSrcweir class Ruler;
54cdf0e10cSrcweir class SdUnoDrawView;
55cdf0e10cSrcweir class AnnotationManager;
56cdf0e10cSrcweir class ViewOverlayManager;
57cdf0e10cSrcweir 
58cdf0e10cSrcweir #define CHECK_RANGE(nMin, nValue, nMax) ((nValue >= nMin) && (nValue <= nMax))
59cdf0e10cSrcweir 
60cdf0e10cSrcweir /** Base class of the stacked shells that provide graphical views to
61cdf0e10cSrcweir     Draw and Impress documents and editing functionality.  In contrast
62cdf0e10cSrcweir     to this other stacked shells are responsible for showing an
63cdf0e10cSrcweir     overview over several slides (SlideViewShell) or a textual
64cdf0e10cSrcweir     overview over the text in an Impress document (OutlineViewShell).
65cdf0e10cSrcweir */
66cdf0e10cSrcweir class DrawViewShell
67cdf0e10cSrcweir     : public ViewShell,
68cdf0e10cSrcweir       public SfxListener
69cdf0e10cSrcweir {
70cdf0e10cSrcweir public:
71cdf0e10cSrcweir     static const int SLOTARRAY_COUNT = 24;
72cdf0e10cSrcweir 
73cdf0e10cSrcweir     TYPEINFO();
74cdf0e10cSrcweir 
75cdf0e10cSrcweir     SFX_DECL_INTERFACE(SD_IF_SDDRAWVIEWSHELL)
76cdf0e10cSrcweir 
77cdf0e10cSrcweir     /** Create a new stackable shell that may take some information
78cdf0e10cSrcweir         (e.g. the frame view) from the given previous shell.
79cdf0e10cSrcweir         @param ePageKind
80cdf0e10cSrcweir             This parameter gives the initial page kind that the new shell
81cdf0e10cSrcweir             will show.
82cdf0e10cSrcweir         @param pFrameView
83cdf0e10cSrcweir             The frame view that makes it possible to pass information from
84cdf0e10cSrcweir             one view shell to the next.
85cdf0e10cSrcweir     */
86cdf0e10cSrcweir     DrawViewShell (
87cdf0e10cSrcweir         SfxViewFrame* pFrame,
88cdf0e10cSrcweir         ViewShellBase& rViewShellBase,
89cdf0e10cSrcweir         ::Window* pParentWindow,
90cdf0e10cSrcweir         PageKind ePageKind = PK_STANDARD,
91cdf0e10cSrcweir         FrameView* pFrameView = NULL);
92cdf0e10cSrcweir 
93cdf0e10cSrcweir     virtual ~DrawViewShell (void);
94cdf0e10cSrcweir 
95cdf0e10cSrcweir     virtual void Init (bool bIsMainViewShell);
96cdf0e10cSrcweir 
97cdf0e10cSrcweir     virtual void Shutdown (void);
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     void PrePaint();
100cdf0e10cSrcweir     virtual void Paint(const Rectangle& rRect, ::sd::Window* pWin);
101cdf0e10cSrcweir 
102cdf0e10cSrcweir     /** Set the position and size of the area which contains the GUI
103cdf0e10cSrcweir         elements like rulers, sliders, and buttons as well as the document
104cdf0e10cSrcweir         view.  Both size and position are expected to be in pixel
105cdf0e10cSrcweir         coordinates.  The positions and sizes of the mentioned GUI elements
106cdf0e10cSrcweir         are updated as well.
107cdf0e10cSrcweir 
108cdf0e10cSrcweir         <p> This method is implemented by first setting copying the given
109cdf0e10cSrcweir         values to internal variables and then calling the
110cdf0e10cSrcweir         <type>ArrangeGUIElements</type> method which performs the actual
111cdf0e10cSrcweir         work of sizeing and arranging the UI elements accordingly.</p>
112cdf0e10cSrcweir         @param rPos
113cdf0e10cSrcweir             The position of the enclosing window relative to the document
114cdf0e10cSrcweir             window.  This is only interesting if a Draw/Impress document
115cdf0e10cSrcweir             view is embedded as OLE object into another document view.  For
116cdf0e10cSrcweir             normal documents this position is (0,0).
117cdf0e10cSrcweir         @param rSize
118cdf0e10cSrcweir             The new size in pixel.
119cdf0e10cSrcweir     */
120cdf0e10cSrcweir     //  virtual void    AdjustPosSizePixel(const Point &rPos, const Size &rSize);
121cdf0e10cSrcweir 
122cdf0e10cSrcweir     /** Arrange and resize the GUI elements like rulers, sliders, and
123cdf0e10cSrcweir         buttons as well as the actual document view according to the size of
124cdf0e10cSrcweir         the enclosing window and current sizes of buttons, rulers, and
125cdf0e10cSrcweir         sliders.
126cdf0e10cSrcweir     */
127cdf0e10cSrcweir     virtual void ArrangeGUIElements (void);
128cdf0e10cSrcweir 
129cdf0e10cSrcweir     void            HidePage();
130cdf0e10cSrcweir 
131cdf0e10cSrcweir     virtual sal_Bool    KeyInput(const KeyEvent& rKEvt, ::sd::Window* pWin);
132cdf0e10cSrcweir     virtual void    MouseMove(const MouseEvent& rMEvt, ::sd::Window* pWin);
133cdf0e10cSrcweir     virtual void    MouseButtonUp(const MouseEvent& rMEvt, ::sd::Window* pWin);
134cdf0e10cSrcweir     virtual void    MouseButtonDown(const MouseEvent& rMEvt, ::sd::Window* pWin);
135cdf0e10cSrcweir     virtual void    Command(const CommandEvent& rCEvt, ::sd::Window* pWin);
136cdf0e10cSrcweir 
137cdf0e10cSrcweir     virtual void Resize (void);
138cdf0e10cSrcweir 
139cdf0e10cSrcweir     void            ShowMousePosInfo(const Rectangle& rRect, ::sd::Window* pWin);
140cdf0e10cSrcweir 
141cdf0e10cSrcweir     virtual void    AddWindow(::sd::Window* pWin);
142cdf0e10cSrcweir     virtual void    RemoveWindow(::sd::Window* pWin);
143cdf0e10cSrcweir 
144cdf0e10cSrcweir     virtual void ChangeEditMode (EditMode eMode, bool bIsLayerModeActive);
145cdf0e10cSrcweir 
146cdf0e10cSrcweir     virtual void    SetZoom( long nZoom );
147cdf0e10cSrcweir     virtual void    SetZoomRect( const Rectangle& rZoomRect );
148cdf0e10cSrcweir 
149cdf0e10cSrcweir     void            InsertURLField(const String& rURL, const String& rText, const String& rTarget,
150cdf0e10cSrcweir                                    const Point* pPos);
151cdf0e10cSrcweir     void            InsertURLButton(const String& rURL, const String& rText, const String& rTarget,
152cdf0e10cSrcweir                                     const Point* pPos);
153cdf0e10cSrcweir 
154cdf0e10cSrcweir     virtual void    SetUIUnit(FieldUnit eUnit);
155cdf0e10cSrcweir 
156cdf0e10cSrcweir     void            SelectionHasChanged();
157cdf0e10cSrcweir     void            ModelHasChanged();
158cdf0e10cSrcweir     virtual void    Activate(sal_Bool bIsMDIActivate);
159cdf0e10cSrcweir     virtual void    Deactivate(sal_Bool IsMDIActivate);
160cdf0e10cSrcweir     virtual void    UIActivating( SfxInPlaceClient* );
161cdf0e10cSrcweir     virtual void    UIDeactivated( SfxInPlaceClient* );
162cdf0e10cSrcweir     virtual String  GetSelectionText( sal_Bool bCompleteWords = sal_False );
163cdf0e10cSrcweir     virtual sal_Bool    HasSelection( sal_Bool bText = sal_True ) const;
164cdf0e10cSrcweir 
165cdf0e10cSrcweir     void            ExecCtrl(SfxRequest& rReq);
166cdf0e10cSrcweir     void            GetCtrlState(SfxItemSet& rSet);
167cdf0e10cSrcweir     void            GetMenuState(SfxItemSet& rSet);
168cdf0e10cSrcweir     void            GetTableMenuState(SfxItemSet& rSet);
169cdf0e10cSrcweir     /** Set the items of the given item set that are related to
170cdf0e10cSrcweir         switching the editing mode to the correct values.
171cdf0e10cSrcweir         <p>This function also sets the states of the mode buttons
172cdf0e10cSrcweir         (those at the upper right corner) accordingly.</p>
173cdf0e10cSrcweir     */
174cdf0e10cSrcweir     void GetModeSwitchingMenuState (SfxItemSet &rSet);
175cdf0e10cSrcweir     void            GetAttrState(SfxItemSet& rSet);
176cdf0e10cSrcweir     void            GetSnapItemState(SfxItemSet& rSet);
177cdf0e10cSrcweir 
178cdf0e10cSrcweir     void            GetState (SfxItemSet& rSet);
179cdf0e10cSrcweir     void            Execute (SfxRequest& rReq);
180cdf0e10cSrcweir 
181cdf0e10cSrcweir     void            ExecStatusBar(SfxRequest& rReq);
182cdf0e10cSrcweir     void            GetStatusBarState(SfxItemSet& rSet);
183cdf0e10cSrcweir 
184cdf0e10cSrcweir     void            ExecOptionsBar(SfxRequest& rReq);
185cdf0e10cSrcweir     void            GetOptionsBarState(SfxItemSet& rSet);
186cdf0e10cSrcweir 
187cdf0e10cSrcweir     void            ExecRuler(SfxRequest& rReq);
188cdf0e10cSrcweir     void            GetRulerState(SfxItemSet& rSet);
189cdf0e10cSrcweir 
190cdf0e10cSrcweir     void            ExecFormText(SfxRequest& rReq);
191cdf0e10cSrcweir     void            GetFormTextState(SfxItemSet& rSet);
192cdf0e10cSrcweir 
193cdf0e10cSrcweir     void            ExecAnimationWin(SfxRequest& rReq);
194cdf0e10cSrcweir     void            GetAnimationWinState(SfxItemSet& rSet);
195cdf0e10cSrcweir 
196cdf0e10cSrcweir     void            ExecNavigatorWin(SfxRequest& rReq);
197cdf0e10cSrcweir     void            GetNavigatorWinState(SfxItemSet& rSet);
198cdf0e10cSrcweir 
199cdf0e10cSrcweir     void            ExecEffectWin(SfxRequest& rReq);
200cdf0e10cSrcweir 
201cdf0e10cSrcweir     void            Update3DWindow();
202cdf0e10cSrcweir     void            AssignFrom3DWindow();
203cdf0e10cSrcweir 
204cdf0e10cSrcweir     void            ExecGallery(SfxRequest& rReq);
205cdf0e10cSrcweir     void            GetGalleryState(SfxItemSet& rSet);
206cdf0e10cSrcweir 
207cdf0e10cSrcweir     void            ExecBmpMask( SfxRequest& rReq );
208cdf0e10cSrcweir     void            GetBmpMaskState( SfxItemSet& rSet );
209cdf0e10cSrcweir 
210cdf0e10cSrcweir     void            ExecIMap( SfxRequest& rReq );
211cdf0e10cSrcweir     void            GetIMapState( SfxItemSet& rSet );
212cdf0e10cSrcweir 
213cdf0e10cSrcweir     void            FuTemporary(SfxRequest& rReq);
214cdf0e10cSrcweir     void            FuPermanent(SfxRequest& rReq);
215cdf0e10cSrcweir     void            FuSupport(SfxRequest& rReq);
216cdf0e10cSrcweir     void            FuTable(SfxRequest& rReq);
217cdf0e10cSrcweir 
218cdf0e10cSrcweir     void            AttrExec (SfxRequest& rReq);
219cdf0e10cSrcweir     void            AttrState (SfxItemSet& rSet);
220cdf0e10cSrcweir 
221cdf0e10cSrcweir     void            ExecuteAnnotation (SfxRequest& rRequest);
222cdf0e10cSrcweir     void            GetAnnotationState (SfxItemSet& rItemSet);
223cdf0e10cSrcweir 
224cdf0e10cSrcweir     void StartRulerDrag (
225cdf0e10cSrcweir         const Ruler& rRuler,
226cdf0e10cSrcweir         const MouseEvent& rMEvt);
227cdf0e10cSrcweir 
228cdf0e10cSrcweir     virtual sal_uInt16  PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False );
229cdf0e10cSrcweir 
230cdf0e10cSrcweir     PageKind        GetPageKind() { return mePageKind; }
231cdf0e10cSrcweir 
232cdf0e10cSrcweir     Point           GetMousePos() { return maMousePos; }
233cdf0e10cSrcweir     sal_Bool            IsMousePosFreezed() { return mbMousePosFreezed; }
234cdf0e10cSrcweir     void            SetMousePosFreezed( sal_Bool bIn ) { mbMousePosFreezed = bIn; }
235cdf0e10cSrcweir 
236cdf0e10cSrcweir     EditMode        GetEditMode() const { return meEditMode; }
237cdf0e10cSrcweir     virtual SdPage* GetActualPage() { return mpActualPage; }
238cdf0e10cSrcweir 
239cdf0e10cSrcweir     /// inherited from sd::ViewShell
240cdf0e10cSrcweir     virtual SdPage* getCurrentPage() const;
241cdf0e10cSrcweir 
242cdf0e10cSrcweir     void            ResetActualPage();
243cdf0e10cSrcweir     void            ResetActualLayer();
244cdf0e10cSrcweir     sal_Bool            SwitchPage(sal_uInt16 nPage);
245cdf0e10cSrcweir     sal_Bool            IsSwitchPageAllowed() const;
246cdf0e10cSrcweir 
247cdf0e10cSrcweir     sal_Bool            GotoBookmark(const String& rBookmark);
248cdf0e10cSrcweir     void            MakeVisible(const Rectangle& rRect, ::Window& rWin);
249cdf0e10cSrcweir 
250cdf0e10cSrcweir     virtual void    ReadFrameViewData(FrameView* pView);
251cdf0e10cSrcweir     virtual void    WriteFrameViewData();
252cdf0e10cSrcweir 
253cdf0e10cSrcweir     virtual ErrCode DoVerb(long nVerb);
254cdf0e10cSrcweir     virtual sal_Bool    ActivateObject(SdrOle2Obj* pObj, long nVerb);
255cdf0e10cSrcweir 
256cdf0e10cSrcweir     void            SetZoomOnPage( sal_Bool bZoom = sal_True ) { mbZoomOnPage = bZoom; }
257cdf0e10cSrcweir     sal_Bool            IsZoomOnPage() { return mbZoomOnPage; }
258cdf0e10cSrcweir     void            CheckLineTo (SfxRequest& rReq);
259cdf0e10cSrcweir     void            FuTemp01(SfxRequest& rReq);
260cdf0e10cSrcweir     void            FuTemp02(SfxRequest& rReq);
261cdf0e10cSrcweir     void            FuTemp03(SfxRequest& rReq);
262cdf0e10cSrcweir     void            FuTemp04(SfxRequest& rReq);
263cdf0e10cSrcweir     void            SetChildWindowState( SfxItemSet& rSet );
264cdf0e10cSrcweir 
265cdf0e10cSrcweir     void            UpdateIMapDlg( SdrObject* pObj );
266cdf0e10cSrcweir 
267cdf0e10cSrcweir     void            LockInput();
268cdf0e10cSrcweir     void            UnlockInput();
269cdf0e10cSrcweir     sal_Bool            IsInputLocked() const { return mnLockCount > 0UL; }
270cdf0e10cSrcweir 
271cdf0e10cSrcweir     sal_uInt16          GetCurPageId() { return( maTabControl.GetCurPageId() ); }
272cdf0e10cSrcweir 
273cdf0e10cSrcweir     /** Show controls of the UI or hide them, depending on the given flag.
274cdf0e10cSrcweir         Do not call this method directly.  Call the method at ViewShellBase
275cdf0e10cSrcweir         instead.
276cdf0e10cSrcweir     */
277cdf0e10cSrcweir     virtual void ShowUIControls (bool bVisible = true);
278cdf0e10cSrcweir 
279cdf0e10cSrcweir     void            ScannerEvent( const ::com::sun::star::lang::EventObject& rEventObject );
280cdf0e10cSrcweir 
281cdf0e10cSrcweir     bool IsLayerModeActive (void) const;
282cdf0e10cSrcweir 
283cdf0e10cSrcweir     sal_uInt16*         GetSlotArray() const { return mpSlotArray; }
284cdf0e10cSrcweir 
285cdf0e10cSrcweir     virtual sal_Int8    AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTargetHelper,
286cdf0e10cSrcweir                                     ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer );
287cdf0e10cSrcweir     virtual sal_Int8    ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rTargetHelper,
288cdf0e10cSrcweir                                     ::sd::Window* pTargetWindow, sal_uInt16 nPage, sal_uInt16 nLayer );
289cdf0e10cSrcweir 
290cdf0e10cSrcweir     virtual void    WriteUserDataSequence ( ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False );
291cdf0e10cSrcweir     virtual void    ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >&, sal_Bool bBrowse = sal_False );
292cdf0e10cSrcweir 
293cdf0e10cSrcweir     virtual void    VisAreaChanged(const Rectangle& rRect);
294cdf0e10cSrcweir 
295cdf0e10cSrcweir     /** Create an accessible object representing the specified window.
296cdf0e10cSrcweir         @param pWindow
297cdf0e10cSrcweir             The returned object makes the document displayed in this window
298cdf0e10cSrcweir             accessible.
299cdf0e10cSrcweir         @return
300cdf0e10cSrcweir             Returns an <type>AccessibleDrawDocumentView</type> object.
301cdf0e10cSrcweir    */
302cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference<
303cdf0e10cSrcweir         ::com::sun::star::accessibility::XAccessible>
304cdf0e10cSrcweir         CreateAccessibleDocumentView (::sd::Window* pWindow);
305cdf0e10cSrcweir 
306cdf0e10cSrcweir     /** Return the number of layers managed by the layer tab control.  This
307cdf0e10cSrcweir         will usually differ from the number of layers managed by the layer
308cdf0e10cSrcweir         administrator.
309cdf0e10cSrcweir         @return
310cdf0e10cSrcweir             The number of layers managed by the layer tab control.  The
311cdf0e10cSrcweir             returned value is independent of whether the layer modus is
312cdf0e10cSrcweir             currently active and the tab control is visible.
313cdf0e10cSrcweir     */
314cdf0e10cSrcweir     virtual int GetTabLayerCount (void) const;
315cdf0e10cSrcweir 
316cdf0e10cSrcweir     /** Return the numerical id of the currently active layer as seen by the
317cdf0e10cSrcweir         layer tab control.
318cdf0e10cSrcweir         @return
319cdf0e10cSrcweir             The returned id is a number between zero (inclusive) and the
320cdf0e10cSrcweir             number of layers as returned by the
321cdf0e10cSrcweir             <member>GetTabLayerCount</member> method (exclusive).
322cdf0e10cSrcweir     */
323cdf0e10cSrcweir     virtual int GetActiveTabLayerIndex (void) const;
324cdf0e10cSrcweir 
325cdf0e10cSrcweir     /** Set the active layer at the layer tab control and update the control
326cdf0e10cSrcweir         accordingly to reflect the change on screen.
327cdf0e10cSrcweir         @param nId
328cdf0e10cSrcweir             The id is expected to be a number between zero (inclusive) and
329cdf0e10cSrcweir             the number of layers as returned by the
330cdf0e10cSrcweir             <member>GetTabLayerCount</member> method (exclusive).  Note that
331cdf0e10cSrcweir             Invalid values are ignored.  No excpetion is thrown in that case.
332cdf0e10cSrcweir     */
333cdf0e10cSrcweir     virtual void SetActiveTabLayerIndex (int nId);
334cdf0e10cSrcweir 
335cdf0e10cSrcweir     /** Return a pointer to the tab control for pages.
336cdf0e10cSrcweir     */
337cdf0e10cSrcweir     TabControl* GetPageTabControl (void);
338cdf0e10cSrcweir 
339cdf0e10cSrcweir     /** Return a pointer to the tab control for layers.
340cdf0e10cSrcweir     */
341cdf0e10cSrcweir     LayerTabBar* GetLayerTabControl (void);
342cdf0e10cSrcweir 
343cdf0e10cSrcweir     /** Renames the given slide using an SvxNameDialog
344cdf0e10cSrcweir 
345cdf0e10cSrcweir         @param nPageId the index of the page in the SdTabControl.
346cdf0e10cSrcweir         @param rName the new name of the slide.
347cdf0e10cSrcweir 
348cdf0e10cSrcweir         @return false, if the new name is invalid for some reason.
349cdf0e10cSrcweir 
350cdf0e10cSrcweir         <p>Implemented in <code>drviews8.cxx</code>.</p>
351cdf0e10cSrcweir      */
352cdf0e10cSrcweir     bool RenameSlide( sal_uInt16 nPageId, const String & rName );
353cdf0e10cSrcweir 
354cdf0e10cSrcweir     /** modifies the given layer with the given values */
355cdf0e10cSrcweir     void ModifyLayer( SdrLayer* pLayer, const String& rLayerName, const String& rLayerTitle, const String& rLayerDesc, bool bIsVisible, bool bIsLocked, bool bIsPrintable );
356cdf0e10cSrcweir 
357cdf0e10cSrcweir     virtual css::uno::Reference<css::drawing::XDrawSubController> CreateSubController (void);
358cdf0e10cSrcweir 
359cdf0e10cSrcweir     DrawView*   GetDrawView() const { return mpDrawView; }
360cdf0e10cSrcweir 
361cdf0e10cSrcweir     /** Relocation to a new parent window is not supported for DrawViewShell
362cdf0e10cSrcweir         objects so this method always returns <FALSE/>.
363cdf0e10cSrcweir     */
364cdf0e10cSrcweir     virtual bool RelocateToParentWindow (::Window* pParentWindow);
365cdf0e10cSrcweir 
366cdf0e10cSrcweir protected:
367cdf0e10cSrcweir     DrawView*       mpDrawView;
368cdf0e10cSrcweir     SdPage*         mpActualPage;
369cdf0e10cSrcweir     Rectangle       maMarkRect;
370cdf0e10cSrcweir     Point           maMousePos;
371cdf0e10cSrcweir     sal_Bool            mbMousePosFreezed;
372cdf0e10cSrcweir     TabControl      maTabControl;
373cdf0e10cSrcweir     EditMode        meEditMode;
374cdf0e10cSrcweir     PageKind        mePageKind;
375cdf0e10cSrcweir     sal_Bool            mbZoomOnPage;
376cdf0e10cSrcweir     sal_Bool            mbIsRulerDrag;
377cdf0e10cSrcweir     sal_uLong           mnLockCount;
378cdf0e10cSrcweir     Timer           maCloseTimer;
379cdf0e10cSrcweir     sal_Bool            mbReadOnly;
380cdf0e10cSrcweir     sal_uInt16*         mpSlotArray;
381cdf0e10cSrcweir 
382cdf0e10cSrcweir     static sal_Bool     mbPipette;
383cdf0e10cSrcweir 
384cdf0e10cSrcweir                     DECL_LINK( ClipboardChanged, TransferableDataHelper* );
385cdf0e10cSrcweir                     DECL_LINK( CloseHdl, Timer* pTimer );
386cdf0e10cSrcweir                     DECL_LINK( TabSplitHdl, TabBar * );
387cdf0e10cSrcweir                     DECL_LINK( NameObjectHdl, AbstractSvxNameDialog* );
388cdf0e10cSrcweir                     DECL_LINK( RenameSlideHdl, AbstractSvxNameDialog* );
389cdf0e10cSrcweir 
390cdf0e10cSrcweir     void            DeleteActualPage();
391cdf0e10cSrcweir     void            DeleteActualLayer();
392cdf0e10cSrcweir 
393cdf0e10cSrcweir     virtual SvxRuler* CreateHRuler(::sd::Window* pWin, sal_Bool bIsFirst);
394cdf0e10cSrcweir     virtual SvxRuler* CreateVRuler(::sd::Window* pWin);
395cdf0e10cSrcweir     virtual void    UpdateHRuler();
396cdf0e10cSrcweir     virtual void    UpdateVRuler();
397cdf0e10cSrcweir     virtual long    GetHCtrlWidth();
398cdf0e10cSrcweir     virtual void    SetZoomFactor(const Fraction& rZoomX, const Fraction& rZoomY);
399cdf0e10cSrcweir     virtual Size    GetOptimalSizePixel() const;
400cdf0e10cSrcweir 
401cdf0e10cSrcweir     void            SetupPage( Size &rSize, long nLeft, long nRight, long nUpper, long nLower,
402cdf0e10cSrcweir                                sal_Bool bSize, sal_Bool bMargin, sal_Bool bScaleAll );
403cdf0e10cSrcweir 
404cdf0e10cSrcweir     sal_uInt16          GetIdBySubId( sal_uInt16 nSId );
405cdf0e10cSrcweir     void            MapSlot( sal_uInt16 nSId );
406cdf0e10cSrcweir     void            UpdateToolboxImages( SfxItemSet &rSet, sal_Bool bPermanent = sal_True );
407cdf0e10cSrcweir     sal_uInt16          GetMappedSlot( sal_uInt16 nSId );
408cdf0e10cSrcweir     sal_uInt16          GetArrayId( sal_uInt16 nSId );
409cdf0e10cSrcweir 
410cdf0e10cSrcweir     void            GetMenuStateSel(SfxItemSet& rSet);
411cdf0e10cSrcweir 
412cdf0e10cSrcweir private:
413cdf0e10cSrcweir     /** This flag controls whether the layer mode is active, i.e. the layer
414cdf0e10cSrcweir         dialog is visible.
415cdf0e10cSrcweir     */
416cdf0e10cSrcweir     bool mbIsLayerModeActive;
417cdf0e10cSrcweir 
418cdf0e10cSrcweir     /** This item contains the clipboard formats of the current clipboard
419cdf0e10cSrcweir         content that are supported both by that content and by the
420cdf0e10cSrcweir         DrawViewShell.
421cdf0e10cSrcweir     */
422cdf0e10cSrcweir     ::std::auto_ptr<SvxClipboardFmtItem> mpCurrentClipboardFormats;
423cdf0e10cSrcweir 
424cdf0e10cSrcweir     /** On some occasions it is necessary to make SwitchPage calls
425cdf0e10cSrcweir         asynchronously.
426cdf0e10cSrcweir     */
427cdf0e10cSrcweir     tools::AsynchronousCall maAsynchronousSwitchPageCall;
428cdf0e10cSrcweir 
429cdf0e10cSrcweir     /** This flag is used to prevent nested calls to SwitchPage().
430cdf0e10cSrcweir     */
431cdf0e10cSrcweir     bool mbIsInSwitchPage;
432cdf0e10cSrcweir 
433cdf0e10cSrcweir     void Construct (DrawDocShell* pDocSh, PageKind ePageKind);
434cdf0e10cSrcweir 
435cdf0e10cSrcweir     /** Depending on the given request create a new page or duplicate an
436cdf0e10cSrcweir         existing one.  See ViewShell::CreateOrDuplicatePage() for more
437cdf0e10cSrcweir         information.
438cdf0e10cSrcweir     */
439cdf0e10cSrcweir     virtual SdPage* CreateOrDuplicatePage (
440cdf0e10cSrcweir         SfxRequest& rRequest,
441cdf0e10cSrcweir         PageKind ePageKind,
442cdf0e10cSrcweir         SdPage* pPage,
443cdf0e10cSrcweir         const sal_Int32 nInsertPosition = -1);
444cdf0e10cSrcweir 
445cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager >  mxScannerManager;
446cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >      mxScannerListener;
447cdf0e10cSrcweir     TransferableClipboardListener*                                                  mpClipEvtLstnr;
448cdf0e10cSrcweir     sal_Bool                                                                            mbPastePossible;
449cdf0e10cSrcweir 
450cdf0e10cSrcweir     virtual void Notify (SfxBroadcaster& rBC, const SfxHint& rHint);
451cdf0e10cSrcweir 
452cdf0e10cSrcweir     /** Stop a running slide show.  The frame the show is running in is
453cdf0e10cSrcweir         destroyed if
454cdf0e10cSrcweir         a) it is running in its own frame, i.e. is a full screen show and
455cdf0e10cSrcweir         b) the given flag bCloseFrame is true.
456cdf0e10cSrcweir         @param bCloseFrame
457cdf0e10cSrcweir             Be carefull with this flag when stopping a full screen show.
458cdf0e10cSrcweir             When called from the destructor the flag has to be <FALSE/> or
459cdf0e10cSrcweir             otherwise we run into a loop of calls to destructors of the view
460cdf0e10cSrcweir             and the frame.
461cdf0e10cSrcweir             When called from other places the flag should be <TRUE/> so that
462cdf0e10cSrcweir             not an empty frame remains. When called with <TRUE/> it is the
463cdf0e10cSrcweir             responsibility of the caller to avoid an illegal reentrant
464cdf0e10cSrcweir             call.
465cdf0e10cSrcweir     */
466cdf0e10cSrcweir     void StopSlideShow (bool bCloseFrame);
467cdf0e10cSrcweir 
468cdf0e10cSrcweir     /** Show the context menu for snap lines and points.  Because snap lines
469cdf0e10cSrcweir         can not be selected the index of the snap line/point for which the
470cdf0e10cSrcweir         popup menu is opened has to be passed to the processing slot
471cdf0e10cSrcweir         handlers.  This can be done only by manually showing the popup menu.
472cdf0e10cSrcweir         @param rPageView
473cdf0e10cSrcweir             The page view is used to access the help lines.
474cdf0e10cSrcweir         @param nSnapLineIndex
475cdf0e10cSrcweir             Index of the snap line or snap point for which to show the
476cdf0e10cSrcweir             context menu.
477cdf0e10cSrcweir         @param rMouseLocation
478cdf0e10cSrcweir             The mouse location defines the location at which to display the
479cdf0e10cSrcweir             context menu.
480cdf0e10cSrcweir     */
481cdf0e10cSrcweir     void ShowSnapLineContextMenu (
482cdf0e10cSrcweir         SdrPageView& rPageView,
483cdf0e10cSrcweir         const sal_uInt16 nSnapLineIndex,
484cdf0e10cSrcweir         const Point& rMouseLocation);
485cdf0e10cSrcweir 
486cdf0e10cSrcweir     using ViewShell::Notify;
487cdf0e10cSrcweir 
488cdf0e10cSrcweir     ::std::auto_ptr< AnnotationManager > mpAnnotationManager;
489cdf0e10cSrcweir     ::std::auto_ptr< ViewOverlayManager > mpViewOverlayManager;
490cdf0e10cSrcweir };
491cdf0e10cSrcweir 
492cdf0e10cSrcweir 
493cdf0e10cSrcweir } // end of namespace sd
494cdf0e10cSrcweir 
495cdf0e10cSrcweir #endif
496