LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/sd/source/ui/view - drviews7.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 294 951 30.9 %
Date: 2013-07-09 Functions: 4 10 40.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
      21             : #include <com/sun/star/lang/Locale.hpp>
      22             : #include <com/sun/star/linguistic2/XThesaurus.hpp>
      23             : #include <svx/fmglob.hxx>
      24             : #include <svx/globl3d.hxx>
      25             : #include <svx/svdouno.hxx>
      26             : #include <editeng/eeitem.hxx>
      27             : #include <editeng/flditem.hxx>
      28             : #include <editeng/outlobj.hxx>
      29             : #include <officecfg/Office/Common.hxx>
      30             : #include <officecfg/Office/Impress.hxx>
      31             : #include <svx/svxids.hrc>
      32             : #include <svx/svdpagv.hxx>
      33             : #include <svx/clipfmtitem.hxx>
      34             : #include <svx/fmshell.hxx>
      35             : #include <svl/eitem.hxx>
      36             : #include <svl/aeitem.hxx>
      37             : #include <svl/stritem.hxx>
      38             : #include <svl/visitem.hxx>
      39             : #include <svl/whiter.hxx>
      40             : #include <sfx2/dispatch.hxx>
      41             : #include <svx/svdograf.hxx>
      42             : #include <editeng/unolingu.hxx>
      43             : #include <svx/extrusionbar.hxx>
      44             : #include <svx/fontworkbar.hxx>
      45             : 
      46             : // #UndoRedo#
      47             : #include <svl/slstitm.hxx>
      48             : #include <sfx2/app.hxx>
      49             : #include <svtools/insdlg.hxx>
      50             : #include <unotools/moduleoptions.hxx>
      51             : #include <svl/languageoptions.hxx>
      52             : #include <comphelper/processfactory.hxx>
      53             : #include <sfx2/request.hxx>
      54             : 
      55             : #include <svx/pfiledlg.hxx>
      56             : #include <svx/grafctrl.hxx>
      57             : #include <svtools/cliplistener.hxx>
      58             : #include <sfx2/viewfrm.hxx>
      59             : 
      60             : #include "app.hrc"
      61             : #include "glob.hrc"
      62             : #include "res_bmp.hrc"
      63             : #include "PresentationViewShell.hxx"
      64             : 
      65             : #include "Outliner.hxx"
      66             : #include "drawdoc.hxx"
      67             : #include "sdresid.hxx"
      68             : #include "sdpage.hxx"
      69             : #include "Client.hxx"
      70             : #include "DrawDocShell.hxx"
      71             : #include "zoomlist.hxx"
      72             : #include "slideshow.hxx"
      73             : #include "drawview.hxx"
      74             : #include "ViewShellBase.hxx"
      75             : #include "ViewShellManager.hxx"
      76             : #include "LayerTabBar.hxx"
      77             : #include "fupoor.hxx"
      78             : #include "Window.hxx"
      79             : #include "fuediglu.hxx"
      80             : #include "fubullet.hxx"
      81             : #include "fuformatpaintbrush.hxx"
      82             : 
      83             : using namespace ::com::sun::star;
      84             : using namespace ::com::sun::star::uno;
      85             : using namespace ::com::sun::star::lang;
      86             : using namespace ::com::sun::star::linguistic2;
      87             : 
      88             : /** Create a list of clipboard formats that are supported both from the
      89             :     current clipboard content and the DrawViewShell.
      90             :     The list is stored in a new instance of SvxClipboardFmtItem.
      91             : */
      92             : SAL_WNODEPRECATED_DECLARATIONS_PUSH
      93           0 : ::std::auto_ptr<SvxClipboardFmtItem> GetSupportedClipboardFormats (
      94             :     TransferableDataHelper& rDataHelper)
      95             : {
      96             :     ::std::auto_ptr<SvxClipboardFmtItem> pResult (
      97           0 :         new SvxClipboardFmtItem(SID_CLIPBOARD_FORMAT_ITEMS));
      98             : 
      99           0 :     sal_uInt32 nFormatCount (rDataHelper.GetFormatCount());
     100           0 :     for (sal_uInt32 i=0; i<nFormatCount; i++)
     101             :     {
     102           0 :         const SotFormatStringId nTestFormat = rDataHelper.GetFormat(i);
     103             : 
     104             :         // Check if the current format is the same as one that has already
     105             :         // been handled.
     106           0 :         bool bDuplicate (false);
     107           0 :         for (sal_uInt32 j=0; j<i; j++)
     108             :         {
     109           0 :             if (nTestFormat == rDataHelper.GetFormat(j))
     110             :             {
     111           0 :                 bDuplicate = true;
     112           0 :                 break;
     113             :             }
     114             :         }
     115             : 
     116             :         // Look up the format among those that are supported by the
     117             :         // DrawViewShell.
     118           0 :         if ( ! bDuplicate)
     119             :         {
     120           0 :             switch (nTestFormat)
     121             :             {
     122             :                 case SOT_FORMATSTR_ID_EMBED_SOURCE:
     123             :                 {
     124           0 :                     String sName;
     125             : 
     126           0 :                     TransferableObjectDescriptor aDescriptor;
     127           0 :                     if (rDataHelper.GetTransferableObjectDescriptor(
     128           0 :                         SOT_FORMATSTR_ID_OBJECTDESCRIPTOR, aDescriptor))
     129             :                         {
     130           0 :                             sName = aDescriptor.maTypeName;
     131             :                         }
     132           0 :                     if (sName.Len() > 0)
     133           0 :                         pResult->AddClipbrdFormat(nTestFormat, sName);
     134             :                     else
     135           0 :                         pResult->AddClipbrdFormat(nTestFormat);
     136             : 
     137           0 :                     break;
     138             :                 }
     139             : 
     140             :                 case SOT_FORMATSTR_ID_LINK_SOURCE:
     141             :                 case SOT_FORMATSTR_ID_DRAWING:
     142             :                 case SOT_FORMATSTR_ID_SVXB:
     143             :                 case FORMAT_GDIMETAFILE:
     144             :                 case FORMAT_BITMAP:
     145             :                 case SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK:
     146             :                 case FORMAT_STRING:
     147             :                 case SOT_FORMATSTR_ID_HTML:
     148             :                 case FORMAT_RTF:
     149             :                 case SOT_FORMATSTR_ID_EDITENGINE:
     150           0 :                     pResult->AddClipbrdFormat(nTestFormat);
     151           0 :                     break;
     152             :             }
     153             :         }
     154             :     }
     155             : 
     156             :     // Check some OLE formats whose names are handled differently.
     157           0 :     SotFormatStringId nFormat (SOT_FORMATSTR_ID_EMBED_SOURCE_OLE);
     158           0 :     bool bHasFormat (rDataHelper.HasFormat(nFormat));
     159           0 :     if ( ! bHasFormat)
     160             :     {
     161           0 :         bHasFormat = rDataHelper.HasFormat(nFormat);
     162             :     }
     163           0 :     if (bHasFormat)
     164             :     {
     165           0 :         String sName;
     166           0 :         String sSource;
     167           0 :         if (SvPasteObjectHelper::GetEmbeddedName (rDataHelper, sName, sSource, nFormat))
     168           0 :             pResult->AddClipbrdFormat (nFormat, sName);
     169             :     }
     170             : 
     171           0 :     return pResult;
     172             : }
     173             : SAL_WNODEPRECATED_DECLARATIONS_POP
     174             : 
     175             : namespace sd {
     176             : 
     177           0 : IMPL_LINK( DrawViewShell, ClipboardChanged, TransferableDataHelper*, pDataHelper )
     178             : {
     179           0 :     if ( pDataHelper )
     180             :     {
     181           0 :         mbPastePossible = ( pDataHelper->GetFormatCount() != 0 );
     182             : 
     183             :         // Update the list of supported clipboard formats according to the
     184             :         // new clipboard content.
     185             :         // There are some stack traces that indicate the possibility of the
     186             :         // DrawViewShell destructor called during the call to
     187             :         // GetSupportedClipboardFormats().  If that really has happened then
     188             :         // exit immediately.
     189             :         TransferableDataHelper aDataHelper (
     190           0 :             TransferableDataHelper::CreateFromSystemClipboard(GetActiveWindow()));
     191             :         SAL_WNODEPRECATED_DECLARATIONS_PUSH
     192           0 :         ::std::auto_ptr<SvxClipboardFmtItem> pFormats (GetSupportedClipboardFormats(aDataHelper));
     193             :         SAL_WNODEPRECATED_DECLARATIONS_POP
     194           0 :         if (mpDrawView == NULL)
     195           0 :             return 0;
     196           0 :         mpCurrentClipboardFormats = pFormats;
     197             : 
     198           0 :         SfxBindings& rBindings = GetViewFrame()->GetBindings();
     199           0 :         rBindings.Invalidate( SID_PASTE );
     200           0 :         rBindings.Invalidate( SID_PASTE_SPECIAL );
     201           0 :         rBindings.Invalidate( SID_CLIPBOARD_FORMAT_ITEMS );
     202             :     }
     203           0 :     return 0;
     204             : }
     205             : 
     206           0 : void DrawViewShell::GetDrawAttrState(SfxItemSet& rSet)
     207             : {
     208           0 :     SfxItemSet aSet( mpDrawView->GetGeoAttrFromMarked() );
     209           0 :     rSet.Put(aSet,sal_False);
     210           0 : }
     211             : 
     212        3280 : void DrawViewShell::GetMenuState( SfxItemSet &rSet )
     213             : {
     214        3280 :     if (mpDrawView == NULL)
     215             :     {
     216             :         // This assertion and return are here to prevent crashes.
     217             :         DBG_ASSERT(mpDrawView!=NULL, "Please report this assertion to the Impress team.");
     218           0 :         return;
     219             :     }
     220             : 
     221        3280 :     ViewShell::GetMenuState(rSet);
     222        3280 :     sal_Bool bDisableVerticalText = !SvtLanguageOptions().IsVerticalTextEnabled();
     223             : 
     224        3280 :     if ( bDisableVerticalText )
     225             :     {
     226        3280 :         rSet.DisableItem( SID_DRAW_FONTWORK_VERTICAL );
     227        3280 :         rSet.DisableItem( SID_DRAW_CAPTION_VERTICAL );
     228        3280 :         rSet.DisableItem( SID_TEXT_FITTOSIZE_VERTICAL );
     229        3280 :         rSet.DisableItem( SID_DRAW_TEXT_VERTICAL );
     230             :     }
     231             : 
     232        3280 :     bool bConvertToPathPossible = mpDrawView->IsConvertToPathObjPossible(sal_False);
     233             : 
     234        3280 :     const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
     235        3280 :     const sal_uLong nMarkCount = rMarkList.GetMarkCount();
     236             : 
     237             :     //format paintbrush
     238        3280 :     FuFormatPaintBrush::GetMenuState( *this, rSet );
     239             : 
     240             :     // State of SfxChild-Windows (Animator, Fontwork etc.)
     241        3280 :     SetChildWindowState( rSet );
     242             : 
     243             :     // map images of toolboxes (only zoom)
     244        3280 :     UpdateToolboxImages( rSet, sal_False );
     245             : 
     246        3280 :     if(HasCurrentFunction())
     247             :     {
     248        3280 :         sal_uInt16 nSId = GetCurrentFunction()->GetSlotID();
     249             : 
     250        3280 :         rSet.Put( SfxBoolItem( nSId, sal_True ) );
     251             : 
     252             :         // will cause a uncheck of a simulated slot
     253        3280 :         sal_uInt16 nId = GetIdBySubId( nSId );
     254             : 
     255             :         // map images of the toolboxes
     256        3280 :         UpdateToolboxImages( rSet );
     257             : 
     258        3280 :         if( nId != SID_ZOOM_TOOLBOX &&
     259        3280 :             nSId != SID_DRAWTBX_INSERT &&
     260        3280 :             nSId != SID_POSITION &&
     261             :             nSId != SID_OBJECT_ALIGN )
     262             :         {
     263        3280 :             if( nId != SID_OBJECT_CHOOSE_MODE )
     264        3280 :                 rSet.Put( TbxImageItem( SID_OBJECT_CHOOSE_MODE, 0 ) );
     265        3280 :             if( nId != SID_DRAWTBX_TEXT )
     266        3280 :                 rSet.Put( TbxImageItem( SID_DRAWTBX_TEXT, 0 ) );
     267        3280 :             if( nId != SID_DRAWTBX_RECTANGLES )
     268        3280 :                 rSet.Put( TbxImageItem( SID_DRAWTBX_RECTANGLES, 0 ) );
     269        3280 :             if( nId != SID_DRAWTBX_ELLIPSES )
     270        3280 :                 rSet.Put( TbxImageItem( SID_DRAWTBX_ELLIPSES, 0 ) );
     271        3280 :             if( nId != SID_DRAWTBX_LINES )
     272        3280 :                 rSet.Put( TbxImageItem( SID_DRAWTBX_LINES, 0 ) );
     273        3280 :             if( nId != SID_DRAWTBX_ARROWS )
     274        3280 :                 rSet.Put( TbxImageItem( SID_DRAWTBX_ARROWS, 0 ) );
     275        3280 :             if( nId != SID_DRAWTBX_3D_OBJECTS )
     276        3280 :                 rSet.Put( TbxImageItem( SID_DRAWTBX_3D_OBJECTS, 0 ) );
     277        3280 :             if( nId != SID_DRAWTBX_CONNECTORS )
     278        3280 :                 rSet.Put( TbxImageItem( SID_DRAWTBX_CONNECTORS, 0 ) );
     279             :         }
     280             :     }
     281             : 
     282        3280 :     SdrPageView* pPageView = mpDrawView->GetSdrPageView();
     283             : 
     284        3280 :     GetMenuStateSel(rSet);
     285             : 
     286        3280 :     if (SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_ASSIGN_LAYOUT))
     287             :     {
     288          17 :         bool bDisable = true;
     289          17 :         if( pPageView )
     290             :         {
     291          17 :             SdPage* pPage = dynamic_cast< SdPage* >( pPageView->GetPage() );
     292             : 
     293          17 :             if( pPage && !pPage->IsMasterPage() )
     294             :             {
     295          17 :                 rSet.Put( SfxUInt32Item( SID_ASSIGN_LAYOUT, static_cast< sal_uInt32 >(pPage->GetAutoLayout()) ) );
     296          17 :                 bDisable = false;
     297             :             }
     298             :         }
     299             : 
     300          17 :         if(bDisable)
     301             :         {
     302           0 :             rSet.DisableItem(SID_ASSIGN_LAYOUT);
     303             :         }
     304             :     }
     305             : 
     306        3280 :     if (SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_EXPAND_PAGE))
     307             :     {
     308          17 :         bool bDisable = true;
     309          17 :         if( pPageView )
     310             :         {
     311          17 :             SdPage* pPage = dynamic_cast< SdPage* >( pPageView->GetPage() );
     312             : 
     313          17 :             if( pPage && (pPage->GetPageKind() == PK_STANDARD) && !pPage->IsMasterPage() )
     314             :             {
     315          17 :                 SdrObject* pObj = pPage->GetPresObj(PRESOBJ_OUTLINE);
     316             : 
     317          17 :                 if (pObj!=NULL )
     318             :                 {
     319           0 :                     if( !pObj->IsEmptyPresObj() )
     320             :                     {
     321           0 :                         bDisable = false;
     322             :                     }
     323             :                     else
     324             :                     {
     325             :                         // check if the object is in edit, than its temporarely not empty
     326           0 :                         SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( pObj );
     327           0 :                         if( pTextObj )
     328             :                         {
     329           0 :                             OutlinerParaObject* pParaObj = pTextObj->GetEditOutlinerParaObject();
     330           0 :                             if( pParaObj )
     331             :                             {
     332           0 :                                 delete pParaObj;
     333           0 :                                 bDisable = false;
     334             :                             }
     335             :                         }
     336             :                     }
     337             :                 }
     338             :             }
     339             :         }
     340             : 
     341          17 :         if(bDisable)
     342             :         {
     343          17 :             rSet.DisableItem(SID_EXPAND_PAGE);
     344             :         }
     345             :     }
     346             : 
     347        3280 :     if (SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_SUMMARY_PAGE))
     348             :     {
     349           0 :         bool bDisable = true;
     350           0 :         if( pPageView )
     351             :         {
     352           0 :             SdPage* pPage = dynamic_cast< SdPage* >( pPageView->GetPage() );
     353             : 
     354           0 :             if( pPage && (pPage->GetPageKind() == PK_STANDARD) && !pPage->IsMasterPage() )
     355             :             {
     356           0 :                 SdrObject* pObj = pPage->GetPresObj(PRESOBJ_TITLE);
     357             : 
     358           0 :                 if(pObj && !pObj->IsEmptyPresObj())
     359             :                 {
     360           0 :                     bDisable = false;
     361             :                 }
     362             :             }
     363             :         }
     364             : 
     365           0 :         if(bDisable)
     366             :         {
     367           0 :             rSet.DisableItem(SID_SUMMARY_PAGE);
     368             :         }
     369             :     }
     370             : 
     371        3280 :     if (SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_ASSIGN_LAYOUT))
     372             :     {
     373           0 :         bool bDisable = true;
     374           0 :         if( pPageView )
     375             :         {
     376           0 :             SdPage* pPage = dynamic_cast< SdPage* >( pPageView->GetPage() );
     377             : 
     378           0 :             if( pPage && !pPage->IsMasterPage() )
     379             :             {
     380           0 :                 rSet.Put( SfxUInt32Item(SID_ASSIGN_LAYOUT, pPage->GetAutoLayout()) );
     381           0 :                 bDisable = false;
     382             :             }
     383             :         }
     384             : 
     385           0 :         if(bDisable)
     386             :         {
     387           0 :             rSet.DisableItem(SID_ASSIGN_LAYOUT);
     388             :         }
     389             :     }
     390             : 
     391             :     // is it possible to start the presentation?
     392        6543 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_PRESENTATION ) ||
     393        3263 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_REHEARSE_TIMINGS ) )
     394             :     {
     395          17 :         sal_Bool bDisable = sal_True;
     396          17 :         sal_uInt16 nCount = GetDoc()->GetSdPageCount( PK_STANDARD );
     397             : 
     398          34 :         for( sal_uInt16 i = 0; i < nCount && bDisable; i++ )
     399             :         {
     400          17 :             SdPage* pPage = GetDoc()->GetSdPage(i, PK_STANDARD);
     401             : 
     402          17 :             if( !pPage->IsExcluded() )
     403          17 :                 bDisable = sal_False;
     404             :         }
     405             : 
     406          17 :         if( bDisable || GetDocSh()->IsPreview())
     407             :         {
     408           0 :             rSet.DisableItem( SID_PRESENTATION );
     409           0 :             rSet.DisableItem( SID_REHEARSE_TIMINGS );
     410             :         }
     411             :     }
     412             : 
     413             :     // glue points
     414        9731 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_EDITMODE ) ||
     415        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_INSERT_POINT ) ||
     416        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_PERCENT ) ||
     417        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_ESCDIR ) ||
     418        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_ESCDIR_LEFT ) ||
     419        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_ESCDIR_RIGHT ) ||
     420        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_ESCDIR_TOP ) ||
     421        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_ESCDIR_BOTTOM ) ||
     422        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_HORZALIGN_CENTER ) ||
     423        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_HORZALIGN_LEFT ) ||
     424        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_HORZALIGN_RIGHT ) ||
     425        6342 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_VERTALIGN_CENTER ) ||
     426        9622 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_VERTALIGN_TOP ) ||
     427        3171 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GLUE_VERTALIGN_BOTTOM ) )
     428             :     {
     429             :         // percent
     430         109 :         TRISTATE eState = mpDrawView->IsMarkedGluePointsPercent();
     431         109 :         if( eState == STATE_DONTKNOW )
     432           0 :             rSet.InvalidateItem( SID_GLUE_PERCENT );
     433             :         else
     434         109 :             rSet.Put( SfxBoolItem( SID_GLUE_PERCENT, eState == STATE_CHECK ) );
     435             : 
     436             :         // alignment has no effect by percent
     437         109 :         if( eState == STATE_CHECK )
     438             :         {
     439         109 :             rSet.DisableItem( SID_GLUE_HORZALIGN_CENTER );
     440         109 :             rSet.DisableItem( SID_GLUE_HORZALIGN_LEFT );
     441         109 :             rSet.DisableItem( SID_GLUE_HORZALIGN_RIGHT );
     442         109 :             rSet.DisableItem( SID_GLUE_VERTALIGN_CENTER );
     443         109 :             rSet.DisableItem( SID_GLUE_VERTALIGN_TOP );
     444         109 :             rSet.DisableItem( SID_GLUE_VERTALIGN_BOTTOM );
     445             :         }
     446             :         else
     447             :         {
     448             :             // horizontal alignment
     449           0 :             sal_uInt16 nHorz = mpDrawView->GetMarkedGluePointsAlign( sal_False );
     450           0 :             rSet.Put( SfxBoolItem( SID_GLUE_HORZALIGN_CENTER, nHorz == SDRHORZALIGN_CENTER ) );
     451           0 :             rSet.Put( SfxBoolItem( SID_GLUE_HORZALIGN_LEFT,   nHorz == SDRHORZALIGN_LEFT ) );
     452           0 :             rSet.Put( SfxBoolItem( SID_GLUE_HORZALIGN_RIGHT,  nHorz == SDRHORZALIGN_RIGHT ) );
     453             :             // vertical alignment
     454           0 :             sal_uInt16 nVert = mpDrawView->GetMarkedGluePointsAlign( sal_True );
     455           0 :             rSet.Put( SfxBoolItem( SID_GLUE_VERTALIGN_CENTER, nVert == SDRVERTALIGN_CENTER ) );
     456           0 :             rSet.Put( SfxBoolItem( SID_GLUE_VERTALIGN_TOP,    nVert == SDRVERTALIGN_TOP ) );
     457           0 :             rSet.Put( SfxBoolItem( SID_GLUE_VERTALIGN_BOTTOM, nVert == SDRVERTALIGN_BOTTOM ) );
     458             :         }
     459             : 
     460             :         // insert point
     461         109 :         rSet.Put( SfxBoolItem( SID_GLUE_INSERT_POINT, mpDrawView->IsInsGluePointMode() ) );
     462             : 
     463             :         // Escape direction
     464             :         // left
     465         109 :         eState = mpDrawView->IsMarkedGluePointsEscDir( SDRESC_LEFT );
     466         109 :         if( eState == STATE_DONTKNOW )
     467           0 :             rSet.InvalidateItem( SID_GLUE_ESCDIR_LEFT );
     468             :         else
     469         109 :             rSet.Put( SfxBoolItem( SID_GLUE_ESCDIR_LEFT, eState == STATE_CHECK ) );
     470             :         // right
     471         109 :         eState = mpDrawView->IsMarkedGluePointsEscDir( SDRESC_RIGHT );
     472         109 :         if( eState == STATE_DONTKNOW )
     473           0 :             rSet.InvalidateItem( SID_GLUE_ESCDIR_RIGHT );
     474             :         else
     475         109 :             rSet.Put( SfxBoolItem( SID_GLUE_ESCDIR_RIGHT, eState == STATE_CHECK ) );
     476             :         // top
     477         109 :         eState = mpDrawView->IsMarkedGluePointsEscDir( SDRESC_TOP );
     478         109 :         if( eState == STATE_DONTKNOW )
     479           0 :             rSet.InvalidateItem( SID_GLUE_ESCDIR_TOP );
     480             :         else
     481         109 :             rSet.Put( SfxBoolItem( SID_GLUE_ESCDIR_TOP, eState == STATE_CHECK ) );
     482             :         // bottom
     483         109 :         eState = mpDrawView->IsMarkedGluePointsEscDir( SDRESC_BOTTOM );
     484         109 :         if( eState == STATE_DONTKNOW )
     485           0 :             rSet.InvalidateItem( SID_GLUE_ESCDIR_BOTTOM );
     486             :         else
     487         109 :             rSet.Put( SfxBoolItem( SID_GLUE_ESCDIR_BOTTOM, eState == STATE_CHECK ) );
     488             :     }
     489             : 
     490        6560 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GRID_FRONT ) ||
     491        3280 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_HELPLINES_FRONT ) )
     492             :     {
     493           0 :         rSet.Put( SfxBoolItem( SID_GRID_FRONT, mpDrawView->IsGridFront() ) );
     494           0 :         rSet.Put( SfxBoolItem( SID_HELPLINES_FRONT, mpDrawView->IsHlplFront() ) );
     495             :     }
     496             : 
     497        3280 :     if (!mpDrawView->IsFrameDragSingles())
     498           0 :         rSet.Put(SfxBoolItem(SID_BEZIER_EDIT, sal_True));
     499             :     else
     500        3280 :         rSet.Put(SfxBoolItem(SID_BEZIER_EDIT, sal_False));
     501             : 
     502        3280 :     if(dynamic_cast<FuEditGluePoints*>( GetCurrentFunction().get()))
     503           0 :         rSet.Put(SfxBoolItem(SID_GLUE_EDITMODE, sal_True));
     504             :     else
     505        3280 :         rSet.Put(SfxBoolItem(SID_GLUE_EDITMODE, sal_False));
     506             : 
     507        3280 :     if( !mpDrawView->IsMirrorAllowed( sal_True, sal_True ) )
     508             :     {
     509        3279 :         rSet.DisableItem( SID_HORIZONTAL );
     510        3279 :         rSet.DisableItem( SID_VERTICAL );
     511        3279 :         rSet.DisableItem( SID_FLIP_HORIZONTAL );
     512        3279 :         rSet.DisableItem( SID_FLIP_VERTICAL );
     513             :     }
     514             : 
     515        3280 :     if( !mpDrawView->IsMirrorAllowed() )
     516             :     {
     517        3279 :         rSet.DisableItem( SID_OBJECT_MIRROR );
     518             : //        rSet.DisableItem( SID_CONVERT_TO_3D_LATHE );
     519             : //        rSet.DisableItem( SID_CONVERT_TO_3D_LATHE_FAST );
     520             :     }
     521             : 
     522             :     // interactive transparence control
     523        3280 :     if(!mpDrawView->IsTransparenceAllowed())
     524             :     {
     525        3279 :         rSet.DisableItem( SID_OBJECT_TRANSPARENCE );
     526             :     }
     527             : 
     528             :     // interactive gradient control
     529        3280 :     if(!mpDrawView->IsGradientAllowed())
     530             :     {
     531        3280 :         rSet.DisableItem( SID_OBJECT_GRADIENT );
     532             :     }
     533             : 
     534             :     // disable morphing if necessary
     535        3280 :     if ( !mpDrawView->IsMorphingAllowed() )
     536        3280 :         rSet.DisableItem( SID_POLYGON_MORPHING );
     537             : 
     538             :     // disable vectorizing if necessary
     539        3280 :     if ( !mpDrawView->IsVectorizeAllowed() )
     540        3280 :         rSet.DisableItem( SID_VECTORIZE );
     541             : 
     542        3280 :     if( !mpDrawView->IsReverseOrderPossible() )
     543             :     {
     544        3280 :         rSet.DisableItem( SID_REVERSE_ORDER );
     545             :     }
     546             : 
     547        6559 :     if ( !bConvertToPathPossible &&
     548        3279 :          !mpDrawView->IsCrookAllowed( mpDrawView->IsCrookNoContortion() ) )
     549             :     {
     550             :         // implicit transformation into curve not possible
     551        3279 :         rSet.DisableItem(SID_OBJECT_CROOK_ROTATE);
     552        3279 :         rSet.DisableItem(SID_OBJECT_CROOK_SLANT);
     553        3279 :         rSet.DisableItem(SID_OBJECT_CROOK_STRETCH);
     554             :     }
     555             : 
     556        3280 :     if ( !mpDrawView->IsGroupEntered() )
     557             :     {
     558        3280 :         rSet.DisableItem( SID_LEAVE_GROUP );
     559        3280 :         rSet.Put( SfxBoolItem( SID_LEAVE_ALL_GROUPS, sal_False ) );
     560        3280 :         rSet.ClearItem( SID_LEAVE_ALL_GROUPS );
     561        3280 :         rSet.DisableItem( SID_LEAVE_ALL_GROUPS );
     562             :     }
     563             :     else
     564           0 :         rSet.Put( SfxBoolItem( SID_LEAVE_ALL_GROUPS, sal_True ) );
     565             : 
     566        3280 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_THESAURUS ) )
     567             :     {
     568           0 :         if ( !mpDrawView->IsTextEdit() )
     569             :         {
     570           0 :             rSet.DisableItem( SID_THESAURUS );
     571             :         }
     572             :         else
     573             :         {
     574           0 :             LanguageType            eLang = GetDoc()->GetLanguage( EE_CHAR_LANGUAGE );
     575           0 :             Reference< XThesaurus > xThesaurus( LinguMgr::GetThesaurus() );
     576             : 
     577           0 :             if (!xThesaurus.is() || eLang == LANGUAGE_NONE || !xThesaurus->hasLocale( LanguageTag( eLang).getLocale()) )
     578           0 :                 rSet.DisableItem( SID_THESAURUS );
     579             :         }
     580             :     }
     581             : 
     582        3280 :     if ( !mpDrawView->IsTextEdit() )
     583             :     {
     584        3280 :         rSet.DisableItem( SID_THESAURUS );
     585             :     }
     586             : 
     587        6560 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_SELECTALL ) ||
     588        3280 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_SIZE_ALL ) )
     589             :     {
     590           0 :         if( pPageView && pPageView->GetObjList()->GetObjCount() == 0 )
     591             :         {
     592             :             // should be disabled if there is no object on the draw area:
     593           0 :             rSet.DisableItem( SID_SELECTALL );
     594           0 :             rSet.DisableItem( SID_SIZE_ALL );
     595             :         }
     596             :     }
     597             : 
     598        3280 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CONTEXT ) )
     599         139 :         rSet.Put( SfxStringItem( SID_CONTEXT, mpDrawView->GetStatusText() ) );
     600             : 
     601             :     // clipboard (paste)
     602        9702 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_PASTE ) ||
     603        6422 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_PASTE_SPECIAL ) ||
     604        3142 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CLIPBOARD_FORMAT_ITEMS ) )
     605             :     {
     606         203 :         if ( !mpClipEvtLstnr )
     607             :         {
     608             :             // avoid clipboard initialization for
     609             :             // read-only presentation views (workaround for NT4.0
     610             :             // clipboard prob...)
     611          65 :             if( !ISA(PresentationViewShell) )
     612             :             {
     613             :                 // create listener
     614          65 :                 mpClipEvtLstnr = new TransferableClipboardListener( LINK( this, DrawViewShell, ClipboardChanged ) );
     615          65 :                 mpClipEvtLstnr->acquire();
     616          65 :                 mpClipEvtLstnr->AddRemoveListener( GetActiveWindow(), sal_True );
     617             : 
     618             :                 // get initial state
     619          65 :                 TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( GetActiveWindow() ) );
     620          65 :                 mbPastePossible = ( aDataHelper.GetFormatCount() != 0 );
     621             :             }
     622             :             else
     623           0 :                 mbPastePossible = sal_False;
     624             :         }
     625             : 
     626         203 :         if( !mbPastePossible )
     627             :         {
     628         203 :             rSet.DisableItem( SID_PASTE );
     629         203 :             rSet.DisableItem( SID_PASTE_SPECIAL );
     630         203 :             rSet.DisableItem( SID_CLIPBOARD_FORMAT_ITEMS );
     631             :         }
     632           0 :         else if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CLIPBOARD_FORMAT_ITEMS ) )
     633             :         {
     634           0 :             if (mpCurrentClipboardFormats.get() != NULL)
     635           0 :                 rSet.Put(*mpCurrentClipboardFormats);
     636             :         }
     637             :     }
     638             : 
     639        3280 :     if ( !bConvertToPathPossible )
     640             :     {
     641        3279 :         rSet.DisableItem(SID_CHANGEBEZIER);
     642             :     }
     643             : 
     644        3280 :     if (mpDrawView == NULL)
     645             :     {
     646             :         // The mpDrawView was not NULL but is now.
     647             :         // The reason for this may be that the DrawViewShell has been
     648             :         // destroyed in the mean time.
     649             :         // We can only return immediately and hope that the deleted
     650             :         // DrawViewShell is not called again.
     651             :         DBG_ASSERT(mpDrawView!=NULL, "Please report this assertion to the Impress team.");
     652           0 :         return;
     653             :     }
     654             : 
     655        3280 :     if( !( mpDrawView->IsConvertToPolyObjPossible(sal_False) || mpDrawView->IsVectorizeAllowed() ) )
     656        3279 :         rSet.DisableItem(SID_CHANGEPOLYGON);
     657             : 
     658        3280 :     if( !( mpDrawView->IsConvertToPolyObjPossible(sal_False) || mpDrawView->IsConvertToContourPossible() ) )
     659        3279 :         rSet.DisableItem(SID_CONVERT_TO_CONTOUR);
     660             : 
     661        3280 :     if ( !mpDrawView->IsConvertTo3DObjPossible() )
     662             :     {
     663        3279 :         rSet.DisableItem(SID_CONVERT_TO_3D);
     664        3279 :         rSet.DisableItem(SID_CONVERT_TO_3D_LATHE);
     665        3279 :         rSet.DisableItem(SID_CONVERT_TO_3D_LATHE_FAST);
     666             :     }
     667             : 
     668        3280 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_MANAGE_LINKS ) )
     669             :     {
     670           0 :         if ( GetDoc()->GetLinkCount() == 0 )
     671             :         {
     672           0 :             rSet.DisableItem(SID_MANAGE_LINKS);
     673             :         }
     674             :     }
     675             : 
     676        3280 :     if (mePageKind == PK_HANDOUT)
     677             :     {
     678           0 :         rSet.DisableItem(SID_PRESENTATION_LAYOUT);
     679           0 :         rSet.DisableItem(SID_SELECT_BACKGROUND);
     680             :     }
     681             : 
     682        3280 :     if (mePageKind == PK_NOTES)
     683             :     {
     684           0 :         rSet.DisableItem(SID_INSERTPAGE);
     685           0 :         rSet.DisableItem(SID_RENAMEPAGE);
     686           0 :         rSet.DisableItem(SID_RENAMEPAGE_QUICK);
     687           0 :         rSet.DisableItem(SID_DUPLICATE_PAGE);
     688           0 :         rSet.ClearItem(SID_ANIMATION_OBJECTS);
     689           0 :         rSet.DisableItem(SID_ANIMATION_OBJECTS);
     690           0 :         rSet.DisableItem(SID_ANIMATION_EFFECTS);
     691             : 
     692           0 :         if (meEditMode == EM_MASTERPAGE)
     693           0 :             rSet.DisableItem(SID_MODIFYPAGE);
     694             : 
     695           0 :         rSet.DisableItem(SID_SELECT_BACKGROUND);
     696           0 :         rSet.DisableItem(SID_INSERTLAYER);
     697           0 :         rSet.DisableItem(SID_LAYERMODE);
     698           0 :         rSet.DisableItem(SID_INSERTFILE);
     699             :     }
     700        3280 :     else if (mePageKind == PK_HANDOUT)
     701             :     {
     702           0 :         rSet.DisableItem(SID_INSERTPAGE);
     703           0 :         rSet.DisableItem(SID_DUPLICATE_PAGE);
     704           0 :         rSet.ClearItem(SID_ANIMATION_OBJECTS);
     705           0 :         rSet.DisableItem(SID_ANIMATION_OBJECTS);
     706           0 :         rSet.DisableItem(SID_ANIMATION_EFFECTS);
     707           0 :         rSet.DisableItem(SID_RENAMEPAGE);
     708           0 :         rSet.DisableItem(SID_RENAMEPAGE_QUICK);
     709           0 :         rSet.DisableItem(SID_INSERTLAYER);
     710           0 :         rSet.DisableItem(SID_MODIFYLAYER);
     711           0 :         rSet.DisableItem(SID_RENAMELAYER);
     712           0 :         rSet.DisableItem(SID_LAYERMODE);
     713           0 :         rSet.DisableItem(SID_INSERTFILE);
     714           0 :         rSet.DisableItem(SID_PAGEMODE);
     715           0 :         rSet.DisableItem(SID_SELECT_BACKGROUND);
     716             :     }
     717             :     else
     718             :     {
     719        3280 :         if (meEditMode == EM_MASTERPAGE)
     720             :         {
     721           0 :             rSet.DisableItem(SID_INSERTPAGE);
     722           0 :             rSet.DisableItem(SID_DUPLICATE_PAGE);
     723           0 :             rSet.DisableItem(SID_MODIFYPAGE);
     724           0 :             rSet.ClearItem(SID_ANIMATION_OBJECTS);
     725           0 :             rSet.DisableItem(SID_ANIMATION_OBJECTS);
     726             :         }
     727             : 
     728        3280 :         rSet.Put (SfxBoolItem (SID_LAYERMODE, IsLayerModeActive()));
     729             :     }
     730             : 
     731        3280 :     if ( ! IsLayerModeActive())
     732             :     {
     733         762 :         rSet.DisableItem( SID_INSERTLAYER );
     734         762 :         rSet.DisableItem( SID_MODIFYLAYER );
     735         762 :         rSet.DisableItem( SID_DELETE_LAYER );
     736         762 :         rSet.DisableItem( SID_RENAMELAYER );
     737             :     }
     738             : 
     739        3280 :     if (meEditMode == EM_PAGE)
     740             :     {
     741             :         /**********************************************************************
     742             :         * page mode
     743             :         **********************************************************************/
     744        3280 :         rSet.Put(SfxBoolItem(SID_PAGEMODE, sal_True));
     745        3280 :         rSet.Put(SfxBoolItem(SID_MASTERPAGE, sal_False));
     746        3280 :         rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, sal_False));
     747        3280 :         rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, sal_False));
     748        3280 :         rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, sal_False));
     749             : 
     750        6560 :         if (mePageKind == PK_STANDARD &&
     751        3280 :             rSet.GetItemState(SID_TITLE_MASTERPAGE) == SFX_ITEM_AVAILABLE)
     752             :         {
     753             :             // Is there a page with the AutoLayout "Title"?
     754           0 :             sal_Bool bDisable = sal_True;
     755           0 :             sal_uInt16 i = 0;
     756           0 :             sal_uInt16 nCount = GetDoc()->GetSdPageCount(PK_STANDARD);
     757             : 
     758           0 :             while (i < nCount && bDisable)
     759             :             {
     760           0 :                 SdPage* pPage = GetDoc()->GetSdPage(i, PK_STANDARD);
     761             : 
     762           0 :                 if (pPage->GetAutoLayout() == AUTOLAYOUT_TITLE)
     763             :                 {
     764           0 :                     bDisable = sal_False;
     765             :                 }
     766             : 
     767           0 :                 i++;
     768             :             }
     769             : 
     770           0 :             if (bDisable)
     771             :             {
     772           0 :                 rSet.DisableItem(SID_TITLE_MASTERPAGE);
     773             :             }
     774             :             else
     775             :             {
     776           0 :                 rSet.Put(SfxBoolItem(SID_TITLE_MASTERPAGE, sal_False));
     777             :             }
     778             :         }
     779             :         else
     780             :         {
     781        3280 :             rSet.DisableItem(SID_TITLE_MASTERPAGE);
     782             :         }
     783             : 
     784        3280 :         rSet.DisableItem (SID_INSERT_MASTER_PAGE);
     785        3280 :         rSet.DisableItem (SID_DELETE_MASTER_PAGE);
     786        3280 :         rSet.DisableItem (SID_RENAME_MASTER_PAGE);
     787        3280 :         rSet.DisableItem (SID_CLOSE_MASTER_VIEW);
     788             :     }
     789             :     else
     790             :     {
     791           0 :         rSet.Put(SfxBoolItem(SID_PAGEMODE, sal_False));
     792           0 :         rSet.Put(SfxBoolItem(SID_MASTERPAGE, sal_True));
     793             : 
     794             :         /**********************************************************************
     795             :         * Background page mode
     796             :         **********************************************************************/
     797           0 :         if (mePageKind == PK_STANDARD)
     798             :         {
     799           0 :             rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, sal_True));
     800           0 :             rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, sal_False));
     801           0 :             rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, sal_False));
     802             : 
     803           0 :             if (rSet.GetItemState(SID_TITLE_MASTERPAGE) == SFX_ITEM_AVAILABLE)
     804             :             {
     805           0 :                 sal_Bool bCheck = sal_False;
     806           0 :                 sal_Bool bDisable = sal_True;
     807           0 :                 if( pPageView )
     808             :                 {
     809           0 :                     SdPage* pMPage = dynamic_cast< SdPage* >( pPageView->GetPage() );
     810             : 
     811           0 :                     sal_uInt16 i = 0;
     812           0 :                     sal_uInt16 nCount = GetDoc()->GetSdPageCount(PK_STANDARD);
     813             : 
     814             :                     // Is there a reference to the current master page from a page
     815             :                     // with the AutoLayout "Title"?
     816           0 :                     while (i < nCount && !bCheck && bDisable)
     817             :                     {
     818           0 :                         SdPage* pPage = GetDoc()->GetSdPage(i, PK_STANDARD);
     819             : 
     820             :                         // page does reference the current master page
     821           0 :                         if (pPage->GetAutoLayout() == AUTOLAYOUT_TITLE)
     822             :                         {
     823             :                             // a page does have a AutoLayout "Title"
     824           0 :                             bDisable = sal_False;
     825             : 
     826           0 :                             SdPage& rRefMPage = (SdPage&)(pPage->TRG_GetMasterPage());
     827             : 
     828           0 :                             if(&rRefMPage == pMPage)
     829             :                             {
     830             :                                 // a page with the AutoLayout "Title" does reference
     831             :                                 // the current master page
     832           0 :                                 bCheck = sal_True;
     833             :                             }
     834             :                         }
     835             : 
     836           0 :                         i++;
     837             :                     }
     838             :                 }
     839             : 
     840           0 :                 if (bCheck)
     841             :                 {
     842           0 :                     rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, sal_False));
     843             :                 }
     844             : 
     845           0 :                 rSet.Put(SfxBoolItem(SID_TITLE_MASTERPAGE, bCheck));
     846             : 
     847           0 :                 if (bDisable)
     848             :                 {
     849           0 :                     rSet.ClearItem(SID_TITLE_MASTERPAGE);
     850           0 :                     rSet.DisableItem(SID_TITLE_MASTERPAGE);
     851             :                 }
     852             :             }
     853             :         }
     854           0 :         else if (mePageKind == PK_NOTES)
     855             :         {
     856           0 :             rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, sal_False));
     857           0 :             rSet.DisableItem(SID_TITLE_MASTERPAGE);
     858           0 :             rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, sal_True));
     859           0 :             rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, sal_False));
     860             :         }
     861           0 :         else if (mePageKind == PK_HANDOUT)
     862             :         {
     863           0 :             rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, sal_False));
     864           0 :             rSet.DisableItem(SID_TITLE_MASTERPAGE);
     865           0 :             rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, sal_False));
     866           0 :             rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, sal_True));
     867             :         }
     868             :     }
     869             : 
     870             :     // set state of the ruler
     871        3280 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_RULER ) )
     872           0 :         rSet.Put( SfxBoolItem( SID_RULER, HasRuler() ) );
     873             : 
     874             :     // do not delete the last page or a master page
     875        6560 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DELETE_PAGE )
     876        3280 :         || SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DELETE_MASTER_PAGE ) )
     877             :     {
     878           0 :         if (maTabControl.GetPageCount() == 1 ||
     879           0 :             meEditMode == EM_MASTERPAGE     ||
     880           0 :             mePageKind == PK_NOTES          ||
     881           0 :             mePageKind == PK_HANDOUT        ||
     882           0 :             (GetShellType()!=ST_DRAW&&IsLayerModeActive()))
     883             :         {
     884           0 :             if (rSet.GetItemState(SID_DELETE_PAGE) == SFX_ITEM_AVAILABLE)
     885           0 :                 rSet.DisableItem(SID_DELETE_PAGE);
     886           0 :             if (rSet.GetItemState(SID_DELETE_MASTER_PAGE)==SFX_ITEM_AVAILABLE)
     887           0 :                 rSet.DisableItem(SID_DELETE_MASTER_PAGE);
     888             :         }
     889             :     }
     890             : 
     891             :     // is it allowed to delete the current layer?
     892        3280 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DELETE_LAYER ) )
     893             :     {
     894           0 :         sal_uInt16        nCurrentLayer = GetLayerTabControl()->GetCurPageId();
     895           0 :         const String& rName         = GetLayerTabControl()->GetPageText(nCurrentLayer);
     896             : 
     897           0 :         sal_Bool bDisableIt = !IsLayerModeActive();
     898           0 :         bDisableIt |= (rName == String(SdResId(STR_LAYER_LAYOUT)));
     899           0 :         bDisableIt |= (rName == String(SdResId(STR_LAYER_BCKGRND)));
     900           0 :         bDisableIt |= (rName == String(SdResId(STR_LAYER_BCKGRNDOBJ)));
     901           0 :         bDisableIt |= (rName == String(SdResId(STR_LAYER_CONTROLS)));
     902           0 :         bDisableIt |= (rName == String(SdResId(STR_LAYER_MEASURELINES)));
     903             : 
     904           0 :         if (bDisableIt)
     905             :         {
     906           0 :             rSet.DisableItem(SID_DELETE_LAYER);
     907           0 :             rSet.DisableItem(SID_RENAMELAYER);
     908           0 :         }
     909             :     }
     910             : 
     911        9840 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CUT ) ||
     912        6560 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_COPY ) ||
     913        3280 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_OUTLINE_BULLET ))
     914             :     {
     915           0 :         OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView();
     916             : 
     917             :         // special treatment of for SID_OUTLINE_BULLET if objects with different
     918             :         // kinds of NumBullets are marked
     919           0 :         sal_Bool bHasOutliner = sal_False;
     920           0 :         sal_Bool bHasOther    = sal_False;
     921           0 :         for(sal_uLong nNum = 0; nNum < nMarkCount; nNum++)
     922             :         {
     923           0 :             SdrObject* pObj = rMarkList.GetMark(nNum)->GetMarkedSdrObj();
     924           0 :             if( pObj->GetObjInventor() == SdrInventor )
     925             :             {
     926           0 :                 if( pObj->GetObjIdentifier() == OBJ_OUTLINETEXT )
     927             :                 {
     928           0 :                     bHasOutliner = sal_True;
     929           0 :                     if(bHasOther)
     930           0 :                         break;
     931             :                 }
     932             :                 else
     933             :                 {
     934           0 :                     bHasOther = sal_True;
     935           0 :                     if(bHasOutliner)
     936           0 :                         break;
     937             :                 }
     938             :             }
     939             :         }
     940             : 
     941           0 :         if( bHasOther && bHasOutliner )
     942           0 :             rSet.DisableItem( SID_OUTLINE_BULLET );
     943             : 
     944           0 :         if (pOlView)
     945             :         {
     946           0 :             if ( pOlView->GetSelected().Len() == 0 )
     947             :             {
     948           0 :                 rSet.DisableItem( SID_CUT );
     949           0 :                 rSet.DisableItem( SID_COPY );
     950             :             }
     951             :         }
     952             : 
     953             :     }
     954             : 
     955        3280 :     FuBullet::GetSlotState( rSet, this, GetViewFrame() );
     956             : 
     957        3280 :     if ( GetDocSh()->IsUIActive() )
     958             :     {
     959           0 :         rSet.DisableItem( SID_INSERT_OBJECT );
     960           0 :         rSet.DisableItem( SID_INSERT_PLUGIN );
     961           0 :         rSet.DisableItem( SID_INSERT_SOUND );
     962           0 :         rSet.DisableItem( SID_INSERT_VIDEO );
     963           0 :         rSet.DisableItem( SID_INSERT_FLOATINGFRAME );
     964           0 :         rSet.DisableItem( SID_INSERT_MATH );
     965           0 :         rSet.DisableItem( SID_INSERT_DIAGRAM );
     966           0 :         rSet.DisableItem( SID_ATTR_TABLE );
     967           0 :         rSet.DisableItem( SID_SIZE_REAL );
     968           0 :         rSet.DisableItem( SID_SIZE_OPTIMAL );
     969           0 :         rSet.DisableItem( SID_SIZE_ALL );
     970           0 :         rSet.DisableItem( SID_SIZE_PAGE_WIDTH );
     971           0 :         rSet.DisableItem( SID_SIZE_PAGE );
     972           0 :         rSet.DisableItem( SID_DUPLICATE_PAGE );
     973           0 :         rSet.DisableItem( SID_ZOOM_TOOLBOX );
     974             :     }
     975             : 
     976             :     // Zoom-State
     977        9840 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ZOOM_IN ) ||
     978        6560 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ZOOM_OUT )||
     979        3280 :         SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_ZOOM_PANNING ) )
     980             :     {
     981           0 :         if( GetActiveWindow()->GetZoom() <= GetActiveWindow()->GetMinZoom() || GetDocSh()->IsUIActive() )
     982             :         {
     983           0 :             rSet.DisableItem( SID_ZOOM_IN );
     984           0 :             rSet.DisableItem( SID_ZOOM_PANNING );
     985             :         }
     986           0 :         if( GetActiveWindow()->GetZoom() >= GetActiveWindow()->GetMaxZoom() || GetDocSh()->IsUIActive() )
     987           0 :             rSet.DisableItem( SID_ZOOM_OUT );
     988             :     }
     989             : 
     990        3280 :     if (!mpZoomList->IsNextPossible())
     991             :     {
     992        3280 :        rSet.DisableItem(SID_ZOOM_NEXT);
     993             :     }
     994        3280 :     if (!mpZoomList->IsPreviousPossible())
     995             :     {
     996          74 :        rSet.DisableItem(SID_ZOOM_PREV);
     997             :     }
     998             : 
     999        3280 :     if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_REMOTE_DLG ) )
    1000             :     {
    1001             : 
    1002           0 :         bool bDisableSdremoteForGood = false;
    1003             : #ifndef ENABLE_SDREMOTE
    1004             :         bDisableSdremoteForGood = true;
    1005             : #endif
    1006           0 :         uno::Reference< uno::XComponentContext > xContext = comphelper::getProcessComponentContext();
    1007           0 :         if ( xContext.is() )
    1008           0 :             bDisableSdremoteForGood |= ! ( officecfg::Office::Common::Misc::ExperimentalMode::get( xContext ) &&
    1009             : 
    1010           0 :                                            officecfg::Office::Impress::Misc::Start::EnableSdremote::get( xContext ) );
    1011             : 
    1012             :         // This dialog is only useful for TCP/IP remote control
    1013             :         // which is unusual, under-tested and a security issue.
    1014           0 :         if ( bDisableSdremoteForGood )
    1015             :         {
    1016           0 :             rSet.Put(SfxVisibilityItem(SID_REMOTE_DLG, false));
    1017           0 :         }
    1018             :     }
    1019             : 
    1020             :     // EditText active
    1021        3280 :     if (GetViewShellBase().GetViewShellManager()->GetShell(RID_DRAW_TEXT_TOOLBOX) != NULL)
    1022             :     {
    1023           0 :         sal_uInt16 nCurrentSId = SID_ATTR_CHAR;
    1024             : 
    1025           0 :         if(HasCurrentFunction())
    1026             :         {
    1027           0 :             nCurrentSId = GetCurrentFunction()->GetSlotID();
    1028             :         }
    1029           0 :         if( nCurrentSId != SID_TEXT_FITTOSIZE &&
    1030           0 :             nCurrentSId != SID_TEXT_FITTOSIZE_VERTICAL &&
    1031             :             nCurrentSId != SID_ATTR_CHAR_VERTICAL )
    1032           0 :             nCurrentSId = SID_ATTR_CHAR;
    1033             : 
    1034           0 :         rSet.Put( SfxBoolItem( nCurrentSId, sal_True ) );
    1035             : 
    1036             :         // Short version of UpdateToolboxImages()
    1037           0 :         rSet.Put( TbxImageItem( SID_DRAWTBX_TEXT, nCurrentSId ) );
    1038             :     }
    1039             : 
    1040        3280 :     if ( GetDocSh()->IsReadOnly() )
    1041             :     {
    1042           0 :         rSet.DisableItem( SID_AUTOSPELL_CHECK );
    1043             :     }
    1044             :     else
    1045             :     {
    1046        3280 :         if (GetDoc()->GetOnlineSpell())
    1047             :         {
    1048        3280 :             rSet.Put(SfxBoolItem(SID_AUTOSPELL_CHECK, sal_True));
    1049             :         }
    1050             :         else
    1051             :         {
    1052           0 :             rSet.Put(SfxBoolItem(SID_AUTOSPELL_CHECK, sal_False));
    1053             :         }
    1054             :     }
    1055             : 
    1056        3280 :     SdrPageView* pPV = mpDrawView->GetSdrPageView();
    1057        3280 :     String aActiveLayer = mpDrawView->GetActiveLayer();
    1058             : 
    1059       13120 :     if ( ( aActiveLayer.Len() != 0 && pPV && ( pPV->IsLayerLocked(aActiveLayer) ||
    1060        9840 :           !pPV->IsLayerVisible(aActiveLayer) ) ) ||
    1061        3280 :           SD_MOD()->GetWaterCan() )
    1062             :     {
    1063           0 :         rSet.DisableItem( SID_PASTE );
    1064           0 :         rSet.DisableItem( SID_PASTE_SPECIAL );
    1065           0 :         rSet.DisableItem( SID_CLIPBOARD_FORMAT_ITEMS );
    1066             : 
    1067           0 :         rSet.DisableItem( SID_INSERT_FLD_DATE_FIX );
    1068           0 :         rSet.DisableItem( SID_INSERT_FLD_DATE_VAR );
    1069           0 :         rSet.DisableItem( SID_INSERT_FLD_TIME_FIX );
    1070           0 :         rSet.DisableItem( SID_INSERT_FLD_TIME_VAR );
    1071           0 :         rSet.DisableItem( SID_INSERT_FLD_AUTHOR );
    1072           0 :         rSet.DisableItem( SID_INSERT_FLD_PAGE );
    1073           0 :         rSet.DisableItem( SID_INSERT_FLD_PAGES );
    1074           0 :         rSet.DisableItem( SID_INSERT_FLD_FILE );
    1075             : 
    1076           0 :         rSet.DisableItem( SID_INSERT_GRAPHIC );
    1077           0 :         rSet.DisableItem( SID_INSERT_AVMEDIA );
    1078           0 :         rSet.DisableItem( SID_INSERT_DIAGRAM );
    1079           0 :         rSet.DisableItem( SID_INSERT_OBJECT );
    1080           0 :         rSet.DisableItem( SID_INSERT_PLUGIN );
    1081           0 :         rSet.DisableItem( SID_INSERT_SOUND );
    1082           0 :         rSet.DisableItem( SID_INSERT_VIDEO );
    1083           0 :         rSet.DisableItem( SID_INSERT_FLOATINGFRAME );
    1084             : 
    1085           0 :         rSet.DisableItem( SID_INSERT_MATH );
    1086           0 :         rSet.DisableItem( SID_INSERT_FRAME );
    1087           0 :         rSet.DisableItem( SID_INSERTFILE );
    1088           0 :         rSet.DisableItem( SID_ATTR_TABLE );
    1089           0 :         rSet.DisableItem( SID_COPYOBJECTS );
    1090             : 
    1091           0 :         rSet.DisableItem( SID_SCAN );
    1092           0 :         rSet.DisableItem( SID_TWAIN_SELECT );
    1093           0 :         rSet.DisableItem( SID_TWAIN_TRANSFER );
    1094             : 
    1095             : //        rSet.DisableItem( SID_BEZIER_EDIT );
    1096           0 :         rSet.DisableItem( SID_GLUE_EDITMODE );
    1097           0 :         rSet.DisableItem( SID_OBJECT_ROTATE );
    1098           0 :         rSet.DisableItem( SID_OBJECT_SHEAR );
    1099           0 :         rSet.DisableItem( SID_OBJECT_MIRROR );
    1100           0 :         rSet.DisableItem( SID_OBJECT_CROP );
    1101           0 :         rSet.DisableItem( SID_ATTR_GRAF_CROP );
    1102           0 :         rSet.DisableItem( SID_OBJECT_TRANSPARENCE );
    1103           0 :         rSet.DisableItem( SID_OBJECT_GRADIENT );
    1104           0 :         rSet.DisableItem( SID_OBJECT_CROOK_ROTATE );
    1105           0 :         rSet.DisableItem( SID_OBJECT_CROOK_SLANT );
    1106           0 :         rSet.DisableItem( SID_OBJECT_CROOK_STRETCH );
    1107             : 
    1108             :         // Disable all object-creating tools
    1109           0 :         rSet.ClearItem( SID_ATTR_CHAR );
    1110           0 :         rSet.DisableItem( SID_ATTR_CHAR );
    1111           0 :         rSet.ClearItem( SID_ATTR_CHAR_VERTICAL );
    1112           0 :         rSet.DisableItem( SID_ATTR_CHAR_VERTICAL );
    1113           0 :         rSet.ClearItem(SID_DRAW_LINE);
    1114           0 :         rSet.DisableItem(SID_DRAW_LINE);
    1115           0 :         rSet.ClearItem(SID_DRAW_MEASURELINE);
    1116           0 :         rSet.DisableItem(SID_DRAW_MEASURELINE);
    1117           0 :         rSet.ClearItem(SID_DRAW_XLINE);
    1118           0 :         rSet.DisableItem(SID_DRAW_XLINE);
    1119           0 :         rSet.ClearItem( SID_LINE_ARROW_START );
    1120           0 :         rSet.DisableItem( SID_LINE_ARROW_START );
    1121           0 :         rSet.ClearItem( SID_LINE_ARROW_END );
    1122           0 :         rSet.DisableItem( SID_LINE_ARROW_END );
    1123           0 :         rSet.ClearItem( SID_LINE_ARROWS );
    1124           0 :         rSet.DisableItem( SID_LINE_ARROWS );
    1125           0 :         rSet.ClearItem( SID_LINE_ARROW_CIRCLE );
    1126           0 :         rSet.DisableItem( SID_LINE_ARROW_CIRCLE );
    1127           0 :         rSet.ClearItem( SID_LINE_CIRCLE_ARROW );
    1128           0 :         rSet.DisableItem( SID_LINE_CIRCLE_ARROW );
    1129           0 :         rSet.ClearItem( SID_LINE_ARROW_SQUARE );
    1130           0 :         rSet.DisableItem( SID_LINE_ARROW_SQUARE );
    1131           0 :         rSet.ClearItem( SID_LINE_SQUARE_ARROW );
    1132           0 :         rSet.DisableItem( SID_LINE_SQUARE_ARROW );
    1133             : 
    1134           0 :         rSet.ClearItem(SID_DRAW_RECT);
    1135           0 :         rSet.DisableItem(SID_DRAW_RECT);
    1136           0 :         rSet.ClearItem(SID_DRAW_RECT_NOFILL);
    1137           0 :         rSet.DisableItem(SID_DRAW_RECT_NOFILL);
    1138           0 :         rSet.ClearItem(SID_DRAW_RECT_ROUND);
    1139           0 :         rSet.DisableItem(SID_DRAW_RECT_ROUND);
    1140           0 :         rSet.ClearItem(SID_DRAW_RECT_ROUND_NOFILL);
    1141           0 :         rSet.DisableItem(SID_DRAW_RECT_ROUND_NOFILL);
    1142           0 :         rSet.ClearItem(SID_DRAW_SQUARE);
    1143           0 :         rSet.DisableItem(SID_DRAW_SQUARE);
    1144           0 :         rSet.ClearItem(SID_DRAW_SQUARE_NOFILL);
    1145           0 :         rSet.DisableItem(SID_DRAW_SQUARE_NOFILL);
    1146           0 :         rSet.ClearItem(SID_DRAW_SQUARE_ROUND);
    1147           0 :         rSet.DisableItem(SID_DRAW_SQUARE_ROUND);
    1148           0 :         rSet.ClearItem(SID_DRAW_SQUARE_ROUND_NOFILL);
    1149           0 :         rSet.DisableItem(SID_DRAW_SQUARE_ROUND_NOFILL);
    1150           0 :         rSet.ClearItem(SID_DRAW_ELLIPSE);
    1151           0 :         rSet.DisableItem(SID_DRAW_ELLIPSE);
    1152           0 :         rSet.ClearItem(SID_DRAW_ELLIPSE_NOFILL);
    1153           0 :         rSet.DisableItem(SID_DRAW_ELLIPSE_NOFILL);
    1154           0 :         rSet.ClearItem(SID_DRAW_CIRCLE);
    1155           0 :         rSet.DisableItem(SID_DRAW_CIRCLE);
    1156           0 :         rSet.ClearItem(SID_DRAW_CIRCLE_NOFILL);
    1157           0 :         rSet.DisableItem(SID_DRAW_CIRCLE_NOFILL);
    1158           0 :         rSet.ClearItem(SID_DRAW_CAPTION);
    1159           0 :         rSet.DisableItem(SID_DRAW_CAPTION);
    1160           0 :         rSet.ClearItem(SID_DRAW_FONTWORK);
    1161           0 :         rSet.DisableItem(SID_DRAW_FONTWORK);
    1162           0 :         rSet.ClearItem(SID_DRAW_FONTWORK_VERTICAL);
    1163           0 :         rSet.DisableItem(SID_DRAW_FONTWORK_VERTICAL);
    1164           0 :         rSet.ClearItem(SID_DRAW_CAPTION_VERTICAL);
    1165           0 :         rSet.DisableItem(SID_DRAW_CAPTION_VERTICAL);
    1166           0 :         rSet.ClearItem(SID_TEXT_FITTOSIZE);
    1167           0 :         rSet.DisableItem(SID_TEXT_FITTOSIZE);
    1168           0 :         rSet.ClearItem(SID_TEXT_FITTOSIZE_VERTICAL);
    1169           0 :         rSet.DisableItem(SID_TEXT_FITTOSIZE_VERTICAL);
    1170           0 :         rSet.ClearItem(SID_TOOL_CONNECTOR);
    1171           0 :         rSet.DisableItem(SID_TOOL_CONNECTOR);
    1172           0 :         rSet.ClearItem(SID_CONNECTOR_ARROW_START);
    1173           0 :         rSet.DisableItem(SID_CONNECTOR_ARROW_START);
    1174           0 :         rSet.ClearItem(SID_CONNECTOR_ARROW_END);
    1175           0 :         rSet.DisableItem(SID_CONNECTOR_ARROW_END);
    1176           0 :         rSet.ClearItem(SID_CONNECTOR_ARROWS);
    1177           0 :         rSet.DisableItem(SID_CONNECTOR_ARROWS);
    1178           0 :         rSet.ClearItem(SID_CONNECTOR_CIRCLE_START);
    1179           0 :         rSet.DisableItem(SID_CONNECTOR_CIRCLE_START);
    1180           0 :         rSet.ClearItem(SID_CONNECTOR_CIRCLE_END);
    1181           0 :         rSet.DisableItem(SID_CONNECTOR_CIRCLE_END);
    1182           0 :         rSet.ClearItem(SID_CONNECTOR_CIRCLES);
    1183           0 :         rSet.DisableItem(SID_CONNECTOR_CIRCLES);
    1184           0 :         rSet.ClearItem(SID_CONNECTOR_LINE);
    1185           0 :         rSet.DisableItem(SID_CONNECTOR_LINE);
    1186           0 :         rSet.ClearItem(SID_CONNECTOR_LINE_ARROW_START);
    1187           0 :         rSet.DisableItem(SID_CONNECTOR_LINE_ARROW_START);
    1188           0 :         rSet.ClearItem(SID_CONNECTOR_LINE_ARROW_END);
    1189           0 :         rSet.DisableItem(SID_CONNECTOR_LINE_ARROW_END);
    1190           0 :         rSet.ClearItem(SID_CONNECTOR_LINE_ARROWS);
    1191           0 :         rSet.DisableItem(SID_CONNECTOR_LINE_ARROWS);
    1192           0 :         rSet.ClearItem(SID_CONNECTOR_LINE_CIRCLE_START);
    1193           0 :         rSet.DisableItem(SID_CONNECTOR_LINE_CIRCLE_START);
    1194           0 :         rSet.ClearItem(SID_CONNECTOR_LINE_CIRCLE_END);
    1195           0 :         rSet.DisableItem(SID_CONNECTOR_LINE_CIRCLE_END);
    1196           0 :         rSet.ClearItem(SID_CONNECTOR_LINE_CIRCLES);
    1197           0 :         rSet.DisableItem(SID_CONNECTOR_LINE_CIRCLES);
    1198           0 :         rSet.ClearItem(SID_CONNECTOR_CURVE);
    1199           0 :         rSet.DisableItem(SID_CONNECTOR_CURVE);
    1200           0 :         rSet.ClearItem(SID_CONNECTOR_CURVE_ARROW_START);
    1201           0 :         rSet.DisableItem(SID_CONNECTOR_CURVE_ARROW_START);
    1202           0 :         rSet.ClearItem(SID_CONNECTOR_CURVE_ARROW_END);
    1203           0 :         rSet.DisableItem(SID_CONNECTOR_CURVE_ARROW_END);
    1204           0 :         rSet.ClearItem(SID_CONNECTOR_CURVE_ARROWS);
    1205           0 :         rSet.DisableItem(SID_CONNECTOR_CURVE_ARROWS);
    1206           0 :         rSet.ClearItem(SID_CONNECTOR_CURVE_CIRCLE_START);
    1207           0 :         rSet.DisableItem(SID_CONNECTOR_CURVE_CIRCLE_START);
    1208           0 :         rSet.ClearItem(SID_CONNECTOR_CURVE_CIRCLE_END);
    1209           0 :         rSet.DisableItem(SID_CONNECTOR_CURVE_CIRCLE_END);
    1210           0 :         rSet.ClearItem(SID_CONNECTOR_CURVE_CIRCLES);
    1211           0 :         rSet.DisableItem(SID_CONNECTOR_CURVE_CIRCLES);
    1212           0 :         rSet.ClearItem(SID_CONNECTOR_LINES);
    1213           0 :         rSet.DisableItem(SID_CONNECTOR_LINES);
    1214           0 :         rSet.ClearItem(SID_CONNECTOR_LINES_ARROW_START);
    1215           0 :         rSet.DisableItem(SID_CONNECTOR_LINES_ARROW_START);
    1216           0 :         rSet.ClearItem(SID_CONNECTOR_LINES_ARROW_END);
    1217           0 :         rSet.DisableItem(SID_CONNECTOR_LINES_ARROW_END);
    1218           0 :         rSet.ClearItem(SID_CONNECTOR_LINES_ARROWS);
    1219           0 :         rSet.DisableItem(SID_CONNECTOR_LINES_ARROWS);
    1220           0 :         rSet.ClearItem(SID_CONNECTOR_LINES_CIRCLE_START);
    1221           0 :         rSet.DisableItem(SID_CONNECTOR_LINES_CIRCLE_START);
    1222           0 :         rSet.ClearItem(SID_CONNECTOR_LINES_CIRCLE_END);
    1223           0 :         rSet.DisableItem(SID_CONNECTOR_LINES_CIRCLE_END);
    1224           0 :         rSet.ClearItem(SID_CONNECTOR_LINES_CIRCLES);
    1225           0 :         rSet.DisableItem(SID_CONNECTOR_LINES_CIRCLES);
    1226           0 :         rSet.ClearItem(SID_DRAW_ARC);
    1227           0 :         rSet.DisableItem(SID_DRAW_ARC);
    1228           0 :         rSet.ClearItem(SID_DRAW_CIRCLEARC);
    1229           0 :         rSet.DisableItem(SID_DRAW_CIRCLEARC);
    1230           0 :         rSet.ClearItem(SID_DRAW_PIE);
    1231           0 :         rSet.DisableItem(SID_DRAW_PIE);
    1232           0 :         rSet.ClearItem(SID_DRAW_PIE_NOFILL);
    1233           0 :         rSet.DisableItem(SID_DRAW_PIE_NOFILL);
    1234           0 :         rSet.ClearItem(SID_DRAW_CIRCLEPIE);
    1235           0 :         rSet.DisableItem(SID_DRAW_CIRCLEPIE);
    1236           0 :         rSet.ClearItem(SID_DRAW_CIRCLEPIE_NOFILL);
    1237           0 :         rSet.DisableItem(SID_DRAW_CIRCLEPIE_NOFILL);
    1238           0 :         rSet.ClearItem(SID_DRAW_ELLIPSECUT);
    1239           0 :         rSet.DisableItem(SID_DRAW_ELLIPSECUT);
    1240           0 :         rSet.ClearItem(SID_DRAW_ELLIPSECUT_NOFILL);
    1241           0 :         rSet.DisableItem(SID_DRAW_ELLIPSECUT_NOFILL);
    1242           0 :         rSet.ClearItem(SID_DRAW_CIRCLECUT);
    1243           0 :         rSet.DisableItem(SID_DRAW_CIRCLECUT);
    1244           0 :         rSet.ClearItem(SID_DRAW_CIRCLECUT_NOFILL);
    1245           0 :         rSet.DisableItem(SID_DRAW_CIRCLECUT_NOFILL);
    1246           0 :         rSet.ClearItem(SID_DRAW_POLYGON);
    1247           0 :         rSet.DisableItem(SID_DRAW_POLYGON);
    1248           0 :         rSet.ClearItem(SID_DRAW_POLYGON_NOFILL);
    1249           0 :         rSet.DisableItem(SID_DRAW_POLYGON_NOFILL);
    1250           0 :         rSet.ClearItem(SID_DRAW_FREELINE);
    1251           0 :         rSet.DisableItem(SID_DRAW_FREELINE);
    1252           0 :         rSet.ClearItem(SID_DRAW_FREELINE_NOFILL);
    1253           0 :         rSet.DisableItem(SID_DRAW_FREELINE_NOFILL);
    1254           0 :         rSet.ClearItem(SID_DRAW_XPOLYGON);
    1255           0 :         rSet.DisableItem(SID_DRAW_XPOLYGON);
    1256           0 :         rSet.ClearItem(SID_DRAW_XPOLYGON_NOFILL);
    1257           0 :         rSet.DisableItem(SID_DRAW_XPOLYGON_NOFILL);
    1258           0 :         rSet.ClearItem(SID_DRAW_BEZIER_FILL);
    1259           0 :         rSet.DisableItem(SID_DRAW_BEZIER_FILL);
    1260           0 :         rSet.ClearItem(SID_DRAW_BEZIER_NOFILL);
    1261           0 :         rSet.DisableItem(SID_DRAW_BEZIER_NOFILL);
    1262           0 :         rSet.ClearItem(SID_3D_CUBE);
    1263           0 :         rSet.DisableItem(SID_3D_CUBE);
    1264           0 :         rSet.ClearItem(SID_3D_SHELL);
    1265           0 :         rSet.DisableItem(SID_3D_SHELL);
    1266           0 :         rSet.ClearItem(SID_3D_SPHERE);
    1267           0 :         rSet.DisableItem(SID_3D_SPHERE);
    1268           0 :         rSet.ClearItem(SID_3D_HALF_SPHERE);
    1269           0 :         rSet.DisableItem(SID_3D_HALF_SPHERE);
    1270           0 :         rSet.ClearItem(SID_3D_CYLINDER);
    1271           0 :         rSet.DisableItem(SID_3D_CYLINDER);
    1272           0 :         rSet.ClearItem(SID_3D_CONE);
    1273           0 :         rSet.DisableItem(SID_3D_CONE);
    1274           0 :         rSet.ClearItem(SID_3D_TORUS);
    1275           0 :         rSet.DisableItem(SID_3D_TORUS);
    1276           0 :         rSet.ClearItem(SID_3D_PYRAMID);
    1277           0 :         rSet.DisableItem(SID_3D_PYRAMID);
    1278             :     }
    1279             : 
    1280             :     // are the modules available?
    1281             : 
    1282        3280 :     if (!SvtModuleOptions().IsCalc())
    1283             :     {
    1284             :         // remove menu entry if module is not available
    1285           0 :         rSet.Put( SfxVisibilityItem( SID_ATTR_TABLE, sal_False ) );
    1286             :     }
    1287        3280 :     if (!SvtModuleOptions().IsChart())
    1288             :     {
    1289           0 :         rSet.DisableItem( SID_INSERT_DIAGRAM );
    1290             :     }
    1291        3280 :     if (!SvtModuleOptions().IsMath())
    1292             :     {
    1293           0 :         rSet.DisableItem( SID_INSERT_MATH );
    1294             :     }
    1295             : 
    1296        6560 :     rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetViewShellBase() ) );
    1297        3280 :     if( (xSlideshow.is() && xSlideshow->isRunning() && (xSlideshow->getAnimationMode() != ANIMATIONMODE_PREVIEW) ) || GetDocSh()->IsPreview() )
    1298             :     {
    1299             :         // Own Slots
    1300           0 :         rSet.DisableItem( SID_PRESENTATION );
    1301           0 :         rSet.DisableItem( SID_ZOOM_IN );
    1302           0 :         rSet.DisableItem( SID_ZOOM_OUT );
    1303           0 :         rSet.DisableItem( SID_ZOOM_PANNING );
    1304           0 :         rSet.DisableItem( SID_ZOOM_NEXT );
    1305           0 :         rSet.DisableItem( SID_ZOOM_PREV );
    1306           0 :         rSet.DisableItem( SID_SIZE_REAL );
    1307           0 :         rSet.DisableItem( SID_SIZE_OPTIMAL );
    1308           0 :         rSet.DisableItem( SID_SIZE_ALL );
    1309           0 :         rSet.DisableItem( SID_SIZE_PAGE_WIDTH );
    1310           0 :         rSet.DisableItem( SID_SIZE_PAGE );
    1311           0 :         rSet.DisableItem( SID_INSERTPAGE );
    1312           0 :         rSet.DisableItem( SID_DUPLICATE_PAGE );
    1313           0 :         rSet.DisableItem( SID_MODIFYPAGE );
    1314           0 :         rSet.DisableItem( SID_RENAMEPAGE );
    1315           0 :         rSet.DisableItem( SID_RENAMEPAGE_QUICK );
    1316           0 :         rSet.DisableItem( SID_DELETE_PAGE );
    1317           0 :         rSet.DisableItem( SID_PAGESETUP );
    1318             : 
    1319           0 :         if( xSlideshow.is() && xSlideshow->isRunning() )
    1320             :         {
    1321           0 :             rSet.ClearItem(SID_OBJECT_ALIGN);
    1322           0 :             rSet.ClearItem(SID_ZOOM_TOOLBOX);
    1323           0 :             rSet.ClearItem(SID_OBJECT_CHOOSE_MODE);
    1324           0 :             rSet.ClearItem(SID_DRAWTBX_TEXT);
    1325           0 :             rSet.ClearItem(SID_DRAWTBX_RECTANGLES);
    1326           0 :             rSet.ClearItem(SID_DRAWTBX_ELLIPSES);
    1327           0 :             rSet.ClearItem(SID_DRAWTBX_LINES);
    1328           0 :             rSet.ClearItem(SID_DRAWTBX_ARROWS);
    1329           0 :             rSet.ClearItem(SID_DRAWTBX_3D_OBJECTS);
    1330           0 :             rSet.ClearItem(SID_DRAWTBX_CONNECTORS);
    1331           0 :             rSet.ClearItem(SID_OBJECT_CHOOSE_MODE );
    1332           0 :             rSet.ClearItem(SID_DRAWTBX_INSERT);
    1333           0 :             rSet.ClearItem(SID_INSERTFILE);
    1334           0 :             rSet.ClearItem(SID_OBJECT_ROTATE);
    1335           0 :             rSet.ClearItem(SID_OBJECT_ALIGN);
    1336           0 :             rSet.ClearItem(SID_POSITION);
    1337           0 :             rSet.ClearItem(SID_FM_CONFIG);
    1338           0 :             rSet.ClearItem(SID_ANIMATION_EFFECTS);
    1339           0 :             rSet.ClearItem(SID_ANIMATION_OBJECTS);
    1340           0 :             rSet.ClearItem(SID_3D_WIN);
    1341             : 
    1342           0 :             rSet.DisableItem(SID_OBJECT_ALIGN);
    1343           0 :             rSet.DisableItem(SID_ZOOM_TOOLBOX);
    1344           0 :             rSet.DisableItem(SID_OBJECT_CHOOSE_MODE);
    1345           0 :             rSet.DisableItem(SID_DRAWTBX_TEXT);
    1346           0 :             rSet.DisableItem(SID_DRAWTBX_RECTANGLES);
    1347           0 :             rSet.DisableItem(SID_DRAWTBX_ELLIPSES);
    1348           0 :             rSet.DisableItem(SID_DRAWTBX_LINES);
    1349           0 :             rSet.DisableItem(SID_DRAWTBX_ARROWS);
    1350           0 :             rSet.DisableItem(SID_DRAWTBX_3D_OBJECTS);
    1351           0 :             rSet.DisableItem(SID_DRAWTBX_CONNECTORS);
    1352           0 :             rSet.DisableItem(SID_OBJECT_CHOOSE_MODE );
    1353           0 :             rSet.DisableItem(SID_DRAWTBX_INSERT);
    1354           0 :             rSet.DisableItem(SID_INSERTFILE);
    1355           0 :             rSet.DisableItem(SID_OBJECT_ROTATE);
    1356           0 :             rSet.DisableItem(SID_OBJECT_ALIGN);
    1357           0 :             rSet.DisableItem(SID_POSITION);
    1358           0 :             rSet.DisableItem(SID_FM_CONFIG);
    1359           0 :             rSet.DisableItem(SID_ANIMATION_EFFECTS);
    1360           0 :             rSet.DisableItem(SID_ANIMATION_OBJECTS);
    1361           0 :             rSet.DisableItem(SID_3D_WIN);
    1362             :         }
    1363             :     }
    1364             : 
    1365             :     ///////////////////////////////////////////////////////////////////////
    1366             :     // Menuoption: Change->Convert->To Bitmap, Change->Convert->To Metafile
    1367             :     //             disable, if there only Bitmap or Metafiles marked
    1368             :     // Menuoption: Format->Area, Format->Line
    1369             :     //             disabled, if the marked objects not able to handle
    1370             :     //             these attributes
    1371             :     //
    1372             : 
    1373        3280 :     bool bSingleGraphicSelected = false;
    1374             : 
    1375        3280 :     if (!mpDrawView->AreObjectsMarked())
    1376             :     {
    1377        3279 :         rSet.DisableItem (SID_CONVERT_TO_METAFILE);
    1378        3279 :         rSet.DisableItem (SID_CONVERT_TO_BITMAP);
    1379             :     }
    1380             :     else
    1381             :     {
    1382             :         // get marklist
    1383           1 :         SdrMarkList aMarkList = mpDrawView->GetMarkedObjectList();
    1384             : 
    1385           1 :         sal_Bool bFoundBitmap         = sal_False;
    1386           1 :         sal_Bool bFoundMetafile       = sal_False;
    1387           1 :         sal_Bool bFoundObjNoLine      = sal_False;
    1388           1 :         sal_Bool bFoundObjNoArea      = sal_False;
    1389           1 :         sal_Bool bFoundNoGraphicObj = sal_False;
    1390           1 :         sal_Bool bFoundAny            = sal_False;
    1391           1 :         bool bFoundTable = false;
    1392             : 
    1393             : //      const int nMarkCount = (int) aMarkList.GetMarkCount();
    1394           2 :         for (sal_uLong i=0; i < nMarkCount && !bFoundAny; i++)
    1395             :         {
    1396           1 :             SdrObject* pObj=  aMarkList.GetMark(i)->GetMarkedSdrObj();
    1397           1 :             sal_uInt16 nId = pObj->GetObjIdentifier();
    1398           1 :             sal_uInt32 nInv = pObj->GetObjInventor();
    1399             : 
    1400           1 :             if(nInv == SdrInventor)
    1401             :             {
    1402             :                 // 2D objects
    1403           1 :                 switch( nId )
    1404             :                 {
    1405             :                     case OBJ_PATHLINE :
    1406             :                     case OBJ_PLIN :
    1407             :                     case OBJ_LINE:
    1408             :                     case OBJ_FREELINE :
    1409             :                     case OBJ_EDGE:
    1410             :                     case OBJ_CARC :
    1411           0 :                         bFoundObjNoArea      = sal_True;
    1412           0 :                         bFoundNoGraphicObj = sal_True;
    1413           0 :                         break;
    1414             :                     case OBJ_OLE2 :
    1415             :                         // #i118485# #i118525# Allow Line, Area and Graphic (Metafile, Bitmap)
    1416           0 :                         bSingleGraphicSelected = nMarkCount == 1;
    1417           0 :                         bFoundBitmap = true;
    1418           0 :                         bFoundMetafile = true;
    1419           0 :                         break;
    1420             :                     case OBJ_GRAF :
    1421             :                     {
    1422           0 :                         bSingleGraphicSelected = nMarkCount == 1;
    1423           0 :                         const SdrGrafObj* pSdrGrafObj = static_cast< const SdrGrafObj* >(pObj);
    1424           0 :                         switch(pSdrGrafObj->GetGraphicType())
    1425             :                         {
    1426             :                             case GRAPHIC_BITMAP :
    1427           0 :                                 bFoundBitmap = sal_True;
    1428           0 :                                 if(pSdrGrafObj->isEmbeddedSvg())
    1429             :                                 {
    1430           0 :                                     bFoundMetafile = true;
    1431             :                                 }
    1432           0 :                                 break;
    1433             :                             case GRAPHIC_GDIMETAFILE :
    1434           0 :                                 bFoundMetafile = sal_True;
    1435           0 :                                 break;
    1436             :                             default:
    1437           0 :                                 break;
    1438             :                         }
    1439           0 :                         break;
    1440             :                     }
    1441             :                     case OBJ_TABLE:
    1442           0 :                         bFoundTable = true;
    1443           0 :                         break;
    1444             :                     default :
    1445           1 :                         bFoundAny = sal_True;
    1446             :                 }
    1447             :             }
    1448           0 :             else if(nInv == E3dInventor)
    1449             :             {
    1450             :                 // 3D objects
    1451           0 :                 bFoundAny = sal_True;
    1452             :             }
    1453             :         }
    1454             : 
    1455           1 :         if( bFoundTable )
    1456           0 :             rSet.DisableItem( SID_ATTRIBUTES_LINE );
    1457             : 
    1458           1 :         if (!bFoundAny)
    1459             :         {
    1460             :             // Disable menuitem for area-dialog
    1461           0 :             if( bFoundObjNoArea ) // #i25616#
    1462           0 :                 rSet.DisableItem( SID_ATTRIBUTES_AREA );
    1463             : 
    1464             :             // Disable menuitem for line-dialog
    1465           0 :             if( bFoundObjNoLine )
    1466           0 :                 rSet.DisableItem( SID_ATTRIBUTES_LINE );
    1467             : 
    1468           0 :             if( bFoundBitmap && !bFoundMetafile && !bFoundNoGraphicObj )    // only Bitmaps marked
    1469           0 :                 rSet.DisableItem( SID_CONVERT_TO_BITMAP );
    1470           0 :             else if( !bFoundBitmap && bFoundMetafile && !bFoundNoGraphicObj )   // only Metafiles marked
    1471           0 :                 rSet.DisableItem( SID_CONVERT_TO_METAFILE );
    1472           0 :             else if( !bFoundBitmap && !bFoundMetafile && !bFoundNoGraphicObj )  // nothing to do
    1473             :             {
    1474           0 :                 rSet.DisableItem( SID_CONVERT_TO_BITMAP );
    1475           0 :                 rSet.DisableItem( SID_CONVERT_TO_METAFILE );
    1476             :             }
    1477           1 :         }
    1478             :     }
    1479             : 
    1480        3280 :     if( !bSingleGraphicSelected )
    1481             :     {
    1482        3280 :         rSet.DisableItem (SID_OBJECT_CROP);
    1483        3280 :         rSet.DisableItem (SID_ATTR_GRAF_CROP);
    1484             :     }
    1485             : 
    1486             :     ///////////////////////////////////////////////////////////////////////
    1487             :     // Menuoption: Edit->Hyperlink
    1488             :     // Disable, if there is no hyperlink
    1489             :     //
    1490        3280 :     sal_Bool bDisableEditHyperlink = sal_True;
    1491        3280 :     if( mpDrawView->AreObjectsMarked() && ( mpDrawView->GetMarkedObjectList().GetMarkCount() == 1 ) )
    1492             :     {
    1493           1 :         if( mpDrawView->IsTextEdit() )
    1494             :         {
    1495           0 :             OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
    1496           0 :             if (pOLV)
    1497             :             {
    1498           0 :                 const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
    1499           0 :                 if (pFieldItem)
    1500             :                 {
    1501           0 :                     ESelection aSel = pOLV->GetSelection();
    1502           0 :                     if ( abs( aSel.nEndPos - aSel.nStartPos ) == 1 )
    1503             :                     {
    1504           0 :                         const SvxFieldData* pField = pFieldItem->GetField();
    1505           0 :                         if ( pField->ISA(SvxURLField) )
    1506           0 :                             bDisableEditHyperlink = sal_False;
    1507             :                     }
    1508             :                 }
    1509             :             }
    1510             :         }
    1511             :         else
    1512             :         {
    1513           1 :             SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, mpDrawView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj());
    1514             : 
    1515           1 :             if ( pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor() )
    1516             :             {
    1517           0 :                 uno::Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel() );
    1518           0 :                 if( xControlModel.is() )
    1519             :                 {
    1520           0 :                     uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY );
    1521           0 :                     if( xPropSet.is() )
    1522             :                     {
    1523           0 :                         uno::Reference< beans::XPropertySetInfo > xPropInfo( xPropSet->getPropertySetInfo() );
    1524           0 :                         if( xPropInfo.is() && xPropInfo->hasPropertyByName( "TargetURL") )
    1525             :                         {
    1526           0 :                             bDisableEditHyperlink = sal_False;
    1527           0 :                         }
    1528           0 :                     }
    1529           0 :                 }
    1530             :             }
    1531             :         }
    1532             :     }
    1533             : 
    1534             :     //highlight selected custom shape
    1535             :     {
    1536        3280 :         sal_uInt16 nCurrentSId = 0;
    1537        3280 :         if(HasCurrentFunction())
    1538        3280 :             nCurrentSId = GetCurrentFunction()->GetSlotID();
    1539             : 
    1540        3280 :         if ( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DRAWTBX_CS_BASIC ) )
    1541         317 :             rSet.Put(SfxBoolItem(SID_DRAWTBX_CS_BASIC, SID_DRAWTBX_CS_BASIC == nCurrentSId ));
    1542        3280 :         if ( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DRAWTBX_CS_SYMBOL ) )
    1543         109 :             rSet.Put(SfxBoolItem(SID_DRAWTBX_CS_SYMBOL, SID_DRAWTBX_CS_SYMBOL == nCurrentSId ));
    1544        3280 :         if ( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DRAWTBX_CS_ARROW ) )
    1545         109 :             rSet.Put(SfxBoolItem(SID_DRAWTBX_CS_ARROW, SID_DRAWTBX_CS_ARROW == nCurrentSId ));
    1546        3280 :         if ( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DRAWTBX_CS_FLOWCHART ) )
    1547         109 :             rSet.Put(SfxBoolItem(SID_DRAWTBX_CS_FLOWCHART, SID_DRAWTBX_CS_FLOWCHART == nCurrentSId ));
    1548        3280 :         if ( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DRAWTBX_CS_CALLOUT ) )
    1549         109 :             rSet.Put(SfxBoolItem(SID_DRAWTBX_CS_CALLOUT,SID_DRAWTBX_CS_CALLOUT == nCurrentSId ));
    1550        3280 :         if ( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DRAWTBX_CS_STAR ) )
    1551         109 :             rSet.Put(SfxBoolItem(SID_DRAWTBX_CS_STAR, SID_DRAWTBX_CS_STAR == nCurrentSId ));
    1552             :     }
    1553             : 
    1554        3280 :     if ( bDisableEditHyperlink || GetDocSh()->IsReadOnly() )
    1555        3280 :         rSet.DisableItem( SID_EDIT_HYPERLINK );
    1556             : 
    1557        3280 :     if ( bDisableEditHyperlink )
    1558        3280 :         rSet.DisableItem( SID_OPEN_HYPERLINK );
    1559             : 
    1560             : #if defined WNT || defined UNX
    1561        3280 :     if( !mxScannerManager.is() )
    1562             :     {
    1563           0 :         rSet.DisableItem( SID_TWAIN_SELECT );
    1564           0 :         rSet.DisableItem( SID_TWAIN_TRANSFER );
    1565             :     }
    1566             : #endif
    1567             : 
    1568             :     // Set the state of two entries in the 'Slide' context sub-menu
    1569             :     // concerning the visibility of master page background and master page
    1570             :     // shapes.
    1571        6560 :     if (rSet.GetItemState(SID_DISPLAY_MASTER_BACKGROUND) == SFX_ITEM_AVAILABLE
    1572        3280 :         || rSet.GetItemState(SID_DISPLAY_MASTER_OBJECTS) == SFX_ITEM_AVAILABLE)
    1573             :     {
    1574           0 :         SdPage* pPage = GetActualPage();
    1575           0 :         if (pPage != NULL
    1576           0 :             && GetDoc() != NULL)
    1577             :         {
    1578           0 :             SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
    1579           0 :             SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
    1580           0 :             sal_uInt8 aBackgroundId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False);
    1581           0 :             sal_uInt8 aObjectId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False);
    1582             :             rSet.Put(SfxBoolItem(SID_DISPLAY_MASTER_BACKGROUND,
    1583           0 :                     aVisibleLayers.IsSet(aBackgroundId)));
    1584             :             rSet.Put(SfxBoolItem(SID_DISPLAY_MASTER_OBJECTS,
    1585           0 :                     aVisibleLayers.IsSet(aObjectId)));
    1586             :         }
    1587             :     }
    1588             : 
    1589        6560 :     GetModeSwitchingMenuState (rSet);
    1590             : }
    1591             : 
    1592        3280 : void DrawViewShell::GetModeSwitchingMenuState (SfxItemSet &rSet)
    1593             : {
    1594             :     //draview
    1595        3280 :     rSet.Put(SfxBoolItem(SID_DIAMODE, sal_False));
    1596        3280 :     rSet.Put(SfxBoolItem(SID_OUTLINEMODE, sal_False));
    1597        3280 :     if (mePageKind == PK_NOTES)
    1598             :     {
    1599           0 :         rSet.Put(SfxBoolItem(SID_DRAWINGMODE, sal_False));
    1600           0 :         rSet.Put(SfxBoolItem(SID_NOTESMODE, sal_True));
    1601           0 :         rSet.Put(SfxBoolItem(SID_HANDOUTMODE, sal_False));
    1602             :     }
    1603        3280 :     else if (mePageKind == PK_HANDOUT)
    1604             :     {
    1605           0 :         rSet.Put(SfxBoolItem(SID_DRAWINGMODE, sal_False));
    1606           0 :         rSet.Put(SfxBoolItem(SID_NOTESMODE, sal_False));
    1607           0 :         rSet.Put(SfxBoolItem(SID_HANDOUTMODE, sal_True));
    1608             :     }
    1609             :     else
    1610             :     {
    1611        3280 :         rSet.Put(SfxBoolItem(SID_DRAWINGMODE, sal_True));
    1612        3280 :         rSet.Put(SfxBoolItem(SID_NOTESMODE, sal_False));
    1613        3280 :         rSet.Put(SfxBoolItem(SID_HANDOUTMODE, sal_False));
    1614             :     }
    1615             : 
    1616             :     // Removed [GetDocSh()->GetCurrentFunction() ||] from the following
    1617             :     // clause because the current function of the docshell can only be
    1618             :     // search and replace or spell checking and in that case switching the
    1619             :     // view mode is allowed.
    1620        3280 :     const bool bIsRunning = SlideShow::IsRunning(GetViewShellBase());
    1621             : 
    1622        3280 :     if (GetViewFrame()->GetFrame().IsInPlace() || bIsRunning)
    1623             :     {
    1624           0 :         if ( !GetViewFrame()->GetFrame().IsInPlace() )
    1625             :         {
    1626           0 :             rSet.ClearItem( SID_DRAWINGMODE );
    1627           0 :             rSet.DisableItem( SID_DRAWINGMODE );
    1628             :         }
    1629             : 
    1630           0 :         rSet.ClearItem( SID_NOTESMODE );
    1631           0 :         rSet.DisableItem( SID_NOTESMODE );
    1632             : 
    1633           0 :         rSet.ClearItem( SID_HANDOUTMODE );
    1634           0 :         rSet.DisableItem( SID_HANDOUTMODE );
    1635             : 
    1636           0 :         rSet.ClearItem( SID_OUTLINEMODE );
    1637           0 :         rSet.DisableItem( SID_OUTLINEMODE );
    1638             : 
    1639           0 :         rSet.ClearItem( SID_DIAMODE );
    1640           0 :         rSet.DisableItem( SID_DIAMODE );
    1641             :     }
    1642             : 
    1643        3280 :     if (GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)
    1644             :     {
    1645             :         // Outplace-Edit: do not allow switch
    1646           0 :         rSet.ClearItem( SID_OUTLINEMODE );
    1647           0 :         rSet.DisableItem( SID_OUTLINEMODE );
    1648             : 
    1649           0 :         rSet.ClearItem( SID_DIAMODE );
    1650           0 :         rSet.DisableItem( SID_DIAMODE );
    1651             : 
    1652           0 :         rSet.ClearItem( SID_NOTESMODE );
    1653           0 :         rSet.DisableItem( SID_NOTESMODE );
    1654             : 
    1655           0 :         rSet.ClearItem( SID_HANDOUTMODE );
    1656           0 :         rSet.DisableItem( SID_HANDOUTMODE );
    1657             :     }
    1658             : 
    1659        3280 :     svx::ExtrusionBar::getState( mpDrawView, rSet );
    1660        3280 :     svx::FontworkBar::getState( mpDrawView, rSet );
    1661        3280 : }
    1662             : 
    1663             : 
    1664             : 
    1665           0 : void DrawViewShell::GetState (SfxItemSet& rSet)
    1666             : {
    1667             :     // Iterate over all requested items in the set.
    1668           0 :     SfxWhichIter aIter( rSet );
    1669           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1670           0 :     while (nWhich)
    1671             :     {
    1672           0 :         switch (nWhich)
    1673             :         {
    1674             :             case SID_SEARCH_ITEM:
    1675             :             case SID_SEARCH_OPTIONS:
    1676             :                 // Forward this request to the common (old) code of the
    1677             :                 // document shell.
    1678           0 :                 GetDocSh()->GetState (rSet);
    1679           0 :                 break;
    1680             :             default:
    1681             :                 OSL_TRACE ("DrawViewShell::GetState(): can not handle which id %d", nWhich);
    1682           0 :                 break;
    1683             :         }
    1684           0 :         nWhich = aIter.NextWhich();
    1685           0 :     }
    1686           0 : }
    1687             : 
    1688             : 
    1689             : 
    1690             : 
    1691           0 : void DrawViewShell::Execute (SfxRequest& rReq)
    1692             : {
    1693           0 :     if(SlideShow::IsRunning(GetViewShellBase()))
    1694             :     {
    1695             :         // Do not execute anything during a native slide show.
    1696           0 :         return;
    1697             :     }
    1698             : 
    1699           0 :     switch (rReq.GetSlot())
    1700             :     {
    1701             :         case SID_SEARCH_ITEM:
    1702             :             // Forward this request to the common (old) code of the
    1703             :             // document shell.
    1704           0 :             GetDocSh()->Execute (rReq);
    1705           0 :         break;
    1706             : 
    1707             :         case SID_SPELL_DIALOG:
    1708             :         {
    1709           0 :             SfxViewFrame* pViewFrame = GetViewFrame();
    1710           0 :             if (rReq.GetArgs() != NULL)
    1711             :                 pViewFrame->SetChildWindow (SID_SPELL_DIALOG,
    1712           0 :                     ((const SfxBoolItem&) (rReq.GetArgs()->
    1713           0 :                         Get(SID_SPELL_DIALOG))).GetValue());
    1714             :             else
    1715           0 :                 pViewFrame->ToggleChildWindow(SID_SPELL_DIALOG);
    1716             : 
    1717           0 :             pViewFrame->GetBindings().Invalidate(SID_SPELL_DIALOG);
    1718           0 :             rReq.Ignore ();
    1719             :         }
    1720           0 :         break;
    1721             : 
    1722             :         default:
    1723             :             OSL_TRACE ("DrawViewShell::Execute(): can not handle slot %d", rReq.GetSlot());
    1724           0 :             break;
    1725             :     }
    1726             : }
    1727             : 
    1728          33 : } // end of namespace sd
    1729             : 
    1730             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10