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