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