xref: /trunk/main/sd/source/ui/view/drviews6.cxx (revision d49362be)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sd.hxx"
26 
27 #include "DrawViewShell.hxx"
28 #include <vcl/metaact.hxx>
29 #include <sfx2/request.hxx>
30 #include <sfx2/dispatch.hxx>
31 #include <vcl/msgbox.hxx>
32 #include <sfx2/viewfrm.hxx>
33 #include <svx/svdograf.hxx>
34 #ifndef _SVXIDS_HXX
35 #include <svx/svxids.hrc>
36 #endif
37 #ifndef _FONTWORK_HXX
38 #include <svx/fontwork.hxx>
39 #endif
40 #ifndef _BMPMASK_HXX
41 #include <svx/bmpmask.hxx>
42 #endif
43 #ifndef _SVX_GALBRWS_HXX
44 #include <svx/galbrws.hxx>
45 #endif
46 #ifndef _IMAPDLG_HXX
47 #include <svx/imapdlg.hxx>
48 #endif
49 #include <svx/colrctrl.hxx>
50 #include <svx/f3dchild.hxx>
51 #include "optsitem.hxx"
52 #include <svx/extrusionbar.hxx>
53 #include <svx/fontworkbar.hxx>
54 #include <svx/tbxcustomshapes.hxx>
55 #ifndef _AVMEDIA_MEDIAPLAYER_HXX
56 #include <avmedia/mediaplayer.hxx>
57 #endif
58 
59 #include "app.hrc"
60 #include "strings.hrc"
61 #include "glob.hrc"
62 
63 #include "app.hxx"
64 #include "animobjs.hxx"
65 #include "AnimationChildWindow.hxx"
66 #include "NavigatorChildWindow.hxx"
67 #include "LayerDialogChildWindow.hxx"
68 #include "sdresid.hxx"
69 #include "fupoor.hxx"
70 #include "fusldlg.hxx"
71 #include "drawdoc.hxx"
72 #include "fuexpand.hxx"
73 #include "fusumry.hxx"
74 #include "fucushow.hxx"
75 #include "drawview.hxx"
76 #include "FrameView.hxx"
77 #include "Window.hxx"
78 #include "DrawDocShell.hxx"
79 #include "framework/FrameworkHelper.hxx"
80 #include <svx/svdoashp.hxx>
81 
82 namespace sd {
83 
84 /*************************************************************************
85 |*
86 |* SfxRequests fuer FontWork bearbeiten
87 |*
88 \************************************************************************/
89 
90 void DrawViewShell::ExecFormText(SfxRequest& rReq)
91 {
92 	// waehrend einer Diashow wird nichts ausgefuehrt!
93 	if(HasCurrentFunction(SID_PRESENTATION))
94 		return;
95 
96 	CheckLineTo (rReq);
97 
98 	const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
99 
100 	if ( rMarkList.GetMarkCount() == 1 && rReq.GetArgs() &&
101 		 mpDrawView && !mpDrawView->IsPresObjSelected() )
102 	{
103 		const SfxItemSet& rSet = *rReq.GetArgs();
104 
105 		if ( mpDrawView->IsTextEdit() )
106 			mpDrawView->SdrEndTextEdit();
107 
108 		mpDrawView->SetAttributes(rSet);
109 	}
110 }
111 
112 /*************************************************************************
113 |*
114 |* Statuswerte fuer FontWork zurueckgeben
115 |*
116 \************************************************************************/
117 
118 void DrawViewShell::GetFormTextState(SfxItemSet& rSet)
119 {
120 	const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
121 	const SdrObject* pObj = NULL;
122 	SvxFontWorkDialog* pDlg = NULL;
123 
124 	sal_uInt16 nId = SvxFontWorkChildWindow::GetChildWindowId();
125 
126 	if ( GetViewFrame()->HasChildWindow(nId) )
127 		pDlg = (SvxFontWorkDialog*)(GetViewFrame()->GetChildWindow(nId)->GetWindow());
128 
129 	if ( rMarkList.GetMarkCount() == 1 )
130 		pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
131 
132     const SdrTextObj* pTextObj = dynamic_cast< const SdrTextObj* >(pObj);
133     const bool bDeactivate(
134         !pObj ||
135         !pTextObj ||
136         !pTextObj->HasText() ||
137         dynamic_cast< const SdrObjCustomShape* >(pObj)); // #121538# no FontWork for CustomShapes
138 
139     if(bDeactivate)
140 	{
141 // automatisches Auf/Zuklappen des FontWork-Dialog; erstmal deaktiviert
142 //		if ( pDlg )
143 //			pDlg->SetActive(sal_False);
144 
145         rSet.DisableItem(XATTR_FORMTXTSTYLE);
146         rSet.DisableItem(XATTR_FORMTXTADJUST);
147         rSet.DisableItem(XATTR_FORMTXTDISTANCE);
148         rSet.DisableItem(XATTR_FORMTXTSTART);
149         rSet.DisableItem(XATTR_FORMTXTMIRROR);
150         rSet.DisableItem(XATTR_FORMTXTHIDEFORM);
151         rSet.DisableItem(XATTR_FORMTXTOUTLINE);
152         rSet.DisableItem(XATTR_FORMTXTSHADOW);
153         rSet.DisableItem(XATTR_FORMTXTSHDWCOLOR);
154         rSet.DisableItem(XATTR_FORMTXTSHDWXVAL);
155         rSet.DisableItem(XATTR_FORMTXTSHDWYVAL);
156 	}
157 	else
158 	{
159 		if ( pDlg )
160 		{
161 //			pDlg->SetActive();
162 			pDlg->SetColorTable(GetDoc()->GetColorTable());
163 		}
164 
165 		SfxItemSet aSet( GetDoc()->GetPool() );
166 		mpDrawView->GetAttributes( aSet );
167 		rSet.Set( aSet );
168 	}
169 }
170 
171 /*************************************************************************
172 |*
173 |* SfxRequests fuer Animator bearbeiten
174 |*
175 \************************************************************************/
176 
177 void DrawViewShell::ExecAnimationWin( SfxRequest& rReq )
178 {
179 	// waehrend einer Diashow wird nichts ausgefuehrt!
180 	if (HasCurrentFunction(SID_PRESENTATION))
181 		return;
182 
183 	CheckLineTo (rReq);
184 
185 	sal_uInt16 nSId = rReq.GetSlot();
186 
187 	switch( nSId )
188 	{
189 		case SID_ANIMATOR_INIT:
190 		case SID_ANIMATOR_ADD:
191 		case SID_ANIMATOR_CREATE:
192 		{
193 			AnimationWindow* pAnimWin;
194 			sal_uInt16 nId = AnimationChildWindow::GetChildWindowId();
195 			//((const SfxUInt16Item&)(rReq.GetArgs()->Get(nSId))).GetValue();
196 
197 			pAnimWin = static_cast<AnimationWindow*>(
198                 GetViewFrame()->GetChildWindow(nId)->GetWindow());
199 
200 			if ( pAnimWin )
201 			{
202                 if( nSId == SID_ANIMATOR_ADD )
203 					pAnimWin->AddObj( *mpDrawView );
204 				else if( nSId == SID_ANIMATOR_CREATE )
205 					pAnimWin->CreateAnimObj( *mpDrawView );
206 			}
207 		}
208 		break;
209 
210 		default:
211 		break;
212 	}
213 }
214 
215 /*************************************************************************
216 |*
217 |* Statuswerte fuer Animator zurueckgeben
218 |*
219 |* nValue == 0 -> Kein Button
220 |* nValue == 1 -> Button 'uebernehmen'
221 |* nValue == 2 -> Button 'einzeln uebernehmen'
222 |* nValue == 3 -> Buttons 'uebernehmen' und 'einzeln uebernehmen'
223 |*
224 \************************************************************************/
225 
226 void DrawViewShell::GetAnimationWinState( SfxItemSet& rSet )
227 {
228 	// Hier koennten Buttons etc. disabled werden
229 	sal_uInt16 nValue;
230 
231 	const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
232 	sal_uLong nMarkCount = rMarkList.GetMarkCount();
233 
234 	if( nMarkCount == 0 )
235 		nValue = 0;
236 	else if( nMarkCount > 1 )
237 		nValue = 3;
238 	else // 1 Objekt
239 	{
240 		const SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
241 		sal_uInt32 nInv = pObj->GetObjInventor();
242 		sal_uInt16 nId	= pObj->GetObjIdentifier();
243 		// 1 selektiertes Gruppenobjekt
244 		if( nInv == SdrInventor && nId == OBJ_GRUP )
245 			nValue = 3;
246 		else if( nInv == SdrInventor && nId == OBJ_GRAF ) // Anim. GIF ?
247 		{
248 			sal_uInt16 nCount = 0;
249 
250 			if( ( (SdrGrafObj*) pObj )->IsAnimated() )
251 				nCount = ( (SdrGrafObj*) pObj )->GetGraphic().GetAnimation().Count();
252 			if( nCount > 0 )
253 				nValue = 2;
254 			else
255 				nValue = 1;
256 		}
257 		else
258 			nValue = 1;
259 	}
260 	rSet.Put( SfxUInt16Item( SID_ANIMATOR_STATE, nValue ) );
261 }
262 
263 /*************************************************************************
264 |*
265 |* Statuswerte fuer SfxChildWindows setzen
266 |*
267 \************************************************************************/
268 
269 void DrawViewShell::SetChildWindowState( SfxItemSet& rSet )
270 {
271 	// Stati der SfxChild-Windows (Animator, Fontwork etc.)
272 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_FONTWORK ) )
273 	{
274 		sal_uInt16 nId = SvxFontWorkChildWindow::GetChildWindowId();
275 		rSet.Put(SfxBoolItem(SID_FONTWORK, GetViewFrame()->HasChildWindow(nId)));
276 	}
277 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_COLOR_CONTROL ) )
278 	{
279 		sal_uInt16 nId = SvxColorChildWindow::GetChildWindowId();
280 		rSet.Put(SfxBoolItem(SID_COLOR_CONTROL, GetViewFrame()->HasChildWindow(nId)));
281 	}
282 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ANIMATION_OBJECTS ) )
283 	{
284 		sal_uInt16 nId = AnimationChildWindow::GetChildWindowId();
285 		rSet.Put( SfxBoolItem( SID_ANIMATION_OBJECTS, GetViewFrame()->HasChildWindow( nId ) ) );
286 	}
287 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_NAVIGATOR ) )
288 	{
289 		sal_uInt16 nId = SID_NAVIGATOR;
290 		rSet.Put( SfxBoolItem( SID_NAVIGATOR, GetViewFrame()->HasChildWindow( nId ) ) );
291 	}
292 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_BMPMASK ) )
293 	{
294 		sal_uInt16 nId = SvxBmpMaskChildWindow::GetChildWindowId();
295 		rSet.Put( SfxBoolItem( SID_BMPMASK, GetViewFrame()->HasChildWindow( nId ) ) );
296 	}
297 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GALLERY ) )
298 	{
299 		sal_uInt16 nId = GalleryChildWindow::GetChildWindowId();
300 		rSet.Put( SfxBoolItem( SID_GALLERY, GetViewFrame()->HasChildWindow( nId ) ) );
301 	}
302 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_IMAP ) )
303 	{
304 		sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
305 		rSet.Put( SfxBoolItem( SID_IMAP, GetViewFrame()->HasChildWindow( nId ) ) );
306 	}
307 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_LAYER_DIALOG_WIN ) )
308 	{
309 		sal_uInt16 nId = LayerDialogChildWindow::GetChildWindowId();
310 		rSet.Put( SfxBoolItem( SID_LAYER_DIALOG_WIN, GetViewFrame()->HasChildWindow( nId ) ) );
311 	}
312 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_3D_WIN ) )
313 	{
314 		sal_uInt16 nId = Svx3DChildWindow::GetChildWindowId();
315 		rSet.Put( SfxBoolItem( SID_3D_WIN, GetViewFrame()->HasChildWindow( nId ) ) );
316 	}
317 	if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_AVMEDIA_PLAYER ) )
318 	{
319 		sal_uInt16 nId = ::avmedia::MediaPlayer::GetChildWindowId();
320 		rSet.Put( SfxBoolItem( SID_AVMEDIA_PLAYER, GetViewFrame()->HasChildWindow( nId ) ) );
321 	}
322 }
323 
324 
325 /*************************************************************************
326 |*
327 |* SfxRequests fuer Pipette bearbeiten
328 |*
329 \************************************************************************/
330 
331 void DrawViewShell::ExecBmpMask( SfxRequest& rReq )
332 {
333 	// waehrend einer Diashow wird nichts ausgefuehrt!
334 	if (HasCurrentFunction(SID_PRESENTATION))
335 		return;
336 
337 	switch ( rReq.GetSlot() )
338 	{
339 		case ( SID_BMPMASK_PIPETTE ) :
340 		{
341 			mbPipette = ( (const SfxBoolItem&) ( rReq.GetArgs()->
342 					   Get( SID_BMPMASK_PIPETTE ) ) ).GetValue();
343 		}
344 		break;
345 
346 		case ( SID_BMPMASK_EXEC ) :
347 		{
348 			SdrGrafObj* pObj = 0;
349 			if( mpDrawView && mpDrawView->GetMarkedObjectList().GetMarkCount() )
350 				pObj = dynamic_cast< SdrGrafObj* >( mpDrawView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj() );
351 
352 			if ( pObj && !mpDrawView->IsTextEdit() )
353 			{
354 				SdrGrafObj*	pNewObj = (SdrGrafObj*) pObj->Clone();
355 				sal_Bool		bCont = sal_True;
356 
357 				if( pNewObj->IsLinkedGraphic() )
358 				{
359 					QueryBox aQBox( (Window*) GetActiveWindow(), WB_YES_NO | WB_DEF_YES,
360 									String( SdResId( STR_RELEASE_GRAPHICLINK ) ) );
361 
362 					if( RET_YES == aQBox.Execute() )
363 						pNewObj->ReleaseGraphicLink();
364 					else
365 					{
366 						delete pNewObj;
367 						bCont = sal_False;
368 					}
369 				}
370 
371 				if( bCont )
372 				{
373 					const Graphic&	rOldGraphic = pNewObj->GetGraphic();
374 					const Graphic	aNewGraphic( ( (SvxBmpMask*) GetViewFrame()->GetChildWindow(
375 												 SvxBmpMaskChildWindow::GetChildWindowId() )->GetWindow() )->
376 												 Mask( rOldGraphic ) );
377 
378 					if( aNewGraphic != rOldGraphic )
379 					{
380 						SdrPageView* pPV = mpDrawView->GetSdrPageView();
381 
382 						pNewObj->SetEmptyPresObj( sal_False );
383 						pNewObj->SetGraphic( ( (SvxBmpMask*) GetViewFrame()->GetChildWindow(
384 											 SvxBmpMaskChildWindow::GetChildWindowId() )->GetWindow() )->
385 											 Mask( pNewObj->GetGraphic() ) );
386 
387 						String aStr( mpDrawView->GetDescriptionOfMarkedObjects() );
388 						aStr += (sal_Unicode)( ' ' ), aStr += String( SdResId( STR_EYEDROPPER ) );
389 
390 						mpDrawView->BegUndo( aStr );
391 						mpDrawView->ReplaceObjectAtView( pObj, *pPV, pNewObj );
392 						mpDrawView->EndUndo();
393 					}
394 				}
395 			}
396 		}
397 		break;
398 
399 		default:
400 		break;
401 	}
402 }
403 
404 /*************************************************************************
405 |*
406 |*
407 |*
408 \************************************************************************/
409 
410 void DrawViewShell::GetBmpMaskState( SfxItemSet& rSet )
411 {
412 	const SdrMarkList&	rMarkList = mpDrawView->GetMarkedObjectList();
413 	const SdrObject*	pObj = NULL;
414 	sal_uInt16				nId = SvxBmpMaskChildWindow::GetChildWindowId();
415 	SvxBmpMask* 		pDlg = NULL;
416 	sal_Bool				bEnable = sal_False;
417 
418 	if ( GetViewFrame()->HasChildWindow( nId ) )
419 	{
420 		pDlg = (SvxBmpMask*) ( GetViewFrame()->GetChildWindow( nId )->GetWindow() );
421 
422 		if ( pDlg->NeedsColorTable() )
423 			pDlg->SetColorTable( GetDoc()->GetColorTable() );
424 	}
425 
426 	if ( rMarkList.GetMarkCount() == 1 )
427 		pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
428 
429 	// valid graphic object?
430 	if( pObj && pObj->ISA( SdrGrafObj ) &&
431         !((SdrGrafObj*) pObj)->IsEPS() &&
432         !mpDrawView->IsTextEdit() )
433     {
434 		bEnable = sal_True;
435     }
436 
437 	// put value
438 	rSet.Put( SfxBoolItem( SID_BMPMASK_EXEC, bEnable ) );
439 }
440 
441 /*************************************************************************
442 |*
443 |* SfxRequests fuer temporaere Funktionen
444 |*
445 \************************************************************************/
446 
447 void DrawViewShell::FuTemp04(SfxRequest& rReq)
448 {
449 	sal_uInt16 nSId = rReq.GetSlot();
450 	switch( nSId )
451 	{
452 		case SID_FONTWORK:
453 		{
454 			if ( rReq.GetArgs() )
455 			{
456 				GetViewFrame()->SetChildWindow(SvxFontWorkChildWindow::GetChildWindowId(),
457 										((const SfxBoolItem&) (rReq.GetArgs()->
458 										Get(SID_FONTWORK))).GetValue());
459 			}
460 			else
461 			{
462 				GetViewFrame()->ToggleChildWindow( SvxFontWorkChildWindow::GetChildWindowId() );
463 			}
464 
465 			GetViewFrame()->GetBindings().Invalidate(SID_FONTWORK);
466 			Cancel();
467 			rReq.Ignore ();
468 		}
469 		break;
470 
471 		case SID_COLOR_CONTROL:
472 		{
473 			if ( rReq.GetArgs() )
474 				GetViewFrame()->SetChildWindow(SvxColorChildWindow::GetChildWindowId(),
475 										((const SfxBoolItem&) (rReq.GetArgs()->
476 										Get(SID_COLOR_CONTROL))).GetValue());
477 			else
478 				GetViewFrame()->ToggleChildWindow(SvxColorChildWindow::GetChildWindowId() );
479 
480 			GetViewFrame()->GetBindings().Invalidate(SID_COLOR_CONTROL);
481 			Cancel();
482 			rReq.Ignore ();
483 		}
484 		break;
485 
486 		case SID_EXTRUSION_TOOGLE:
487 		case SID_EXTRUSION_TILT_DOWN:
488 		case SID_EXTRUSION_TILT_UP:
489 		case SID_EXTRUSION_TILT_LEFT:
490 		case SID_EXTRUSION_TILT_RIGHT:
491 		case SID_EXTRUSION_3D_COLOR:
492 		case SID_EXTRUSION_DEPTH:
493 		case SID_EXTRUSION_DIRECTION:
494 		case SID_EXTRUSION_PROJECTION:
495 		case SID_EXTRUSION_LIGHTING_DIRECTION:
496 		case SID_EXTRUSION_LIGHTING_INTENSITY:
497 		case SID_EXTRUSION_SURFACE:
498 		case SID_EXTRUSION_DEPTH_FLOATER:
499 		case SID_EXTRUSION_DIRECTION_FLOATER:
500 		case SID_EXTRUSION_LIGHTING_FLOATER:
501 		case SID_EXTRUSION_SURFACE_FLOATER:
502 		case SID_EXTRUSION_DEPTH_DIALOG:
503 			svx::ExtrusionBar::execute( mpDrawView, rReq, GetViewFrame()->GetBindings() );
504 			Cancel();
505 			rReq.Ignore ();
506 			break;
507 
508 		case SID_FONTWORK_SHAPE:
509 		case SID_FONTWORK_SHAPE_TYPE:
510 		case SID_FONTWORK_ALIGNMENT:
511 		case SID_FONTWORK_SAME_LETTER_HEIGHTS:
512 		case SID_FONTWORK_CHARACTER_SPACING:
513 		case SID_FONTWORK_KERN_CHARACTER_PAIRS:
514 		case SID_FONTWORK_GALLERY_FLOATER:
515 		case SID_FONTWORK_CHARACTER_SPACING_FLOATER:
516 		case SID_FONTWORK_ALIGNMENT_FLOATER:
517 		case SID_FONTWORK_CHARACTER_SPACING_DIALOG:
518 			svx::FontworkBar::execute( mpDrawView, rReq, GetViewFrame()->GetBindings() );
519 			Cancel();
520 			rReq.Ignore ();
521 			break;
522 
523 		case SID_BMPMASK:
524 		{
525 			GetViewFrame()->ToggleChildWindow( SvxBmpMaskChildWindow::GetChildWindowId() );
526 			GetViewFrame()->GetBindings().Invalidate( SID_BMPMASK );
527 
528 			Cancel();
529 			rReq.Ignore ();
530 		}
531 		break;
532 
533 		case SID_GALLERY:
534 		{
535 			GetViewFrame()->ToggleChildWindow( GalleryChildWindow::GetChildWindowId() );
536 			GetViewFrame()->GetBindings().Invalidate( SID_GALLERY );
537 
538 			Cancel();
539 			rReq.Ignore ();
540 		}
541 		break;
542 
543 		case SID_NAVIGATOR:
544 		{
545 			if ( rReq.GetArgs() )
546 				GetViewFrame()->SetChildWindow(SID_NAVIGATOR,
547 										((const SfxBoolItem&) (rReq.GetArgs()->
548 										Get(SID_NAVIGATOR))).GetValue());
549 			else
550 				GetViewFrame()->ToggleChildWindow( SID_NAVIGATOR );
551 
552 			GetViewFrame()->GetBindings().Invalidate(SID_NAVIGATOR);
553 			Cancel();
554 			rReq.Ignore ();
555 		}
556 		break;
557 
558 		case SID_ANIMATION_OBJECTS:
559 		{
560 			if ( rReq.GetArgs() )
561 				GetViewFrame()->SetChildWindow(
562                     AnimationChildWindow::GetChildWindowId(),
563                     ((const SfxBoolItem&) (rReq.GetArgs()->
564                         Get(SID_ANIMATION_OBJECTS))).GetValue());
565 			else
566 				GetViewFrame()->ToggleChildWindow(
567                     AnimationChildWindow::GetChildWindowId() );
568 
569 			GetViewFrame()->GetBindings().Invalidate(SID_ANIMATION_OBJECTS);
570 			Cancel();
571 			rReq.Ignore ();
572 		}
573 		break;
574 
575 		case SID_CUSTOM_ANIMATION_PANEL:
576 		{
577             // Make the slide transition panel visible (expand it) in the
578             // tool pane.
579             framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
580                 framework::FrameworkHelper::msCustomAnimationTaskPanelURL);
581 
582 			Cancel();
583 			rReq.Done ();
584 		}
585 		break;
586 
587 		case SID_SLIDE_TRANSITIONS_PANEL:
588 		{
589             // Make the slide transition panel visible (expand it) in the
590             // tool pane.
591             framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
592                 framework::FrameworkHelper::msSlideTransitionTaskPanelURL);
593 
594 			Cancel();
595 			rReq.Done ();
596 		}
597 		break;
598 
599 		case SID_3D_WIN:
600 		{
601 			if ( rReq.GetArgs() )
602 				GetViewFrame()->SetChildWindow( Svx3DChildWindow::GetChildWindowId(),
603 										((const SfxBoolItem&) (rReq.GetArgs()->
604 										Get( SID_3D_WIN ))).GetValue());
605 			else
606 				GetViewFrame()->ToggleChildWindow( Svx3DChildWindow::GetChildWindowId() );
607 
608 			GetViewFrame()->GetBindings().Invalidate( SID_3D_WIN );
609 			Cancel();
610 			rReq.Ignore ();
611 		}
612 		break;
613 
614 		case SID_CONVERT_TO_3D_LATHE_FAST:
615 		{
616 			// Der Aufruf ist ausreichend. Die Initialisierung per Start3DCreation und CreateMirrorPolygons
617 			// ist nicht mehr noetig, falls der Parameter sal_True uebergeben wird. Dann wird sofort und
618 			// ohne Benutzereingriff ein gekippter Rotationskoerper mit einer Achse links neben dem
619 			// Umschliessenden Rechteck der slektierten Objekte gezeichnet.
620 			mpDrawView->SdrEndTextEdit();
621 			if(GetActiveWindow())
622 				GetActiveWindow()->EnterWait();
623 			mpDrawView->End3DCreation(sal_True);
624 			Cancel();
625 			rReq.Ignore();
626 			if(GetActiveWindow())
627 				GetActiveWindow()->LeaveWait();
628 		}
629 		break;
630 
631 		case SID_PRESENTATION_DLG:
632 		{
633 			SetCurrentFunction( FuSlideShowDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
634 			Cancel();
635 		}
636 		break;
637 
638 		case SID_CUSTOMSHOW_DLG:
639 		{
640 			SetCurrentFunction( FuCustomShowDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
641 			Cancel();
642 		}
643 		break;
644 
645 		case SID_EXPAND_PAGE:
646 		{
647 			SetCurrentFunction( FuExpandPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
648 			Cancel();
649 		}
650 		break;
651 
652 		case SID_SUMMARY_PAGE:
653 		{
654 			mpDrawView->SdrEndTextEdit();
655 			SetCurrentFunction( FuSummaryPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
656 			Cancel();
657 		}
658 		break;
659 
660 		case SID_AVMEDIA_PLAYER:
661 		{
662 			GetViewFrame()->ToggleChildWindow( ::avmedia::MediaPlayer::GetChildWindowId() );
663 			GetViewFrame()->GetBindings().Invalidate( SID_AVMEDIA_PLAYER );
664 			Cancel();
665 			rReq.Ignore ();
666 		}
667 		break;
668 
669 		case SID_LAYER_DIALOG_WIN:
670 		{
671 			if ( rReq.GetArgs() )
672 			{
673 				GetViewFrame()->SetChildWindow(
674                     LayerDialogChildWindow::GetChildWindowId(),
675                     ((const SfxBoolItem&) (rReq.GetArgs()->
676                         Get(SID_LAYER_DIALOG_WIN))).GetValue());
677 			}
678 			else
679 			{
680 				GetViewFrame()->ToggleChildWindow(
681                     LayerDialogChildWindow::GetChildWindowId());
682 			}
683 
684 			GetViewFrame()->GetBindings().Invalidate(SID_LAYER_DIALOG_WIN);
685 			Cancel();
686 			rReq.Ignore ();
687 		}
688 		break;
689 
690         case SID_DISPLAY_MASTER_BACKGROUND:
691         case SID_DISPLAY_MASTER_OBJECTS:
692         {
693             // Determine current page and toggle visibility of layers
694             // associated with master page background or master page shapes.
695             SdPage* pPage = GetActualPage();
696             if (pPage != NULL
697                 && GetDoc() != NULL)
698             {
699                 SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
700                 SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
701                 sal_uInt8 aLayerId;
702                 if (nSId == SID_DISPLAY_MASTER_BACKGROUND)
703                     aLayerId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False);
704                 else
705                     aLayerId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False);
706                 aVisibleLayers.Set(aLayerId, !aVisibleLayers.IsSet(aLayerId));
707                 pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
708             }
709             Cancel();
710             rReq.Ignore ();
711         }
712         break;
713 
714 		default:
715 		{
716 			DBG_ASSERT( 0, "Slot ohne Funktion" );
717 			Cancel();
718 			rReq.Ignore ();
719 		}
720 		break;
721 	}
722 }
723 
724 } // end of namespace sd
725