xref: /aoo4110/main/sd/source/ui/view/drviewsa.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sd.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "DrawViewShell.hxx"
28*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase1.hxx>
29*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
30*b1cdbd2cSJim Jagielski #ifndef _SVX_SIZEITEM
31*b1cdbd2cSJim Jagielski #include <editeng/sizeitem.hxx>
32*b1cdbd2cSJim Jagielski #endif
33*b1cdbd2cSJim Jagielski #include <svx/svdlayer.hxx>
34*b1cdbd2cSJim Jagielski #ifndef _SVX_ZOOMITEM
35*b1cdbd2cSJim Jagielski #include <svx/zoomitem.hxx>
36*b1cdbd2cSJim Jagielski #endif
37*b1cdbd2cSJim Jagielski #include <svx/svdpagv.hxx>
38*b1cdbd2cSJim Jagielski #include <svl/ptitem.hxx>
39*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
40*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
41*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
42*b1cdbd2cSJim Jagielski #include <svx/svdopath.hxx>
43*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx>
44*b1cdbd2cSJim Jagielski #include <svx/zoomslideritem.hxx>
45*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski #ifndef _SVX_DIALOGS_HRC
48*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
49*b1cdbd2cSJim Jagielski #endif
50*b1cdbd2cSJim Jagielski #include <svx/extrusionbar.hxx>
51*b1cdbd2cSJim Jagielski #include <svx/fontworkbar.hxx>
52*b1cdbd2cSJim Jagielski #include <svx/clipfmtitem.hxx>
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
56*b1cdbd2cSJim Jagielski #include <svx/fmshell.hxx>
57*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
58*b1cdbd2cSJim Jagielski #include <svtools/cliplistener.hxx>
59*b1cdbd2cSJim Jagielski #include <svx/float3d.hxx>
60*b1cdbd2cSJim Jagielski #include <svx/sidebar/SelectionAnalyzer.hxx>
61*b1cdbd2cSJim Jagielski #include "helpids.h"
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski #include "view/viewoverlaymanager.hxx"
64*b1cdbd2cSJim Jagielski #include "app.hrc"
65*b1cdbd2cSJim Jagielski #include "helpids.h"
66*b1cdbd2cSJim Jagielski #include "strings.hrc"
67*b1cdbd2cSJim Jagielski #include "res_bmp.hrc"
68*b1cdbd2cSJim Jagielski #include "sdpage.hxx"
69*b1cdbd2cSJim Jagielski #include "FrameView.hxx"
70*b1cdbd2cSJim Jagielski #include "drawdoc.hxx"
71*b1cdbd2cSJim Jagielski #include "sdresid.hxx"
72*b1cdbd2cSJim Jagielski #include "DrawDocShell.hxx"
73*b1cdbd2cSJim Jagielski #include "Window.hxx"
74*b1cdbd2cSJim Jagielski #include "fupoor.hxx"
75*b1cdbd2cSJim Jagielski #include "fusel.hxx"
76*b1cdbd2cSJim Jagielski #include "drawview.hxx"
77*b1cdbd2cSJim Jagielski #include "SdUnoDrawView.hxx"
78*b1cdbd2cSJim Jagielski #include "ViewShellBase.hxx"
79*b1cdbd2cSJim Jagielski #include "SdUnoDrawView.hxx"
80*b1cdbd2cSJim Jagielski #include "slideshow.hxx"
81*b1cdbd2cSJim Jagielski #include "ToolBarManager.hxx"
82*b1cdbd2cSJim Jagielski #include "annotationmanager.hxx"
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski #include <boost/bind.hpp>
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski using namespace ::rtl;
87*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
88*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
89*b1cdbd2cSJim Jagielski using sfx2::sidebar::EnumContext;
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski namespace {
92*b1cdbd2cSJim Jagielski static const ::rtl::OUString MASTER_VIEW_TOOL_BAR_NAME(
93*b1cdbd2cSJim Jagielski     ::rtl::OUString::createFromAscii("masterviewtoolbar"));
94*b1cdbd2cSJim Jagielski }
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski namespace sd {
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski sal_Bool DrawViewShell::mbPipette = sal_False;
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski // ------------------------
101*b1cdbd2cSJim Jagielski // - ScannerEventListener -
102*b1cdbd2cSJim Jagielski // ------------------------
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski class ScannerEventListener : public ::cppu::WeakImplHelper1< ::com::sun::star::lang::XEventListener >
105*b1cdbd2cSJim Jagielski {
106*b1cdbd2cSJim Jagielski private:
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski 	DrawViewShell*		mpParent;
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski public:
111*b1cdbd2cSJim Jagielski 
ScannerEventListener(DrawViewShell * pParent)112*b1cdbd2cSJim Jagielski 							ScannerEventListener( DrawViewShell* pParent ) : mpParent( pParent )  {};
113*b1cdbd2cSJim Jagielski 							~ScannerEventListener();
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski 	// XEventListener
116*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL 	disposing( const ::com::sun::star::lang::EventObject& rEventObject ) throw (::com::sun::star::uno::RuntimeException);
117*b1cdbd2cSJim Jagielski 
ParentDestroyed()118*b1cdbd2cSJim Jagielski 	void					ParentDestroyed() { mpParent = NULL; }
119*b1cdbd2cSJim Jagielski };
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
122*b1cdbd2cSJim Jagielski 
~ScannerEventListener()123*b1cdbd2cSJim Jagielski ScannerEventListener::~ScannerEventListener()
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski }
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
128*b1cdbd2cSJim Jagielski 
disposing(const::com::sun::star::lang::EventObject & rEventObject)129*b1cdbd2cSJim Jagielski void SAL_CALL ScannerEventListener::disposing( const ::com::sun::star::lang::EventObject& rEventObject ) throw (::com::sun::star::uno::RuntimeException)
130*b1cdbd2cSJim Jagielski {
131*b1cdbd2cSJim Jagielski 	if( mpParent )
132*b1cdbd2cSJim Jagielski 		mpParent->ScannerEvent( rEventObject );
133*b1cdbd2cSJim Jagielski }
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski /*************************************************************************
136*b1cdbd2cSJim Jagielski |*
137*b1cdbd2cSJim Jagielski |* Standard-Konstruktor
138*b1cdbd2cSJim Jagielski |*
139*b1cdbd2cSJim Jagielski \************************************************************************/
140*b1cdbd2cSJim Jagielski 
DrawViewShell(SfxViewFrame * pFrame,ViewShellBase & rViewShellBase,::Window * pParentWindow,PageKind ePageKind,FrameView * pFrameViewArgument)141*b1cdbd2cSJim Jagielski DrawViewShell::DrawViewShell( SfxViewFrame* pFrame, ViewShellBase& rViewShellBase, ::Window* pParentWindow, PageKind ePageKind, FrameView* pFrameViewArgument )
142*b1cdbd2cSJim Jagielski : ViewShell (pFrame, pParentWindow, rViewShellBase)
143*b1cdbd2cSJim Jagielski , maTabControl(this, pParentWindow)
144*b1cdbd2cSJim Jagielski , mbIsInSwitchPage(false),
145*b1cdbd2cSJim Jagielski   mpSelectionChangeHandler(new svx::sidebar::SelectionChangeHandler(
146*b1cdbd2cSJim Jagielski           ::boost::bind(&DrawViewShell::GetSidebarContextName, this),
147*b1cdbd2cSJim Jagielski           uno::Reference<frame::XController>(&rViewShellBase.GetDrawController()),
148*b1cdbd2cSJim Jagielski           sfx2::sidebar::EnumContext::Context_Default))
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski {
151*b1cdbd2cSJim Jagielski 	if (pFrameViewArgument != NULL)
152*b1cdbd2cSJim Jagielski 		mpFrameView = pFrameViewArgument;
153*b1cdbd2cSJim Jagielski 	else
154*b1cdbd2cSJim Jagielski         mpFrameView = new FrameView(GetDoc());
155*b1cdbd2cSJim Jagielski     Construct(GetDocSh(), ePageKind);
156*b1cdbd2cSJim Jagielski 
157*b1cdbd2cSJim Jagielski     mpSelectionChangeHandler->Connect();
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski     SetContextName(GetSidebarContextName());
160*b1cdbd2cSJim Jagielski }
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski /*************************************************************************
163*b1cdbd2cSJim Jagielski |*
164*b1cdbd2cSJim Jagielski |* Destruktor
165*b1cdbd2cSJim Jagielski |*
166*b1cdbd2cSJim Jagielski \************************************************************************/
167*b1cdbd2cSJim Jagielski 
~DrawViewShell()168*b1cdbd2cSJim Jagielski DrawViewShell::~DrawViewShell()
169*b1cdbd2cSJim Jagielski {
170*b1cdbd2cSJim Jagielski     mpSelectionChangeHandler->Disconnect();
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski     mpAnnotationManager.reset();
173*b1cdbd2cSJim Jagielski     mpViewOverlayManager.reset();
174*b1cdbd2cSJim Jagielski 
175*b1cdbd2cSJim Jagielski     OSL_ASSERT (GetViewShell()!=NULL);
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski     if( mxScannerListener.is() )
178*b1cdbd2cSJim Jagielski 		static_cast< ScannerEventListener* >( mxScannerListener.get() )->ParentDestroyed();
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski     // #96642# Remove references to items within Svx3DWin
181*b1cdbd2cSJim Jagielski     // (maybe do a listening sometime in Svx3DWin)
182*b1cdbd2cSJim Jagielski     sal_uInt16 nId = Svx3DChildWindow::GetChildWindowId();
183*b1cdbd2cSJim Jagielski     SfxChildWindow* pWindow = GetViewFrame() ? GetViewFrame()->GetChildWindow(nId) : NULL;
184*b1cdbd2cSJim Jagielski     if(pWindow)
185*b1cdbd2cSJim Jagielski     {
186*b1cdbd2cSJim Jagielski         Svx3DWin* p3DWin = static_cast< Svx3DWin* > (pWindow->GetWindow());
187*b1cdbd2cSJim Jagielski         if(p3DWin)
188*b1cdbd2cSJim Jagielski             p3DWin->DocumentReload();
189*b1cdbd2cSJim Jagielski     }
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski     EndListening (*GetDoc());
192*b1cdbd2cSJim Jagielski     EndListening (*GetDocSh());
193*b1cdbd2cSJim Jagielski 
194*b1cdbd2cSJim Jagielski 	if( SlideShow::IsRunning(*this) )
195*b1cdbd2cSJim Jagielski         StopSlideShow(false);
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski 	DisposeFunctions();
198*b1cdbd2cSJim Jagielski 
199*b1cdbd2cSJim Jagielski 	SdPage* pPage;
200*b1cdbd2cSJim Jagielski 	sal_uInt16 aPageCnt = GetDoc()->GetSdPageCount(mePageKind);
201*b1cdbd2cSJim Jagielski 
202*b1cdbd2cSJim Jagielski 	for (sal_uInt16 i = 0; i < aPageCnt; i++)
203*b1cdbd2cSJim Jagielski 	{
204*b1cdbd2cSJim Jagielski 		pPage = GetDoc()->GetSdPage(i, mePageKind);
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski 		if (pPage == mpActualPage)
207*b1cdbd2cSJim Jagielski 		{
208*b1cdbd2cSJim Jagielski 			GetDoc()->SetSelected(pPage, sal_True);
209*b1cdbd2cSJim Jagielski 		}
210*b1cdbd2cSJim Jagielski 		else
211*b1cdbd2cSJim Jagielski 		{
212*b1cdbd2cSJim Jagielski 			GetDoc()->SetSelected(pPage, sal_False);
213*b1cdbd2cSJim Jagielski 		}
214*b1cdbd2cSJim Jagielski 	}
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski 	if ( mpClipEvtLstnr )
217*b1cdbd2cSJim Jagielski 	{
218*b1cdbd2cSJim Jagielski 		mpClipEvtLstnr->AddRemoveListener( GetActiveWindow(), sal_False );
219*b1cdbd2cSJim Jagielski 		mpClipEvtLstnr->ClearCallbackLink();		// #103849# prevent callback if another thread is waiting
220*b1cdbd2cSJim Jagielski 		mpClipEvtLstnr->release();
221*b1cdbd2cSJim Jagielski 	}
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski 	delete mpDrawView;
224*b1cdbd2cSJim Jagielski     // Set mpView to NULL so that the destructor of the ViewShell base class
225*b1cdbd2cSJim Jagielski     // does not access it.
226*b1cdbd2cSJim Jagielski 	mpView = mpDrawView = NULL;
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski 	mpFrameView->Disconnect();
229*b1cdbd2cSJim Jagielski 	delete [] mpSlotArray;
230*b1cdbd2cSJim Jagielski }
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski /*************************************************************************
233*b1cdbd2cSJim Jagielski |*
234*b1cdbd2cSJim Jagielski |* gemeinsamer Initialisierungsanteil der beiden Konstruktoren
235*b1cdbd2cSJim Jagielski |*
236*b1cdbd2cSJim Jagielski \************************************************************************/
237*b1cdbd2cSJim Jagielski 
Construct(DrawDocShell * pDocSh,PageKind eInitialPageKind)238*b1cdbd2cSJim Jagielski void DrawViewShell::Construct(DrawDocShell* pDocSh, PageKind eInitialPageKind)
239*b1cdbd2cSJim Jagielski {
240*b1cdbd2cSJim Jagielski 	mpActualPage = 0;
241*b1cdbd2cSJim Jagielski 	mbMousePosFreezed = sal_False;
242*b1cdbd2cSJim Jagielski 	mbReadOnly = GetDocSh()->IsReadOnly();
243*b1cdbd2cSJim Jagielski 	mpSlotArray = 0;
244*b1cdbd2cSJim Jagielski 	mpClipEvtLstnr = 0;
245*b1cdbd2cSJim Jagielski 	mbPastePossible = sal_False;
246*b1cdbd2cSJim Jagielski 	mbIsLayerModeActive = false;
247*b1cdbd2cSJim Jagielski 
248*b1cdbd2cSJim Jagielski 	mpFrameView->Connect();
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski     OSL_ASSERT (GetViewShell()!=NULL);
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski 	// Array fuer Slot-/ImageMapping:
253*b1cdbd2cSJim Jagielski 	// Gerader Eintrag: Haupt-/ToolboxSlot
254*b1cdbd2cSJim Jagielski 	// Ungerader Eintrag: gemappter Slot
255*b1cdbd2cSJim Jagielski 	// Achtung: Anpassen von GetIdBySubId() !!!
256*b1cdbd2cSJim Jagielski 	// Reihenfolge (insbesondere Zoom) darf nicht geaendert werden !!!
257*b1cdbd2cSJim Jagielski 	mpSlotArray = new sal_uInt16[ SLOTARRAY_COUNT ];
258*b1cdbd2cSJim Jagielski 	mpSlotArray[ 0 ]  = SID_OBJECT_CHOOSE_MODE;
259*b1cdbd2cSJim Jagielski 	mpSlotArray[ 1 ]  = SID_OBJECT_ROTATE;
260*b1cdbd2cSJim Jagielski 	mpSlotArray[ 2 ]  = SID_OBJECT_ALIGN;
261*b1cdbd2cSJim Jagielski 	mpSlotArray[ 3 ]  = SID_OBJECT_ALIGN_LEFT;
262*b1cdbd2cSJim Jagielski 	mpSlotArray[ 4 ]  = SID_ZOOM_TOOLBOX;
263*b1cdbd2cSJim Jagielski 	mpSlotArray[ 5 ]  = SID_ZOOM_TOOLBOX;
264*b1cdbd2cSJim Jagielski 	mpSlotArray[ 6 ]  = SID_DRAWTBX_TEXT;
265*b1cdbd2cSJim Jagielski 	mpSlotArray[ 7 ]  = SID_ATTR_CHAR;
266*b1cdbd2cSJim Jagielski 	mpSlotArray[ 8 ]  = SID_DRAWTBX_RECTANGLES;
267*b1cdbd2cSJim Jagielski 	mpSlotArray[ 9 ]  = SID_DRAW_RECT;
268*b1cdbd2cSJim Jagielski 	mpSlotArray[ 10 ] = SID_DRAWTBX_ELLIPSES;
269*b1cdbd2cSJim Jagielski 	mpSlotArray[ 11 ] = SID_DRAW_ELLIPSE;
270*b1cdbd2cSJim Jagielski 	mpSlotArray[ 12 ] = SID_DRAWTBX_LINES;
271*b1cdbd2cSJim Jagielski 	mpSlotArray[ 13 ] = SID_DRAW_FREELINE_NOFILL;
272*b1cdbd2cSJim Jagielski 	mpSlotArray[ 14 ] = SID_DRAWTBX_3D_OBJECTS;
273*b1cdbd2cSJim Jagielski 	mpSlotArray[ 15 ] = SID_3D_CUBE;
274*b1cdbd2cSJim Jagielski 	mpSlotArray[ 16 ] = SID_DRAWTBX_INSERT;
275*b1cdbd2cSJim Jagielski 	mpSlotArray[ 17 ] = SID_INSERT_DIAGRAM;
276*b1cdbd2cSJim Jagielski 	mpSlotArray[ 18 ] = SID_POSITION;
277*b1cdbd2cSJim Jagielski 	mpSlotArray[ 19 ] = SID_FRAME_TO_TOP;
278*b1cdbd2cSJim Jagielski 	mpSlotArray[ 20 ] = SID_DRAWTBX_CONNECTORS;
279*b1cdbd2cSJim Jagielski 	mpSlotArray[ 21 ] = SID_TOOL_CONNECTOR;
280*b1cdbd2cSJim Jagielski 	mpSlotArray[ 22 ] = SID_DRAWTBX_ARROWS;
281*b1cdbd2cSJim Jagielski 	mpSlotArray[ 23 ] = SID_LINE_ARROW_END;
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski 	SetPool( &GetDoc()->GetPool() );
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski 	GetDoc()->CreateFirstPages();
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski 	mpDrawView = new DrawView(pDocSh, GetActiveWindow(), this);
288*b1cdbd2cSJim Jagielski 	mpView = mpDrawView;			 // Pointer der Basisklasse ViewShell
289*b1cdbd2cSJim Jagielski 	mpDrawView->SetSwapAsynchron(sal_True); // Asynchrones Laden von Graphiken
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski     // We do not read the page kind from the frame view anymore so we have
292*b1cdbd2cSJim Jagielski     // to set it in order to resync frame view and this view.
293*b1cdbd2cSJim Jagielski     mpFrameView->SetPageKind(eInitialPageKind);
294*b1cdbd2cSJim Jagielski 	mePageKind = eInitialPageKind;
295*b1cdbd2cSJim Jagielski 	meEditMode = EM_PAGE;
296*b1cdbd2cSJim Jagielski 	DocumentType eDocType = GetDoc()->GetDocumentType(); // RTTI fasst hier noch nicht
297*b1cdbd2cSJim Jagielski     switch (mePageKind)
298*b1cdbd2cSJim Jagielski     {
299*b1cdbd2cSJim Jagielski         case PK_STANDARD:
300*b1cdbd2cSJim Jagielski             meShellType = ST_IMPRESS;
301*b1cdbd2cSJim Jagielski             break;
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski         case PK_NOTES:
304*b1cdbd2cSJim Jagielski             meShellType = ST_NOTES;
305*b1cdbd2cSJim Jagielski             break;
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski         case PK_HANDOUT:
308*b1cdbd2cSJim Jagielski             meShellType = ST_HANDOUT;
309*b1cdbd2cSJim Jagielski             break;
310*b1cdbd2cSJim Jagielski     }
311*b1cdbd2cSJim Jagielski 
312*b1cdbd2cSJim Jagielski 	Size aPageSize( GetDoc()->GetSdPage(0, mePageKind)->GetSize() );
313*b1cdbd2cSJim Jagielski 	Point aPageOrg( aPageSize.Width(), aPageSize.Height() / 2);
314*b1cdbd2cSJim Jagielski 	Size aSize(aPageSize.Width() * 3, aPageSize.Height() * 2);
315*b1cdbd2cSJim Jagielski 	InitWindows(aPageOrg, aSize, Point(-1, -1));
316*b1cdbd2cSJim Jagielski 
317*b1cdbd2cSJim Jagielski 	Point aVisAreaPos;
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski 	if ( pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
320*b1cdbd2cSJim Jagielski 	{
321*b1cdbd2cSJim Jagielski 		aVisAreaPos = pDocSh->GetVisArea(ASPECT_CONTENT).TopLeft();
322*b1cdbd2cSJim Jagielski 	}
323*b1cdbd2cSJim Jagielski 
324*b1cdbd2cSJim Jagielski 	mpDrawView->SetWorkArea(Rectangle(Point() - aVisAreaPos - aPageOrg, aSize));
325*b1cdbd2cSJim Jagielski 
326*b1cdbd2cSJim Jagielski 	// Objekte koennen max. so gross wie die ViewSize werden
327*b1cdbd2cSJim Jagielski 	GetDoc()->SetMaxObjSize(aSize);
328*b1cdbd2cSJim Jagielski 
329*b1cdbd2cSJim Jagielski 	// Split-Handler fuer TabControls
330*b1cdbd2cSJim Jagielski 	maTabControl.SetSplitHdl( LINK( this, DrawViewShell, TabSplitHdl ) );
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski 	// Damit der richtige EditMode von der FrameView komplett eingestellt
333*b1cdbd2cSJim Jagielski 	// werden kann, wird hier ein aktuell anderer gewaehlt (kleiner Trick)
334*b1cdbd2cSJim Jagielski 	if (mpFrameView->GetViewShEditMode(mePageKind) == EM_PAGE)
335*b1cdbd2cSJim Jagielski 	{
336*b1cdbd2cSJim Jagielski 		meEditMode = EM_MASTERPAGE;
337*b1cdbd2cSJim Jagielski 	}
338*b1cdbd2cSJim Jagielski 	else
339*b1cdbd2cSJim Jagielski 	{
340*b1cdbd2cSJim Jagielski 		meEditMode = EM_PAGE;
341*b1cdbd2cSJim Jagielski 	}
342*b1cdbd2cSJim Jagielski 
343*b1cdbd2cSJim Jagielski 	// Einstellungen der FrameView uebernehmen
344*b1cdbd2cSJim Jagielski 	ReadFrameViewData(mpFrameView);
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski 	if( eDocType == DOCUMENT_TYPE_DRAW )
347*b1cdbd2cSJim Jagielski 	{
348*b1cdbd2cSJim Jagielski 		SetHelpId( SD_IF_SDGRAPHICVIEWSHELL );
349*b1cdbd2cSJim Jagielski 		GetActiveWindow()->SetHelpId( HID_SDGRAPHICVIEWSHELL );
350*b1cdbd2cSJim Jagielski 		GetActiveWindow()->SetUniqueId( HID_SDGRAPHICVIEWSHELL );
351*b1cdbd2cSJim Jagielski 	}
352*b1cdbd2cSJim Jagielski 	else
353*b1cdbd2cSJim Jagielski 	{
354*b1cdbd2cSJim Jagielski 		if (mePageKind == PK_NOTES)
355*b1cdbd2cSJim Jagielski 		{
356*b1cdbd2cSJim Jagielski 			SetHelpId( SID_NOTESMODE );
357*b1cdbd2cSJim Jagielski 			GetActiveWindow()->SetHelpId( CMD_SID_NOTESMODE );
358*b1cdbd2cSJim Jagielski 			GetActiveWindow()->SetUniqueId( CMD_SID_NOTESMODE );
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski 			// AutoLayouts muessen erzeugt sein
361*b1cdbd2cSJim Jagielski 			GetDoc()->StopWorkStartupDelay();
362*b1cdbd2cSJim Jagielski 		}
363*b1cdbd2cSJim Jagielski 		else if (mePageKind == PK_HANDOUT)
364*b1cdbd2cSJim Jagielski 		{
365*b1cdbd2cSJim Jagielski 			SetHelpId( SID_HANDOUTMODE );
366*b1cdbd2cSJim Jagielski 			GetActiveWindow()->SetHelpId( CMD_SID_HANDOUTMODE );
367*b1cdbd2cSJim Jagielski 			GetActiveWindow()->SetUniqueId( CMD_SID_HANDOUTMODE );
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski 			// AutoLayouts muessen erzeugt sein
370*b1cdbd2cSJim Jagielski 			GetDoc()->StopWorkStartupDelay();
371*b1cdbd2cSJim Jagielski 		}
372*b1cdbd2cSJim Jagielski 		else
373*b1cdbd2cSJim Jagielski 		{
374*b1cdbd2cSJim Jagielski 			SetHelpId( SD_IF_SDDRAWVIEWSHELL );
375*b1cdbd2cSJim Jagielski 			GetActiveWindow()->SetHelpId( HID_SDDRAWVIEWSHELL );
376*b1cdbd2cSJim Jagielski 			GetActiveWindow()->SetUniqueId( HID_SDDRAWVIEWSHELL );
377*b1cdbd2cSJim Jagielski 		}
378*b1cdbd2cSJim Jagielski 	}
379*b1cdbd2cSJim Jagielski 
380*b1cdbd2cSJim Jagielski 	// Selektionsfunktion starten
381*b1cdbd2cSJim Jagielski 	SfxRequest aReq(SID_OBJECT_SELECT, 0, GetDoc()->GetItemPool());
382*b1cdbd2cSJim Jagielski 	FuPermanent(aReq);
383*b1cdbd2cSJim Jagielski 	mpDrawView->SetFrameDragSingles(sal_True);
384*b1cdbd2cSJim Jagielski 
385*b1cdbd2cSJim Jagielski 	if (pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)
386*b1cdbd2cSJim Jagielski 	{
387*b1cdbd2cSJim Jagielski 		mbZoomOnPage = sal_False;
388*b1cdbd2cSJim Jagielski 	}
389*b1cdbd2cSJim Jagielski 	else
390*b1cdbd2cSJim Jagielski 	{
391*b1cdbd2cSJim Jagielski 		mbZoomOnPage = sal_True;
392*b1cdbd2cSJim Jagielski 	}
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski 	mbIsRulerDrag = sal_False;
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski 	String aName( RTL_CONSTASCII_USTRINGPARAM("DrawViewShell"));
397*b1cdbd2cSJim Jagielski 	SetName (aName);
398*b1cdbd2cSJim Jagielski 
399*b1cdbd2cSJim Jagielski 	mnLockCount = 0UL;
400*b1cdbd2cSJim Jagielski 
401*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() );
402*b1cdbd2cSJim Jagielski 
403*b1cdbd2cSJim Jagielski 	if( xMgr.is() )
404*b1cdbd2cSJim Jagielski 	{
405*b1cdbd2cSJim Jagielski 		mxScannerManager = ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager >(
406*b1cdbd2cSJim Jagielski 						   xMgr->createInstance( ::rtl::OUString::createFromAscii( "com.sun.star.scanner.ScannerManager" ) ),
407*b1cdbd2cSJim Jagielski 						   ::com::sun::star::uno::UNO_QUERY );
408*b1cdbd2cSJim Jagielski 
409*b1cdbd2cSJim Jagielski 		if( mxScannerManager.is() )
410*b1cdbd2cSJim Jagielski 		{
411*b1cdbd2cSJim Jagielski 			mxScannerListener = ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >(
412*b1cdbd2cSJim Jagielski 								static_cast< ::cppu::OWeakObject* >( new ScannerEventListener( this ) ),
413*b1cdbd2cSJim Jagielski 								::com::sun::star::uno::UNO_QUERY );
414*b1cdbd2cSJim Jagielski 		}
415*b1cdbd2cSJim Jagielski 	}
416*b1cdbd2cSJim Jagielski 
417*b1cdbd2cSJim Jagielski     mpAnnotationManager.reset( new AnnotationManager( GetViewShellBase() ) );
418*b1cdbd2cSJim Jagielski     mpViewOverlayManager.reset( new ViewOverlayManager( GetViewShellBase() ) );
419*b1cdbd2cSJim Jagielski }
420*b1cdbd2cSJim Jagielski 
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski 
423*b1cdbd2cSJim Jagielski 
Init(bool bIsMainViewShell)424*b1cdbd2cSJim Jagielski void DrawViewShell::Init (bool bIsMainViewShell)
425*b1cdbd2cSJim Jagielski {
426*b1cdbd2cSJim Jagielski     ViewShell::Init(bIsMainViewShell);
427*b1cdbd2cSJim Jagielski 
428*b1cdbd2cSJim Jagielski     StartListening (*GetDocSh());
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski 
431*b1cdbd2cSJim Jagielski 
432*b1cdbd2cSJim Jagielski 
433*b1cdbd2cSJim Jagielski 
Shutdown(void)434*b1cdbd2cSJim Jagielski void DrawViewShell::Shutdown (void)
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski     ViewShell::Shutdown();
437*b1cdbd2cSJim Jagielski 
438*b1cdbd2cSJim Jagielski 	if(SlideShow::IsRunning( GetViewShellBase() ) )
439*b1cdbd2cSJim Jagielski     {
440*b1cdbd2cSJim Jagielski         // Turn off effects.
441*b1cdbd2cSJim Jagielski         GetDrawView()->SetAnimationMode(SDR_ANIMATION_DISABLE);
442*b1cdbd2cSJim Jagielski     }
443*b1cdbd2cSJim Jagielski }
444*b1cdbd2cSJim Jagielski 
445*b1cdbd2cSJim Jagielski 
446*b1cdbd2cSJim Jagielski 
447*b1cdbd2cSJim Jagielski 
CreateSubController(void)448*b1cdbd2cSJim Jagielski css::uno::Reference<css::drawing::XDrawSubController> DrawViewShell::CreateSubController (void)
449*b1cdbd2cSJim Jagielski {
450*b1cdbd2cSJim Jagielski     css::uno::Reference<css::drawing::XDrawSubController> xSubController;
451*b1cdbd2cSJim Jagielski 
452*b1cdbd2cSJim Jagielski     if (IsMainViewShell())
453*b1cdbd2cSJim Jagielski     {
454*b1cdbd2cSJim Jagielski         // Create uno sub controller for the main view shell.
455*b1cdbd2cSJim Jagielski         xSubController = css::uno::Reference<css::drawing::XDrawSubController>(
456*b1cdbd2cSJim Jagielski             new SdUnoDrawView (
457*b1cdbd2cSJim Jagielski                 GetViewShellBase().GetDrawController(),
458*b1cdbd2cSJim Jagielski                 *this,
459*b1cdbd2cSJim Jagielski                 *GetView()));
460*b1cdbd2cSJim Jagielski     }
461*b1cdbd2cSJim Jagielski 
462*b1cdbd2cSJim Jagielski     return xSubController;
463*b1cdbd2cSJim Jagielski }
464*b1cdbd2cSJim Jagielski 
465*b1cdbd2cSJim Jagielski 
466*b1cdbd2cSJim Jagielski 
467*b1cdbd2cSJim Jagielski 
RelocateToParentWindow(::Window * pParentWindow)468*b1cdbd2cSJim Jagielski bool DrawViewShell::RelocateToParentWindow (::Window* pParentWindow)
469*b1cdbd2cSJim Jagielski {
470*b1cdbd2cSJim Jagielski     // DrawViewShells can not be relocated to a new parent window at the
471*b1cdbd2cSJim Jagielski     // moment, so return <FALSE/> except when the given parent window is the
472*b1cdbd2cSJim Jagielski     // parent window that is already in use.
473*b1cdbd2cSJim Jagielski     return pParentWindow==GetParentWindow();
474*b1cdbd2cSJim Jagielski }
475*b1cdbd2cSJim Jagielski 
476*b1cdbd2cSJim Jagielski 
477*b1cdbd2cSJim Jagielski 
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski /*************************************************************************
480*b1cdbd2cSJim Jagielski |*
481*b1cdbd2cSJim Jagielski |* pruefe ob linienzuege gezeichnet werden muessen
482*b1cdbd2cSJim Jagielski |*
483*b1cdbd2cSJim Jagielski \************************************************************************/
484*b1cdbd2cSJim Jagielski 
485*b1cdbd2cSJim Jagielski /*
486*b1cdbd2cSJim Jagielski 	linienzuege werden ueber makros als folge von
487*b1cdbd2cSJim Jagielski 		MoveTo (x, y)
488*b1cdbd2cSJim Jagielski 		LineTo (x, y)	[oder BezierTo (x, y)]
489*b1cdbd2cSJim Jagielski 		LineTo (x, y)
490*b1cdbd2cSJim Jagielski 			:
491*b1cdbd2cSJim Jagielski 	dargestellt. einen endbefehl fuer die linienzuege
492*b1cdbd2cSJim Jagielski 	gibt es nicht, also muessen alle befehle in den
493*b1cdbd2cSJim Jagielski 	requests nach LineTo (BezierTo) abgetestet und die
494*b1cdbd2cSJim Jagielski 	punktparameter gesammelt werden.
495*b1cdbd2cSJim Jagielski 	der erste nicht-LineTo fuehrt dann dazu, dass aus
496*b1cdbd2cSJim Jagielski 	den gesammelten punkten der linienzug erzeugt wird
497*b1cdbd2cSJim Jagielski */
498*b1cdbd2cSJim Jagielski 
CheckLineTo(SfxRequest & rReq)499*b1cdbd2cSJim Jagielski void DrawViewShell::CheckLineTo(SfxRequest& rReq)
500*b1cdbd2cSJim Jagielski {
501*b1cdbd2cSJim Jagielski 	(void)rReq;
502*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
503*b1cdbd2cSJim Jagielski 	if(rReq.IsAPI())
504*b1cdbd2cSJim Jagielski 	{
505*b1cdbd2cSJim Jagielski 		if(SID_LINETO == rReq.GetSlot() || SID_BEZIERTO == rReq.GetSlot() || SID_MOVETO == rReq.GetSlot() )
506*b1cdbd2cSJim Jagielski 		{
507*b1cdbd2cSJim Jagielski 			DBG_ERROR("DrawViewShell::CheckLineTo: slots SID_LINETO, SID_BEZIERTO, SID_MOVETO no longer supported.");
508*b1cdbd2cSJim Jagielski 		}
509*b1cdbd2cSJim Jagielski 	}
510*b1cdbd2cSJim Jagielski #endif
511*b1cdbd2cSJim Jagielski 
512*b1cdbd2cSJim Jagielski 	rReq.Ignore ();
513*b1cdbd2cSJim Jagielski }
514*b1cdbd2cSJim Jagielski 
515*b1cdbd2cSJim Jagielski /*************************************************************************
516*b1cdbd2cSJim Jagielski |*
517*b1cdbd2cSJim Jagielski |* veraendere die seitemparameter, wenn SID_PAGESIZE oder SID_PAGEMARGIN
518*b1cdbd2cSJim Jagielski |*
519*b1cdbd2cSJim Jagielski \************************************************************************/
520*b1cdbd2cSJim Jagielski 
SetupPage(Size & rSize,long nLeft,long nRight,long nUpper,long nLower,sal_Bool bSize,sal_Bool bMargin,sal_Bool bScaleAll)521*b1cdbd2cSJim Jagielski void DrawViewShell::SetupPage (Size &rSize,
522*b1cdbd2cSJim Jagielski 								 long nLeft,
523*b1cdbd2cSJim Jagielski 								 long nRight,
524*b1cdbd2cSJim Jagielski 								 long nUpper,
525*b1cdbd2cSJim Jagielski 								 long nLower,
526*b1cdbd2cSJim Jagielski 								 sal_Bool bSize,
527*b1cdbd2cSJim Jagielski 								 sal_Bool bMargin,
528*b1cdbd2cSJim Jagielski 								 sal_Bool bScaleAll)
529*b1cdbd2cSJim Jagielski {
530*b1cdbd2cSJim Jagielski 	sal_uInt16 nPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
531*b1cdbd2cSJim Jagielski 	sal_uInt16 i;
532*b1cdbd2cSJim Jagielski 
533*b1cdbd2cSJim Jagielski 	for (i = 0; i < nPageCnt; i++)
534*b1cdbd2cSJim Jagielski 	{
535*b1cdbd2cSJim Jagielski 		/**********************************************************************
536*b1cdbd2cSJim Jagielski 		* Erst alle MasterPages bearbeiten
537*b1cdbd2cSJim Jagielski 		**********************************************************************/
538*b1cdbd2cSJim Jagielski 		SdPage *pPage = GetDoc()->GetMasterSdPage(i, mePageKind);
539*b1cdbd2cSJim Jagielski 
540*b1cdbd2cSJim Jagielski 		if( pPage )
541*b1cdbd2cSJim Jagielski 		{
542*b1cdbd2cSJim Jagielski 			if( bSize )
543*b1cdbd2cSJim Jagielski 			{
544*b1cdbd2cSJim Jagielski 				Rectangle aBorderRect(nLeft, nUpper, nRight, nLower);
545*b1cdbd2cSJim Jagielski 				pPage->ScaleObjects(rSize, aBorderRect, bScaleAll);
546*b1cdbd2cSJim Jagielski 				pPage->SetSize(rSize);
547*b1cdbd2cSJim Jagielski 
548*b1cdbd2cSJim Jagielski 			}
549*b1cdbd2cSJim Jagielski 			if( bMargin )
550*b1cdbd2cSJim Jagielski 			{
551*b1cdbd2cSJim Jagielski 				pPage->SetLftBorder(nLeft);
552*b1cdbd2cSJim Jagielski 				pPage->SetRgtBorder(nRight);
553*b1cdbd2cSJim Jagielski 				pPage->SetUppBorder(nUpper);
554*b1cdbd2cSJim Jagielski 				pPage->SetLwrBorder(nLower);
555*b1cdbd2cSJim Jagielski 			}
556*b1cdbd2cSJim Jagielski 
557*b1cdbd2cSJim Jagielski 			if ( mePageKind == PK_STANDARD )
558*b1cdbd2cSJim Jagielski 			{
559*b1cdbd2cSJim Jagielski 				GetDoc()->GetMasterSdPage(i, PK_NOTES)->CreateTitleAndLayout();
560*b1cdbd2cSJim Jagielski 			}
561*b1cdbd2cSJim Jagielski 
562*b1cdbd2cSJim Jagielski 			pPage->CreateTitleAndLayout();
563*b1cdbd2cSJim Jagielski 		}
564*b1cdbd2cSJim Jagielski 	}
565*b1cdbd2cSJim Jagielski 
566*b1cdbd2cSJim Jagielski 	nPageCnt = GetDoc()->GetSdPageCount(mePageKind);
567*b1cdbd2cSJim Jagielski 
568*b1cdbd2cSJim Jagielski 	for (i = 0; i < nPageCnt; i++)
569*b1cdbd2cSJim Jagielski 	{
570*b1cdbd2cSJim Jagielski 		/**********************************************************************
571*b1cdbd2cSJim Jagielski 		* Danach alle Pages bearbeiten
572*b1cdbd2cSJim Jagielski 		**********************************************************************/
573*b1cdbd2cSJim Jagielski 		SdPage *pPage = GetDoc()->GetSdPage(i, mePageKind);
574*b1cdbd2cSJim Jagielski 
575*b1cdbd2cSJim Jagielski 		if( pPage )
576*b1cdbd2cSJim Jagielski 		{
577*b1cdbd2cSJim Jagielski 			if( bSize )
578*b1cdbd2cSJim Jagielski 			{
579*b1cdbd2cSJim Jagielski 				Rectangle aBorderRect(nLeft, nUpper, nRight, nLower);
580*b1cdbd2cSJim Jagielski 				pPage->ScaleObjects(rSize, aBorderRect, bScaleAll);
581*b1cdbd2cSJim Jagielski 				pPage->SetSize(rSize);
582*b1cdbd2cSJim Jagielski 			}
583*b1cdbd2cSJim Jagielski 			if( bMargin )
584*b1cdbd2cSJim Jagielski 			{
585*b1cdbd2cSJim Jagielski 				pPage->SetLftBorder(nLeft);
586*b1cdbd2cSJim Jagielski 				pPage->SetRgtBorder(nRight);
587*b1cdbd2cSJim Jagielski 				pPage->SetUppBorder(nUpper);
588*b1cdbd2cSJim Jagielski 				pPage->SetLwrBorder(nLower);
589*b1cdbd2cSJim Jagielski 			}
590*b1cdbd2cSJim Jagielski 
591*b1cdbd2cSJim Jagielski 			if ( mePageKind == PK_STANDARD )
592*b1cdbd2cSJim Jagielski 			{
593*b1cdbd2cSJim Jagielski 				SdPage* pNotesPage = GetDoc()->GetSdPage(i, PK_NOTES);
594*b1cdbd2cSJim Jagielski 				pNotesPage->SetAutoLayout( pNotesPage->GetAutoLayout() );
595*b1cdbd2cSJim Jagielski 			}
596*b1cdbd2cSJim Jagielski 
597*b1cdbd2cSJim Jagielski 			pPage->SetAutoLayout( pPage->GetAutoLayout() );
598*b1cdbd2cSJim Jagielski 		}
599*b1cdbd2cSJim Jagielski 	}
600*b1cdbd2cSJim Jagielski 
601*b1cdbd2cSJim Jagielski 	if ( mePageKind == PK_STANDARD )
602*b1cdbd2cSJim Jagielski 	{
603*b1cdbd2cSJim Jagielski 		SdPage* pHandoutPage = GetDoc()->GetSdPage(0, PK_HANDOUT);
604*b1cdbd2cSJim Jagielski 		pHandoutPage->CreateTitleAndLayout(sal_True);
605*b1cdbd2cSJim Jagielski 	}
606*b1cdbd2cSJim Jagielski 
607*b1cdbd2cSJim Jagielski 	long nWidth = mpActualPage->GetSize().Width();
608*b1cdbd2cSJim Jagielski 	long nHeight = mpActualPage->GetSize().Height();
609*b1cdbd2cSJim Jagielski 
610*b1cdbd2cSJim Jagielski 	Point aPageOrg(nWidth, nHeight / 2);
611*b1cdbd2cSJim Jagielski 	Size aSize( nWidth * 3, nHeight * 2);
612*b1cdbd2cSJim Jagielski 
613*b1cdbd2cSJim Jagielski 	InitWindows(aPageOrg, aSize, Point(-1, -1), sal_True);
614*b1cdbd2cSJim Jagielski 
615*b1cdbd2cSJim Jagielski 	Point aVisAreaPos;
616*b1cdbd2cSJim Jagielski 
617*b1cdbd2cSJim Jagielski 	if ( GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
618*b1cdbd2cSJim Jagielski 	{
619*b1cdbd2cSJim Jagielski 		aVisAreaPos = GetDocSh()->GetVisArea(ASPECT_CONTENT).TopLeft();
620*b1cdbd2cSJim Jagielski 	}
621*b1cdbd2cSJim Jagielski 
622*b1cdbd2cSJim Jagielski 	GetView()->SetWorkArea(Rectangle(Point() - aVisAreaPos - aPageOrg, aSize));
623*b1cdbd2cSJim Jagielski 
624*b1cdbd2cSJim Jagielski 	UpdateScrollBars();
625*b1cdbd2cSJim Jagielski 
626*b1cdbd2cSJim Jagielski 	Point aNewOrigin(mpActualPage->GetLftBorder(), mpActualPage->GetUppBorder());
627*b1cdbd2cSJim Jagielski 	GetView()->GetSdrPageView()->SetPageOrigin(aNewOrigin);
628*b1cdbd2cSJim Jagielski 
629*b1cdbd2cSJim Jagielski 	GetViewFrame()->GetBindings().Invalidate(SID_RULER_NULL_OFFSET);
630*b1cdbd2cSJim Jagielski 
631*b1cdbd2cSJim Jagielski 	// auf (neue) Seitengroesse zoomen
632*b1cdbd2cSJim Jagielski 	GetViewFrame()->GetDispatcher()->Execute(SID_SIZE_PAGE,
633*b1cdbd2cSJim Jagielski 						SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
634*b1cdbd2cSJim Jagielski }
635*b1cdbd2cSJim Jagielski 
636*b1cdbd2cSJim Jagielski /*************************************************************************
637*b1cdbd2cSJim Jagielski |*
638*b1cdbd2cSJim Jagielski |* Statuswerte der Statusbar zurueckgeben
639*b1cdbd2cSJim Jagielski |*
640*b1cdbd2cSJim Jagielski \************************************************************************/
641*b1cdbd2cSJim Jagielski 
GetStatusBarState(SfxItemSet & rSet)642*b1cdbd2cSJim Jagielski void DrawViewShell::GetStatusBarState(SfxItemSet& rSet)
643*b1cdbd2cSJim Jagielski {
644*b1cdbd2cSJim Jagielski 	// Zoom-Item
645*b1cdbd2cSJim Jagielski 	// Hier sollte der entsprechende Wert (Optimal ?, Seitenbreite oder
646*b1cdbd2cSJim Jagielski 	// Seite) mit Hilfe des ZoomItems weitergegeben werden !!!
647*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ATTR_ZOOM ) )
648*b1cdbd2cSJim Jagielski 	{
649*b1cdbd2cSJim Jagielski 		if (GetDocSh()->IsUIActive() || (SlideShow::IsRunning(GetViewShellBase())) )
650*b1cdbd2cSJim Jagielski 		{
651*b1cdbd2cSJim Jagielski 			rSet.DisableItem( SID_ATTR_ZOOM );
652*b1cdbd2cSJim Jagielski 		}
653*b1cdbd2cSJim Jagielski 		else
654*b1cdbd2cSJim Jagielski 		{
655*b1cdbd2cSJim Jagielski 			SvxZoomItem* pZoomItem;
656*b1cdbd2cSJim Jagielski 			sal_uInt16 nZoom = (sal_uInt16) GetActiveWindow()->GetZoom();
657*b1cdbd2cSJim Jagielski 
658*b1cdbd2cSJim Jagielski 			if( mbZoomOnPage )
659*b1cdbd2cSJim Jagielski 				pZoomItem = new SvxZoomItem( SVX_ZOOM_WHOLEPAGE, nZoom );
660*b1cdbd2cSJim Jagielski 			else
661*b1cdbd2cSJim Jagielski 				pZoomItem = new SvxZoomItem( SVX_ZOOM_PERCENT, nZoom );
662*b1cdbd2cSJim Jagielski 
663*b1cdbd2cSJim Jagielski 			// Bereich einschraenken
664*b1cdbd2cSJim Jagielski 			sal_uInt16 nZoomValues = SVX_ZOOM_ENABLE_ALL;
665*b1cdbd2cSJim Jagielski 			SdrPageView* pPageView = mpDrawView->GetSdrPageView();
666*b1cdbd2cSJim Jagielski 
667*b1cdbd2cSJim Jagielski 			if( ( pPageView && pPageView->GetObjList()->GetObjCount() == 0 ) )
668*b1cdbd2cSJim Jagielski 				// || ( mpDrawView->GetMarkedObjectList().GetMarkCount() == 0 ) )
669*b1cdbd2cSJim Jagielski 			{
670*b1cdbd2cSJim Jagielski 				nZoomValues &= ~SVX_ZOOM_ENABLE_OPTIMAL;
671*b1cdbd2cSJim Jagielski 			}
672*b1cdbd2cSJim Jagielski 
673*b1cdbd2cSJim Jagielski 			pZoomItem->SetValueSet( nZoomValues );
674*b1cdbd2cSJim Jagielski 			rSet.Put( *pZoomItem );
675*b1cdbd2cSJim Jagielski 			delete pZoomItem;
676*b1cdbd2cSJim Jagielski 		}
677*b1cdbd2cSJim Jagielski 	}
678*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ATTR_ZOOMSLIDER ) )
679*b1cdbd2cSJim Jagielski 	{
680*b1cdbd2cSJim Jagielski         rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetDoc() ) );
681*b1cdbd2cSJim Jagielski 		if (GetDocSh()->IsUIActive() || (xSlideshow.is() && xSlideshow->isRunning()) || !GetActiveWindow() )
682*b1cdbd2cSJim Jagielski 		{
683*b1cdbd2cSJim Jagielski 			rSet.DisableItem( SID_ATTR_ZOOMSLIDER );
684*b1cdbd2cSJim Jagielski 		}
685*b1cdbd2cSJim Jagielski 		else
686*b1cdbd2cSJim Jagielski 		{
687*b1cdbd2cSJim Jagielski 			sd::Window * pActiveWindow = GetActiveWindow();
688*b1cdbd2cSJim Jagielski 			SvxZoomSliderItem aZoomItem( (sal_uInt16) pActiveWindow->GetZoom(), (sal_uInt16)pActiveWindow->GetMinZoom(), (sal_uInt16)pActiveWindow->GetMaxZoom() ) ;
689*b1cdbd2cSJim Jagielski 
690*b1cdbd2cSJim Jagielski             SdrPageView* pPageView = mpDrawView->GetSdrPageView();
691*b1cdbd2cSJim Jagielski             if( pPageView )
692*b1cdbd2cSJim Jagielski             {
693*b1cdbd2cSJim Jagielski                 Point aPagePos(0, 0);
694*b1cdbd2cSJim Jagielski 				Size aPageSize = pPageView->GetPage()->GetSize();
695*b1cdbd2cSJim Jagielski 
696*b1cdbd2cSJim Jagielski 				aPagePos.X() += aPageSize.Width()  / 2;
697*b1cdbd2cSJim Jagielski                 aPageSize.Width() = (long) (aPageSize.Width() * 1.03);
698*b1cdbd2cSJim Jagielski 
699*b1cdbd2cSJim Jagielski 				aPagePos.Y() += aPageSize.Height() / 2;
700*b1cdbd2cSJim Jagielski                 aPageSize.Height() = (long) (aPageSize.Height() * 1.03);
701*b1cdbd2cSJim Jagielski 				aPagePos.Y() -= aPageSize.Height() / 2;
702*b1cdbd2cSJim Jagielski 
703*b1cdbd2cSJim Jagielski 				aPagePos.X() -= aPageSize.Width()  / 2;
704*b1cdbd2cSJim Jagielski 
705*b1cdbd2cSJim Jagielski                 Rectangle aFullPageZoomRect( aPagePos, aPageSize );
706*b1cdbd2cSJim Jagielski                 aZoomItem.AddSnappingPoint( pActiveWindow->GetZoomForRect( aFullPageZoomRect ) );
707*b1cdbd2cSJim Jagielski             }
708*b1cdbd2cSJim Jagielski 			aZoomItem.AddSnappingPoint(100);
709*b1cdbd2cSJim Jagielski 			rSet.Put( aZoomItem );
710*b1cdbd2cSJim Jagielski 		}
711*b1cdbd2cSJim Jagielski 	}
712*b1cdbd2cSJim Jagielski 
713*b1cdbd2cSJim Jagielski 	Point aPos = GetActiveWindow()->PixelToLogic(maMousePos);
714*b1cdbd2cSJim Jagielski 	mpDrawView->GetSdrPageView()->LogicToPagePos(aPos);
715*b1cdbd2cSJim Jagielski 	Fraction aUIScale(GetDoc()->GetUIScale());
716*b1cdbd2cSJim Jagielski 	aPos.X() = Fraction(aPos.X()) / aUIScale;
717*b1cdbd2cSJim Jagielski 	aPos.Y() = Fraction(aPos.Y()) / aUIScale;
718*b1cdbd2cSJim Jagielski 
719*b1cdbd2cSJim Jagielski 	// Position- und Groesse-Items
720*b1cdbd2cSJim Jagielski 	if ( mpDrawView->IsAction() )
721*b1cdbd2cSJim Jagielski 	{
722*b1cdbd2cSJim Jagielski 		Rectangle aRect;
723*b1cdbd2cSJim Jagielski 		mpDrawView->TakeActionRect( aRect );
724*b1cdbd2cSJim Jagielski 
725*b1cdbd2cSJim Jagielski 		if ( aRect.IsEmpty() )
726*b1cdbd2cSJim Jagielski 			rSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
727*b1cdbd2cSJim Jagielski 		else
728*b1cdbd2cSJim Jagielski 		{
729*b1cdbd2cSJim Jagielski 			mpDrawView->GetSdrPageView()->LogicToPagePos(aRect);
730*b1cdbd2cSJim Jagielski 			aPos = aRect.TopLeft();
731*b1cdbd2cSJim Jagielski 			aPos.X() = Fraction(aPos.X()) / aUIScale;
732*b1cdbd2cSJim Jagielski 			aPos.Y() = Fraction(aPos.Y()) / aUIScale;
733*b1cdbd2cSJim Jagielski 			rSet.Put( SfxPointItem( SID_ATTR_POSITION, aPos) );
734*b1cdbd2cSJim Jagielski 			Size aSize( aRect.Right() - aRect.Left(), aRect.Bottom() - aRect.Top() );
735*b1cdbd2cSJim Jagielski 			aSize.Height() = Fraction(aSize.Height()) / aUIScale;
736*b1cdbd2cSJim Jagielski 			aSize.Width()  = Fraction(aSize.Width())  / aUIScale;
737*b1cdbd2cSJim Jagielski 			rSet.Put( SvxSizeItem( SID_ATTR_SIZE, aSize) );
738*b1cdbd2cSJim Jagielski 		}
739*b1cdbd2cSJim Jagielski 	}
740*b1cdbd2cSJim Jagielski 	else
741*b1cdbd2cSJim Jagielski 	{
742*b1cdbd2cSJim Jagielski 		if ( mpDrawView->AreObjectsMarked() )
743*b1cdbd2cSJim Jagielski 		{
744*b1cdbd2cSJim Jagielski 			Rectangle aRect = mpDrawView->GetAllMarkedRect();
745*b1cdbd2cSJim Jagielski 			mpDrawView->GetSdrPageView()->LogicToPagePos(aRect);
746*b1cdbd2cSJim Jagielski 
747*b1cdbd2cSJim Jagielski             // Show the position of the selected shape(s)
748*b1cdbd2cSJim Jagielski             Point aShapePosition (aRect.TopLeft());
749*b1cdbd2cSJim Jagielski             aShapePosition.X() = Fraction(aShapePosition.X()) / aUIScale;
750*b1cdbd2cSJim Jagielski             aShapePosition.Y() = Fraction(aShapePosition.Y()) / aUIScale;
751*b1cdbd2cSJim Jagielski             rSet.Put (SfxPointItem(SID_ATTR_POSITION, aShapePosition));
752*b1cdbd2cSJim Jagielski 
753*b1cdbd2cSJim Jagielski 			Size aSize( aRect.Right() - aRect.Left(), aRect.Bottom() - aRect.Top() );
754*b1cdbd2cSJim Jagielski 			aSize.Height() = Fraction(aSize.Height()) / aUIScale;
755*b1cdbd2cSJim Jagielski 			aSize.Width()  = Fraction(aSize.Width())  / aUIScale;
756*b1cdbd2cSJim Jagielski 			rSet.Put( SvxSizeItem( SID_ATTR_SIZE, aSize) );
757*b1cdbd2cSJim Jagielski 		}
758*b1cdbd2cSJim Jagielski 		else
759*b1cdbd2cSJim Jagielski         {
760*b1cdbd2cSJim Jagielski             rSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
761*b1cdbd2cSJim Jagielski 			rSet.Put( SvxSizeItem( SID_ATTR_SIZE, Size( 0, 0 ) ) );
762*b1cdbd2cSJim Jagielski         }
763*b1cdbd2cSJim Jagielski 	}
764*b1cdbd2cSJim Jagielski 
765*b1cdbd2cSJim Jagielski 	// Display of current page and layer.
766*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_STATUS_PAGE ) )
767*b1cdbd2cSJim Jagielski 	{
768*b1cdbd2cSJim Jagielski         // Allways show the slide/page number.
769*b1cdbd2cSJim Jagielski 		String aString (SdResId( STR_SD_PAGE ));
770*b1cdbd2cSJim Jagielski         aString += sal_Unicode(' ');
771*b1cdbd2cSJim Jagielski         aString += UniString::CreateFromInt32( maTabControl.GetCurPageId() );
772*b1cdbd2cSJim Jagielski         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " / " ));
773*b1cdbd2cSJim Jagielski         aString += UniString::CreateFromInt32( GetDoc()->GetSdPageCount( mePageKind ) );
774*b1cdbd2cSJim Jagielski 
775*b1cdbd2cSJim Jagielski         // If in layer mode additionally show the layer that contains all
776*b1cdbd2cSJim Jagielski         // selected shapes of the page.  If the shapes are distributed on
777*b1cdbd2cSJim Jagielski         // more than one layer, no layer name is shown.
778*b1cdbd2cSJim Jagielski 		if (IsLayerModeActive())
779*b1cdbd2cSJim Jagielski 		{
780*b1cdbd2cSJim Jagielski 			SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
781*b1cdbd2cSJim Jagielski 			SdrLayerID nLayer = 0, nOldLayer = 0;
782*b1cdbd2cSJim Jagielski 			SdrLayer*  pLayer = NULL;
783*b1cdbd2cSJim Jagielski 			SdrObject* pObj = NULL;
784*b1cdbd2cSJim Jagielski 			const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
785*b1cdbd2cSJim Jagielski 			sal_uLong nMarkCount = rMarkList.GetMarkCount();
786*b1cdbd2cSJim Jagielski 			FASTBOOL bOneLayer = sal_True;
787*b1cdbd2cSJim Jagielski 
788*b1cdbd2cSJim Jagielski             // Use the first ten selected shapes as a (hopefully
789*b1cdbd2cSJim Jagielski             // representative) sample of all shapes of the current page.
790*b1cdbd2cSJim Jagielski             // Detect whether they belong to the same layer.
791*b1cdbd2cSJim Jagielski 			for( sal_uLong j = 0; j < nMarkCount && bOneLayer && j < 10; j++ )
792*b1cdbd2cSJim Jagielski 			{
793*b1cdbd2cSJim Jagielski 				pObj = rMarkList.GetMark( j )->GetMarkedSdrObj();
794*b1cdbd2cSJim Jagielski 				if( pObj )
795*b1cdbd2cSJim Jagielski 				{
796*b1cdbd2cSJim Jagielski 					nLayer = pObj->GetLayer();
797*b1cdbd2cSJim Jagielski 
798*b1cdbd2cSJim Jagielski 					if( j != 0 && nLayer != nOldLayer )
799*b1cdbd2cSJim Jagielski 						bOneLayer = sal_False;
800*b1cdbd2cSJim Jagielski 
801*b1cdbd2cSJim Jagielski 					nOldLayer = nLayer;
802*b1cdbd2cSJim Jagielski 				}
803*b1cdbd2cSJim Jagielski 			}
804*b1cdbd2cSJim Jagielski 
805*b1cdbd2cSJim Jagielski             // Append the layer name to the current page number.
806*b1cdbd2cSJim Jagielski 			if( bOneLayer && nMarkCount )
807*b1cdbd2cSJim Jagielski 			{
808*b1cdbd2cSJim Jagielski 				pLayer = rLayerAdmin.GetLayerPerID( nLayer );
809*b1cdbd2cSJim Jagielski 				if( pLayer )
810*b1cdbd2cSJim Jagielski                 {
811*b1cdbd2cSJim Jagielski                     aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " (" ));
812*b1cdbd2cSJim Jagielski 					aString += pLayer->GetName();
813*b1cdbd2cSJim Jagielski                     aString += sal_Unicode(')');
814*b1cdbd2cSJim Jagielski                 }
815*b1cdbd2cSJim Jagielski 			}
816*b1cdbd2cSJim Jagielski 		}
817*b1cdbd2cSJim Jagielski 
818*b1cdbd2cSJim Jagielski 		rSet.Put (SfxStringItem (SID_STATUS_PAGE, aString));
819*b1cdbd2cSJim Jagielski 	}
820*b1cdbd2cSJim Jagielski 	// Layout
821*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_STATUS_LAYOUT ) )
822*b1cdbd2cSJim Jagielski 	{
823*b1cdbd2cSJim Jagielski 		String aString = mpActualPage->GetLayoutName();
824*b1cdbd2cSJim Jagielski 		aString.Erase( aString.SearchAscii( SD_LT_SEPARATOR ) );
825*b1cdbd2cSJim Jagielski 		rSet.Put( SfxStringItem( SID_STATUS_LAYOUT, aString ) );
826*b1cdbd2cSJim Jagielski 	}
827*b1cdbd2cSJim Jagielski }
828*b1cdbd2cSJim Jagielski 
829*b1cdbd2cSJim Jagielski 
830*b1cdbd2cSJim Jagielski 
Notify(SfxBroadcaster &,const SfxHint & rHint)831*b1cdbd2cSJim Jagielski void DrawViewShell::Notify (SfxBroadcaster&, const SfxHint& rHint)
832*b1cdbd2cSJim Jagielski {
833*b1cdbd2cSJim Jagielski 	const SfxSimpleHint* pSimple = dynamic_cast< const SfxSimpleHint* >(&rHint);
834*b1cdbd2cSJim Jagielski 	if (pSimple!=NULL && pSimple->GetId()==SFX_HINT_MODECHANGED)
835*b1cdbd2cSJim Jagielski 	{
836*b1cdbd2cSJim Jagielski         // Change to selection when turning on read-only mode.
837*b1cdbd2cSJim Jagielski 		if(GetDocSh()->IsReadOnly() && dynamic_cast< FuSelection* >( GetCurrentFunction().get() ) )
838*b1cdbd2cSJim Jagielski 		{
839*b1cdbd2cSJim Jagielski 			SfxRequest aReq(SID_OBJECT_SELECT, 0, GetDoc()->GetItemPool());
840*b1cdbd2cSJim Jagielski 			FuPermanent(aReq);
841*b1cdbd2cSJim Jagielski 		}
842*b1cdbd2cSJim Jagielski 
843*b1cdbd2cSJim Jagielski         // Turn on design mode when document is not read-only.
844*b1cdbd2cSJim Jagielski 		if (GetDocSh()->IsReadOnly() != mbReadOnly )
845*b1cdbd2cSJim Jagielski 		{
846*b1cdbd2cSJim Jagielski 			mbReadOnly = GetDocSh()->IsReadOnly();
847*b1cdbd2cSJim Jagielski 
848*b1cdbd2cSJim Jagielski 			SfxBoolItem aItem( SID_FM_DESIGN_MODE, !mbReadOnly );
849*b1cdbd2cSJim Jagielski 			GetViewFrame()->GetDispatcher()->Execute( SID_FM_DESIGN_MODE,
850*b1cdbd2cSJim Jagielski                 SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
851*b1cdbd2cSJim Jagielski 		}
852*b1cdbd2cSJim Jagielski 	}
853*b1cdbd2cSJim Jagielski 
854*b1cdbd2cSJim Jagielski }
855*b1cdbd2cSJim Jagielski 
ExecuteAnnotation(SfxRequest & rRequest)856*b1cdbd2cSJim Jagielski void DrawViewShell::ExecuteAnnotation (SfxRequest& rRequest)
857*b1cdbd2cSJim Jagielski {
858*b1cdbd2cSJim Jagielski     if( mpAnnotationManager.get() )
859*b1cdbd2cSJim Jagielski         mpAnnotationManager->ExecuteAnnotation( rRequest );
860*b1cdbd2cSJim Jagielski }
861*b1cdbd2cSJim Jagielski 
862*b1cdbd2cSJim Jagielski // --------------------------------------------------------------------
863*b1cdbd2cSJim Jagielski 
GetAnnotationState(SfxItemSet & rItemSet)864*b1cdbd2cSJim Jagielski void DrawViewShell::GetAnnotationState (SfxItemSet& rItemSet )
865*b1cdbd2cSJim Jagielski {
866*b1cdbd2cSJim Jagielski     if( mpAnnotationManager.get() )
867*b1cdbd2cSJim Jagielski         mpAnnotationManager->GetAnnotationState( rItemSet );
868*b1cdbd2cSJim Jagielski }
869*b1cdbd2cSJim Jagielski 
870*b1cdbd2cSJim Jagielski 
871*b1cdbd2cSJim Jagielski 
872*b1cdbd2cSJim Jagielski 
GetSidebarContextName(void) const873*b1cdbd2cSJim Jagielski ::rtl::OUString DrawViewShell::GetSidebarContextName (void) const
874*b1cdbd2cSJim Jagielski {
875*b1cdbd2cSJim Jagielski     ::svx::sidebar::SelectionAnalyzer::ViewType eViewType (::svx::sidebar::SelectionAnalyzer::VT_Standard);
876*b1cdbd2cSJim Jagielski     switch (mePageKind)
877*b1cdbd2cSJim Jagielski     {
878*b1cdbd2cSJim Jagielski         case PK_HANDOUT:
879*b1cdbd2cSJim Jagielski             eViewType = ::svx::sidebar::SelectionAnalyzer::VT_Handout;
880*b1cdbd2cSJim Jagielski             break;
881*b1cdbd2cSJim Jagielski         case PK_NOTES:
882*b1cdbd2cSJim Jagielski             eViewType = ::svx::sidebar::SelectionAnalyzer::VT_Notes;
883*b1cdbd2cSJim Jagielski             break;
884*b1cdbd2cSJim Jagielski         case PK_STANDARD:
885*b1cdbd2cSJim Jagielski             if (meEditMode == EM_MASTERPAGE)
886*b1cdbd2cSJim Jagielski                 eViewType = ::svx::sidebar::SelectionAnalyzer::VT_Master;
887*b1cdbd2cSJim Jagielski             else
888*b1cdbd2cSJim Jagielski                 eViewType = ::svx::sidebar::SelectionAnalyzer::VT_Standard;
889*b1cdbd2cSJim Jagielski             break;
890*b1cdbd2cSJim Jagielski     }
891*b1cdbd2cSJim Jagielski     return EnumContext::GetContextName(
892*b1cdbd2cSJim Jagielski         ::svx::sidebar::SelectionAnalyzer::GetContextForSelection_SD(
893*b1cdbd2cSJim Jagielski             mpDrawView->GetMarkedObjectList(),
894*b1cdbd2cSJim Jagielski             eViewType));
895*b1cdbd2cSJim Jagielski }
896*b1cdbd2cSJim Jagielski 
897*b1cdbd2cSJim Jagielski 
898*b1cdbd2cSJim Jagielski } // end of namespace sd
899