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