xref: /AOO41X/main/sd/source/ui/view/drviewsc.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_sd.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include "DrawViewShell.hxx"
32*cdf0e10cSrcweir #include "ViewShellImplementation.hxx"
33*cdf0e10cSrcweir #include <vcl/waitobj.hxx>
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir #ifndef _SVXIDS_HRC
36*cdf0e10cSrcweir #include <svx/svxids.hrc>
37*cdf0e10cSrcweir #endif
38*cdf0e10cSrcweir #include <svx/dialogs.hrc>
39*cdf0e10cSrcweir #ifndef _IMAPDLG_HXX
40*cdf0e10cSrcweir #include <svx/imapdlg.hxx>
41*cdf0e10cSrcweir #endif
42*cdf0e10cSrcweir #include <vcl/msgbox.hxx>
43*cdf0e10cSrcweir #include <sfx2/request.hxx>
44*cdf0e10cSrcweir #include <svx/svdogrp.hxx>
45*cdf0e10cSrcweir #include <svx/svdoole2.hxx>
46*cdf0e10cSrcweir #include <svx/svdograf.hxx>
47*cdf0e10cSrcweir #include <svx/svxdlg.hxx>
48*cdf0e10cSrcweir #ifndef _BINDING_HXX //autogen
49*cdf0e10cSrcweir #include <sfx2/bindings.hxx>
50*cdf0e10cSrcweir #endif
51*cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
52*cdf0e10cSrcweir #include <svx/svdoole2.hxx>
53*cdf0e10cSrcweir #include <svl/style.hxx>
54*cdf0e10cSrcweir #include <svx/svdpagv.hxx>
55*cdf0e10cSrcweir #include <svx/grafctrl.hxx>
56*cdf0e10cSrcweir #include "stlsheet.hxx"
57*cdf0e10cSrcweir 
58*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir #include "app.hrc"
61*cdf0e10cSrcweir #include "strings.hrc"
62*cdf0e10cSrcweir #include "helpids.h"
63*cdf0e10cSrcweir #include "misc.hxx"
64*cdf0e10cSrcweir #include "Window.hxx"
65*cdf0e10cSrcweir #include "imapinfo.hxx"
66*cdf0e10cSrcweir #include "futempl.hxx"
67*cdf0e10cSrcweir #include "fusel.hxx"
68*cdf0e10cSrcweir #include "sdresid.hxx"
69*cdf0e10cSrcweir #include "drawdoc.hxx"
70*cdf0e10cSrcweir #include "DrawDocShell.hxx"
71*cdf0e10cSrcweir #include "drawview.hxx"
72*cdf0e10cSrcweir #include "sdabstdlg.hxx"
73*cdf0e10cSrcweir #include "brkdlg.hrc"
74*cdf0e10cSrcweir namespace sd {
75*cdf0e10cSrcweir 
76*cdf0e10cSrcweir #define	MIN_ACTIONS_FOR_DIALOG	5000	// bei mehr als 1600 Metaobjekten
77*cdf0e10cSrcweir 										// wird beim Aufbrechen ein Dialog
78*cdf0e10cSrcweir 										// angezeigt.
79*cdf0e10cSrcweir /*************************************************************************
80*cdf0e10cSrcweir |*
81*cdf0e10cSrcweir |* SfxRequests fuer temporaere Funktionen
82*cdf0e10cSrcweir |*
83*cdf0e10cSrcweir \************************************************************************/
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir void DrawViewShell::FuTemp03(SfxRequest& rReq)
86*cdf0e10cSrcweir {
87*cdf0e10cSrcweir 	sal_uInt16 nSId = rReq.GetSlot();
88*cdf0e10cSrcweir 	switch( nSId )
89*cdf0e10cSrcweir 	{
90*cdf0e10cSrcweir 		case SID_GROUP:  // BASIC
91*cdf0e10cSrcweir 		{
92*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected( sal_True, sal_True, sal_True ) )
93*cdf0e10cSrcweir 			{
94*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
95*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
96*cdf0e10cSrcweir 			}
97*cdf0e10cSrcweir 			else
98*cdf0e10cSrcweir 			{
99*cdf0e10cSrcweir 				mpDrawView->GroupMarked();
100*cdf0e10cSrcweir 			}
101*cdf0e10cSrcweir 			Cancel();
102*cdf0e10cSrcweir 			rReq.Done ();
103*cdf0e10cSrcweir 		}
104*cdf0e10cSrcweir 		break;
105*cdf0e10cSrcweir 
106*cdf0e10cSrcweir 		case SID_UNGROUP:  // BASIC
107*cdf0e10cSrcweir 		{
108*cdf0e10cSrcweir 			mpDrawView->UnGroupMarked();
109*cdf0e10cSrcweir 			Cancel();
110*cdf0e10cSrcweir 			rReq.Done ();
111*cdf0e10cSrcweir 		}
112*cdf0e10cSrcweir 		break;
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir 		case SID_NAME_GROUP:
115*cdf0e10cSrcweir 		{
116*cdf0e10cSrcweir 			// only allow for single object selection since the name of an object needs
117*cdf0e10cSrcweir 			// to be unique
118*cdf0e10cSrcweir 			if(1L == mpDrawView->GetMarkedObjectCount())
119*cdf0e10cSrcweir 			{
120*cdf0e10cSrcweir 				// #i68101#
121*cdf0e10cSrcweir 				SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
122*cdf0e10cSrcweir 				OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
123*cdf0e10cSrcweir 				String aName(pSelected->GetName());
124*cdf0e10cSrcweir 
125*cdf0e10cSrcweir 				SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
126*cdf0e10cSrcweir 				OSL_ENSURE(pFact, "Dialogdiet fail!");
127*cdf0e10cSrcweir 				AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName);
128*cdf0e10cSrcweir 				OSL_ENSURE(pDlg, "Dialogdiet fail!");
129*cdf0e10cSrcweir 
130*cdf0e10cSrcweir 				pDlg->SetCheckNameHdl(LINK(this, DrawViewShell, NameObjectHdl));
131*cdf0e10cSrcweir 
132*cdf0e10cSrcweir 				if(RET_OK == pDlg->Execute())
133*cdf0e10cSrcweir 				{
134*cdf0e10cSrcweir 					pDlg->GetName(aName);
135*cdf0e10cSrcweir 					pSelected->SetName(aName);
136*cdf0e10cSrcweir 				}
137*cdf0e10cSrcweir 
138*cdf0e10cSrcweir 				delete pDlg;
139*cdf0e10cSrcweir 			}
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir 			SfxBindings& rBindings = GetViewFrame()->GetBindings();
142*cdf0e10cSrcweir 			rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
143*cdf0e10cSrcweir 			rBindings.Invalidate( SID_CONTEXT );
144*cdf0e10cSrcweir 
145*cdf0e10cSrcweir 			Cancel();
146*cdf0e10cSrcweir 			rReq.Ignore();
147*cdf0e10cSrcweir 			break;
148*cdf0e10cSrcweir 		}
149*cdf0e10cSrcweir 
150*cdf0e10cSrcweir 		// #i68101#
151*cdf0e10cSrcweir 		case SID_OBJECT_TITLE_DESCRIPTION:
152*cdf0e10cSrcweir 		{
153*cdf0e10cSrcweir 			if(1L == mpDrawView->GetMarkedObjectCount())
154*cdf0e10cSrcweir 			{
155*cdf0e10cSrcweir 				SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
156*cdf0e10cSrcweir 				OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
157*cdf0e10cSrcweir 				String aTitle(pSelected->GetTitle());
158*cdf0e10cSrcweir 				String aDescription(pSelected->GetDescription());
159*cdf0e10cSrcweir 
160*cdf0e10cSrcweir 				SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
161*cdf0e10cSrcweir 				OSL_ENSURE(pFact, "Dialogdiet fail!");
162*cdf0e10cSrcweir 				AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription);
163*cdf0e10cSrcweir 				OSL_ENSURE(pDlg, "Dialogdiet fail!");
164*cdf0e10cSrcweir 
165*cdf0e10cSrcweir 				if(RET_OK == pDlg->Execute())
166*cdf0e10cSrcweir 				{
167*cdf0e10cSrcweir 					pDlg->GetTitle(aTitle);
168*cdf0e10cSrcweir 					pDlg->GetDescription(aDescription);
169*cdf0e10cSrcweir 					pSelected->SetTitle(aTitle);
170*cdf0e10cSrcweir 					pSelected->SetDescription(aDescription);
171*cdf0e10cSrcweir 				}
172*cdf0e10cSrcweir 
173*cdf0e10cSrcweir 				delete pDlg;
174*cdf0e10cSrcweir 			}
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir 			SfxBindings& rBindings = GetViewFrame()->GetBindings();
177*cdf0e10cSrcweir 			rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
178*cdf0e10cSrcweir 			rBindings.Invalidate( SID_CONTEXT );
179*cdf0e10cSrcweir 
180*cdf0e10cSrcweir 			Cancel();
181*cdf0e10cSrcweir 			rReq.Ignore();
182*cdf0e10cSrcweir 			break;
183*cdf0e10cSrcweir 		}
184*cdf0e10cSrcweir 
185*cdf0e10cSrcweir 		case SID_ENTER_GROUP:  // BASIC
186*cdf0e10cSrcweir 		{
187*cdf0e10cSrcweir 			mpDrawView->EnterMarkedGroup();
188*cdf0e10cSrcweir 			Cancel();
189*cdf0e10cSrcweir 			rReq.Done ();
190*cdf0e10cSrcweir 		}
191*cdf0e10cSrcweir 		break;
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 		case SID_LEAVE_GROUP:  // BASIC
194*cdf0e10cSrcweir 		{
195*cdf0e10cSrcweir 			mpDrawView->LeaveOneGroup();
196*cdf0e10cSrcweir 			Cancel();
197*cdf0e10cSrcweir 			rReq.Done ();
198*cdf0e10cSrcweir 		}
199*cdf0e10cSrcweir 		break;
200*cdf0e10cSrcweir 
201*cdf0e10cSrcweir 		case SID_LEAVE_ALL_GROUPS:  // BASIC
202*cdf0e10cSrcweir 		{
203*cdf0e10cSrcweir 			mpDrawView->LeaveAllGroup();
204*cdf0e10cSrcweir 			Cancel();
205*cdf0e10cSrcweir 			rReq.Done ();
206*cdf0e10cSrcweir 		}
207*cdf0e10cSrcweir 		break;
208*cdf0e10cSrcweir 
209*cdf0e10cSrcweir 		case SID_COMBINE:  // BASIC
210*cdf0e10cSrcweir 		{
211*cdf0e10cSrcweir 			// #88224# End text edit to avoid conflicts
212*cdf0e10cSrcweir 			if(mpDrawView->IsTextEdit())
213*cdf0e10cSrcweir 				mpDrawView->SdrEndTextEdit();
214*cdf0e10cSrcweir 
215*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected() )
216*cdf0e10cSrcweir 			{
217*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
218*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
219*cdf0e10cSrcweir 			}
220*cdf0e10cSrcweir 			else
221*cdf0e10cSrcweir 			{
222*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
223*cdf0e10cSrcweir 				mpDrawView->CombineMarkedObjects(sal_False);
224*cdf0e10cSrcweir 			}
225*cdf0e10cSrcweir 			Cancel();
226*cdf0e10cSrcweir 			rReq.Done ();
227*cdf0e10cSrcweir 		}
228*cdf0e10cSrcweir 		break;
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir 		case SID_DISTRIBUTE_DLG:
231*cdf0e10cSrcweir 		{
232*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected() )
233*cdf0e10cSrcweir 			{
234*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
235*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
236*cdf0e10cSrcweir 			}
237*cdf0e10cSrcweir 			else
238*cdf0e10cSrcweir 			{
239*cdf0e10cSrcweir 				mpDrawView->DistributeMarkedObjects();
240*cdf0e10cSrcweir 			}
241*cdf0e10cSrcweir 			Cancel();
242*cdf0e10cSrcweir 			rReq.Done ();
243*cdf0e10cSrcweir 		}
244*cdf0e10cSrcweir 		break;
245*cdf0e10cSrcweir 
246*cdf0e10cSrcweir         case SID_POLY_MERGE:
247*cdf0e10cSrcweir 		{
248*cdf0e10cSrcweir 			// #88224# End text edit to avoid conflicts
249*cdf0e10cSrcweir 			if(mpDrawView->IsTextEdit())
250*cdf0e10cSrcweir 				mpDrawView->SdrEndTextEdit();
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected() )
253*cdf0e10cSrcweir 			{
254*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
255*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
256*cdf0e10cSrcweir 			}
257*cdf0e10cSrcweir 			else
258*cdf0e10cSrcweir 			{
259*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
260*cdf0e10cSrcweir 				mpDrawView->MergeMarkedObjects(SDR_MERGE_MERGE);
261*cdf0e10cSrcweir 			}
262*cdf0e10cSrcweir 			Cancel();
263*cdf0e10cSrcweir 			rReq.Done ();
264*cdf0e10cSrcweir 		}
265*cdf0e10cSrcweir 		break;
266*cdf0e10cSrcweir 
267*cdf0e10cSrcweir         case SID_POLY_SUBSTRACT:
268*cdf0e10cSrcweir 		{
269*cdf0e10cSrcweir 			// #88224# End text edit to avoid conflicts
270*cdf0e10cSrcweir 			if(mpDrawView->IsTextEdit())
271*cdf0e10cSrcweir 				mpDrawView->SdrEndTextEdit();
272*cdf0e10cSrcweir 
273*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected() )
274*cdf0e10cSrcweir 			{
275*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
276*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
277*cdf0e10cSrcweir 			}
278*cdf0e10cSrcweir 			else
279*cdf0e10cSrcweir 			{
280*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
281*cdf0e10cSrcweir 				mpDrawView->MergeMarkedObjects(SDR_MERGE_SUBSTRACT);
282*cdf0e10cSrcweir 			}
283*cdf0e10cSrcweir 			Cancel();
284*cdf0e10cSrcweir 			rReq.Done ();
285*cdf0e10cSrcweir 		}
286*cdf0e10cSrcweir 		break;
287*cdf0e10cSrcweir 
288*cdf0e10cSrcweir         case SID_POLY_INTERSECT:
289*cdf0e10cSrcweir 		{
290*cdf0e10cSrcweir 			// #88224# End text edit to avoid conflicts
291*cdf0e10cSrcweir 			if(mpDrawView->IsTextEdit())
292*cdf0e10cSrcweir 				mpDrawView->SdrEndTextEdit();
293*cdf0e10cSrcweir 
294*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected() )
295*cdf0e10cSrcweir 			{
296*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
297*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
298*cdf0e10cSrcweir 			}
299*cdf0e10cSrcweir 			else
300*cdf0e10cSrcweir 			{
301*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
302*cdf0e10cSrcweir 				mpDrawView->MergeMarkedObjects(SDR_MERGE_INTERSECT);
303*cdf0e10cSrcweir 			}
304*cdf0e10cSrcweir 			Cancel();
305*cdf0e10cSrcweir 			rReq.Done ();
306*cdf0e10cSrcweir 		}
307*cdf0e10cSrcweir 		break;
308*cdf0e10cSrcweir 
309*cdf0e10cSrcweir 		case SID_DISMANTLE:  // BASIC
310*cdf0e10cSrcweir 		{
311*cdf0e10cSrcweir 			if ( mpDrawView->IsDismantlePossible(sal_False) )
312*cdf0e10cSrcweir 			{
313*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
314*cdf0e10cSrcweir 				mpDrawView->DismantleMarkedObjects(sal_False);
315*cdf0e10cSrcweir 			}
316*cdf0e10cSrcweir 			Cancel();
317*cdf0e10cSrcweir 			rReq.Done ();
318*cdf0e10cSrcweir 		}
319*cdf0e10cSrcweir 		break;
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir 		case SID_CONNECT:  // BASIC
322*cdf0e10cSrcweir 		{
323*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected() )
324*cdf0e10cSrcweir 			{
325*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
326*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
327*cdf0e10cSrcweir 			}
328*cdf0e10cSrcweir 			else
329*cdf0e10cSrcweir 			{
330*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
331*cdf0e10cSrcweir 				mpDrawView->CombineMarkedObjects(sal_True);
332*cdf0e10cSrcweir 			}
333*cdf0e10cSrcweir 			Cancel();
334*cdf0e10cSrcweir 			rReq.Done ();
335*cdf0e10cSrcweir 		}
336*cdf0e10cSrcweir 		break;
337*cdf0e10cSrcweir 
338*cdf0e10cSrcweir 		case SID_BREAK:  // BASIC
339*cdf0e10cSrcweir 		{
340*cdf0e10cSrcweir 			if ( mpDrawView->IsTextEdit() )
341*cdf0e10cSrcweir 			{
342*cdf0e10cSrcweir 				mpDrawView->SdrEndTextEdit();
343*cdf0e10cSrcweir 			}
344*cdf0e10cSrcweir 
345*cdf0e10cSrcweir             if ( mpDrawView->IsBreak3DObjPossible() )
346*cdf0e10cSrcweir 			{
347*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
348*cdf0e10cSrcweir                 mpDrawView->Break3DObj();
349*cdf0e10cSrcweir 			}
350*cdf0e10cSrcweir             else if ( mpDrawView->IsDismantlePossible(sal_True) )
351*cdf0e10cSrcweir 			{
352*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
353*cdf0e10cSrcweir 				mpDrawView->DismantleMarkedObjects(sal_True);
354*cdf0e10cSrcweir             }
355*cdf0e10cSrcweir             else if ( mpDrawView->IsImportMtfPossible() )
356*cdf0e10cSrcweir 			{
357*cdf0e10cSrcweir 
358*cdf0e10cSrcweir 				WaitObject aWait( (Window*)GetActiveWindow() );
359*cdf0e10cSrcweir 				const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
360*cdf0e10cSrcweir 				sal_uLong nAnz=rMarkList.GetMarkCount();
361*cdf0e10cSrcweir 
362*cdf0e10cSrcweir 				// Summe der Metaobjekte aller sel. Metafiles erm.
363*cdf0e10cSrcweir 				sal_uLong nCount = 0;
364*cdf0e10cSrcweir 				for(sal_uLong nm=0; nm<nAnz; nm++)
365*cdf0e10cSrcweir 				{
366*cdf0e10cSrcweir 					SdrMark*     pM=rMarkList.GetMark(nm);
367*cdf0e10cSrcweir 				    SdrObject*   pObj=pM->GetMarkedSdrObj();
368*cdf0e10cSrcweir 				    SdrGrafObj*  pGraf=PTR_CAST(SdrGrafObj,pObj);
369*cdf0e10cSrcweir 					SdrOle2Obj*  pOle2=PTR_CAST(SdrOle2Obj,pObj);
370*cdf0e10cSrcweir 			        if (pGraf!=NULL && pGraf->HasGDIMetaFile())
371*cdf0e10cSrcweir 						nCount += pGraf->GetGraphic().GetGDIMetaFile().GetActionCount();
372*cdf0e10cSrcweir                     if(pOle2!=NULL && pOle2->GetGraphic())
373*cdf0e10cSrcweir                         nCount += pOle2->GetGraphic()->GetGDIMetaFile().GetActionCount();
374*cdf0e10cSrcweir 				}
375*cdf0e10cSrcweir 
376*cdf0e10cSrcweir 				// anhand der erm. Summe entscheiden ob mit
377*cdf0e10cSrcweir 				// oder ohne Dialog aufgebrochen wird.
378*cdf0e10cSrcweir 				if(nCount < MIN_ACTIONS_FOR_DIALOG)
379*cdf0e10cSrcweir 				{
380*cdf0e10cSrcweir 					// ohne Dialog aufbrechen
381*cdf0e10cSrcweir 					mpDrawView->DoImportMarkedMtf();
382*cdf0e10cSrcweir 				}
383*cdf0e10cSrcweir 				else
384*cdf0e10cSrcweir 				{
385*cdf0e10cSrcweir 					SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
386*cdf0e10cSrcweir 					if( pFact )
387*cdf0e10cSrcweir 					{
388*cdf0e10cSrcweir 						VclAbstractDialog* pDlg = pFact->CreateBreakDlg(GetActiveWindow(), mpDrawView, GetDocSh(), nCount, nAnz );
389*cdf0e10cSrcweir 						if( pDlg )
390*cdf0e10cSrcweir 						{
391*cdf0e10cSrcweir 							pDlg->Execute();
392*cdf0e10cSrcweir 							delete pDlg;
393*cdf0e10cSrcweir 						}
394*cdf0e10cSrcweir 					}
395*cdf0e10cSrcweir 				}
396*cdf0e10cSrcweir 			}
397*cdf0e10cSrcweir 
398*cdf0e10cSrcweir 			Cancel();
399*cdf0e10cSrcweir 			rReq.Done ();
400*cdf0e10cSrcweir 		}
401*cdf0e10cSrcweir 		break;
402*cdf0e10cSrcweir 
403*cdf0e10cSrcweir 		case SID_CONVERT_TO_3D:
404*cdf0e10cSrcweir 		{
405*cdf0e10cSrcweir 			if ( mpDrawView->IsPresObjSelected() )
406*cdf0e10cSrcweir 			{
407*cdf0e10cSrcweir                 ::sd::Window* pWindow = GetActiveWindow();
408*cdf0e10cSrcweir                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
409*cdf0e10cSrcweir 			}
410*cdf0e10cSrcweir 			else
411*cdf0e10cSrcweir 			{
412*cdf0e10cSrcweir 				if (mpDrawView->IsConvertTo3DObjPossible())
413*cdf0e10cSrcweir 				{
414*cdf0e10cSrcweir 					if (mpDrawView->IsTextEdit())
415*cdf0e10cSrcweir 					{
416*cdf0e10cSrcweir 						mpDrawView->SdrEndTextEdit();
417*cdf0e10cSrcweir 					}
418*cdf0e10cSrcweir 
419*cdf0e10cSrcweir 					WaitObject aWait( (Window*)GetActiveWindow() );
420*cdf0e10cSrcweir 					mpDrawView->ConvertMarkedObjTo3D(sal_True);
421*cdf0e10cSrcweir 				}
422*cdf0e10cSrcweir 			}
423*cdf0e10cSrcweir 
424*cdf0e10cSrcweir 			Cancel();
425*cdf0e10cSrcweir 			rReq.Done();
426*cdf0e10cSrcweir 		}
427*cdf0e10cSrcweir 		break;
428*cdf0e10cSrcweir 
429*cdf0e10cSrcweir 		case SID_FRAME_TO_TOP:	// BASIC
430*cdf0e10cSrcweir 		{
431*cdf0e10cSrcweir 			mpDrawView->PutMarkedToTop();
432*cdf0e10cSrcweir 			Cancel();
433*cdf0e10cSrcweir 			Invalidate( SID_POSITION );
434*cdf0e10cSrcweir 			rReq.Done ();
435*cdf0e10cSrcweir 		}
436*cdf0e10cSrcweir 		break;
437*cdf0e10cSrcweir 
438*cdf0e10cSrcweir 		case SID_MOREFRONT:  // BASIC
439*cdf0e10cSrcweir 		{
440*cdf0e10cSrcweir 			mpDrawView->MovMarkedToTop();
441*cdf0e10cSrcweir 			Cancel();
442*cdf0e10cSrcweir 			Invalidate( SID_POSITION );
443*cdf0e10cSrcweir 			rReq.Done ();
444*cdf0e10cSrcweir 		}
445*cdf0e10cSrcweir 		break;
446*cdf0e10cSrcweir 
447*cdf0e10cSrcweir 		case SID_MOREBACK:	// BASIC
448*cdf0e10cSrcweir 		{
449*cdf0e10cSrcweir 			mpDrawView->MovMarkedToBtm();
450*cdf0e10cSrcweir 			Cancel();
451*cdf0e10cSrcweir 			Invalidate( SID_POSITION );
452*cdf0e10cSrcweir 			rReq.Done ();
453*cdf0e10cSrcweir 		}
454*cdf0e10cSrcweir 		break;
455*cdf0e10cSrcweir 
456*cdf0e10cSrcweir 		case SID_FRAME_TO_BOTTOM:	// BASIC
457*cdf0e10cSrcweir 		{
458*cdf0e10cSrcweir 			mpDrawView->PutMarkedToBtm();
459*cdf0e10cSrcweir 			Cancel();
460*cdf0e10cSrcweir 			Invalidate( SID_POSITION );
461*cdf0e10cSrcweir 			rReq.Done ();
462*cdf0e10cSrcweir 		}
463*cdf0e10cSrcweir 		break;
464*cdf0e10cSrcweir 
465*cdf0e10cSrcweir 		case SID_HORIZONTAL:  // BASIC
466*cdf0e10cSrcweir 		{
467*cdf0e10cSrcweir 			mpDrawView->MirrorAllMarkedHorizontal();
468*cdf0e10cSrcweir 			Cancel();
469*cdf0e10cSrcweir 			rReq.Done ();
470*cdf0e10cSrcweir 		}
471*cdf0e10cSrcweir 		break;
472*cdf0e10cSrcweir 
473*cdf0e10cSrcweir 		case SID_VERTICAL:	// BASIC
474*cdf0e10cSrcweir 		{
475*cdf0e10cSrcweir 			mpDrawView->MirrorAllMarkedVertical();
476*cdf0e10cSrcweir 			Cancel();
477*cdf0e10cSrcweir 			rReq.Done ();
478*cdf0e10cSrcweir 		}
479*cdf0e10cSrcweir 		break;
480*cdf0e10cSrcweir 
481*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_LEFT:  // BASIC
482*cdf0e10cSrcweir 		{
483*cdf0e10cSrcweir 			mpDrawView->AlignMarkedObjects(SDRHALIGN_LEFT, SDRVALIGN_NONE);
484*cdf0e10cSrcweir 			Cancel();
485*cdf0e10cSrcweir 			rReq.Done ();
486*cdf0e10cSrcweir 		}
487*cdf0e10cSrcweir 		break;
488*cdf0e10cSrcweir 
489*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_CENTER:  // BASIC
490*cdf0e10cSrcweir 		{
491*cdf0e10cSrcweir 			mpDrawView->AlignMarkedObjects(SDRHALIGN_CENTER, SDRVALIGN_NONE);
492*cdf0e10cSrcweir 			Cancel();
493*cdf0e10cSrcweir 			rReq.Done ();
494*cdf0e10cSrcweir 		}
495*cdf0e10cSrcweir 		break;
496*cdf0e10cSrcweir 
497*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_RIGHT:  // BASIC
498*cdf0e10cSrcweir 		{
499*cdf0e10cSrcweir 			mpDrawView->AlignMarkedObjects(SDRHALIGN_RIGHT, SDRVALIGN_NONE);
500*cdf0e10cSrcweir 			Cancel();
501*cdf0e10cSrcweir 			rReq.Done ();
502*cdf0e10cSrcweir 		}
503*cdf0e10cSrcweir 		break;
504*cdf0e10cSrcweir 
505*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_UP:  // BASIC
506*cdf0e10cSrcweir 		{
507*cdf0e10cSrcweir 			mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_TOP);
508*cdf0e10cSrcweir 			Cancel();
509*cdf0e10cSrcweir 			rReq.Done ();
510*cdf0e10cSrcweir 		}
511*cdf0e10cSrcweir 		break;
512*cdf0e10cSrcweir 
513*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_MIDDLE:  // BASIC
514*cdf0e10cSrcweir 		{
515*cdf0e10cSrcweir 			mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_CENTER);
516*cdf0e10cSrcweir 			Cancel();
517*cdf0e10cSrcweir 			rReq.Done ();
518*cdf0e10cSrcweir 		}
519*cdf0e10cSrcweir 		break;
520*cdf0e10cSrcweir 
521*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_DOWN:  // BASIC
522*cdf0e10cSrcweir 		{
523*cdf0e10cSrcweir 			mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_BOTTOM);
524*cdf0e10cSrcweir 			Cancel();
525*cdf0e10cSrcweir 			rReq.Done ();
526*cdf0e10cSrcweir 		}
527*cdf0e10cSrcweir 		break;
528*cdf0e10cSrcweir 
529*cdf0e10cSrcweir 		case SID_SELECTALL:  // BASIC
530*cdf0e10cSrcweir 		{
531*cdf0e10cSrcweir             if( (dynamic_cast<FuSelection*>( GetOldFunction().get() ) != 0) &&
532*cdf0e10cSrcweir                 !GetView()->IsFrameDragSingles() && GetView()->HasMarkablePoints())
533*cdf0e10cSrcweir 			{
534*cdf0e10cSrcweir 				if ( !mpDrawView->IsAction() )
535*cdf0e10cSrcweir 					mpDrawView->MarkAllPoints();
536*cdf0e10cSrcweir 			}
537*cdf0e10cSrcweir 			else
538*cdf0e10cSrcweir 				mpDrawView->SelectAll();
539*cdf0e10cSrcweir 
540*cdf0e10cSrcweir 			Cancel();
541*cdf0e10cSrcweir 			rReq.Done ();
542*cdf0e10cSrcweir 		}
543*cdf0e10cSrcweir 		break;
544*cdf0e10cSrcweir 
545*cdf0e10cSrcweir 		case SID_STYLE_NEW:	// BASIC ???
546*cdf0e10cSrcweir 		case SID_STYLE_APPLY:
547*cdf0e10cSrcweir 		case SID_STYLE_EDIT:
548*cdf0e10cSrcweir 		case SID_STYLE_DELETE:
549*cdf0e10cSrcweir 		case SID_STYLE_FAMILY:
550*cdf0e10cSrcweir 		case SID_STYLE_WATERCAN:
551*cdf0e10cSrcweir 		case SID_STYLE_UPDATE_BY_EXAMPLE:
552*cdf0e10cSrcweir 		case SID_STYLE_NEW_BY_EXAMPLE:
553*cdf0e10cSrcweir 		{
554*cdf0e10cSrcweir 			if( rReq.GetSlot() == SID_STYLE_EDIT && !rReq.GetArgs() )
555*cdf0e10cSrcweir 			{
556*cdf0e10cSrcweir 				SfxStyleSheet* pStyleSheet = mpDrawView->GetStyleSheet();
557*cdf0e10cSrcweir 				if( pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
558*cdf0e10cSrcweir 					pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
559*cdf0e10cSrcweir 
560*cdf0e10cSrcweir 				if( (pStyleSheet == NULL) && GetView()->IsTextEdit() )
561*cdf0e10cSrcweir 				{
562*cdf0e10cSrcweir 					GetView()->SdrEndTextEdit();
563*cdf0e10cSrcweir 
564*cdf0e10cSrcweir 					pStyleSheet = mpDrawView->GetStyleSheet();
565*cdf0e10cSrcweir 					if(pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
566*cdf0e10cSrcweir 						pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
567*cdf0e10cSrcweir 				}
568*cdf0e10cSrcweir 
569*cdf0e10cSrcweir 				if( pStyleSheet == NULL )
570*cdf0e10cSrcweir 				{
571*cdf0e10cSrcweir 					rReq.Ignore();
572*cdf0e10cSrcweir 					break;
573*cdf0e10cSrcweir 				}
574*cdf0e10cSrcweir 
575*cdf0e10cSrcweir 				SfxAllItemSet aSet(GetDoc()->GetPool());
576*cdf0e10cSrcweir 
577*cdf0e10cSrcweir 				SfxStringItem aStyleNameItem( SID_STYLE_EDIT, pStyleSheet->GetName() );
578*cdf0e10cSrcweir 				aSet.Put(aStyleNameItem);
579*cdf0e10cSrcweir 
580*cdf0e10cSrcweir 				SfxUInt16Item aStyleFamilyItem( SID_STYLE_FAMILY, (sal_uInt16)pStyleSheet->GetFamily() );
581*cdf0e10cSrcweir 				aSet.Put(aStyleFamilyItem);
582*cdf0e10cSrcweir 
583*cdf0e10cSrcweir 				rReq.SetArgs(aSet);
584*cdf0e10cSrcweir 			}
585*cdf0e10cSrcweir 
586*cdf0e10cSrcweir 			if( rReq.GetArgs() )
587*cdf0e10cSrcweir 			{
588*cdf0e10cSrcweir 				SetCurrentFunction( FuTemplate::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
589*cdf0e10cSrcweir 				if( rReq.GetSlot() == SID_STYLE_APPLY )
590*cdf0e10cSrcweir 					GetViewFrame()->GetBindings().Invalidate( SID_STYLE_APPLY );
591*cdf0e10cSrcweir 				Cancel();
592*cdf0e10cSrcweir 			}
593*cdf0e10cSrcweir 			else if( rReq.GetSlot() == SID_STYLE_APPLY )
594*cdf0e10cSrcweir 				GetViewFrame()->GetDispatcher()->Execute( SID_STYLE_DESIGNER, SFX_CALLMODE_ASYNCHRON );
595*cdf0e10cSrcweir 			rReq.Ignore ();
596*cdf0e10cSrcweir 		}
597*cdf0e10cSrcweir 		break;
598*cdf0e10cSrcweir 
599*cdf0e10cSrcweir 		case SID_IMAP:
600*cdf0e10cSrcweir 		{
601*cdf0e10cSrcweir 			SvxIMapDlg* pDlg;
602*cdf0e10cSrcweir 			sal_uInt16		nId = SvxIMapDlgChildWindow::GetChildWindowId();
603*cdf0e10cSrcweir 
604*cdf0e10cSrcweir 			GetViewFrame()->ToggleChildWindow( nId );
605*cdf0e10cSrcweir 			GetViewFrame()->GetBindings().Invalidate( SID_IMAP );
606*cdf0e10cSrcweir 
607*cdf0e10cSrcweir 			if ( GetViewFrame()->HasChildWindow( nId )
608*cdf0e10cSrcweir                 && ( ( pDlg = ViewShell::Implementation::GetImageMapDialog() ) != NULL ) )
609*cdf0e10cSrcweir 			{
610*cdf0e10cSrcweir 				const SdrMarkList&	rMarkList = mpDrawView->GetMarkedObjectList();
611*cdf0e10cSrcweir 
612*cdf0e10cSrcweir 				if ( rMarkList.GetMarkCount() == 1 )
613*cdf0e10cSrcweir 					UpdateIMapDlg( rMarkList.GetMark( 0 )->GetMarkedSdrObj() );
614*cdf0e10cSrcweir 			}
615*cdf0e10cSrcweir 
616*cdf0e10cSrcweir 			Cancel();
617*cdf0e10cSrcweir 			rReq.Ignore ();
618*cdf0e10cSrcweir 		}
619*cdf0e10cSrcweir 		break;
620*cdf0e10cSrcweir 
621*cdf0e10cSrcweir 		case SID_GRID_FRONT:
622*cdf0e10cSrcweir 		{
623*cdf0e10cSrcweir 			mpDrawView->SetGridFront( !mpDrawView->IsGridFront() );
624*cdf0e10cSrcweir 			Cancel();
625*cdf0e10cSrcweir 			rReq.Done ();
626*cdf0e10cSrcweir 		}
627*cdf0e10cSrcweir 		break;
628*cdf0e10cSrcweir 
629*cdf0e10cSrcweir 		case SID_HELPLINES_FRONT:
630*cdf0e10cSrcweir 		{
631*cdf0e10cSrcweir 			mpDrawView->SetHlplFront( !mpDrawView->IsHlplFront() );
632*cdf0e10cSrcweir 			Cancel();
633*cdf0e10cSrcweir 			rReq.Done ();
634*cdf0e10cSrcweir 		}
635*cdf0e10cSrcweir 		break;
636*cdf0e10cSrcweir 
637*cdf0e10cSrcweir 		default:
638*cdf0e10cSrcweir 			FuTemp04(rReq);
639*cdf0e10cSrcweir 		break;
640*cdf0e10cSrcweir 	};
641*cdf0e10cSrcweir };
642*cdf0e10cSrcweir 
643*cdf0e10cSrcweir /*************************************************************************
644*cdf0e10cSrcweir |*
645*cdf0e10cSrcweir |* Liefert die globale/Haupt-ID zurueck, also die ID, ueber die die
646*cdf0e10cSrcweir |* Toolbox ausgeloest wird
647*cdf0e10cSrcweir |*
648*cdf0e10cSrcweir \************************************************************************/
649*cdf0e10cSrcweir 
650*cdf0e10cSrcweir sal_uInt16 DrawViewShell::GetIdBySubId( sal_uInt16 nSId )
651*cdf0e10cSrcweir {
652*cdf0e10cSrcweir 	sal_uInt16 nMappedSId = 0;
653*cdf0e10cSrcweir 	switch( nSId )
654*cdf0e10cSrcweir 	{
655*cdf0e10cSrcweir 		case SID_OBJECT_ROTATE:
656*cdf0e10cSrcweir 		case SID_OBJECT_MIRROR:
657*cdf0e10cSrcweir 		case SID_OBJECT_TRANSPARENCE:
658*cdf0e10cSrcweir 		case SID_OBJECT_GRADIENT:
659*cdf0e10cSrcweir 		case SID_OBJECT_SHEAR:
660*cdf0e10cSrcweir 		case SID_OBJECT_CROOK_ROTATE:
661*cdf0e10cSrcweir 		case SID_OBJECT_CROOK_SLANT:
662*cdf0e10cSrcweir 		case SID_OBJECT_CROOK_STRETCH:
663*cdf0e10cSrcweir         case SID_CONVERT_TO_3D_LATHE:
664*cdf0e10cSrcweir 		{
665*cdf0e10cSrcweir 			nMappedSId = SID_OBJECT_CHOOSE_MODE;
666*cdf0e10cSrcweir 		}
667*cdf0e10cSrcweir 		break;
668*cdf0e10cSrcweir 
669*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_LEFT:
670*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_CENTER:
671*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_RIGHT:
672*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_UP:
673*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_MIDDLE:
674*cdf0e10cSrcweir 		case SID_OBJECT_ALIGN_DOWN:
675*cdf0e10cSrcweir 		{
676*cdf0e10cSrcweir 			nMappedSId = SID_OBJECT_ALIGN;
677*cdf0e10cSrcweir 		}
678*cdf0e10cSrcweir 		break;
679*cdf0e10cSrcweir 
680*cdf0e10cSrcweir 		case SID_FRAME_TO_TOP:
681*cdf0e10cSrcweir 		case SID_MOREFRONT:
682*cdf0e10cSrcweir 		case SID_MOREBACK:
683*cdf0e10cSrcweir 		case SID_FRAME_TO_BOTTOM:
684*cdf0e10cSrcweir 		case SID_BEFORE_OBJ:
685*cdf0e10cSrcweir 		case SID_BEHIND_OBJ:
686*cdf0e10cSrcweir 		case SID_REVERSE_ORDER:
687*cdf0e10cSrcweir 		{
688*cdf0e10cSrcweir 			nMappedSId = SID_POSITION;
689*cdf0e10cSrcweir 		}
690*cdf0e10cSrcweir 		break;
691*cdf0e10cSrcweir 
692*cdf0e10cSrcweir 		case SID_ZOOM_OUT:
693*cdf0e10cSrcweir 		case SID_ZOOM_IN:
694*cdf0e10cSrcweir 		case SID_SIZE_REAL:
695*cdf0e10cSrcweir 		case SID_ZOOM_PANNING:
696*cdf0e10cSrcweir 		case SID_SIZE_PAGE:
697*cdf0e10cSrcweir 		case SID_SIZE_PAGE_WIDTH:
698*cdf0e10cSrcweir 		case SID_SIZE_ALL:
699*cdf0e10cSrcweir 		case SID_SIZE_OPTIMAL:
700*cdf0e10cSrcweir 		case SID_ZOOM_NEXT:
701*cdf0e10cSrcweir 		case SID_ZOOM_PREV:
702*cdf0e10cSrcweir 		{
703*cdf0e10cSrcweir 			nMappedSId = SID_ZOOM_TOOLBOX;
704*cdf0e10cSrcweir 		}
705*cdf0e10cSrcweir 		break;
706*cdf0e10cSrcweir 
707*cdf0e10cSrcweir 		case SID_ATTR_CHAR:
708*cdf0e10cSrcweir 		case SID_TEXT_FITTOSIZE:
709*cdf0e10cSrcweir 		case SID_DRAW_CAPTION:
710*cdf0e10cSrcweir 		case SID_DRAW_FONTWORK:
711*cdf0e10cSrcweir 		case SID_DRAW_FONTWORK_VERTICAL:
712*cdf0e10cSrcweir 		{
713*cdf0e10cSrcweir 			nMappedSId = SID_DRAWTBX_TEXT;
714*cdf0e10cSrcweir 		}
715*cdf0e10cSrcweir 		break;
716*cdf0e10cSrcweir 
717*cdf0e10cSrcweir 		case SID_DRAW_RECT:
718*cdf0e10cSrcweir 		case SID_DRAW_SQUARE:
719*cdf0e10cSrcweir 		case SID_DRAW_RECT_ROUND:
720*cdf0e10cSrcweir 		case SID_DRAW_SQUARE_ROUND:
721*cdf0e10cSrcweir 		case SID_DRAW_RECT_NOFILL:
722*cdf0e10cSrcweir 		case SID_DRAW_SQUARE_NOFILL:
723*cdf0e10cSrcweir 		case SID_DRAW_RECT_ROUND_NOFILL:
724*cdf0e10cSrcweir 		case SID_DRAW_SQUARE_ROUND_NOFILL:
725*cdf0e10cSrcweir 		{
726*cdf0e10cSrcweir 			nMappedSId = SID_DRAWTBX_RECTANGLES;
727*cdf0e10cSrcweir 		}
728*cdf0e10cSrcweir 		break;
729*cdf0e10cSrcweir 
730*cdf0e10cSrcweir 		case SID_DRAW_ELLIPSE:
731*cdf0e10cSrcweir 		case SID_DRAW_CIRCLE:
732*cdf0e10cSrcweir 		case SID_DRAW_PIE:
733*cdf0e10cSrcweir 		case SID_DRAW_CIRCLEPIE:
734*cdf0e10cSrcweir 		case SID_DRAW_ELLIPSECUT:
735*cdf0e10cSrcweir 		case SID_DRAW_CIRCLECUT:
736*cdf0e10cSrcweir 		case SID_DRAW_ARC:
737*cdf0e10cSrcweir 		case SID_DRAW_CIRCLEARC:
738*cdf0e10cSrcweir 		case SID_DRAW_ELLIPSE_NOFILL:
739*cdf0e10cSrcweir 		case SID_DRAW_CIRCLE_NOFILL:
740*cdf0e10cSrcweir 		case SID_DRAW_PIE_NOFILL:
741*cdf0e10cSrcweir 		case SID_DRAW_CIRCLEPIE_NOFILL:
742*cdf0e10cSrcweir 		case SID_DRAW_ELLIPSECUT_NOFILL:
743*cdf0e10cSrcweir 		case SID_DRAW_CIRCLECUT_NOFILL:
744*cdf0e10cSrcweir 		{
745*cdf0e10cSrcweir 			nMappedSId = SID_DRAWTBX_ELLIPSES;
746*cdf0e10cSrcweir 		}
747*cdf0e10cSrcweir 		break;
748*cdf0e10cSrcweir 
749*cdf0e10cSrcweir         case SID_DRAW_BEZIER_NOFILL:
750*cdf0e10cSrcweir 		case SID_DRAW_POLYGON_NOFILL:
751*cdf0e10cSrcweir 		case SID_DRAW_XPOLYGON_NOFILL:
752*cdf0e10cSrcweir         case SID_DRAW_FREELINE_NOFILL:
753*cdf0e10cSrcweir         case SID_DRAW_BEZIER_FILL:
754*cdf0e10cSrcweir 		case SID_DRAW_POLYGON:
755*cdf0e10cSrcweir 		case SID_DRAW_XPOLYGON:
756*cdf0e10cSrcweir         case SID_DRAW_FREELINE:
757*cdf0e10cSrcweir 		{
758*cdf0e10cSrcweir 			nMappedSId = SID_DRAWTBX_LINES;
759*cdf0e10cSrcweir 		}
760*cdf0e10cSrcweir 		break;
761*cdf0e10cSrcweir 
762*cdf0e10cSrcweir 		case SID_DRAW_LINE:
763*cdf0e10cSrcweir 		case SID_DRAW_XLINE:
764*cdf0e10cSrcweir 		case SID_DRAW_MEASURELINE:
765*cdf0e10cSrcweir 		case SID_LINE_ARROW_START:
766*cdf0e10cSrcweir 		case SID_LINE_ARROW_END:
767*cdf0e10cSrcweir 		case SID_LINE_ARROWS:
768*cdf0e10cSrcweir 		case SID_LINE_ARROW_CIRCLE:
769*cdf0e10cSrcweir 		case SID_LINE_CIRCLE_ARROW:
770*cdf0e10cSrcweir 		case SID_LINE_ARROW_SQUARE:
771*cdf0e10cSrcweir 		case SID_LINE_SQUARE_ARROW:
772*cdf0e10cSrcweir 		{
773*cdf0e10cSrcweir 			nMappedSId = SID_DRAWTBX_ARROWS;
774*cdf0e10cSrcweir 		}
775*cdf0e10cSrcweir 		break;
776*cdf0e10cSrcweir 
777*cdf0e10cSrcweir 		case SID_3D_CUBE:
778*cdf0e10cSrcweir 		case SID_3D_TORUS:
779*cdf0e10cSrcweir 		case SID_3D_SPHERE:
780*cdf0e10cSrcweir 		case SID_3D_SHELL:
781*cdf0e10cSrcweir 		case SID_3D_HALF_SPHERE:
782*cdf0e10cSrcweir 		case SID_3D_CYLINDER:
783*cdf0e10cSrcweir 		case SID_3D_CONE:
784*cdf0e10cSrcweir 		case SID_3D_PYRAMID:
785*cdf0e10cSrcweir 		{
786*cdf0e10cSrcweir 			nMappedSId = SID_DRAWTBX_3D_OBJECTS;
787*cdf0e10cSrcweir 		}
788*cdf0e10cSrcweir 		break;
789*cdf0e10cSrcweir 
790*cdf0e10cSrcweir 		case SID_INSERT_DIAGRAM:
791*cdf0e10cSrcweir 		case SID_ATTR_TABLE:
792*cdf0e10cSrcweir 		case SID_INSERTFILE:
793*cdf0e10cSrcweir 		case SID_INSERT_GRAPHIC:
794*cdf0e10cSrcweir 		case SID_INSERT_AVMEDIA:
795*cdf0e10cSrcweir 		case SID_INSERTPAGE:
796*cdf0e10cSrcweir 	    case SID_INSERT_MATH:
797*cdf0e10cSrcweir 	    case SID_INSERT_FLOATINGFRAME:
798*cdf0e10cSrcweir 	    case SID_INSERT_OBJECT:
799*cdf0e10cSrcweir         case SID_INSERT_PLUGIN:
800*cdf0e10cSrcweir 		case SID_INSERT_SOUND:
801*cdf0e10cSrcweir 		case SID_INSERT_VIDEO:
802*cdf0e10cSrcweir 		case SID_INSERT_TABLE:
803*cdf0e10cSrcweir 		{
804*cdf0e10cSrcweir 			nMappedSId = SID_DRAWTBX_INSERT;
805*cdf0e10cSrcweir 		}
806*cdf0e10cSrcweir 		break;
807*cdf0e10cSrcweir 
808*cdf0e10cSrcweir         case SID_TOOL_CONNECTOR:
809*cdf0e10cSrcweir         case SID_CONNECTOR_ARROW_START:
810*cdf0e10cSrcweir         case SID_CONNECTOR_ARROW_END:
811*cdf0e10cSrcweir         case SID_CONNECTOR_ARROWS:
812*cdf0e10cSrcweir         case SID_CONNECTOR_CIRCLE_START:
813*cdf0e10cSrcweir         case SID_CONNECTOR_CIRCLE_END:
814*cdf0e10cSrcweir         case SID_CONNECTOR_CIRCLES:
815*cdf0e10cSrcweir         case SID_CONNECTOR_LINE:
816*cdf0e10cSrcweir         case SID_CONNECTOR_LINE_ARROW_START:
817*cdf0e10cSrcweir         case SID_CONNECTOR_LINE_ARROW_END:
818*cdf0e10cSrcweir         case SID_CONNECTOR_LINE_ARROWS:
819*cdf0e10cSrcweir         case SID_CONNECTOR_LINE_CIRCLE_START:
820*cdf0e10cSrcweir         case SID_CONNECTOR_LINE_CIRCLE_END:
821*cdf0e10cSrcweir         case SID_CONNECTOR_LINE_CIRCLES:
822*cdf0e10cSrcweir         case SID_CONNECTOR_CURVE:
823*cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_ARROW_START:
824*cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_ARROW_END:
825*cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_ARROWS:
826*cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_CIRCLE_START:
827*cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_CIRCLE_END:
828*cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_CIRCLES:
829*cdf0e10cSrcweir         case SID_CONNECTOR_LINES:
830*cdf0e10cSrcweir         case SID_CONNECTOR_LINES_ARROW_START:
831*cdf0e10cSrcweir         case SID_CONNECTOR_LINES_ARROW_END:
832*cdf0e10cSrcweir         case SID_CONNECTOR_LINES_ARROWS:
833*cdf0e10cSrcweir         case SID_CONNECTOR_LINES_CIRCLE_START:
834*cdf0e10cSrcweir         case SID_CONNECTOR_LINES_CIRCLE_END:
835*cdf0e10cSrcweir         case SID_CONNECTOR_LINES_CIRCLES:
836*cdf0e10cSrcweir         {
837*cdf0e10cSrcweir             nMappedSId = SID_DRAWTBX_CONNECTORS;
838*cdf0e10cSrcweir         }
839*cdf0e10cSrcweir 	}
840*cdf0e10cSrcweir 	return( nMappedSId );
841*cdf0e10cSrcweir }
842*cdf0e10cSrcweir 
843*cdf0e10cSrcweir /*************************************************************************
844*cdf0e10cSrcweir |*
845*cdf0e10cSrcweir |* Fuellt das SlotArray, um das aktuelle Mapping des ToolboxSlots zu
846*cdf0e10cSrcweir |* bekommen
847*cdf0e10cSrcweir |*
848*cdf0e10cSrcweir \************************************************************************/
849*cdf0e10cSrcweir 
850*cdf0e10cSrcweir void DrawViewShell::MapSlot( sal_uInt16 nSId )
851*cdf0e10cSrcweir {
852*cdf0e10cSrcweir 	sal_uInt16 nMappedSId = GetIdBySubId( nSId );
853*cdf0e10cSrcweir 
854*cdf0e10cSrcweir 	if( nMappedSId > 0 )
855*cdf0e10cSrcweir 	{
856*cdf0e10cSrcweir 		sal_uInt16 nID = GetArrayId( nMappedSId ) + 1;
857*cdf0e10cSrcweir 		mpSlotArray[ nID ] = nSId;
858*cdf0e10cSrcweir 	}
859*cdf0e10cSrcweir }
860*cdf0e10cSrcweir 
861*cdf0e10cSrcweir /*************************************************************************
862*cdf0e10cSrcweir |*
863*cdf0e10cSrcweir |* Ermoeglicht ueber das SlotArray ein ImageMapping
864*cdf0e10cSrcweir |*
865*cdf0e10cSrcweir \************************************************************************/
866*cdf0e10cSrcweir 
867*cdf0e10cSrcweir void DrawViewShell::UpdateToolboxImages( SfxItemSet &rSet, sal_Bool bPermanent )
868*cdf0e10cSrcweir {
869*cdf0e10cSrcweir 	if( !bPermanent )
870*cdf0e10cSrcweir 	{
871*cdf0e10cSrcweir 		sal_uInt16 nId = GetArrayId( SID_ZOOM_TOOLBOX ) + 1;
872*cdf0e10cSrcweir 		rSet.Put( TbxImageItem( SID_ZOOM_TOOLBOX, mpSlotArray[nId] ) );
873*cdf0e10cSrcweir 
874*cdf0e10cSrcweir 		nId = GetArrayId( SID_DRAWTBX_INSERT ) + 1;
875*cdf0e10cSrcweir 		rSet.Put( TbxImageItem( SID_DRAWTBX_INSERT, mpSlotArray[nId] ) );
876*cdf0e10cSrcweir 
877*cdf0e10cSrcweir 		nId = GetArrayId( SID_POSITION ) + 1;
878*cdf0e10cSrcweir 		rSet.Put( TbxImageItem( SID_POSITION, mpSlotArray[nId] ) );
879*cdf0e10cSrcweir 
880*cdf0e10cSrcweir 		nId = GetArrayId( SID_OBJECT_ALIGN ) + 1;
881*cdf0e10cSrcweir 		rSet.Put( TbxImageItem( SID_OBJECT_ALIGN, mpSlotArray[nId] ) );
882*cdf0e10cSrcweir 	}
883*cdf0e10cSrcweir 	else
884*cdf0e10cSrcweir 	{
885*cdf0e10cSrcweir 		for( sal_uInt16 nId = 0; nId < SLOTARRAY_COUNT; nId += 2 )
886*cdf0e10cSrcweir 		{
887*cdf0e10cSrcweir 			rSet.Put( TbxImageItem( mpSlotArray[nId], mpSlotArray[nId+1] ) );
888*cdf0e10cSrcweir 		}
889*cdf0e10cSrcweir 	}
890*cdf0e10cSrcweir }
891*cdf0e10cSrcweir 
892*cdf0e10cSrcweir /*************************************************************************
893*cdf0e10cSrcweir |*
894*cdf0e10cSrcweir |* Gibt den gemappten Slot zurueck
895*cdf0e10cSrcweir |*
896*cdf0e10cSrcweir \************************************************************************/
897*cdf0e10cSrcweir 
898*cdf0e10cSrcweir sal_uInt16 DrawViewShell::GetMappedSlot( sal_uInt16 nSId )
899*cdf0e10cSrcweir {
900*cdf0e10cSrcweir 	sal_uInt16 nSlot = 0;
901*cdf0e10cSrcweir 	sal_uInt16 nId = GetArrayId( nSId );
902*cdf0e10cSrcweir 	if( nId != USHRT_MAX )
903*cdf0e10cSrcweir 		nSlot = mpSlotArray[ nId+1 ];
904*cdf0e10cSrcweir 
905*cdf0e10cSrcweir 	// Wenn der Slot noch auf sich selbst gemapped ist, muss 0 zurueck-
906*cdf0e10cSrcweir 	// gegeben werden, da sonst der Slot immer wieder selbst executet
907*cdf0e10cSrcweir 	// wird. Im Array ist der Slot selbst initial vorhanden, damit das
908*cdf0e10cSrcweir 	// Image richtig angezeigt wird.
909*cdf0e10cSrcweir 	if( nSId == nSlot )
910*cdf0e10cSrcweir 		return( 0 );
911*cdf0e10cSrcweir 
912*cdf0e10cSrcweir 	return( nSlot );
913*cdf0e10cSrcweir }
914*cdf0e10cSrcweir 
915*cdf0e10cSrcweir /*************************************************************************
916*cdf0e10cSrcweir |*
917*cdf0e10cSrcweir |* Gibt die Nummer des HauptSlots im SlotArray zurueck
918*cdf0e10cSrcweir |*
919*cdf0e10cSrcweir \************************************************************************/
920*cdf0e10cSrcweir 
921*cdf0e10cSrcweir sal_uInt16 DrawViewShell::GetArrayId( sal_uInt16 nSId )
922*cdf0e10cSrcweir {
923*cdf0e10cSrcweir 	for( sal_uInt16 i = 0; i < SLOTARRAY_COUNT; i += 2 )
924*cdf0e10cSrcweir 	{
925*cdf0e10cSrcweir 		if( mpSlotArray[ i ] == nSId )
926*cdf0e10cSrcweir 			return( i );
927*cdf0e10cSrcweir 	}
928*cdf0e10cSrcweir 	DBG_ERROR( "Slot im Array nicht gefunden!" );
929*cdf0e10cSrcweir 	return( USHRT_MAX );
930*cdf0e10cSrcweir }
931*cdf0e10cSrcweir 
932*cdf0e10cSrcweir 
933*cdf0e10cSrcweir /*************************************************************************
934*cdf0e10cSrcweir |*
935*cdf0e10cSrcweir |* IMap-Dlg updaten
936*cdf0e10cSrcweir |*
937*cdf0e10cSrcweir \************************************************************************/
938*cdf0e10cSrcweir 
939*cdf0e10cSrcweir void DrawViewShell::UpdateIMapDlg( SdrObject* pObj )
940*cdf0e10cSrcweir {
941*cdf0e10cSrcweir 	if( ( pObj->ISA( SdrGrafObj ) || pObj->ISA( SdrOle2Obj ) ) && !mpDrawView->IsTextEdit() &&
942*cdf0e10cSrcweir 		 GetViewFrame()->HasChildWindow( SvxIMapDlgChildWindow::GetChildWindowId() ) )
943*cdf0e10cSrcweir 	{
944*cdf0e10cSrcweir 		Graphic 	aGraphic;
945*cdf0e10cSrcweir 		ImageMap*	pIMap = NULL;
946*cdf0e10cSrcweir 		TargetList*	pTargetList = NULL;
947*cdf0e10cSrcweir 		SdIMapInfo* pIMapInfo = GetDoc()->GetIMapInfo( pObj );
948*cdf0e10cSrcweir 
949*cdf0e10cSrcweir 		// get graphic from shape
950*cdf0e10cSrcweir 		SdrGrafObj* pGrafObj = dynamic_cast< SdrGrafObj* >( pObj );
951*cdf0e10cSrcweir 		if( pGrafObj )
952*cdf0e10cSrcweir 			aGraphic = pGrafObj->GetGraphic();
953*cdf0e10cSrcweir 
954*cdf0e10cSrcweir 		if ( pIMapInfo )
955*cdf0e10cSrcweir 		{
956*cdf0e10cSrcweir 			pIMap = (ImageMap*) &pIMapInfo->GetImageMap();
957*cdf0e10cSrcweir 			pTargetList = new TargetList;
958*cdf0e10cSrcweir 			GetViewFrame()->GetTargetList( *pTargetList );
959*cdf0e10cSrcweir 		}
960*cdf0e10cSrcweir 
961*cdf0e10cSrcweir 		SvxIMapDlgChildWindow::UpdateIMapDlg( aGraphic, pIMap, pTargetList, pObj );
962*cdf0e10cSrcweir 
963*cdf0e10cSrcweir 		// TargetListe kann von uns wieder geloescht werden
964*cdf0e10cSrcweir 		if ( pTargetList )
965*cdf0e10cSrcweir 		{
966*cdf0e10cSrcweir 			String* pEntry = pTargetList->First();
967*cdf0e10cSrcweir 			while( pEntry )
968*cdf0e10cSrcweir 			{
969*cdf0e10cSrcweir 				delete pEntry;
970*cdf0e10cSrcweir 				pEntry = pTargetList->Next();
971*cdf0e10cSrcweir 			}
972*cdf0e10cSrcweir 
973*cdf0e10cSrcweir 			delete pTargetList;
974*cdf0e10cSrcweir 		}
975*cdf0e10cSrcweir 	}
976*cdf0e10cSrcweir }
977*cdf0e10cSrcweir 
978*cdf0e10cSrcweir // -----------------------------------------------------------------------------
979*cdf0e10cSrcweir 
980*cdf0e10cSrcweir IMPL_LINK( DrawViewShell, NameObjectHdl, AbstractSvxNameDialog*, pDialog )
981*cdf0e10cSrcweir {
982*cdf0e10cSrcweir     String aName;
983*cdf0e10cSrcweir 
984*cdf0e10cSrcweir     if( pDialog )
985*cdf0e10cSrcweir         pDialog->GetName( aName );
986*cdf0e10cSrcweir 
987*cdf0e10cSrcweir     return( ( !aName.Len() || ( GetDoc() && !GetDoc()->GetObj( aName ) ) ) ? 1 : 0 );
988*cdf0e10cSrcweir }
989*cdf0e10cSrcweir 
990*cdf0e10cSrcweir } // end of namespace sd
991