LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/sd/source/ui/view - drviews2.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 1430 0.1 %
Date: 2013-07-09 Functions: 2 11 18.2 %
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 <avmedia/mediaplayer.hxx>
      21             : 
      22             : #include <basic/sberrors.hxx>
      23             : #include <basic/sbstar.hxx>
      24             : 
      25             : #include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
      26             : #include <com/sun/star/drawing/XDrawPages.hpp>
      27             : #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
      28             : #include <com/sun/star/ui/dialogs/XSLTFilterDialog.hpp>
      29             : 
      30             : #include <comphelper/processfactory.hxx>
      31             : 
      32             : #include <editeng/editdata.hxx>
      33             : #include <editeng/eeitem.hxx>
      34             : #include <editeng/flditem.hxx>
      35             : 
      36             : #include <sfx2/bindings.hxx>
      37             : #include <sfx2/dispatch.hxx>
      38             : #include <sfx2/docfile.hxx>
      39             : #include <sfx2/msgpool.hxx>
      40             : #include <sfx2/request.hxx>
      41             : #include <sfx2/viewfrm.hxx>
      42             : #include <sfx2/zoomitem.hxx>
      43             : 
      44             : #include <svl/aeitem.hxx>
      45             : 
      46             : #include <svx/SpellDialogChildWindow.hxx>
      47             : #include <svx/compressgraphicdialog.hxx>
      48             : #include <svx/dialogs.hrc>
      49             : #include <svx/bmpmask.hxx>
      50             : #include <svx/colrctrl.hxx>
      51             : #include <svx/extedit.hxx>
      52             : #include <svx/extrusionbar.hxx>
      53             : #include <svx/f3dchild.hxx>
      54             : #include <svx/fontwork.hxx>
      55             : #include <svx/fontworkbar.hxx>
      56             : #include <svx/galbrws.hxx>
      57             : #include <svx/graphichelper.hxx>
      58             : #include <svx/hlnkitem.hxx>
      59             : #include <svx/imapdlg.hxx>
      60             : #include <svx/sdtagitm.hxx>
      61             : #include <svx/sdtmfitm.hxx>
      62             : #include <svx/svdoattr.hxx>
      63             : #include <svx/svdograf.hxx>
      64             : #include <svx/svdoole2.hxx>
      65             : #include <svx/svdoutl.hxx>
      66             : #include <svx/svdpagv.hxx>
      67             : #include <svx/svdundo.hxx>
      68             : #include <svx/svxdlg.hxx>
      69             : #include <svx/svxids.hrc>
      70             : #include <svx/xfillit0.hxx>
      71             : #include <svx/xflclit.hxx>
      72             : #include <svx/xlineit0.hxx>
      73             : #include <svx/xlnedwit.hxx>
      74             : #include <svx/xlnstwit.hxx>
      75             : #include <svx/xlnwtit.hxx>
      76             : 
      77             : #include <tools/diagnose_ex.h>
      78             : 
      79             : #include <unotools/useroptions.hxx>
      80             : 
      81             : #include <vcl/graph.hxx>
      82             : #include <vcl/msgbox.hxx>
      83             : #include <vcl/svapp.hxx>
      84             : #include <vcl/waitobj.hxx>
      85             : 
      86             : #include <editeng/escapementitem.hxx>
      87             : #include <editeng/kernitem.hxx>
      88             : #include <editeng/wghtitem.hxx>
      89             : #include <editeng/postitem.hxx>
      90             : #include <editeng/udlnitem.hxx>
      91             : #include <editeng/crossedoutitem.hxx>
      92             : #include <editeng/contouritem.hxx>
      93             : #include <editeng/shdditem.hxx>
      94             : #include <svx/xtable.hxx>
      95             : #include <svx/svdobj.hxx>
      96             : #include <svx/SvxColorChildWindow.hxx>
      97             : #include <editeng/outlobj.hxx>
      98             : #include <editeng/flstitem.hxx>
      99             : #include <editeng/scripttypeitem.hxx>
     100             : #include <editeng/fontitem.hxx>
     101             : #include <editeng/fhgtitem.hxx>
     102             : #include <editeng/colritem.hxx>
     103             : #include <editeng/brushitem.hxx>
     104             : 
     105             : #include <svl/whiter.hxx>
     106             : 
     107             : #include "app.hrc"
     108             : #include "glob.hrc"
     109             : #include "strings.hrc"
     110             : 
     111             : #include "framework/FrameworkHelper.hxx"
     112             : 
     113             : #include "AnimationChildWindow.hxx"
     114             : #include "DrawDocShell.hxx"
     115             : #include "DrawViewShell.hxx"
     116             : #include "GraphicViewShell.hxx"
     117             : #include "LayerDialogChildWindow.hxx"
     118             : #include "LayerTabBar.hxx"
     119             : #include "Outliner.hxx"
     120             : #include "ViewShellHint.hxx"
     121             : #include "ViewShellImplementation.hxx"
     122             : #include "Window.hxx"
     123             : #include "drawdoc.hxx"
     124             : #include "drawview.hxx"
     125             : #include "fuarea.hxx"
     126             : #include "fubullet.hxx"
     127             : #include "fuchar.hxx"
     128             : #include "fucushow.hxx"
     129             : #include "fuconnct.hxx"
     130             : #include "fucopy.hxx"
     131             : #include "fudspord.hxx"
     132             : #include "fuexpand.hxx"
     133             : #include "fuinsert.hxx"
     134             : #include "fuinsfil.hxx"
     135             : #include "fuline.hxx"
     136             : #include "fulinend.hxx"
     137             : #include "fulink.hxx"
     138             : #include "fumeasur.hxx"
     139             : #include "fumorph.hxx"
     140             : #include "fuoaprms.hxx"
     141             : #include "fuolbull.hxx"
     142             : #include "fupage.hxx"
     143             : #include "fuparagr.hxx"
     144             : #include "fuprlout.hxx"
     145             : #include "fuscale.hxx"
     146             : #include "fusel.hxx"
     147             : #include "fusldlg.hxx"
     148             : #include "fusnapln.hxx"
     149             : #include "fusumry.hxx"
     150             : #include "futempl.hxx"
     151             : #include "futhes.hxx"
     152             : #include "futransf.hxx"
     153             : #include "futxtatt.hxx"
     154             : #include "fuvect.hxx"
     155             : #include "futext.hxx"
     156             : #include "fuzoom.hxx"
     157             : #include "helpids.h"
     158             : #include "optsitem.hxx"
     159             : #include "sdabstdlg.hxx"
     160             : #include "sdattr.hxx"
     161             : #include "sdgrffilter.hxx"
     162             : #include "sdpage.hxx"
     163             : #include "sdresid.hxx"
     164             : #include "slideshow.hxx"
     165             : #include "stlpool.hxx"
     166             : #include "undolayer.hxx"
     167             : #include "unmodpg.hxx"
     168             : 
     169             : using namespace ::com::sun::star;
     170             : using namespace ::com::sun::star::uno;
     171             : 
     172             : #define MIN_ACTIONS_FOR_DIALOG  5000    ///< if there are more meta objects, we show a dialog during the break up
     173             : 
     174             : namespace sd {
     175             : 
     176           0 : class SdExternalToolEdit : public ExternalToolEdit
     177             : {
     178             :     FmFormView* m_pView;
     179             :     SdrObject*  m_pObj;
     180             : 
     181             : public:
     182           0 :     SdExternalToolEdit ( FmFormView* pView, SdrObject* pObj ) :
     183             :         m_pView   (pView),
     184           0 :         m_pObj (pObj)
     185           0 :     {}
     186             : 
     187           0 :     virtual void Update( Graphic& aGraphic )
     188             :     {
     189           0 :         SdrPageView* pPageView = m_pView->GetSdrPageView();
     190           0 :         if( pPageView )
     191             :         {
     192           0 :             SdrGrafObj* pNewObj = (SdrGrafObj*) m_pObj->Clone();
     193           0 :             String      aStr( m_pView->GetDescriptionOfMarkedObjects() );
     194           0 :             aStr.Append( sal_Unicode(' ') );
     195           0 :             aStr.Append( String( "External Edit" ) );
     196           0 :             m_pView->BegUndo( aStr );
     197           0 :             pNewObj->SetGraphicObject( aGraphic );
     198           0 :             m_pView->ReplaceObjectAtView( m_pObj, *pPageView, pNewObj );
     199           0 :             m_pView->EndUndo();
     200             :         }
     201           0 :     }
     202             : };
     203             : 
     204             : /**
     205             :  * SfxRequests for temporary actions
     206             :  */
     207             : 
     208           0 : void DrawViewShell::FuTemporary(SfxRequest& rReq)
     209             : {
     210             :     // during a native slide show nothing gets executed!
     211           0 :     if(SlideShow::IsRunning( GetViewShellBase() ) && (rReq.GetSlot() != SID_NAVIGATOR))
     212           0 :         return;
     213             : 
     214             :     DBG_ASSERT( mpDrawView, "sd::DrawViewShell::FuTemporary(), no draw view!" );
     215           0 :     if( !mpDrawView )
     216           0 :         return;
     217             : 
     218           0 :     CheckLineTo (rReq);
     219             : 
     220           0 :     DeactivateCurrentFunction();
     221             : 
     222           0 :     sal_uInt16 nSId = rReq.GetSlot();
     223             : 
     224             :     // Slot gets mapped (ToolboxImages/-Slots)
     225           0 :     MapSlot( nSId );
     226             : 
     227           0 :     switch ( nSId )
     228             :     {
     229             :         case SID_OUTLINE_TEXT_AUTOFIT:
     230             :         {
     231           0 :             ::svl::IUndoManager* pUndoManager = GetDocSh()->GetUndoManager();
     232           0 :             SdrObject* pObj = NULL;
     233           0 :             const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
     234           0 :             if( rMarkList.GetMarkCount() == 1 )
     235             :             {
     236           0 :                 pUndoManager->EnterListAction( String(), String() );
     237           0 :                 mpDrawView->BegUndo();
     238             : 
     239           0 :                 pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
     240           0 :                 bool bSet = ((const SdrTextFitToSizeTypeItem*)pObj->GetMergedItemSet().GetItem(SDRATTR_TEXT_FITTOSIZE))->GetValue() != SDRTEXTFIT_NONE;
     241             : 
     242           0 :                 mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
     243             : 
     244           0 :                 pObj->SetMergedItem(SdrTextFitToSizeTypeItem(bSet ? SDRTEXTFIT_NONE : SDRTEXTFIT_AUTOFIT));
     245             : 
     246           0 :                 mpDrawView->EndUndo();
     247           0 :                 pUndoManager->LeaveListAction();
     248             :             }
     249           0 :             Cancel();
     250           0 :             rReq.Done();
     251             :         }
     252           0 :         break;
     253             : 
     254             :         // area and line attributes: shall have
     255             :         // an own Execute method (like StateMethode)
     256             :         case SID_ATTR_FILL_STYLE:
     257             :         case SID_ATTR_FILL_COLOR:
     258             :         case SID_ATTR_FILL_GRADIENT:
     259             :         case SID_ATTR_FILL_HATCH:
     260             :         case SID_ATTR_FILL_BITMAP:
     261             :         case SID_ATTR_FILL_SHADOW:
     262             :         case SID_ATTR_FILL_TRANSPARENCE:
     263             :         case SID_ATTR_FILL_FLOATTRANSPARENCE:
     264             : 
     265             :         case SID_ATTR_LINE_STYLE:
     266             :         case SID_ATTR_LINE_DASH:
     267             :         case SID_ATTR_LINE_WIDTH:
     268             :         case SID_ATTR_LINE_COLOR:
     269             :         case SID_ATTR_LINEEND_STYLE:
     270             :         case SID_ATTR_LINE_START:
     271             :         case SID_ATTR_LINE_END:
     272             :         case SID_ATTR_LINE_TRANSPARENCE:
     273             :         case SID_ATTR_LINE_JOINT:
     274             :         case SID_ATTR_LINE_CAP:
     275             : 
     276             :         case SID_ATTR_TEXT_FITTOSIZE:
     277             :         {
     278           0 :             if( rReq.GetArgs() )
     279             :             {
     280           0 :                 mpDrawView->SetAttributes(*rReq.GetArgs());
     281           0 :                 rReq.Done();
     282             :             }
     283             :             else
     284             :             {
     285           0 :                 switch( rReq.GetSlot() )
     286             :                 {
     287             :                     case SID_ATTR_FILL_SHADOW:
     288             :                     case SID_ATTR_FILL_STYLE:
     289             :                     case SID_ATTR_FILL_COLOR:
     290             :                     case SID_ATTR_FILL_GRADIENT:
     291             :                     case SID_ATTR_FILL_HATCH:
     292             :                     case SID_ATTR_FILL_BITMAP:
     293             :                     case SID_ATTR_FILL_TRANSPARENCE:
     294             :                     case SID_ATTR_FILL_FLOATTRANSPARENCE:
     295           0 :                         GetViewFrame()->GetDispatcher()->Execute( SID_ATTRIBUTES_AREA, SFX_CALLMODE_ASYNCHRON );
     296           0 :                         break;
     297             :                     case SID_ATTR_LINE_STYLE:
     298             :                     case SID_ATTR_LINE_DASH:
     299             :                     case SID_ATTR_LINE_WIDTH:
     300             :                     case SID_ATTR_LINE_COLOR:
     301             :                     case SID_ATTR_LINE_TRANSPARENCE:
     302             :                     case SID_ATTR_LINE_JOINT:
     303             :                     case SID_ATTR_LINE_CAP:
     304           0 :                         GetViewFrame()->GetDispatcher()->Execute( SID_ATTRIBUTES_LINE, SFX_CALLMODE_ASYNCHRON );
     305           0 :                         break;
     306             :                     case SID_ATTR_TEXT_FITTOSIZE:
     307           0 :                         GetViewFrame()->GetDispatcher()->Execute( SID_TEXTATTR_DLG, SFX_CALLMODE_ASYNCHRON );
     308           0 :                         break;
     309             :                 }
     310             :             }
     311           0 :             Cancel();
     312             :         }
     313           0 :         break;
     314             : 
     315             :         case SID_HYPHENATION:
     316             :         {
     317             :             // const SfxPoolItem* pItem = rReq.GetArg( SID_HYPHENATION );
     318             :             //  ^-- should not be used (defaults are wrong) !
     319           0 :             SFX_REQUEST_ARG( rReq, pItem, SfxBoolItem, SID_HYPHENATION, sal_False);
     320             : 
     321           0 :             if( pItem )
     322             :             {
     323           0 :                 SfxItemSet aSet( GetPool(), EE_PARA_HYPHENATE, EE_PARA_HYPHENATE );
     324           0 :                 sal_Bool bValue = ( (const SfxBoolItem*) pItem)->GetValue();
     325           0 :                 aSet.Put( SfxBoolItem( EE_PARA_HYPHENATE, bValue ) );
     326           0 :                 mpDrawView->SetAttributes( aSet );
     327             :             }
     328             :             else // only for testing purpose
     329             :             {
     330             :                 OSL_FAIL(" no value for hyphenation!");
     331           0 :                 SfxItemSet aSet( GetPool(), EE_PARA_HYPHENATE, EE_PARA_HYPHENATE );
     332           0 :                 sal_Bool bValue = sal_True;
     333           0 :                 aSet.Put( SfxBoolItem( EE_PARA_HYPHENATE, bValue ) );
     334           0 :                 mpDrawView->SetAttributes( aSet );
     335             :             }
     336           0 :             rReq.Done();
     337           0 :             Cancel();
     338             :         }
     339           0 :         break;
     340             : 
     341             :         case SID_INSERTPAGE:
     342             :         case SID_INSERTPAGE_QUICK:
     343             :         case SID_DUPLICATE_PAGE:
     344             :         {
     345           0 :             SdPage* pNewPage = CreateOrDuplicatePage (rReq, mePageKind, GetActualPage());
     346           0 :             Cancel();
     347           0 :             if(HasCurrentFunction(SID_BEZIER_EDIT) )
     348           0 :                 GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
     349           0 :             if (pNewPage != NULL)
     350           0 :                 SwitchPage((pNewPage->GetPageNum()-1)/2);
     351           0 :             rReq.Done ();
     352             :         }
     353           0 :         break;
     354             : 
     355             :         case SID_INSERT_MASTER_PAGE:
     356             :         {
     357             :             // Use the API to create a new page.
     358             :             Reference<drawing::XMasterPagesSupplier> xMasterPagesSupplier (
     359           0 :                 GetDoc()->getUnoModel(), UNO_QUERY);
     360           0 :             if (xMasterPagesSupplier.is())
     361             :             {
     362             :                 Reference<drawing::XDrawPages> xMasterPages (
     363           0 :                     xMasterPagesSupplier->getMasterPages());
     364           0 :                 if (xMasterPages.is())
     365             :                 {
     366           0 :                     sal_uInt16 nIndex = GetCurPageId();
     367           0 :                     xMasterPages->insertNewByIndex (nIndex);
     368             : 
     369             :                     // Create shapes for the default layout.
     370             :                     SdPage* pMasterPage = GetDoc()->GetMasterSdPage(
     371           0 :                         nIndex, PK_STANDARD);
     372           0 :                     pMasterPage->CreateTitleAndLayout (sal_True,sal_True);
     373           0 :                 }
     374             :             }
     375             : 
     376           0 :             Cancel();
     377           0 :             if(HasCurrentFunction(SID_BEZIER_EDIT))
     378             :                 GetViewFrame()->GetDispatcher()->Execute(
     379           0 :                     SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
     380           0 :             rReq.Done ();
     381             :         }
     382           0 :         break;
     383             : 
     384             :         case SID_MODIFYPAGE:
     385             :         {
     386           0 :             if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES ||
     387           0 :                 (mePageKind==PK_HANDOUT && meEditMode==EM_MASTERPAGE) )
     388             :             {
     389           0 :                 if ( mpDrawView->IsTextEdit() )
     390             :                 {
     391           0 :                     mpDrawView->SdrEndTextEdit();
     392             :                 }
     393           0 :                 sal_uInt16 nPage = maTabControl.GetCurPageId() - 1;
     394           0 :                 mpActualPage = GetDoc()->GetSdPage(nPage, mePageKind);
     395             :                 ::sd::ViewShell::mpImpl->ProcessModifyPageSlot (
     396             :                     rReq,
     397             :                     mpActualPage,
     398           0 :                     mePageKind);
     399             :             }
     400             : 
     401           0 :             Cancel();
     402           0 :             rReq.Done ();
     403             :         }
     404           0 :         break;
     405             : 
     406             :         case SID_ASSIGN_LAYOUT:
     407             :         {
     408           0 :             if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES || (mePageKind==PK_HANDOUT && meEditMode==EM_MASTERPAGE))
     409             :             {
     410           0 :                 if ( mpDrawView->IsTextEdit() )
     411           0 :                     mpDrawView->SdrEndTextEdit();
     412             : 
     413           0 :                 ::sd::ViewShell::mpImpl->AssignLayout(rReq, mePageKind);
     414             :             }
     415           0 :             Cancel();
     416           0 :             rReq.Done ();
     417             :         }
     418           0 :         break;
     419             : 
     420             :         case SID_RENAMEPAGE:
     421             :         case SID_RENAME_MASTER_PAGE:
     422             :         {
     423           0 :             if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES )
     424             :             {
     425           0 :                 if ( mpDrawView->IsTextEdit() )
     426             :                 {
     427           0 :                     mpDrawView->SdrEndTextEdit();
     428             :                 }
     429             : 
     430           0 :                 sal_uInt16 nPageId = maTabControl.GetCurPageId();
     431           0 :                 SdPage* pCurrentPage = ( GetEditMode() == EM_PAGE )
     432           0 :                     ? GetDoc()->GetSdPage( nPageId - 1, GetPageKind() )
     433           0 :                     : GetDoc()->GetMasterSdPage( nPageId - 1, GetPageKind() );
     434             : 
     435           0 :                 String aTitle( SdResId( STR_TITLE_RENAMESLIDE ) );
     436           0 :                 String aDescr( SdResId( STR_DESC_RENAMESLIDE ) );
     437           0 :                 String aPageName = pCurrentPage->GetName();
     438             : 
     439           0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     440             :                 DBG_ASSERT(pFact, "Dialogdiet fail!");
     441           0 :                 AbstractSvxNameDialog* aNameDlg = pFact->CreateSvxNameDialog( GetActiveWindow(), aPageName, aDescr );
     442             :                 DBG_ASSERT(aNameDlg, "Dialogdiet fail!");
     443           0 :                 aNameDlg->SetText( aTitle );
     444           0 :                 aNameDlg->SetCheckNameHdl( LINK( this, DrawViewShell, RenameSlideHdl ), true );
     445           0 :                 aNameDlg->SetEditHelpId( HID_SD_NAMEDIALOG_PAGE );
     446             : 
     447           0 :                 if( aNameDlg->Execute() == RET_OK )
     448             :                 {
     449           0 :                     String aNewName;
     450           0 :                     aNameDlg->GetName( aNewName );
     451           0 :                     if( ! aNewName.Equals( aPageName ) )
     452             :                     {
     453             : #ifdef DBG_UTIL
     454             :                         bool bResult =
     455             : #endif
     456           0 :                             RenameSlide( nPageId, aNewName );
     457             :                         DBG_ASSERT( bResult, "Couldn't rename slide" );
     458           0 :                     }
     459             :                 }
     460           0 :                 delete aNameDlg;
     461             :             }
     462             : 
     463           0 :             Cancel();
     464           0 :             rReq.Ignore ();
     465             :         }
     466           0 :         break;
     467             : 
     468             :         case SID_RENAMEPAGE_QUICK:
     469             :         {
     470           0 :             if (mePageKind==PK_STANDARD || mePageKind==PK_NOTES )
     471             :             {
     472           0 :                 if ( mpDrawView->IsTextEdit() )
     473             :                 {
     474           0 :                     mpDrawView->SdrEndTextEdit();
     475             :                 }
     476             : 
     477           0 :                 maTabControl.StartEditMode( maTabControl.GetCurPageId() );
     478             :             }
     479             : 
     480           0 :             Cancel();
     481           0 :             rReq.Ignore ();
     482             :         }
     483           0 :         break;
     484             : 
     485             :         case SID_PAGESIZE :  // either this (no menu entries or something else!)
     486             :         {
     487           0 :             const SfxItemSet *pArgs = rReq.GetArgs ();
     488             : 
     489           0 :             if (pArgs)
     490           0 :                 if (pArgs->Count () == 3)
     491             :                 {
     492           0 :                     SFX_REQUEST_ARG (rReq, pWidth, SfxUInt32Item, ID_VAL_PAGEWIDTH, sal_False);
     493           0 :                     SFX_REQUEST_ARG (rReq, pHeight, SfxUInt32Item, ID_VAL_PAGEHEIGHT, sal_False);
     494           0 :                     SFX_REQUEST_ARG (rReq, pScaleAll, SfxBoolItem, ID_VAL_SCALEOBJECTS, sal_False);
     495             : 
     496           0 :                     Size aSize (pWidth->GetValue (), pHeight->GetValue ());
     497             : 
     498           0 :                     SetupPage (aSize, 0, 0, 0, 0, sal_True, sal_False, pScaleAll->GetValue ());
     499           0 :                     rReq.Ignore ();
     500           0 :                     break;
     501             :                 }
     502             : #ifndef DISABLE_SCRIPTING
     503           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     504             : #endif
     505           0 :             rReq.Ignore ();
     506           0 :             break;
     507             :         }
     508             : 
     509             :         case SID_PAGEMARGIN :  // or this (no menu entries or something else!)
     510             :         {
     511           0 :             const SfxItemSet *pArgs = rReq.GetArgs ();
     512             : 
     513           0 :             if (pArgs)
     514           0 :                 if (pArgs->Count () == 5)
     515             :                 {
     516           0 :                     SFX_REQUEST_ARG (rReq, pLeft, SfxUInt32Item, ID_VAL_PAGELEFT, sal_False);
     517           0 :                     SFX_REQUEST_ARG (rReq, pRight, SfxUInt32Item, ID_VAL_PAGERIGHT, sal_False);
     518           0 :                     SFX_REQUEST_ARG (rReq, pUpper, SfxUInt32Item, ID_VAL_PAGETOP, sal_False);
     519           0 :                     SFX_REQUEST_ARG (rReq, pLower, SfxUInt32Item, ID_VAL_PAGEBOTTOM, sal_False);
     520           0 :                     SFX_REQUEST_ARG (rReq, pScaleAll, SfxBoolItem, ID_VAL_SCALEOBJECTS, sal_False);
     521             : 
     522           0 :                     Size aEmptySize (0, 0);
     523             : 
     524           0 :                     SetupPage (aEmptySize, pLeft->GetValue (), pRight->GetValue (),
     525           0 :                                pUpper->GetValue (), pLower->GetValue (),
     526           0 :                                sal_False, sal_True, pScaleAll->GetValue ());
     527           0 :                     rReq.Ignore ();
     528           0 :                     break;
     529             :                 }
     530             : #ifndef DISABLE_SCRIPTING
     531           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     532             : #endif
     533           0 :             rReq.Ignore ();
     534           0 :             break;
     535             :         }
     536             : 
     537             :         case SID_ATTR_ZOOMSLIDER:
     538             :         {
     539           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     540             : 
     541           0 :             if (pArgs && pArgs->Count () == 1 )
     542             :             {
     543           0 :                 SFX_REQUEST_ARG (rReq, pScale, SfxUInt16Item, SID_ATTR_ZOOMSLIDER, sal_False);
     544           0 :                 if (CHECK_RANGE (5, pScale->GetValue (), 3000))
     545             :                 {
     546           0 :                     SetZoom (pScale->GetValue ());
     547             : 
     548           0 :                     SfxBindings& rBindings = GetViewFrame()->GetBindings();
     549           0 :                     rBindings.Invalidate( SID_ATTR_ZOOM );
     550           0 :                     rBindings.Invalidate( SID_ZOOM_IN );
     551           0 :                     rBindings.Invalidate( SID_ZOOM_OUT );
     552           0 :                     rBindings.Invalidate( SID_ATTR_ZOOMSLIDER );
     553             : 
     554             :                 }
     555             :             }
     556             : 
     557           0 :             Cancel();
     558           0 :             rReq.Done ();
     559           0 :             break;
     560             :         }
     561             :         case SID_ZOOMING :  // no menu entry, but generated from zoom dialog
     562             :         {
     563           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     564             : 
     565           0 :             if (pArgs)
     566           0 :                 if (pArgs->Count () == 1)
     567             :                 {
     568           0 :                     SFX_REQUEST_ARG (rReq, pScale, SfxUInt32Item, ID_VAL_ZOOM, sal_False);
     569           0 :                     if (CHECK_RANGE (10, pScale->GetValue (), 1000))
     570             :                     {
     571           0 :                         SetZoom (pScale->GetValue ());
     572             : 
     573           0 :                         SfxBindings& rBindings = GetViewFrame()->GetBindings();
     574           0 :                         rBindings.Invalidate( SID_ATTR_ZOOM );
     575           0 :                         rBindings.Invalidate( SID_ZOOM_IN );
     576           0 :                         rBindings.Invalidate( SID_ZOOM_OUT );
     577           0 :                         rBindings.Invalidate( SID_ATTR_ZOOMSLIDER );
     578             :                     }
     579             : #ifndef DISABLE_SCRIPTING
     580           0 :                     else StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
     581             : #endif
     582           0 :                     rReq.Ignore ();
     583           0 :                     break;
     584             :                 }
     585             : #ifndef DISABLE_SCRIPTING
     586           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     587             : #endif
     588           0 :             rReq.Ignore ();
     589           0 :             break;
     590             :         }
     591             : 
     592             :         case SID_ATTR_ZOOM:
     593             :         {
     594           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     595           0 :             mbZoomOnPage = sal_False;
     596             : 
     597           0 :             if ( pArgs )
     598             :             {
     599             :                 SvxZoomType eZT = ( ( const SvxZoomItem& ) pArgs->
     600           0 :                                             Get( SID_ATTR_ZOOM ) ).GetType();
     601           0 :                 switch( eZT )
     602             :                 {
     603             :                     case SVX_ZOOM_PERCENT:
     604             :                         SetZoom( (long) ( ( const SvxZoomItem& ) pArgs->
     605           0 :                                             Get( SID_ATTR_ZOOM ) ).GetValue() );
     606           0 :                         break;
     607             : 
     608             :                     case SVX_ZOOM_OPTIMAL:
     609             :                         GetViewFrame()->GetDispatcher()->Execute( SID_SIZE_ALL,
     610           0 :                                     SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
     611           0 :                         break;
     612             : 
     613             :                     case SVX_ZOOM_PAGEWIDTH:
     614             :                         GetViewFrame()->GetDispatcher()->Execute( SID_SIZE_PAGE_WIDTH,
     615           0 :                                     SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
     616           0 :                         break;
     617             : 
     618             :                     case SVX_ZOOM_WHOLEPAGE:
     619             :                         GetViewFrame()->GetDispatcher()->Execute( SID_SIZE_PAGE,
     620           0 :                                     SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
     621           0 :                         break;
     622             :                     case SVX_ZOOM_PAGEWIDTH_NOBORDER:
     623             :                         OSL_FAIL("sd::DrawViewShell::FuTemporary(), SVX_ZOOM_PAGEWIDTH_NOBORDER not handled!" );
     624           0 :                         break;
     625             :                 }
     626           0 :                 rReq.Ignore ();
     627             :             }
     628             :             else
     629             :             {
     630             :                 // open zoom dialog
     631           0 :                 SetCurrentFunction( FuScale::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
     632             :             }
     633           0 :             Cancel();
     634             :         }
     635           0 :         break;
     636             : 
     637             :         case SID_CHANGEBEZIER:
     638             :         case SID_CHANGEPOLYGON:
     639           0 :             if ( mpDrawView->IsTextEdit() )
     640             :             {
     641           0 :                 mpDrawView->SdrEndTextEdit();
     642           0 :                 GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
     643             :             }
     644             : 
     645           0 :             if ( mpDrawView->IsPresObjSelected() )
     646             :             {
     647           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     648           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     649             :             }
     650             :             else
     651             :             {
     652           0 :                 if( rReq.GetSlot() == SID_CHANGEBEZIER )
     653             :                 {
     654           0 :                     WaitObject aWait( (Window*)GetActiveWindow() );
     655           0 :                     mpDrawView->ConvertMarkedToPathObj(sal_False);
     656             :                 }
     657             :                 else
     658             :                 {
     659           0 :                     if( mpDrawView->IsVectorizeAllowed() )
     660             :                     {
     661           0 :                         SetCurrentFunction( FuVectorize::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
     662             :                     }
     663             :                     else
     664             :                     {
     665           0 :                         WaitObject aWait( (Window*)GetActiveWindow() );
     666           0 :                         mpDrawView->ConvertMarkedToPolyObj(sal_False);
     667             :                     }
     668             :                 }
     669             : 
     670           0 :                 Invalidate(SID_CHANGEBEZIER);
     671           0 :                 Invalidate(SID_CHANGEPOLYGON);
     672             :             }
     673           0 :             Cancel();
     674             : 
     675           0 :             if( HasCurrentFunction(SID_BEZIER_EDIT) )
     676             :             {   // where applicable, activate right edit action
     677             :                 GetViewFrame()->GetDispatcher()->Execute(SID_SWITCH_POINTEDIT,
     678           0 :                                         SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
     679             :             }
     680           0 :             rReq.Ignore ();
     681           0 :             break;
     682             : 
     683             :         case SID_CONVERT_TO_CONTOUR:
     684           0 :             if ( mpDrawView->IsTextEdit() )
     685             :             {
     686           0 :                 mpDrawView->SdrEndTextEdit();
     687           0 :                 GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
     688             :             }
     689             : 
     690           0 :             if ( mpDrawView->IsPresObjSelected() )
     691             :             {
     692           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     693           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     694             :             }
     695             :             else
     696             :             {
     697           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     698           0 :                 mpDrawView->ConvertMarkedToPathObj(sal_True);
     699             : 
     700           0 :                 Invalidate(SID_CONVERT_TO_CONTOUR);
     701             :             }
     702           0 :             Cancel();
     703             : 
     704           0 :             rReq.Ignore ();
     705           0 :             break;
     706             : 
     707             :         case SID_CONVERT_TO_METAFILE:
     708             :         case SID_CONVERT_TO_BITMAP:
     709             :         {
     710             :             // End text edit mode when it is active because the metafile or
     711             :             // bitmap that will be created does not support it.
     712           0 :             if ( mpDrawView->IsTextEdit() )
     713             :             {
     714           0 :                 mpDrawView->SdrEndTextEdit();
     715           0 :                 GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
     716             :             }
     717             : 
     718           0 :             if ( mpDrawView->IsPresObjSelected(true,true,true) )
     719             :             {
     720           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     721           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     722             :             }
     723             :             else
     724             :             {
     725           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     726             : 
     727             :                 // create SdrGrafObj from metafile/bitmap
     728           0 :                 Graphic aGraphic;
     729           0 :                 switch (nSId)
     730             :                 {
     731             :                     case SID_CONVERT_TO_METAFILE:
     732             :                     {
     733             :                         // switch on undo for the next operations
     734           0 :                         mpDrawView->BegUndo( String( SdResId( STR_UNDO_CONVERT_TO_METAFILE )));
     735           0 :                         GDIMetaFile aMetaFile(mpDrawView->GetMarkedObjMetaFile());
     736           0 :                         aGraphic = Graphic(aMetaFile);
     737             :                     }
     738           0 :                     break;
     739             :                     case SID_CONVERT_TO_BITMAP:
     740             :                     {
     741             :                         // switch on undo for the next operations
     742           0 :                         mpDrawView->BegUndo( String( SdResId( STR_UNDO_CONVERT_TO_BITMAP )));
     743           0 :                         bool bDone(false);
     744             : 
     745             :                         // I have to get the image here directly since GetMarkedObjBitmapEx works
     746             :                         // based on Bitmaps, but not on BitmapEx, thus throwing away the alpha
     747             :                         // channel. Argh! GetMarkedObjBitmapEx itself is too widely used to safely
     748             :                         // change that, e.g. in the exchange formats. For now I can only add this
     749             :                         // exception to get good results for Svgs. This is how the code gets more
     750             :                         // and more crowded, at last I made a remark for myself to change this
     751             :                         // as one of the next tasks.
     752           0 :                         if(1 == mpDrawView->GetMarkedObjectCount())
     753             :                         {
     754           0 :                             const SdrGrafObj* pSdrGrafObj = dynamic_cast< const SdrGrafObj* >(mpDrawView->GetMarkedObjectByIndex(0));
     755             : 
     756           0 :                             if(pSdrGrafObj && pSdrGrafObj->isEmbeddedSvg())
     757             :                             {
     758           0 :                                 aGraphic = Graphic(pSdrGrafObj->GetGraphic().getSvgData()->getReplacement());
     759           0 :                                 bDone = true;
     760             :                             }
     761             :                         }
     762             : 
     763           0 :                         if(!bDone)
     764             :                         {
     765           0 :                             aGraphic = Graphic(mpDrawView->GetMarkedObjBitmapEx());
     766             :                         }
     767             :                     }
     768           0 :                     break;
     769             :                 }
     770             : 
     771             :                 // create new object
     772           0 :                 SdrGrafObj* pGraphicObj = new SdrGrafObj (aGraphic);
     773             : 
     774             :                 // get some necessary info and ensure it
     775           0 :                 const SdrMarkList& rMarkList(mpDrawView->GetMarkedObjectList());
     776           0 :                 const sal_uInt32 nMarkCount(rMarkList.GetMarkCount());
     777           0 :                 SdrPageView* pPageView = mpDrawView->GetSdrPageView();
     778             :                 OSL_ENSURE(nMarkCount, "DrawViewShell::FuTemporary: SID_CONVERT_TO_BITMAP with empty selection (!)");
     779             :                 OSL_ENSURE(pPageView, "DrawViewShell::FuTemporary: SID_CONVERT_TO_BITMAP without SdrPageView (!)");
     780             : 
     781             :                 // fit rectangle of new graphic object to selection's mark rect
     782           0 :                 Rectangle aAllMarkedRect;
     783           0 :                 rMarkList.TakeBoundRect(pPageView, aAllMarkedRect);
     784           0 :                 pGraphicObj->SetLogicRect(aAllMarkedRect);
     785             : 
     786             :                 // #i71540# to keep the order, it is necessary to replace the lowest object
     787             :                 // of the selection with the new object. This also means that with multi
     788             :                 // selection, all other objects need to be deleted first
     789           0 :                 SdrMark* pFirstMark = rMarkList.GetMark(0L);
     790           0 :                 SdrObject* pReplacementCandidate = pFirstMark->GetMarkedSdrObj();
     791             : 
     792           0 :                 if(nMarkCount > 1L)
     793             :                 {
     794             :                     // take first object out of selection
     795           0 :                     mpDrawView->MarkObj(pReplacementCandidate, pPageView, true, true);
     796             : 
     797             :                     // clear remaining selection
     798           0 :                     mpDrawView->DeleteMarkedObj();
     799             :                 }
     800             : 
     801             :                 // now replace lowest object with new one
     802           0 :                 mpDrawView->ReplaceObjectAtView(pReplacementCandidate, *pPageView, pGraphicObj);
     803             : 
     804             :                 // switch off undo
     805           0 :                 mpDrawView->EndUndo();
     806             :             }
     807             :         }
     808             : 
     809           0 :         Cancel();
     810             : 
     811           0 :         rReq.Done ();
     812           0 :         break;
     813             : 
     814             :         case SID_SET_DEFAULT:
     815             :         {
     816           0 :             SfxItemSet* pSet = NULL;
     817             : 
     818           0 :             if (mpDrawView->IsTextEdit())
     819             :             {
     820           0 :                 ::Outliner* pOutl = mpDrawView->GetTextEditOutliner();
     821           0 :                 if (pOutl)
     822             :                 {
     823           0 :                     pOutl->RemoveFields(sal_True, (TypeId) SvxURLField::StaticType());
     824             :                 }
     825             : 
     826           0 :                 pSet = new SfxItemSet( GetPool(), EE_ITEMS_START, EE_ITEMS_END );
     827           0 :                 mpDrawView->SetAttributes( *pSet, sal_True );
     828             :             }
     829             :             else
     830             :             {
     831           0 :                 const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
     832           0 :                 sal_uLong nCount = rMarkList.GetMarkCount();
     833             : 
     834             :                 // For every presentation object a SfxItemSet of hard attributes
     835             :                 // and the UserCall is stored in this list. This is because
     836             :                 // at the following mpDrawView->SetAttributes( *pSet, sal_True )
     837             :                 // they get lost and have to be restored.
     838           0 :                 std::vector<std::pair<SfxItemSet*,SdrObjUserCall*> > aAttrList;
     839           0 :                 SdPage* pPresPage = (SdPage*) mpDrawView->GetSdrPageView()->GetPage();
     840             :                 sal_uLong i;
     841             : 
     842           0 :                 for ( i = 0; i < nCount; i++ )
     843             :                 {
     844           0 :                     SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
     845             : 
     846           0 :                     if( pPresPage->IsPresObj( pObj ) )
     847             :                     {
     848           0 :                         SfxItemSet* pNewSet = new SfxItemSet( GetDoc()->GetPool(), SDRATTR_TEXT_MINFRAMEHEIGHT, SDRATTR_TEXT_AUTOGROWHEIGHT, 0 );
     849           0 :                         pNewSet->Put(pObj->GetMergedItemSet());
     850           0 :                         aAttrList.push_back(std::make_pair(pNewSet, pObj->GetUserCall()));
     851             :                     }
     852             :                 }
     853             : 
     854           0 :                 pSet = new SfxItemSet( GetPool() );
     855           0 :                 mpDrawView->SetAttributes( *pSet, sal_True );
     856             : 
     857           0 :                 sal_uLong j = 0;
     858             : 
     859           0 :                 for ( i = 0; i < nCount; i++ )
     860             :                 {
     861           0 :                     SfxStyleSheet* pSheet = NULL;
     862           0 :                     SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
     863             : 
     864           0 :                     if (pObj->GetObjIdentifier() == OBJ_TITLETEXT)
     865             :                     {
     866           0 :                         pSheet = mpActualPage->GetStyleSheetForPresObj(PRESOBJ_TITLE);
     867           0 :                         if (pSheet)
     868           0 :                             pObj->SetStyleSheet(pSheet, sal_False);
     869             :                     }
     870           0 :                     else if(pObj->GetObjIdentifier() == OBJ_OUTLINETEXT)
     871             :                     {
     872           0 :                         for (sal_uInt16 nLevel = 1; nLevel < 10; nLevel++)
     873             :                         {
     874           0 :                             pSheet = mpActualPage->GetStyleSheetForPresObj( PRESOBJ_OUTLINE );
     875             :                             DBG_ASSERT(pSheet, "Template for outline object not found");
     876           0 :                             if (pSheet)
     877             :                             {
     878           0 :                                 pObj->StartListening(*pSheet);
     879             : 
     880           0 :                                 if( nLevel == 1 )
     881             :                                     // text frame listens on StyleSheet of level1
     882           0 :                                     pObj->NbcSetStyleSheet(pSheet, sal_False);
     883             : 
     884             :                             }
     885             :                         }
     886             :                     }
     887             : 
     888           0 :                     if( pPresPage->IsPresObj( pObj ) )
     889             :                     {
     890           0 :                         std::pair<SfxItemSet*,SdrObjUserCall*> &rAttr = aAttrList[j++];
     891             : 
     892           0 :                         SfxItemSet* pNewSet = rAttr.first;
     893           0 :                         SdrObjUserCall* pUserCall = rAttr.second;
     894             : 
     895           0 :                         if ( pNewSet && pNewSet->GetItemState( SDRATTR_TEXT_MINFRAMEHEIGHT ) == SFX_ITEM_ON )
     896             :                         {
     897           0 :                             pObj->SetMergedItem(pNewSet->Get(SDRATTR_TEXT_MINFRAMEHEIGHT));
     898             :                         }
     899             : 
     900           0 :                         if ( pNewSet && pNewSet->GetItemState( SDRATTR_TEXT_AUTOGROWHEIGHT ) == SFX_ITEM_ON )
     901             :                         {
     902           0 :                             pObj->SetMergedItem(pNewSet->Get(SDRATTR_TEXT_AUTOGROWHEIGHT));
     903             :                         }
     904             : 
     905           0 :                         if( pUserCall )
     906           0 :                             pObj->SetUserCall( pUserCall );
     907             : 
     908           0 :                         delete pNewSet;
     909             :                     }
     910           0 :                 }
     911             :             }
     912             : 
     913           0 :             delete pSet;
     914           0 :             Cancel();
     915             :         }
     916           0 :         break;
     917             : 
     918             :         case SID_DELETE_SNAPITEM:
     919             :         {
     920             :             SdrPageView* pPV;
     921           0 :             Point   aMPos = GetActiveWindow()->PixelToLogic( maMousePos );
     922           0 :             sal_uInt16  nHitLog = (sal_uInt16) GetActiveWindow()->PixelToLogic( Size(
     923           0 :                 FuPoor::HITPIX, 0 ) ).Width();
     924             :             sal_uInt16  nHelpLine;
     925             : 
     926           0 :             mbMousePosFreezed = sal_False;
     927             : 
     928           0 :             if( mpDrawView->PickHelpLine( aMPos, nHitLog, *GetActiveWindow(), nHelpLine, pPV) )
     929             :             {
     930           0 :                 pPV->DeleteHelpLine( nHelpLine );
     931             :             }
     932           0 :             Cancel();
     933           0 :             rReq.Ignore ();
     934             :         }
     935           0 :         break;
     936             : 
     937             :         case SID_DELETE_PAGE:
     938             :         case SID_DELETE_MASTER_PAGE:
     939           0 :             DeleteActualPage();
     940           0 :             Cancel();
     941           0 :             rReq.Ignore ();
     942           0 :         break;
     943             : 
     944             :         case SID_DELETE_LAYER:
     945           0 :             DeleteActualLayer();
     946           0 :             Cancel();
     947           0 :             rReq.Ignore ();
     948           0 :         break;
     949             : 
     950             :         case SID_ORIGINAL_SIZE:
     951           0 :             mpDrawView->SetMarkedOriginalSize();
     952           0 :             Cancel();
     953           0 :             rReq.Done();
     954           0 :         break;
     955             : 
     956             :         case SID_DRAW_FONTWORK:
     957             :         case SID_DRAW_FONTWORK_VERTICAL:
     958             :         {
     959           0 :             svx::FontworkBar::execute( mpView, rReq, GetViewFrame()->GetBindings() );       // SJ: can be removed  (I think)
     960           0 :             Cancel();
     961           0 :             rReq.Done();
     962             :         }
     963           0 :         break;
     964             : 
     965             :         case SID_SAVE_GRAPHIC:
     966             :         {
     967           0 :             const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
     968           0 :             if( rMarkList.GetMarkCount() == 1 )
     969             :             {
     970           0 :                 SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
     971           0 :                 if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP )
     972             :                 {
     973           0 :                     GraphicObject aGraphicObject( ( (SdrGrafObj*) pObj )->GetGraphicObject() );
     974             :                     {
     975           0 :                         GraphicHelper::ExportGraphic( aGraphicObject.GetGraphic(), String("") );
     976           0 :                     }
     977             :                 }
     978             :             }
     979           0 :             Cancel();
     980           0 :             rReq.Ignore();
     981             :         }
     982           0 :         break;
     983             : 
     984             :         case SID_EXTERNAL_EDIT:
     985             :         {
     986           0 :             const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
     987           0 :             if( rMarkList.GetMarkCount() == 1 )
     988             :             {
     989           0 :                 SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
     990           0 :                 if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP )
     991             :                 {
     992           0 :                     GraphicObject aGraphicObject( ( (SdrGrafObj*) pObj )->GetGraphicObject() );
     993           0 :                     SdExternalToolEdit* aExternalToolEdit = new SdExternalToolEdit( mpDrawView, pObj );
     994           0 :                     aExternalToolEdit->Edit( &aGraphicObject );
     995             :                 }
     996             :             }
     997           0 :             Cancel();
     998           0 :             rReq.Ignore();
     999             :         }
    1000           0 :         break;
    1001             : 
    1002             :         case SID_COMPRESS_GRAPHIC:
    1003             :         {
    1004           0 :             const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
    1005           0 :             if( rMarkList.GetMarkCount() == 1 )
    1006             :             {
    1007           0 :                 SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
    1008             : 
    1009           0 :                 if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP )
    1010             :                 {
    1011           0 :                     SdrGrafObj* pGraphicObj = (SdrGrafObj*) pObj;
    1012           0 :                     CompressGraphicsDialog dialog( GetParentWindow(), pGraphicObj, GetViewFrame()->GetBindings() );
    1013           0 :                     if ( dialog.Execute() == RET_OK )
    1014             :                     {
    1015           0 :                         SdrGrafObj* pNewObject = dialog.GetCompressedSdrGrafObj();
    1016           0 :                         SdrPageView* pPageView = mpDrawView->GetSdrPageView();
    1017           0 :                         String aUndoString( mpDrawView->GetDescriptionOfMarkedObjects() );
    1018           0 :                         aUndoString += String( " Compress" );
    1019           0 :                         mpDrawView->BegUndo( aUndoString );
    1020           0 :                         mpDrawView->ReplaceObjectAtView( pObj, *pPageView, pNewObject );
    1021           0 :                         mpDrawView->EndUndo();
    1022           0 :                     }
    1023             :                 }
    1024             :             }
    1025           0 :             Cancel();
    1026           0 :             rReq.Ignore();
    1027             :         }
    1028           0 :         break;
    1029             : 
    1030             :         case SID_ATTRIBUTES_LINE:  // BASIC
    1031             :         {
    1032           0 :             SetCurrentFunction( FuLine::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1033           0 :             Cancel();
    1034             :         }
    1035           0 :         break;
    1036             : 
    1037             :         case SID_ATTRIBUTES_AREA:  // BASIC
    1038             :         {
    1039           0 :             SetCurrentFunction( FuArea::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1040           0 :             Cancel();
    1041             :         }
    1042           0 :         break;
    1043             : 
    1044             :         case SID_ATTR_TRANSFORM:
    1045             :         {
    1046           0 :             SetCurrentFunction( FuTransform::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1047           0 :             Invalidate(SID_RULER_OBJECT);
    1048           0 :             Cancel();
    1049             :         }
    1050           0 :         break;
    1051             : 
    1052             :         case SID_CHAR_DLG_EFFECT:
    1053             :         case SID_CHAR_DLG:  // BASIC
    1054             :         {
    1055           0 :             SetCurrentFunction( FuChar::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1056           0 :             Cancel();
    1057             :         }
    1058           0 :         break;
    1059             : 
    1060             :         case SID_PARA_DLG:
    1061             :         {
    1062           0 :             SetCurrentFunction( FuParagraph::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1063           0 :             Cancel();
    1064             :         }
    1065           0 :         break;
    1066             : 
    1067             :         case FN_NUM_BULLET_ON:
    1068             :         {
    1069             :             // The value (sal_uInt16)0xFFFF means set bullet on/off.
    1070           0 :             SfxUInt16Item aItem(FN_SVX_SET_BULLET, (sal_uInt16)0xFFFF);
    1071           0 :             GetViewFrame()->GetDispatcher()->Execute( FN_SVX_SET_BULLET, SFX_CALLMODE_RECORD, &aItem, 0L );
    1072             :         }
    1073           0 :         break;
    1074             : 
    1075             :         case FN_NUM_NUMBERING_ON:
    1076             :         {
    1077             :             // The value (sal_uInt16)0xFFFF means set bullet on/off.
    1078           0 :             SfxUInt16Item aItem(FN_SVX_SET_NUMBER, (sal_uInt16)0xFFFF);
    1079           0 :             GetViewFrame()->GetDispatcher()->Execute( FN_SVX_SET_NUMBER, SFX_CALLMODE_RECORD, &aItem, 0L );
    1080             :         }
    1081           0 :         break;
    1082             : 
    1083             :         case SID_OUTLINE_BULLET:
    1084             :         case FN_SVX_SET_BULLET:
    1085             :         case FN_SVX_SET_NUMBER:
    1086             :         {
    1087           0 :             SetCurrentFunction( FuOutlineBullet::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1088           0 :             Cancel();
    1089             :         }
    1090           0 :         break;
    1091             : 
    1092             :         case FN_INSERT_SOFT_HYPHEN:
    1093             :         case FN_INSERT_HARDHYPHEN:
    1094             :         case FN_INSERT_HARD_SPACE:
    1095             :         case SID_INSERT_RLM :
    1096             :         case SID_INSERT_LRM :
    1097             :         case SID_INSERT_ZWNBSP :
    1098             :         case SID_INSERT_ZWSP:
    1099             :         case SID_CHARMAP:
    1100             :         {
    1101           0 :             SetCurrentFunction( FuBullet::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1102           0 :             Cancel();
    1103             :         }
    1104           0 :         break;
    1105             : 
    1106             :         case SID_PRESENTATION_LAYOUT:
    1107             :         {
    1108           0 :             SetCurrentFunction( FuPresentationLayout::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
    1109           0 :             Cancel();
    1110             :         }
    1111           0 :         break;
    1112             : 
    1113             :         case SID_PASTE_SPECIAL:
    1114             :         {
    1115           0 :             SetCurrentFunction( FuInsertClipboard::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1116           0 :             Cancel();
    1117           0 :             rReq.Ignore ();
    1118             :         }
    1119           0 :         break;
    1120             : 
    1121             :         case SID_CHANGE_PICTURE:
    1122             :         case SID_INSERT_GRAPHIC:
    1123             :         {
    1124           0 :             SetCurrentFunction( FuInsertGraphic::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1125           0 :             Cancel();
    1126           0 :             rReq.Ignore ();
    1127           0 :             Invalidate(SID_DRAWTBX_INSERT);
    1128             :         }
    1129           0 :         break;
    1130             : 
    1131             :         case SID_INSERT_AVMEDIA:
    1132             :         {
    1133           0 :             SetCurrentFunction( FuInsertAVMedia::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1134             : 
    1135           0 :             Cancel();
    1136           0 :             rReq.Ignore ();
    1137             : 
    1138           0 :             Invalidate(SID_DRAWTBX_INSERT);
    1139             :         }
    1140           0 :         break;
    1141             : 
    1142             :         case SID_INSERT_OBJECT:
    1143             :         case SID_INSERT_PLUGIN:
    1144             :         case SID_INSERT_SOUND:
    1145             :         case SID_INSERT_VIDEO:
    1146             :         case SID_INSERT_FLOATINGFRAME:
    1147             :         case SID_INSERT_MATH:
    1148             :         case SID_INSERT_DIAGRAM:
    1149             :         case SID_ATTR_TABLE:
    1150             :         {
    1151           0 :             SetCurrentFunction( FuInsertOLE::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1152             : 
    1153           0 :             Cancel();
    1154           0 :             rReq.Ignore ();
    1155             : 
    1156           0 :             Invalidate(SID_DRAWTBX_INSERT);
    1157             :         }
    1158           0 :         break;
    1159             : 
    1160             :         case SID_COPYOBJECTS:
    1161             :         {
    1162           0 :             if ( mpDrawView->IsPresObjSelected(sal_False, sal_True) )
    1163             :             {
    1164           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    1165           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    1166             :             }
    1167             :             else
    1168             :             {
    1169           0 :                 if ( mpDrawView->IsTextEdit() )
    1170             :                 {
    1171           0 :                     mpDrawView->SdrEndTextEdit();
    1172             :                 }
    1173             : 
    1174           0 :                 SetCurrentFunction( FuCopy::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1175             :             }
    1176           0 :             Cancel();
    1177           0 :             rReq.Ignore ();
    1178             :         }
    1179           0 :         break;
    1180             : 
    1181             :         case SID_INSERTFILE:  // BASIC
    1182             :         {
    1183           0 :             Broadcast (ViewShellHint(ViewShellHint::HINT_COMPLEX_MODEL_CHANGE_START));
    1184           0 :             SetCurrentFunction( FuInsertFile::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1185           0 :             Broadcast (ViewShellHint(ViewShellHint::HINT_COMPLEX_MODEL_CHANGE_END));
    1186           0 :             Cancel();
    1187           0 :             rReq.Done ();
    1188             : 
    1189           0 :             Invalidate(SID_DRAWTBX_INSERT);
    1190             :         }
    1191           0 :         break;
    1192             : 
    1193             :         case SID_SELECT_BACKGROUND:
    1194             :         case SID_PAGESETUP:  // BASIC ??
    1195             :         {
    1196           0 :             SetCurrentFunction( FuPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1197           0 :             Cancel();
    1198           0 :             rReq.Ignore (); // we generate independent macros !!
    1199             :         }
    1200           0 :         break;
    1201             : 
    1202             :         case SID_ZOOM_OUT:
    1203             :         case SID_ZOOM_PANNING:
    1204             :         {
    1205           0 :             mbZoomOnPage = sal_False;
    1206           0 :             SetCurrentFunction( FuZoom::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
    1207             :             // finishes itself, no Cancel() needed!
    1208           0 :             Invalidate( SID_ZOOM_TOOLBOX );
    1209           0 :             rReq.Ignore ();
    1210             :         }
    1211           0 :         break;
    1212             : 
    1213             :         case SID_BEFORE_OBJ:
    1214             :         case SID_BEHIND_OBJ:
    1215             :         {
    1216           0 :             SetCurrentFunction( FuDisplayOrder::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
    1217           0 :             Invalidate( SID_POSITION );
    1218           0 :             rReq.Ignore ();
    1219             :             // finishes itself, no Cancel() needed!
    1220             :         }
    1221           0 :         break;
    1222             : 
    1223             :         case SID_REVERSE_ORDER:   // BASIC
    1224             :         {
    1225           0 :             mpDrawView->ReverseOrderOfMarked();
    1226           0 :             Invalidate( SID_POSITION );
    1227           0 :             Cancel();
    1228           0 :             rReq.Done ();
    1229             :         }
    1230           0 :         break;
    1231             : 
    1232             :         case SID_ANIMATION_EFFECTS:
    1233             :         {
    1234           0 :             SetCurrentFunction( FuObjectAnimationParameters::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
    1235           0 :             Cancel();
    1236             :         }
    1237           0 :         break;
    1238             : 
    1239             :         case SID_LINEEND_POLYGON:
    1240             :         {
    1241           0 :             SetCurrentFunction( FuLineEnd::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1242           0 :             Cancel();
    1243             :         }
    1244           0 :         break;
    1245             : 
    1246             :         case SID_CAPTUREPOINT:
    1247             :             // negative value to signal call from menu
    1248           0 :             maMousePos = Point(-1,-1);
    1249             :         case SID_SET_SNAPITEM:
    1250             :         {
    1251           0 :             SetCurrentFunction( FuSnapLine::Create(this, GetActiveWindow(), mpDrawView, GetDoc(), rReq) );
    1252           0 :             Cancel();
    1253             :         }
    1254           0 :         break;
    1255             : 
    1256             :         case SID_MANAGE_LINKS:
    1257             :         {
    1258           0 :             SetCurrentFunction( FuLink::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1259           0 :             Cancel();
    1260           0 :             rReq.Ignore ();
    1261             :         }
    1262           0 :         break;
    1263             : 
    1264             :         case SID_THESAURUS:
    1265             :         {
    1266           0 :             SetCurrentFunction( FuThesaurus::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1267           0 :             Cancel();
    1268           0 :             rReq.Ignore ();
    1269             :         }
    1270           0 :         break;
    1271             : 
    1272             :         case SID_TEXTATTR_DLG:
    1273             :         {
    1274           0 :             SetCurrentFunction( FuTextAttrDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1275           0 :             Cancel();
    1276           0 :             rReq.Ignore ();
    1277             :         }
    1278           0 :         break;
    1279             : 
    1280             :         case SID_MEASURE_DLG:
    1281             :         {
    1282           0 :             SetCurrentFunction( FuMeasureDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1283           0 :             Cancel();
    1284           0 :             rReq.Ignore ();
    1285             :         }
    1286           0 :         break;
    1287             : 
    1288             :         case SID_CONNECTION_DLG:
    1289             :         {
    1290           0 :             SetCurrentFunction( FuConnectionDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1291           0 :             Cancel();
    1292           0 :             rReq.Done();
    1293             :         }
    1294           0 :         break;
    1295             : 
    1296             :         case SID_CONNECTION_NEW_ROUTING:
    1297             :         {
    1298           0 :             SfxItemSet aDefAttr( GetPool(), SDRATTR_EDGELINE1DELTA, SDRATTR_EDGELINE3DELTA );
    1299           0 :             GetView()->SetAttributes( aDefAttr, sal_True ); // (ReplaceAll)
    1300             : 
    1301           0 :             Cancel();
    1302           0 :             rReq.Done();
    1303             :         }
    1304           0 :         break;
    1305             : 
    1306             :         case SID_TWAIN_SELECT:
    1307             :         {
    1308           0 :             if( mxScannerManager.is() )
    1309             :             {
    1310             :                 try
    1311             :                 {
    1312             :                     const ::com::sun::star::uno::Sequence< ::com::sun::star::scanner::ScannerContext >
    1313           0 :                         aContexts( mxScannerManager->getAvailableScanners() );
    1314             : 
    1315           0 :                     if( aContexts.getLength() )
    1316             :                     {
    1317           0 :                         ::com::sun::star::scanner::ScannerContext aContext( aContexts.getConstArray()[ 0 ] );
    1318           0 :                         mxScannerManager->configureScannerAndScan( aContext, mxScannerListener );
    1319           0 :                     }
    1320             :                 }
    1321           0 :                 catch(...)
    1322             :                 {
    1323             :                 }
    1324             :             }
    1325             : 
    1326           0 :             Cancel();
    1327           0 :             rReq.Done();
    1328             :         }
    1329           0 :         break;
    1330             : 
    1331             :         case SID_TWAIN_TRANSFER:
    1332             :         {
    1333           0 :             sal_Bool bDone = sal_False;
    1334             : 
    1335           0 :             if( mxScannerManager.is() )
    1336             :             {
    1337             :                 try
    1338             :                 {
    1339           0 :                     const ::com::sun::star::uno::Sequence< ::com::sun::star::scanner::ScannerContext > aContexts( mxScannerManager->getAvailableScanners() );
    1340             : 
    1341           0 :                     if( aContexts.getLength() )
    1342             :                     {
    1343           0 :                         mxScannerManager->startScan( aContexts.getConstArray()[ 0 ], mxScannerListener );
    1344           0 :                         bDone = sal_True;
    1345           0 :                     }
    1346             :                 }
    1347           0 :                 catch( ... )
    1348             :                 {
    1349             :                 }
    1350             :             }
    1351             : 
    1352           0 :             if( !bDone )
    1353             :             {
    1354             : #ifndef UNX
    1355             :                 const sal_uInt16 nId = STR_TWAIN_NO_SOURCE;
    1356             : #else
    1357           0 :                 const sal_uInt16 nId = STR_TWAIN_NO_SOURCE_UNX;
    1358             : #endif
    1359             : 
    1360           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    1361           0 :                 InfoBox(pWindow, String( SdResId( nId ) ) ).Execute();
    1362             :             }
    1363             :             else
    1364             :             {
    1365           0 :                 SfxBindings& rBindings = GetViewFrame()->GetBindings();
    1366           0 :                 rBindings.Invalidate( SID_TWAIN_SELECT );
    1367           0 :                 rBindings.Invalidate( SID_TWAIN_TRANSFER );
    1368             :             }
    1369             : 
    1370           0 :             Cancel();
    1371           0 :             rReq.Done();
    1372             :         }
    1373           0 :         break;
    1374             : 
    1375             :         case SID_POLYGON_MORPHING:
    1376             :         {
    1377           0 :             SetCurrentFunction( FuMorph::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1378           0 :             Cancel();
    1379             :         }
    1380           0 :         break;
    1381             : 
    1382             :         case SID_VECTORIZE:
    1383             :         {
    1384           0 :             SetCurrentFunction( FuVectorize::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    1385           0 :             Cancel();
    1386             :         }
    1387           0 :         break;
    1388             : 
    1389             :         case SID_INSERTLAYER:
    1390             :         {
    1391           0 :             if ( mpDrawView->IsTextEdit() )
    1392             :             {
    1393           0 :                 mpDrawView->SdrEndTextEdit();
    1394             :             }
    1395             : 
    1396           0 :             SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
    1397           0 :             sal_uInt16 nLayerCnt = rLayerAdmin.GetLayerCount();
    1398           0 :             sal_uInt16 nLayer = nLayerCnt - 2 + 1;
    1399           0 :             String aLayerName ( SdResId(STR_LAYER) ), aLayerTitle, aLayerDesc;
    1400           0 :             aLayerName += OUString::number( (sal_Int32)nLayer );
    1401           0 :             sal_Bool bIsVisible = sal_False;
    1402           0 :             sal_Bool bIsLocked = sal_False;
    1403           0 :             sal_Bool bIsPrintable = sal_False;
    1404             : 
    1405           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
    1406             : 
    1407           0 :             if (! pArgs)
    1408             :             {
    1409           0 :                 SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
    1410             : 
    1411           0 :                 aNewAttr.Put( SdAttrLayerName( aLayerName ) );
    1412           0 :                 aNewAttr.Put( SdAttrLayerTitle() );
    1413           0 :                 aNewAttr.Put( SdAttrLayerDesc() );
    1414           0 :                 aNewAttr.Put( SdAttrLayerVisible() );
    1415           0 :                 aNewAttr.Put( SdAttrLayerPrintable() );
    1416           0 :                 aNewAttr.Put( SdAttrLayerLocked() );
    1417           0 :                 aNewAttr.Put( SdAttrLayerThisPage() );
    1418             : 
    1419           0 :                 SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
    1420           0 :                 AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, true, String( SdResId( STR_INSERTLAYER ) ) ) : 0;
    1421           0 :                 if( pDlg )
    1422             :                 {
    1423           0 :                     pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_INSERTLAYER )->GetCommand() );
    1424             : 
    1425             :                     // test for already existing names
    1426           0 :                     sal_Bool bLoop = sal_True;
    1427           0 :                     while( bLoop && pDlg->Execute() == RET_OK )
    1428             :                     {
    1429           0 :                         pDlg->GetAttr( aNewAttr );
    1430           0 :                         aLayerName   = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
    1431             : 
    1432           0 :                         if( rLayerAdmin.GetLayer( aLayerName, sal_False )
    1433           0 :                             || aLayerName.Len()==0 )
    1434             :                         {
    1435             :                             // name already exists
    1436             :                             WarningBox aWarningBox (
    1437             :                                 GetParentWindow(),
    1438             :                                 WinBits( WB_OK ),
    1439           0 :                                 String(SdResId( STR_WARN_NAME_DUPLICATE)));
    1440           0 :                             aWarningBox.Execute();
    1441             :                         }
    1442             :                         else
    1443           0 :                             bLoop = sal_False;
    1444             :                     }
    1445           0 :                     if( bLoop ) // was canceled
    1446             :                     {
    1447           0 :                         delete pDlg;
    1448             : 
    1449           0 :                         Cancel();
    1450           0 :                         rReq.Ignore ();
    1451           0 :                         break;
    1452             :                     }
    1453             :                     else
    1454             :                     {
    1455           0 :                         aLayerTitle  = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
    1456           0 :                         aLayerDesc   = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
    1457           0 :                         bIsVisible   = ((SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
    1458           0 :                         bIsLocked    = ((SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue () ;
    1459           0 :                         bIsPrintable = ((SdAttrLayerPrintable &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue () ;
    1460             : 
    1461           0 :                         delete pDlg;
    1462             :                     }
    1463           0 :                 }
    1464             :             }
    1465           0 :             else if (pArgs->Count () != 4)
    1466             :                  {
    1467             : #ifndef DISABLE_SCRIPTING
    1468           0 :                      StarBASIC::FatalError (SbERR_WRONG_ARGS);
    1469             : #endif
    1470           0 :                      Cancel();
    1471           0 :                      rReq.Ignore ();
    1472           0 :                      break;
    1473             :                  }
    1474             :                  else
    1475             :                  {
    1476           0 :                      SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
    1477           0 :                      SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
    1478           0 :                      SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
    1479           0 :                      SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
    1480             : 
    1481           0 :                      aLayerName   = pLayerName->GetValue ();
    1482           0 :                      bIsVisible   = pIsVisible->GetValue ();
    1483           0 :                      bIsLocked    = pIsLocked->GetValue ();
    1484           0 :                      bIsPrintable = pIsPrintable->GetValue ();
    1485             :                  }
    1486             : 
    1487           0 :             String aPrevLayer = mpDrawView->GetActiveLayer();
    1488           0 :             String aName;
    1489             :             SdrLayer* pLayer;
    1490           0 :             sal_uInt16 nPrevLayer = 0;
    1491           0 :             nLayerCnt = rLayerAdmin.GetLayerCount();
    1492             : 
    1493           0 :             for ( nLayer = 0; nLayer < nLayerCnt; nLayer++ )
    1494             :             {
    1495           0 :                 pLayer = rLayerAdmin.GetLayer(nLayer);
    1496           0 :                 aName = pLayer->GetName();
    1497             : 
    1498           0 :                 if ( aPrevLayer == aName )
    1499             :                 {
    1500           0 :                     nPrevLayer = std::max(nLayer, (sal_uInt16) 4);
    1501             :                 }
    1502             :             }
    1503             : 
    1504           0 :             mpDrawView->InsertNewLayer(aLayerName, nPrevLayer + 1);
    1505           0 :             pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
    1506           0 :             if( pLayer )
    1507             :             {
    1508           0 :                 pLayer->SetTitle( aLayerTitle );
    1509           0 :                 pLayer->SetDescription( aLayerDesc );
    1510             :             }
    1511             : 
    1512           0 :             mpDrawView->SetLayerVisible( aLayerName, bIsVisible );
    1513           0 :             mpDrawView->SetLayerLocked( aLayerName, bIsLocked);
    1514           0 :             mpDrawView->SetLayerPrintable(aLayerName, bIsPrintable);
    1515             : 
    1516           0 :             mpDrawView->SetActiveLayer(aLayerName);
    1517             : 
    1518           0 :             ResetActualLayer();
    1519             : 
    1520           0 :             GetDoc()->SetChanged(sal_True);
    1521             : 
    1522             :             GetViewFrame()->GetDispatcher()->Execute(SID_SWITCHLAYER,
    1523           0 :                     SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
    1524             : 
    1525           0 :             Cancel();
    1526           0 :             rReq.Done ();
    1527             :         }
    1528           0 :         break;
    1529             : 
    1530             :         case SID_MODIFYLAYER:
    1531             :         {
    1532           0 :             if ( mpDrawView->IsTextEdit() )
    1533             :             {
    1534           0 :                 mpDrawView->SdrEndTextEdit();
    1535             :             }
    1536             : 
    1537           0 :             SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
    1538           0 :             sal_uInt16 nCurPage = GetLayerTabControl()->GetCurPageId();
    1539           0 :             String aLayerName( GetLayerTabControl()->GetPageText(nCurPage) );
    1540           0 :             SdrLayer* pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
    1541             : 
    1542           0 :             String aLayerTitle( pLayer->GetTitle() );
    1543           0 :             String aLayerDesc( pLayer->GetDescription() );
    1544             : 
    1545           0 :             String aOldLayerName( aLayerName );
    1546           0 :             String aOldLayerTitle( aLayerTitle );
    1547           0 :             String aOldLayerDesc( aLayerDesc );
    1548             : 
    1549             :             sal_Bool bIsVisible, bIsLocked, bIsPrintable;
    1550           0 :             sal_Bool bOldIsVisible = bIsVisible = mpDrawView->IsLayerVisible(aLayerName);
    1551           0 :             sal_Bool bOldIsLocked = bIsLocked = mpDrawView->IsLayerLocked(aLayerName);
    1552           0 :             sal_Bool bOldIsPrintable = bIsPrintable = mpDrawView->IsLayerPrintable(aLayerName);
    1553             : 
    1554             : 
    1555           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
    1556             :             // is it allowed to delete the layer?
    1557           0 :             bool bDelete = true;
    1558             : 
    1559           0 :             String aLayoutLayer ( SdResId(STR_LAYER_LAYOUT) );
    1560           0 :             String aControlsLayer ( SdResId(STR_LAYER_CONTROLS) );
    1561           0 :             String aMeasureLinesLayer ( SdResId(STR_LAYER_MEASURELINES) );
    1562           0 :             String aBackgroundLayer( SdResId(STR_LAYER_BCKGRND) );
    1563           0 :             String aBackgroundObjLayer( SdResId(STR_LAYER_BCKGRNDOBJ) );
    1564             : 
    1565           0 :             if( aLayerName == aLayoutLayer       || aLayerName == aControlsLayer ||
    1566           0 :                 aLayerName == aMeasureLinesLayer ||
    1567           0 :                 aLayerName == aBackgroundLayer   || aLayerName == aBackgroundObjLayer )
    1568             :             {
    1569           0 :                 bDelete = false;
    1570             :             }
    1571             : 
    1572           0 :             if (! pArgs)
    1573             :             {
    1574           0 :                 SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
    1575             : 
    1576           0 :                 aNewAttr.Put( SdAttrLayerName( aLayerName ) );
    1577           0 :                 aNewAttr.Put( SdAttrLayerTitle( aLayerTitle ) );
    1578           0 :                 aNewAttr.Put( SdAttrLayerDesc( aLayerDesc ) );
    1579           0 :                 aNewAttr.Put( SdAttrLayerVisible( bIsVisible ) );
    1580           0 :                 aNewAttr.Put( SdAttrLayerLocked( bIsLocked ) );
    1581           0 :                 aNewAttr.Put( SdAttrLayerPrintable( bIsPrintable ) );
    1582           0 :                 aNewAttr.Put( SdAttrLayerThisPage() );
    1583             : 
    1584           0 :                 SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
    1585           0 :                 AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, bDelete, String( SdResId( STR_MODIFYLAYER ) ) ) : 0;
    1586           0 :                 if( pDlg )
    1587             :                 {
    1588           0 :                     pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_MODIFYLAYER )->GetCommand() );
    1589             : 
    1590             :                     // test for already existing names
    1591           0 :                     sal_Bool    bLoop = sal_True;
    1592           0 :                     sal_uInt16  nRet = 0;
    1593           0 :                     while( bLoop && ( (nRet = pDlg->Execute()) == RET_OK ) )
    1594             :                     {
    1595           0 :                         pDlg->GetAttr( aNewAttr );
    1596           0 :                         aLayerName   = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
    1597             : 
    1598           0 :                         if( (rLayerAdmin.GetLayer( aLayerName, sal_False ) &&
    1599           0 :                              aLayerName != aOldLayerName) || aLayerName.Len()==0 )
    1600             :                         {
    1601             :                             // name already exists
    1602             :                             WarningBox aWarningBox (
    1603             :                                 GetParentWindow(),
    1604             :                                 WinBits( WB_OK ),
    1605           0 :                                 String( SdResId( STR_WARN_NAME_DUPLICATE)));
    1606           0 :                             aWarningBox.Execute();
    1607             :                         }
    1608             :                         else
    1609           0 :                             bLoop = sal_False;
    1610             :                     }
    1611           0 :                     switch (nRet)
    1612             :                     {
    1613             :                         case RET_OK :
    1614           0 :                             aLayerTitle  = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
    1615           0 :                             aLayerDesc   = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
    1616           0 :                             bIsVisible   = ((const SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
    1617           0 :                             bIsLocked    = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue ();
    1618           0 :                             bIsPrintable = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue ();
    1619             : 
    1620           0 :                             delete pDlg;
    1621           0 :                             break;
    1622             : 
    1623             :                         default :
    1624           0 :                             delete pDlg;
    1625           0 :                             rReq.Ignore ();
    1626           0 :                             Cancel ();
    1627           0 :                             return;
    1628             :                     }
    1629           0 :                 }
    1630             :             }
    1631           0 :             else if (pArgs->Count () == 4)
    1632             :             {
    1633           0 :                 SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
    1634           0 :                 SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
    1635           0 :                 SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
    1636           0 :                 SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
    1637             : 
    1638           0 :                 aLayerName   = pLayerName->GetValue ();
    1639           0 :                 bIsVisible   = pIsVisible->GetValue ();
    1640           0 :                 bIsLocked    = pIsLocked->GetValue ();
    1641           0 :                 bIsPrintable = pIsPrintable->GetValue ();
    1642             :             }
    1643             :             else
    1644             :             {
    1645             : #ifndef DISABLE_SCRIPTING
    1646           0 :                 StarBASIC::FatalError (SbERR_WRONG_ARGS);
    1647             : #endif
    1648           0 :                 Cancel ();
    1649           0 :                 rReq.Ignore ();
    1650           0 :                 break;
    1651             :             }
    1652             : 
    1653           0 :             ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
    1654             :             SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction(
    1655           0 :                 GetDoc(),
    1656             :                 pLayer,
    1657             :                 // old values
    1658             :                 aOldLayerName,
    1659             :                 aOldLayerTitle,
    1660             :                 aOldLayerDesc,
    1661             :                 bOldIsVisible,
    1662             :                 bOldIsLocked,
    1663             :                 bOldIsPrintable,
    1664             :                 // new values
    1665             :                 aLayerName,
    1666             :                 aLayerTitle,
    1667             :                 aLayerDesc,
    1668             :                 bIsVisible,
    1669             :                 bIsLocked,
    1670             :                 bIsPrintable
    1671           0 :                 );
    1672           0 :             pManager->AddUndoAction( pAction );
    1673             : 
    1674           0 :             ModifyLayer( pLayer, aLayerName, aLayerTitle, aLayerDesc, bIsVisible, bIsLocked, bIsPrintable );
    1675             : 
    1676           0 :             Cancel();
    1677           0 :             rReq.Done ();
    1678             :         }
    1679           0 :         break;
    1680             : 
    1681             :         case SID_RENAMELAYER:
    1682             :         {
    1683           0 :             if ( mpDrawView->IsTextEdit() )
    1684             :             {
    1685           0 :                 mpDrawView->SdrEndTextEdit();
    1686             :             }
    1687             : 
    1688           0 :             GetLayerTabControl()->StartEditMode(
    1689           0 :                 GetLayerTabControl()->GetCurPageId() );
    1690             : 
    1691           0 :             Cancel();
    1692           0 :             rReq.Ignore ();
    1693             :         }
    1694           0 :         break;
    1695             : 
    1696             :         case SID_EDIT_HYPERLINK :
    1697             :         {
    1698           0 :             GetViewFrame()->GetDispatcher()->Execute( SID_HYPERLINK_DIALOG );
    1699             : 
    1700           0 :             Cancel();
    1701           0 :             rReq.Done ();
    1702             :         }
    1703           0 :         break;
    1704             : 
    1705             :         case SID_OPEN_HYPERLINK:
    1706             :         {
    1707           0 :             OutlinerView* pOutView = mpDrawView->GetTextEditOutlinerView();
    1708           0 :             if ( pOutView )
    1709             :             {
    1710           0 :                 const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
    1711           0 :                 if ( pFieldItem )
    1712             :                 {
    1713           0 :                     const SvxFieldData* pField = pFieldItem->GetField();
    1714           0 :                     if( pField && pField->ISA( SvxURLField ) )
    1715             :                     {
    1716           0 :                         const SvxURLField* pURLField = static_cast< const SvxURLField* >( pField );
    1717             : 
    1718           0 :                         SfxStringItem aUrl( SID_FILE_NAME, pURLField->GetURL() );
    1719           0 :                         SfxStringItem aTarget( SID_TARGETNAME, pURLField->GetTargetFrame() );
    1720             : 
    1721           0 :                         String aReferName;
    1722           0 :                         SfxViewFrame* pFrame = GetViewFrame();
    1723           0 :                         SfxMedium* pMed = pFrame->GetObjectShell()->GetMedium();
    1724           0 :                         if (pMed)
    1725           0 :                             aReferName = pMed->GetName();
    1726             : 
    1727           0 :                         SfxFrameItem aFrm( SID_DOCFRAME, pFrame );
    1728           0 :                         SfxStringItem aReferer( SID_REFERER, aReferName );
    1729             : 
    1730           0 :                         SfxBoolItem aNewView( SID_OPEN_NEW_VIEW, sal_False );
    1731           0 :                         SfxBoolItem aBrowsing( SID_BROWSE, sal_True );
    1732             : 
    1733           0 :                         SfxViewFrame* pViewFrm = SfxViewFrame::Current();
    1734           0 :                         if (pViewFrm)
    1735             :                             pViewFrm->GetDispatcher()->Execute( SID_OPENDOC,
    1736             :                                                         SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
    1737             :                                                         &aUrl, &aTarget,
    1738             :                                                         &aFrm, &aReferer,
    1739             :                                                         &aNewView, &aBrowsing,
    1740           0 :                                                         0L );
    1741             :                     }
    1742             :                 }
    1743             :             }
    1744           0 :             Cancel();
    1745           0 :             rReq.Done ();
    1746             :         }
    1747           0 :         break;
    1748             : 
    1749             :         case SID_HYPERLINK_SETLINK:
    1750             :         {
    1751           0 :             const SfxItemSet* pReqArgs = rReq.GetArgs();
    1752             : 
    1753           0 :             if (pReqArgs)
    1754             :             {
    1755             :                 SvxHyperlinkItem* pHLItem =
    1756           0 :                 (SvxHyperlinkItem*) &pReqArgs->Get(SID_HYPERLINK_SETLINK);
    1757             : 
    1758           0 :                 if (pHLItem->GetInsertMode() == HLINK_FIELD)
    1759             :                 {
    1760           0 :                     InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
    1761           0 :                                    pHLItem->GetTargetFrame(), NULL);
    1762             :                 }
    1763           0 :                 else if (pHLItem->GetInsertMode() == HLINK_BUTTON)
    1764             :                 {
    1765           0 :                     InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
    1766           0 :                                     pHLItem->GetTargetFrame(), NULL);
    1767             :                 }
    1768           0 :                 else if (pHLItem->GetInsertMode() == HLINK_DEFAULT)
    1769             :                 {
    1770           0 :                     OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView();
    1771             : 
    1772           0 :                     if (pOlView)
    1773             :                     {
    1774           0 :                         InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
    1775           0 :                                        pHLItem->GetTargetFrame(), NULL);
    1776             :                     }
    1777             :                     else
    1778             :                     {
    1779           0 :                         InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
    1780           0 :                                         pHLItem->GetTargetFrame(), NULL);
    1781             :                     }
    1782             :                 }
    1783             :             }
    1784             : 
    1785           0 :             Cancel();
    1786           0 :             rReq.Ignore ();
    1787             :         }
    1788           0 :         break;
    1789             : 
    1790             :         case SID_INSERT_FLD_DATE_FIX:
    1791             :         case SID_INSERT_FLD_DATE_VAR:
    1792             :         case SID_INSERT_FLD_TIME_FIX:
    1793             :         case SID_INSERT_FLD_TIME_VAR:
    1794             :         case SID_INSERT_FLD_AUTHOR:
    1795             :         case SID_INSERT_FLD_PAGE:
    1796             :         case SID_INSERT_FLD_PAGES:
    1797             :         case SID_INSERT_FLD_FILE:
    1798             :         {
    1799           0 :             sal_uInt16 nMul = 1;
    1800           0 :             SvxFieldItem* pFieldItem = 0;
    1801             : 
    1802           0 :             switch( nSId )
    1803             :             {
    1804             :                 case SID_INSERT_FLD_DATE_FIX:
    1805             :                     pFieldItem = new SvxFieldItem(
    1806           0 :                         SvxDateField( Date( Date::SYSTEM ), SVXDATETYPE_FIX ), EE_FEATURE_FIELD );
    1807           0 :                 break;
    1808             : 
    1809             :                 case SID_INSERT_FLD_DATE_VAR:
    1810           0 :                     pFieldItem = new SvxFieldItem( SvxDateField(), EE_FEATURE_FIELD );
    1811           0 :                 break;
    1812             : 
    1813             :                 case SID_INSERT_FLD_TIME_FIX:
    1814             :                     pFieldItem = new SvxFieldItem(
    1815           0 :                         SvxExtTimeField( Time( Time::SYSTEM ), SVXTIMETYPE_FIX ), EE_FEATURE_FIELD );
    1816           0 :                 break;
    1817             : 
    1818             :                 case SID_INSERT_FLD_TIME_VAR:
    1819           0 :                     pFieldItem = new SvxFieldItem( SvxExtTimeField(), EE_FEATURE_FIELD );
    1820           0 :                 break;
    1821             : 
    1822             :                 case SID_INSERT_FLD_AUTHOR:
    1823             :                 {
    1824           0 :                     SvtUserOptions aUserOptions;
    1825             :                     pFieldItem = new SvxFieldItem(
    1826             :                             SvxAuthorField(
    1827           0 :                                 aUserOptions.GetFirstName(), aUserOptions.GetLastName(), aUserOptions.GetID() ), EE_FEATURE_FIELD );
    1828             :                 }
    1829           0 :                 break;
    1830             : 
    1831             :                 case SID_INSERT_FLD_PAGE:
    1832             :                 {
    1833           0 :                     pFieldItem = new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD );
    1834           0 :                     nMul = 3;
    1835             :                 }
    1836           0 :                 break;
    1837             : 
    1838             :                 case SID_INSERT_FLD_PAGES:
    1839             :                 {
    1840           0 :                     pFieldItem = new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD );
    1841           0 :                     nMul = 3;
    1842             :                 }
    1843           0 :                 break;
    1844             : 
    1845             :                 case SID_INSERT_FLD_FILE:
    1846             :                 {
    1847           0 :                     String aName;
    1848           0 :                     if( GetDocSh()->HasName() )
    1849           0 :                         aName = GetDocSh()->GetMedium()->GetName();
    1850           0 :                     pFieldItem = new SvxFieldItem( SvxExtFileField( aName ), EE_FEATURE_FIELD );
    1851             :                 }
    1852           0 :                 break;
    1853             :             }
    1854             : 
    1855           0 :             OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
    1856             : 
    1857           0 :             if( pOLV )
    1858             :             {
    1859           0 :                 const SvxFieldItem* pOldFldItem = pOLV->GetFieldAtSelection();
    1860             : 
    1861           0 :                 if( pOldFldItem && ( pOldFldItem->GetField()->ISA( SvxURLField ) ||
    1862           0 :                                     pOldFldItem->GetField()->ISA( SvxDateField ) ||
    1863           0 :                                     pOldFldItem->GetField()->ISA( SvxTimeField ) ||
    1864           0 :                                     pOldFldItem->GetField()->ISA( SvxExtTimeField ) ||
    1865           0 :                                     pOldFldItem->GetField()->ISA( SvxExtFileField ) ||
    1866           0 :                                     pOldFldItem->GetField()->ISA( SvxAuthorField ) ||
    1867           0 :                                     pOldFldItem->GetField()->ISA( SvxPageField ) ) )
    1868             :                 {
    1869             :                     // select field, then it will be deleted when inserting
    1870           0 :                     ESelection aSel = pOLV->GetSelection();
    1871           0 :                     if( aSel.nStartPos == aSel.nEndPos )
    1872           0 :                         aSel.nEndPos++;
    1873           0 :                     pOLV->SetSelection( aSel );
    1874             :                 }
    1875             : 
    1876           0 :                 if( pFieldItem )
    1877           0 :                     pOLV->InsertField( *pFieldItem );
    1878             :             }
    1879             :             else
    1880             :             {
    1881           0 :                 Outliner* pOutl = GetDoc()->GetInternalOutliner();
    1882           0 :                 pOutl->Init( OUTLINERMODE_TEXTOBJECT );
    1883           0 :                 sal_uInt16 nOutlMode = pOutl->GetMode();
    1884           0 :                 pOutl->SetStyleSheet( 0, NULL );
    1885           0 :                 pOutl->QuickInsertField( *pFieldItem, ESelection() );
    1886           0 :                 OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
    1887             : 
    1888           0 :                 SdrRectObj* pRectObj = new SdrRectObj( OBJ_TEXT );
    1889           0 :                 pRectObj->SetMergedItem(SdrTextAutoGrowWidthItem(sal_True));
    1890             : 
    1891           0 :                 pOutl->UpdateFields();
    1892           0 :                 pOutl->SetUpdateMode( sal_True );
    1893           0 :                 Size aSize( pOutl->CalcTextSize() );
    1894           0 :                 aSize.Width() *= nMul;
    1895           0 :                 pOutl->SetUpdateMode( sal_False );
    1896             : 
    1897           0 :                 Point aPos;
    1898           0 :                 Rectangle aRect( aPos, GetActiveWindow()->GetOutputSizePixel() );
    1899           0 :                 aPos = aRect.Center();
    1900           0 :                 aPos = GetActiveWindow()->PixelToLogic(aPos);
    1901           0 :                 aPos.X() -= aSize.Width() / 2;
    1902           0 :                 aPos.Y() -= aSize.Height() / 2;
    1903             : 
    1904           0 :                 Rectangle aLogicRect(aPos, aSize);
    1905           0 :                 pRectObj->SetLogicRect(aLogicRect);
    1906           0 :                 pRectObj->SetOutlinerParaObject( pOutlParaObject );
    1907           0 :                 mpDrawView->InsertObjectAtView(pRectObj, *mpDrawView->GetSdrPageView());
    1908           0 :                 pOutl->Init( nOutlMode );
    1909             :             }
    1910             : 
    1911           0 :             delete pFieldItem;
    1912             : 
    1913           0 :             Cancel();
    1914           0 :             rReq.Ignore ();
    1915             :         }
    1916           0 :         break;
    1917             : 
    1918             :         case SID_MODIFY_FIELD:
    1919             :         {
    1920           0 :             OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
    1921             : 
    1922           0 :             if( pOLV )
    1923             :             {
    1924           0 :                 const SvxFieldItem* pFldItem = pOLV->GetFieldAtSelection();
    1925             : 
    1926           0 :                 if( pFldItem && (pFldItem->GetField()->ISA( SvxDateField ) ||
    1927           0 :                                  pFldItem->GetField()->ISA( SvxAuthorField ) ||
    1928           0 :                                  pFldItem->GetField()->ISA( SvxExtFileField ) ||
    1929           0 :                                  pFldItem->GetField()->ISA( SvxExtTimeField ) ) )
    1930             :                 {
    1931             :                     // Dialog...
    1932           0 :                     SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
    1933           0 :                     AbstractSdModifyFieldDlg* pDlg = pFact ? pFact->CreateSdModifyFieldDlg(GetActiveWindow(), pFldItem->GetField(), pOLV->GetAttribs() ) : 0;
    1934           0 :                     if( pDlg && pDlg->Execute() == RET_OK )
    1935             :                     {
    1936             :                         // To make a correct SetAttribs() call at the utlinerView
    1937             :                         // it is necessary to split the actions here
    1938           0 :                         SvxFieldData* pField = pDlg->GetField();
    1939           0 :                         ESelection aSel = pOLV->GetSelection();
    1940           0 :                         sal_Bool bSelectionWasModified(sal_False);
    1941             : 
    1942           0 :                         if( pField )
    1943             :                         {
    1944           0 :                             SvxFieldItem aFieldItem( *pField, EE_FEATURE_FIELD );
    1945             : 
    1946           0 :                             if( aSel.nStartPos == aSel.nEndPos )
    1947             :                             {
    1948           0 :                                 bSelectionWasModified = sal_True;
    1949           0 :                                 aSel.nEndPos++;
    1950           0 :                                 pOLV->SetSelection( aSel );
    1951             :                             }
    1952             : 
    1953           0 :                             pOLV->InsertField( aFieldItem );
    1954             : 
    1955             :                             // select again for eventual SetAttribs call
    1956           0 :                             pOLV->SetSelection( aSel );
    1957             :                         }
    1958             : 
    1959           0 :                         SfxItemSet aSet( pDlg->GetItemSet() );
    1960             : 
    1961           0 :                         if( aSet.Count() )
    1962             :                         {
    1963           0 :                             pOLV->SetAttribs( aSet );
    1964             : 
    1965           0 :                             ::Outliner* pOutliner = pOLV->GetOutliner();
    1966           0 :                             if( pOutliner )
    1967           0 :                                 pOutliner->UpdateFields();
    1968             :                         }
    1969             : 
    1970           0 :                         if(pField)
    1971             :                         {
    1972             :                             // restore selection to original
    1973           0 :                             if(bSelectionWasModified)
    1974             :                             {
    1975           0 :                                 aSel.nEndPos--;
    1976           0 :                                 pOLV->SetSelection( aSel );
    1977             :                             }
    1978             : 
    1979           0 :                             delete pField;
    1980           0 :                         }
    1981             :                     }
    1982           0 :                     delete pDlg;
    1983             :                 }
    1984             :             }
    1985             : 
    1986           0 :             Cancel();
    1987           0 :             rReq.Ignore ();
    1988             :         }
    1989           0 :         break;
    1990             : 
    1991             :         case SID_OPEN_XML_FILTERSETTINGS:
    1992             :         {
    1993             :             try
    1994             :             {
    1995           0 :                 css::uno::Reference < css::ui::dialogs::XExecutableDialog > xDialog = css::ui::dialogs::XSLTFilterDialog::create( ::comphelper::getProcessComponentContext() );
    1996           0 :                 xDialog->execute();
    1997             :             }
    1998           0 :             catch( ::com::sun::star::uno::RuntimeException& )
    1999             :             {
    2000             :                 DBG_UNHANDLED_EXCEPTION();
    2001             :             }
    2002             : 
    2003           0 :             Cancel();
    2004           0 :             rReq.Ignore ();
    2005             :         }
    2006           0 :         break;
    2007             : 
    2008             :         case SID_GROUP:  // BASIC
    2009             :         {
    2010           0 :             if ( mpDrawView->IsPresObjSelected( sal_True, sal_True, sal_True ) )
    2011             :             {
    2012           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2013           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2014             :             }
    2015             :             else
    2016             :             {
    2017           0 :                 mpDrawView->GroupMarked();
    2018             :             }
    2019           0 :             Cancel();
    2020           0 :             rReq.Done ();
    2021             :         }
    2022           0 :         break;
    2023             : 
    2024             :         case SID_UNGROUP:  // BASIC
    2025             :         {
    2026           0 :             mpDrawView->UnGroupMarked();
    2027           0 :             Cancel();
    2028           0 :             rReq.Done ();
    2029             :         }
    2030           0 :         break;
    2031             : 
    2032             :         case SID_NAME_GROUP:
    2033             :         {
    2034             :             // only allow for single object selection since the name of an object needs
    2035             :             // to be unique
    2036           0 :             if(1L == mpDrawView->GetMarkedObjectCount())
    2037             :             {
    2038             :                 // #i68101#
    2039           0 :                 SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
    2040             :                 OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
    2041           0 :                 String aName(pSelected->GetName());
    2042             : 
    2043           0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
    2044             :                 OSL_ENSURE(pFact, "Dialogdiet fail!");
    2045           0 :                 AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName);
    2046             :                 OSL_ENSURE(pDlg, "Dialogdiet fail!");
    2047             : 
    2048           0 :                 pDlg->SetCheckNameHdl(LINK(this, DrawViewShell, NameObjectHdl));
    2049             : 
    2050           0 :                 if(RET_OK == pDlg->Execute())
    2051             :                 {
    2052           0 :                     pDlg->GetName(aName);
    2053           0 :                     pSelected->SetName(aName);
    2054             :                 }
    2055             : 
    2056           0 :                 delete pDlg;
    2057             :             }
    2058             : 
    2059           0 :             SfxBindings& rBindings = GetViewFrame()->GetBindings();
    2060           0 :             rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
    2061           0 :             rBindings.Invalidate( SID_CONTEXT );
    2062             : 
    2063           0 :             Cancel();
    2064           0 :             rReq.Ignore();
    2065           0 :             break;
    2066             :         }
    2067             : 
    2068             :         // #i68101#
    2069             :         case SID_OBJECT_TITLE_DESCRIPTION:
    2070             :         {
    2071           0 :             if(1L == mpDrawView->GetMarkedObjectCount())
    2072             :             {
    2073           0 :                 SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
    2074             :                 OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
    2075           0 :                 String aTitle(pSelected->GetTitle());
    2076           0 :                 String aDescription(pSelected->GetDescription());
    2077             : 
    2078           0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
    2079             :                 OSL_ENSURE(pFact, "Dialogdiet fail!");
    2080           0 :                 AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription);
    2081             :                 OSL_ENSURE(pDlg, "Dialogdiet fail!");
    2082             : 
    2083           0 :                 if(RET_OK == pDlg->Execute())
    2084             :                 {
    2085           0 :                     pDlg->GetTitle(aTitle);
    2086           0 :                     pDlg->GetDescription(aDescription);
    2087           0 :                     pSelected->SetTitle(aTitle);
    2088           0 :                     pSelected->SetDescription(aDescription);
    2089             :                 }
    2090             : 
    2091           0 :                 delete pDlg;
    2092             :             }
    2093             : 
    2094           0 :             SfxBindings& rBindings = GetViewFrame()->GetBindings();
    2095           0 :             rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
    2096           0 :             rBindings.Invalidate( SID_CONTEXT );
    2097             : 
    2098           0 :             Cancel();
    2099           0 :             rReq.Ignore();
    2100           0 :             break;
    2101             :         }
    2102             : 
    2103             :         case SID_ENTER_GROUP:  // BASIC
    2104             :         {
    2105           0 :             mpDrawView->EnterMarkedGroup();
    2106           0 :             Cancel();
    2107           0 :             rReq.Done ();
    2108             :         }
    2109           0 :         break;
    2110             : 
    2111             :         case SID_LEAVE_GROUP:  // BASIC
    2112             :         {
    2113           0 :             mpDrawView->LeaveOneGroup();
    2114           0 :             Cancel();
    2115           0 :             rReq.Done ();
    2116             :         }
    2117           0 :         break;
    2118             : 
    2119             :         case SID_LEAVE_ALL_GROUPS:  // BASIC
    2120             :         {
    2121           0 :             mpDrawView->LeaveAllGroup();
    2122           0 :             Cancel();
    2123           0 :             rReq.Done ();
    2124             :         }
    2125           0 :         break;
    2126             : 
    2127             :         case SID_COMBINE:  // BASIC
    2128             :         {
    2129             :             // End text edit to avoid conflicts
    2130           0 :             if(mpDrawView->IsTextEdit())
    2131           0 :                 mpDrawView->SdrEndTextEdit();
    2132             : 
    2133           0 :             if ( mpDrawView->IsPresObjSelected() )
    2134             :             {
    2135           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2136           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2137             :             }
    2138             :             else
    2139             :             {
    2140           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2141           0 :                 mpDrawView->CombineMarkedObjects(sal_False);
    2142             :             }
    2143           0 :             Cancel();
    2144           0 :             rReq.Done ();
    2145             :         }
    2146           0 :         break;
    2147             : 
    2148             :         case SID_DISTRIBUTE_DLG:
    2149             :         {
    2150           0 :             if ( mpDrawView->IsPresObjSelected() )
    2151             :             {
    2152           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2153           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2154             :             }
    2155             :             else
    2156             :             {
    2157           0 :                 mpDrawView->DistributeMarkedObjects();
    2158             :             }
    2159           0 :             Cancel();
    2160           0 :             rReq.Done ();
    2161             :         }
    2162           0 :         break;
    2163             : 
    2164             :         case SID_POLY_MERGE:
    2165             :         {
    2166             :             // End text edit to avoid conflicts
    2167           0 :             if(mpDrawView->IsTextEdit())
    2168           0 :                 mpDrawView->SdrEndTextEdit();
    2169             : 
    2170           0 :             if ( mpDrawView->IsPresObjSelected() )
    2171             :             {
    2172           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2173           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2174             :             }
    2175             :             else
    2176             :             {
    2177           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2178           0 :                 mpDrawView->MergeMarkedObjects(SDR_MERGE_MERGE);
    2179             :             }
    2180           0 :             Cancel();
    2181           0 :             rReq.Done ();
    2182             :         }
    2183           0 :         break;
    2184             : 
    2185             :         case SID_POLY_SUBSTRACT:
    2186             :         {
    2187             :             // End text edit to avoid conflicts
    2188           0 :             if(mpDrawView->IsTextEdit())
    2189           0 :                 mpDrawView->SdrEndTextEdit();
    2190             : 
    2191           0 :             if ( mpDrawView->IsPresObjSelected() )
    2192             :             {
    2193           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2194           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2195             :             }
    2196             :             else
    2197             :             {
    2198           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2199           0 :                 mpDrawView->MergeMarkedObjects(SDR_MERGE_SUBSTRACT);
    2200             :             }
    2201           0 :             Cancel();
    2202           0 :             rReq.Done ();
    2203             :         }
    2204           0 :         break;
    2205             : 
    2206             :         case SID_POLY_INTERSECT:
    2207             :         {
    2208             :             // End text edit to avoid conflicts
    2209           0 :             if(mpDrawView->IsTextEdit())
    2210           0 :                 mpDrawView->SdrEndTextEdit();
    2211             : 
    2212           0 :             if ( mpDrawView->IsPresObjSelected() )
    2213             :             {
    2214           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2215           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2216             :             }
    2217             :             else
    2218             :             {
    2219           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2220           0 :                 mpDrawView->MergeMarkedObjects(SDR_MERGE_INTERSECT);
    2221             :             }
    2222           0 :             Cancel();
    2223           0 :             rReq.Done ();
    2224             :         }
    2225           0 :         break;
    2226             : 
    2227             :         case SID_DISMANTLE:  // BASIC
    2228             :         {
    2229           0 :             if ( mpDrawView->IsDismantlePossible(sal_False) )
    2230             :             {
    2231           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2232           0 :                 mpDrawView->DismantleMarkedObjects(sal_False);
    2233             :             }
    2234           0 :             Cancel();
    2235           0 :             rReq.Done ();
    2236             :         }
    2237           0 :         break;
    2238             : 
    2239             :         case SID_CONNECT:  // BASIC
    2240             :         {
    2241           0 :             if ( mpDrawView->IsPresObjSelected() )
    2242             :             {
    2243           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2244           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2245             :             }
    2246             :             else
    2247             :             {
    2248           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2249           0 :                 mpDrawView->CombineMarkedObjects(sal_True);
    2250             :             }
    2251           0 :             Cancel();
    2252           0 :             rReq.Done ();
    2253             :         }
    2254           0 :         break;
    2255             : 
    2256             :         case SID_BREAK:  // BASIC
    2257             :         {
    2258           0 :             if ( mpDrawView->IsTextEdit() )
    2259             :             {
    2260           0 :                 mpDrawView->SdrEndTextEdit();
    2261             :             }
    2262             : 
    2263           0 :             if ( mpDrawView->IsBreak3DObjPossible() )
    2264             :             {
    2265           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2266           0 :                 mpDrawView->Break3DObj();
    2267             :             }
    2268           0 :             else if ( mpDrawView->IsDismantlePossible(sal_True) )
    2269             :             {
    2270           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2271           0 :                 mpDrawView->DismantleMarkedObjects(sal_True);
    2272             :             }
    2273           0 :             else if ( mpDrawView->IsImportMtfPossible() )
    2274             :             {
    2275           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
    2276           0 :                 const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
    2277           0 :                 sal_uLong nAnz=rMarkList.GetMarkCount();
    2278             : 
    2279             :                 // determine the sum of meta objects of all selected meta files
    2280           0 :                 sal_uLong nCount = 0;
    2281           0 :                 for(sal_uLong nm=0; nm<nAnz; nm++)
    2282             :                 {
    2283           0 :                     SdrMark*     pM=rMarkList.GetMark(nm);
    2284           0 :                     SdrObject*   pObj=pM->GetMarkedSdrObj();
    2285           0 :                     SdrGrafObj*  pGraf=PTR_CAST(SdrGrafObj,pObj);
    2286           0 :                     SdrOle2Obj*  pOle2=PTR_CAST(SdrOle2Obj,pObj);
    2287             : 
    2288           0 :                     if(pGraf)
    2289             :                     {
    2290           0 :                         if(pGraf->HasGDIMetaFile())
    2291             :                         {
    2292           0 :                             nCount += pGraf->GetGraphic().GetGDIMetaFile().GetActionSize();
    2293             :                         }
    2294           0 :                         else if(pGraf->isEmbeddedSvg())
    2295             :                         {
    2296           0 :                             nCount += pGraf->getMetafileFromEmbeddedSvg().GetActionSize();
    2297             :                         }
    2298             :                     }
    2299             : 
    2300           0 :                     if(pOle2 && pOle2->GetGraphic())
    2301             :                     {
    2302           0 :                          nCount += pOle2->GetGraphic()->GetGDIMetaFile().GetActionSize();
    2303             :                     }
    2304             :                 }
    2305             : 
    2306             :                 // decide with the sum of all meta objects if we should show a dialog
    2307           0 :                 if(nCount < MIN_ACTIONS_FOR_DIALOG)
    2308             :                 {
    2309             :                     // nope, no dialog
    2310           0 :                     mpDrawView->DoImportMarkedMtf();
    2311             :                 }
    2312             :                 else
    2313             :                 {
    2314           0 :                     SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
    2315           0 :                     if( pFact )
    2316             :                     {
    2317           0 :                         VclAbstractDialog* pDlg = pFact->CreateBreakDlg(GetActiveWindow(), mpDrawView, GetDocSh(), nCount, nAnz );
    2318           0 :                         if( pDlg )
    2319             :                         {
    2320           0 :                             pDlg->Execute();
    2321           0 :                             delete pDlg;
    2322             :                         }
    2323             :                     }
    2324           0 :                 }
    2325             :             }
    2326             : 
    2327           0 :             Cancel();
    2328           0 :             rReq.Done ();
    2329             :         }
    2330           0 :         break;
    2331             : 
    2332             :         case SID_CONVERT_TO_3D:
    2333             :         {
    2334           0 :             if ( mpDrawView->IsPresObjSelected() )
    2335             :             {
    2336           0 :                 ::sd::Window* pWindow = GetActiveWindow();
    2337           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
    2338             :             }
    2339             :             else
    2340             :             {
    2341           0 :                 if (mpDrawView->IsConvertTo3DObjPossible())
    2342             :                 {
    2343           0 :                     if (mpDrawView->IsTextEdit())
    2344             :                     {
    2345           0 :                         mpDrawView->SdrEndTextEdit();
    2346             :                     }
    2347             : 
    2348           0 :                     WaitObject aWait( (Window*)GetActiveWindow() );
    2349           0 :                     mpDrawView->ConvertMarkedObjTo3D(true);
    2350             :                 }
    2351             :             }
    2352             : 
    2353           0 :             Cancel();
    2354           0 :             rReq.Done();
    2355             :         }
    2356           0 :         break;
    2357             : 
    2358             :         case SID_FRAME_TO_TOP:  // BASIC
    2359             :         {
    2360           0 :             mpDrawView->PutMarkedToTop();
    2361           0 :             Cancel();
    2362           0 :             Invalidate( SID_POSITION );
    2363           0 :             rReq.Done ();
    2364             :         }
    2365           0 :         break;
    2366             : 
    2367             :         case SID_MOREFRONT:  // BASIC
    2368             :         {
    2369           0 :             mpDrawView->MovMarkedToTop();
    2370           0 :             Cancel();
    2371           0 :             Invalidate( SID_POSITION );
    2372           0 :             rReq.Done ();
    2373             :         }
    2374           0 :         break;
    2375             : 
    2376             :         case SID_MOREBACK:  // BASIC
    2377             :         {
    2378           0 :             mpDrawView->MovMarkedToBtm();
    2379           0 :             Cancel();
    2380           0 :             Invalidate( SID_POSITION );
    2381           0 :             rReq.Done ();
    2382             :         }
    2383           0 :         break;
    2384             : 
    2385             :         case SID_FRAME_TO_BOTTOM:   // BASIC
    2386             :         {
    2387           0 :             mpDrawView->PutMarkedToBtm();
    2388           0 :             Cancel();
    2389           0 :             Invalidate( SID_POSITION );
    2390           0 :             rReq.Done ();
    2391             :         }
    2392           0 :         break;
    2393             : 
    2394             :         case SID_HORIZONTAL:  // BASIC
    2395             :         case SID_FLIP_HORIZONTAL:
    2396             :         {
    2397           0 :             mpDrawView->MirrorAllMarkedHorizontal();
    2398           0 :             Cancel();
    2399           0 :             rReq.Done ();
    2400             :         }
    2401           0 :         break;
    2402             : 
    2403             :         case SID_VERTICAL:  // BASIC
    2404             :         case SID_FLIP_VERTICAL:
    2405             :         {
    2406           0 :             mpDrawView->MirrorAllMarkedVertical();
    2407           0 :             Cancel();
    2408           0 :             rReq.Done ();
    2409             :         }
    2410           0 :         break;
    2411             : 
    2412             :         case SID_OBJECT_ALIGN_LEFT:  // BASIC
    2413             :         {
    2414           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_LEFT, SDRVALIGN_NONE);
    2415           0 :             Cancel();
    2416           0 :             rReq.Done ();
    2417             :         }
    2418           0 :         break;
    2419             : 
    2420             :         case SID_OBJECT_ALIGN_CENTER:  // BASIC
    2421             :         {
    2422           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_CENTER, SDRVALIGN_NONE);
    2423           0 :             Cancel();
    2424           0 :             rReq.Done ();
    2425             :         }
    2426           0 :         break;
    2427             : 
    2428             :         case SID_OBJECT_ALIGN_RIGHT:  // BASIC
    2429             :         {
    2430           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_RIGHT, SDRVALIGN_NONE);
    2431           0 :             Cancel();
    2432           0 :             rReq.Done ();
    2433             :         }
    2434           0 :         break;
    2435             : 
    2436             :         case SID_OBJECT_ALIGN_UP:  // BASIC
    2437             :         {
    2438           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_TOP);
    2439           0 :             Cancel();
    2440           0 :             rReq.Done ();
    2441             :         }
    2442           0 :         break;
    2443             : 
    2444             :         case SID_OBJECT_ALIGN_MIDDLE:  // BASIC
    2445             :         {
    2446           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_CENTER);
    2447           0 :             Cancel();
    2448           0 :             rReq.Done ();
    2449             :         }
    2450           0 :         break;
    2451             : 
    2452             :         case SID_OBJECT_ALIGN_DOWN:  // BASIC
    2453             :         {
    2454           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_BOTTOM);
    2455           0 :             Cancel();
    2456           0 :             rReq.Done ();
    2457             :         }
    2458           0 :         break;
    2459             : 
    2460             :         case SID_SELECTALL:  // BASIC
    2461             :         {
    2462           0 :             if( (dynamic_cast<FuSelection*>( GetOldFunction().get() ) != 0) &&
    2463           0 :                 !GetView()->IsFrameDragSingles() && GetView()->HasMarkablePoints())
    2464             :             {
    2465           0 :                 if ( !mpDrawView->IsAction() )
    2466           0 :                     mpDrawView->MarkAllPoints();
    2467             :             }
    2468             :             else
    2469           0 :                 mpDrawView->SelectAll();
    2470             : 
    2471           0 :             Cancel();
    2472           0 :             rReq.Done ();
    2473             :         }
    2474           0 :         break;
    2475             : 
    2476             :         case SID_STYLE_NEW: // BASIC ???
    2477             :         case SID_STYLE_APPLY:
    2478             :         case SID_STYLE_EDIT:
    2479             :         case SID_STYLE_DELETE:
    2480             :         case SID_STYLE_HIDE:
    2481             :         case SID_STYLE_SHOW:
    2482             :         case SID_STYLE_FAMILY:
    2483             :         case SID_STYLE_WATERCAN:
    2484             :         case SID_STYLE_UPDATE_BY_EXAMPLE:
    2485             :         case SID_STYLE_NEW_BY_EXAMPLE:
    2486             :         {
    2487           0 :             if( rReq.GetSlot() == SID_STYLE_EDIT && !rReq.GetArgs() )
    2488             :             {
    2489           0 :                 SfxStyleSheet* pStyleSheet = mpDrawView->GetStyleSheet();
    2490           0 :                 if( pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
    2491           0 :                     pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
    2492             : 
    2493           0 :                 if( (pStyleSheet == NULL) && GetView()->IsTextEdit() )
    2494             :                 {
    2495           0 :                     GetView()->SdrEndTextEdit();
    2496             : 
    2497           0 :                     pStyleSheet = mpDrawView->GetStyleSheet();
    2498           0 :                     if(pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
    2499           0 :                         pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
    2500             :                 }
    2501             : 
    2502           0 :                 if( pStyleSheet == NULL )
    2503             :                 {
    2504           0 :                     rReq.Ignore();
    2505           0 :                     break;
    2506             :                 }
    2507             : 
    2508           0 :                 SfxAllItemSet aSet(GetDoc()->GetPool());
    2509             : 
    2510           0 :                 SfxStringItem aStyleNameItem( SID_STYLE_EDIT, pStyleSheet->GetName() );
    2511           0 :                 aSet.Put(aStyleNameItem);
    2512             : 
    2513           0 :                 SfxUInt16Item aStyleFamilyItem( SID_STYLE_FAMILY, (sal_uInt16)pStyleSheet->GetFamily() );
    2514           0 :                 aSet.Put(aStyleFamilyItem);
    2515             : 
    2516           0 :                 rReq.SetArgs(aSet);
    2517             :             }
    2518             : 
    2519           0 :             if( rReq.GetArgs() )
    2520             :             {
    2521           0 :                 SetCurrentFunction( FuTemplate::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    2522           0 :                 if( rReq.GetSlot() == SID_STYLE_APPLY )
    2523           0 :                     GetViewFrame()->GetBindings().Invalidate( SID_STYLE_APPLY );
    2524           0 :                 Cancel();
    2525             :             }
    2526           0 :             else if( rReq.GetSlot() == SID_STYLE_APPLY )
    2527           0 :                 GetViewFrame()->GetDispatcher()->Execute( SID_STYLE_DESIGNER, SFX_CALLMODE_ASYNCHRON );
    2528           0 :             rReq.Ignore ();
    2529             :         }
    2530           0 :         break;
    2531             : 
    2532             :         case SID_IMAP:
    2533             :         {
    2534           0 :             sal_uInt16      nId = SvxIMapDlgChildWindow::GetChildWindowId();
    2535             : 
    2536           0 :             GetViewFrame()->ToggleChildWindow( nId );
    2537           0 :             GetViewFrame()->GetBindings().Invalidate( SID_IMAP );
    2538             : 
    2539           0 :             if ( GetViewFrame()->HasChildWindow( nId )
    2540           0 :                 && ( ( ViewShell::Implementation::GetImageMapDialog() ) != NULL ) )
    2541             :             {
    2542           0 :                 const SdrMarkList&  rMarkList = mpDrawView->GetMarkedObjectList();
    2543             : 
    2544           0 :                 if ( rMarkList.GetMarkCount() == 1 )
    2545           0 :                     UpdateIMapDlg( rMarkList.GetMark( 0 )->GetMarkedSdrObj() );
    2546             :             }
    2547             : 
    2548           0 :             Cancel();
    2549           0 :             rReq.Ignore ();
    2550             :         }
    2551           0 :         break;
    2552             : 
    2553             :         case SID_GRID_FRONT:
    2554             :         {
    2555           0 :             mpDrawView->SetGridFront( !mpDrawView->IsGridFront() );
    2556           0 :             Cancel();
    2557           0 :             rReq.Done ();
    2558             :         }
    2559           0 :         break;
    2560             : 
    2561             :         case SID_HELPLINES_FRONT:
    2562             :         {
    2563           0 :             mpDrawView->SetHlplFront( !mpDrawView->IsHlplFront() );
    2564           0 :             Cancel();
    2565           0 :             rReq.Done ();
    2566             :         }
    2567           0 :         break;
    2568             : 
    2569             :         case SID_FONTWORK:
    2570             :         {
    2571           0 :             if ( rReq.GetArgs() )
    2572             :             {
    2573           0 :                 GetViewFrame()->SetChildWindow(SvxFontWorkChildWindow::GetChildWindowId(),
    2574           0 :                                         ((const SfxBoolItem&) (rReq.GetArgs()->
    2575           0 :                                         Get(SID_FONTWORK))).GetValue());
    2576             :             }
    2577             :             else
    2578             :             {
    2579           0 :                 GetViewFrame()->ToggleChildWindow( SvxFontWorkChildWindow::GetChildWindowId() );
    2580             :             }
    2581             : 
    2582           0 :             GetViewFrame()->GetBindings().Invalidate(SID_FONTWORK);
    2583           0 :             Cancel();
    2584           0 :             rReq.Ignore ();
    2585             :         }
    2586           0 :         break;
    2587             : 
    2588             :         case SID_COLOR_CONTROL:
    2589             :         {
    2590           0 :             if ( rReq.GetArgs() )
    2591           0 :                 GetViewFrame()->SetChildWindow(SvxColorChildWindow::GetChildWindowId(),
    2592           0 :                                         ((const SfxBoolItem&) (rReq.GetArgs()->
    2593           0 :                                         Get(SID_COLOR_CONTROL))).GetValue());
    2594             :             else
    2595           0 :                 GetViewFrame()->ToggleChildWindow(SvxColorChildWindow::GetChildWindowId() );
    2596             : 
    2597           0 :             GetViewFrame()->GetBindings().Invalidate(SID_COLOR_CONTROL);
    2598           0 :             Cancel();
    2599           0 :             rReq.Ignore ();
    2600             :         }
    2601           0 :         break;
    2602             : 
    2603             :         case SID_EXTRUSION_TOOGLE:
    2604             :         case SID_EXTRUSION_TILT_DOWN:
    2605             :         case SID_EXTRUSION_TILT_UP:
    2606             :         case SID_EXTRUSION_TILT_LEFT:
    2607             :         case SID_EXTRUSION_TILT_RIGHT:
    2608             :         case SID_EXTRUSION_3D_COLOR:
    2609             :         case SID_EXTRUSION_DEPTH:
    2610             :         case SID_EXTRUSION_DIRECTION:
    2611             :         case SID_EXTRUSION_PROJECTION:
    2612             :         case SID_EXTRUSION_LIGHTING_DIRECTION:
    2613             :         case SID_EXTRUSION_LIGHTING_INTENSITY:
    2614             :         case SID_EXTRUSION_SURFACE:
    2615             :         case SID_EXTRUSION_DEPTH_FLOATER:
    2616             :         case SID_EXTRUSION_DIRECTION_FLOATER:
    2617             :         case SID_EXTRUSION_LIGHTING_FLOATER:
    2618             :         case SID_EXTRUSION_SURFACE_FLOATER:
    2619             :         case SID_EXTRUSION_DEPTH_DIALOG:
    2620           0 :             svx::ExtrusionBar::execute( mpDrawView, rReq, GetViewFrame()->GetBindings() );
    2621           0 :             Cancel();
    2622           0 :             rReq.Ignore ();
    2623           0 :             break;
    2624             : 
    2625             :         case SID_FONTWORK_SHAPE:
    2626             :         case SID_FONTWORK_SHAPE_TYPE:
    2627             :         case SID_FONTWORK_ALIGNMENT:
    2628             :         case SID_FONTWORK_SAME_LETTER_HEIGHTS:
    2629             :         case SID_FONTWORK_CHARACTER_SPACING:
    2630             :         case SID_FONTWORK_KERN_CHARACTER_PAIRS:
    2631             :         case SID_FONTWORK_GALLERY_FLOATER:
    2632             :         case SID_FONTWORK_CHARACTER_SPACING_FLOATER:
    2633             :         case SID_FONTWORK_ALIGNMENT_FLOATER:
    2634             :         case SID_FONTWORK_CHARACTER_SPACING_DIALOG:
    2635           0 :             svx::FontworkBar::execute( mpDrawView, rReq, GetViewFrame()->GetBindings() );
    2636           0 :             Cancel();
    2637           0 :             rReq.Ignore ();
    2638           0 :             break;
    2639             : 
    2640             :         case SID_BMPMASK:
    2641             :         {
    2642           0 :             GetViewFrame()->ToggleChildWindow( SvxBmpMaskChildWindow::GetChildWindowId() );
    2643           0 :             GetViewFrame()->GetBindings().Invalidate( SID_BMPMASK );
    2644             : 
    2645           0 :             Cancel();
    2646           0 :             rReq.Ignore ();
    2647             :         }
    2648           0 :         break;
    2649             : 
    2650             :         case SID_GALLERY:
    2651             :         {
    2652           0 :             GetViewFrame()->ToggleChildWindow( GalleryChildWindow::GetChildWindowId() );
    2653           0 :             GetViewFrame()->GetBindings().Invalidate( SID_GALLERY );
    2654             : 
    2655           0 :             Cancel();
    2656           0 :             rReq.Ignore ();
    2657             :         }
    2658           0 :         break;
    2659             : 
    2660             :         case SID_NAVIGATOR:
    2661             :         {
    2662           0 :             if ( rReq.GetArgs() )
    2663             :                 GetViewFrame()->SetChildWindow(SID_NAVIGATOR,
    2664           0 :                                         ((const SfxBoolItem&) (rReq.GetArgs()->
    2665           0 :                                         Get(SID_NAVIGATOR))).GetValue());
    2666             :             else
    2667           0 :                 GetViewFrame()->ToggleChildWindow( SID_NAVIGATOR );
    2668             : 
    2669           0 :             GetViewFrame()->GetBindings().Invalidate(SID_NAVIGATOR);
    2670           0 :             Cancel();
    2671           0 :             rReq.Ignore ();
    2672             :         }
    2673           0 :         break;
    2674             : 
    2675             :         case SID_ANIMATION_OBJECTS:
    2676             :         {
    2677           0 :             if ( rReq.GetArgs() )
    2678             :                 GetViewFrame()->SetChildWindow(
    2679           0 :                     AnimationChildWindow::GetChildWindowId(),
    2680           0 :                     ((const SfxBoolItem&) (rReq.GetArgs()->
    2681           0 :                         Get(SID_ANIMATION_OBJECTS))).GetValue());
    2682             :             else
    2683             :                 GetViewFrame()->ToggleChildWindow(
    2684           0 :                     AnimationChildWindow::GetChildWindowId() );
    2685             : 
    2686           0 :             GetViewFrame()->GetBindings().Invalidate(SID_ANIMATION_OBJECTS);
    2687           0 :             Cancel();
    2688           0 :             rReq.Ignore ();
    2689             :         }
    2690           0 :         break;
    2691             : 
    2692             :         case SID_CUSTOM_ANIMATION_PANEL:
    2693             :         {
    2694             :             // Make the slide transition panel visible (expand it) in the
    2695             :             // tool pane.
    2696           0 :             framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
    2697           0 :                 framework::FrameworkHelper::msCustomAnimationTaskPanelURL);
    2698             : 
    2699           0 :             Cancel();
    2700           0 :             rReq.Done ();
    2701             :         }
    2702           0 :         break;
    2703             : 
    2704             :         case SID_SLIDE_TRANSITIONS_PANEL:
    2705             :         {
    2706             :             // Make the slide transition panel visible (expand it) in the
    2707             :             // tool pane.
    2708           0 :             framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
    2709           0 :                 framework::FrameworkHelper::msSlideTransitionTaskPanelURL);
    2710             : 
    2711           0 :             Cancel();
    2712           0 :             rReq.Done ();
    2713             :         }
    2714           0 :         break;
    2715             : 
    2716             :         case SID_3D_WIN:
    2717             :         {
    2718           0 :             if ( rReq.GetArgs() )
    2719           0 :                 GetViewFrame()->SetChildWindow( Svx3DChildWindow::GetChildWindowId(),
    2720           0 :                                         ((const SfxBoolItem&) (rReq.GetArgs()->
    2721           0 :                                         Get( SID_3D_WIN ))).GetValue());
    2722             :             else
    2723           0 :                 GetViewFrame()->ToggleChildWindow( Svx3DChildWindow::GetChildWindowId() );
    2724             : 
    2725           0 :             GetViewFrame()->GetBindings().Invalidate( SID_3D_WIN );
    2726           0 :             Cancel();
    2727           0 :             rReq.Ignore ();
    2728             :         }
    2729           0 :         break;
    2730             : 
    2731             :         case SID_CONVERT_TO_3D_LATHE_FAST:
    2732             :         {
    2733             :             /* The call is enough. The initialization via Start3DCreation and
    2734             :                CreateMirrorPolygons is no longer needed if the parameter
    2735             :                sal_True is provided. Then a tilted rotary body with an axis left
    2736             :                besides the bounding rectangle of the selected objects is drawn
    2737             :                immediately and without user interaction.  */
    2738           0 :             mpDrawView->SdrEndTextEdit();
    2739           0 :             if(GetActiveWindow())
    2740           0 :                 GetActiveWindow()->EnterWait();
    2741           0 :             mpDrawView->End3DCreation(true);
    2742           0 :             Cancel();
    2743           0 :             rReq.Ignore();
    2744           0 :             if(GetActiveWindow())
    2745           0 :                 GetActiveWindow()->LeaveWait();
    2746             :         }
    2747           0 :         break;
    2748             : 
    2749             :         case SID_PRESENTATION_DLG:
    2750             :         {
    2751           0 :             SetCurrentFunction( FuSlideShowDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    2752           0 :             Cancel();
    2753             :         }
    2754           0 :         break;
    2755             : 
    2756             :         case SID_REMOTE_DLG:
    2757             :         {
    2758             : #ifdef ENABLE_SDREMOTE
    2759           0 :              SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
    2760           0 :              VclAbstractDialog* pDlg = pFact ? pFact->CreateRemoteDialog(GetActiveWindow()) : 0;
    2761           0 :              if (pDlg)
    2762           0 :                  pDlg->Execute();
    2763             : #endif
    2764             :         }
    2765           0 :         break;
    2766             : 
    2767             :         case SID_CUSTOMSHOW_DLG:
    2768             :         {
    2769           0 :             SetCurrentFunction( FuCustomShowDlg::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    2770           0 :             Cancel();
    2771             :         }
    2772           0 :         break;
    2773             : 
    2774             :         case SID_EXPAND_PAGE:
    2775             :         {
    2776           0 :             SetCurrentFunction( FuExpandPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    2777           0 :             Cancel();
    2778             :         }
    2779           0 :         break;
    2780             : 
    2781             :         case SID_SUMMARY_PAGE:
    2782             :         {
    2783           0 :             mpDrawView->SdrEndTextEdit();
    2784           0 :             SetCurrentFunction( FuSummaryPage::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
    2785           0 :             Cancel();
    2786             :         }
    2787           0 :         break;
    2788             : 
    2789             :         case SID_AVMEDIA_PLAYER:
    2790             :         {
    2791           0 :             GetViewFrame()->ToggleChildWindow( ::avmedia::MediaPlayer::GetChildWindowId() );
    2792           0 :             GetViewFrame()->GetBindings().Invalidate( SID_AVMEDIA_PLAYER );
    2793           0 :             Cancel();
    2794           0 :             rReq.Ignore ();
    2795             :         }
    2796           0 :         break;
    2797             : 
    2798             :         case SID_LAYER_DIALOG_WIN:
    2799             :         {
    2800           0 :             if ( rReq.GetArgs() )
    2801             :             {
    2802             :                 GetViewFrame()->SetChildWindow(
    2803           0 :                     LayerDialogChildWindow::GetChildWindowId(),
    2804           0 :                     ((const SfxBoolItem&) (rReq.GetArgs()->
    2805           0 :                         Get(SID_LAYER_DIALOG_WIN))).GetValue());
    2806             :             }
    2807             :             else
    2808             :             {
    2809             :                 GetViewFrame()->ToggleChildWindow(
    2810           0 :                     LayerDialogChildWindow::GetChildWindowId());
    2811             :             }
    2812             : 
    2813           0 :             GetViewFrame()->GetBindings().Invalidate(SID_LAYER_DIALOG_WIN);
    2814           0 :             Cancel();
    2815           0 :             rReq.Ignore ();
    2816             :         }
    2817           0 :         break;
    2818             : 
    2819             :         case SID_DISPLAY_MASTER_BACKGROUND:
    2820             :         case SID_DISPLAY_MASTER_OBJECTS:
    2821             :         {
    2822             :             // Determine current page and toggle visibility of layers
    2823             :             // associated with master page background or master page shapes.
    2824           0 :             SdPage* pPage = GetActualPage();
    2825           0 :             if (pPage != NULL
    2826           0 :                 && GetDoc() != NULL)
    2827             :             {
    2828           0 :                 SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
    2829           0 :                 SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
    2830             :                 sal_uInt8 aLayerId;
    2831           0 :                 if (nSId == SID_DISPLAY_MASTER_BACKGROUND)
    2832           0 :                     aLayerId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False);
    2833             :                 else
    2834           0 :                     aLayerId = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False);
    2835           0 :                 aVisibleLayers.Set(aLayerId, !aVisibleLayers.IsSet(aLayerId));
    2836           0 :                 pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
    2837             :             }
    2838           0 :             Cancel();
    2839           0 :             rReq.Ignore ();
    2840             :         }
    2841           0 :         break;
    2842             : 
    2843             :        case SID_PHOTOALBUM:
    2844             :        {
    2845           0 :             SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
    2846             :             VclAbstractDialog* pDlg = pFact ? pFact->CreateSdPhotoAlbumDialog(
    2847           0 :                 GetActiveWindow(),
    2848           0 :                 GetDoc()) : 0;
    2849             : 
    2850           0 :             if (pDlg)
    2851             :             {
    2852           0 :                 pDlg->Execute();
    2853           0 :                 delete pDlg;
    2854             :             }
    2855           0 :             Cancel();
    2856           0 :             rReq.Ignore ();
    2857             :         }
    2858           0 :         break;
    2859             : 
    2860             :         default:
    2861             :         {
    2862             :             DBG_ASSERT( 0, "Slot without function" );
    2863           0 :             Cancel();
    2864           0 :             rReq.Ignore ();
    2865             :         }
    2866           0 :         break;
    2867             :     }
    2868             : 
    2869           0 :     if(HasCurrentFunction())
    2870             :     {
    2871           0 :         GetCurrentFunction()->Activate();
    2872             :     }
    2873             : }
    2874             : 
    2875           0 : void DrawViewShell::ExecChar( SfxRequest &rReq )
    2876             : {
    2877           0 :     SdDrawDocument* pDoc = GetDoc();
    2878           0 :     if (!pDoc || !mpDrawView)
    2879           0 :         return;
    2880             : 
    2881           0 :     SfxItemSet aEditAttr( pDoc->GetPool() );
    2882           0 :     mpDrawView->GetAttributes( aEditAttr );
    2883             : 
    2884             :     //modified by wj for sym2_1580, if put old itemset into new set,
    2885             :     //when mpDrawView->SetAttributes(aNewAttr) it will invalidate all the item
    2886             :     // and use old attr to update all the attributes
    2887             : //  SfxItemSet aNewAttr( GetPool(),
    2888             : //  EE_ITEMS_START, EE_ITEMS_END );
    2889             : //  aNewAttr.Put( aEditAttr, sal_False );
    2890           0 :     SfxItemSet aNewAttr( pDoc->GetPool() );
    2891             :     //modified end
    2892             : 
    2893           0 :     sal_uInt16 nSId = rReq.GetSlot();
    2894             : 
    2895           0 :     MapSlot( nSId );
    2896             : 
    2897           0 :     switch ( nSId )
    2898             :     {
    2899             :     case SID_ATTR_CHAR_FONT:
    2900           0 :         if( rReq.GetArgs() )
    2901             :         {
    2902           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxFontItem, SID_ATTR_CHAR_FONT , sal_False );
    2903           0 :             if (pItem)
    2904             :             {
    2905           0 :                 aNewAttr.Put(*pItem);
    2906             :             }
    2907             :         }
    2908           0 :         break;
    2909             :     case SID_ATTR_CHAR_FONTHEIGHT:
    2910           0 :         if( rReq.GetArgs() )
    2911             :         {
    2912           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxFontHeightItem, SID_ATTR_CHAR_FONTHEIGHT , sal_False );
    2913           0 :             if (pItem)
    2914             :             {
    2915           0 :                 aNewAttr.Put(*pItem);
    2916             :             }
    2917             :         }
    2918           0 :         break;
    2919             :     case SID_ATTR_CHAR_WEIGHT:
    2920           0 :         if( rReq.GetArgs() )
    2921             :         {
    2922             :             //const SvxWeightItem *pItem = (const SvxWeightItem*) rReq.GetArg( SID_ATTR_CHAR_WEIGHT, sal_False, TYPE(SvxWeightItem) );
    2923           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxWeightItem, SID_ATTR_CHAR_WEIGHT , sal_False );
    2924           0 :             if (pItem)
    2925             :             {
    2926           0 :                 aNewAttr.Put(*pItem);
    2927             :             }
    2928             :         }
    2929           0 :         break;
    2930             :     case SID_ATTR_CHAR_POSTURE:
    2931           0 :         if( rReq.GetArgs() )
    2932             :         {
    2933             :             //const SvxPostureItem *pItem = (const SvxPostureItem*) rReq.GetArg( SID_ATTR_CHAR_POSTURE, sal_False, TYPE(SvxPostureItem) );
    2934           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxPostureItem, SID_ATTR_CHAR_POSTURE , sal_False );
    2935           0 :             if (pItem)
    2936             :             {
    2937           0 :                 aNewAttr.Put(*pItem);
    2938             :             }
    2939             :         }
    2940           0 :         break;
    2941             :     case SID_ATTR_CHAR_UNDERLINE:
    2942           0 :         if( rReq.GetArgs() )
    2943             :         {
    2944             :             //<<modify by wj for sym2_1873
    2945             :             //SFX_REQUEST_ARG( rReq, pItem, SvxTextLineItem, SID_ATTR_CHAR_UNDERLINE , sal_False );
    2946           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxUnderlineItem, SID_ATTR_CHAR_UNDERLINE , sal_False );
    2947             :             //end>>
    2948           0 :             if (pItem)
    2949             :             {
    2950           0 :                 aNewAttr.Put(*pItem);
    2951             :             }
    2952             :             else
    2953             :             {
    2954           0 :                 FontUnderline eFU = ( (const SvxUnderlineItem&) aEditAttr.Get( EE_CHAR_UNDERLINE ) ).GetLineStyle();
    2955           0 :                 aNewAttr.Put( SvxUnderlineItem( eFU != UNDERLINE_NONE ?UNDERLINE_NONE : UNDERLINE_SINGLE,  EE_CHAR_UNDERLINE ) );
    2956             :             }//aNewAttr.Put( (const SvxUnderlineItem&)aEditAttr.Get( EE_CHAR_UNDERLINE ) );
    2957             :         }
    2958           0 :         break;
    2959             :     case SID_ATTR_CHAR_SHADOWED:
    2960           0 :         if( rReq.GetArgs() )
    2961             :         {
    2962           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxShadowedItem, SID_ATTR_CHAR_SHADOWED , sal_False );
    2963           0 :             if (pItem)
    2964             :             {
    2965           0 :                 aNewAttr.Put(*pItem);
    2966             :             }
    2967             :         }
    2968           0 :         break;
    2969             :     case SID_ATTR_CHAR_STRIKEOUT:
    2970           0 :         if( rReq.GetArgs() )
    2971             :         {
    2972           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxCrossedOutItem, SID_ATTR_CHAR_STRIKEOUT , sal_False );
    2973           0 :             if (pItem)
    2974             :             {
    2975           0 :                 aNewAttr.Put(*pItem);
    2976             :             }
    2977             :         }
    2978           0 :         break;
    2979             :     case SID_ATTR_CHAR_COLOR:
    2980           0 :         if( rReq.GetArgs() )
    2981             :         {
    2982           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxColorItem, SID_ATTR_CHAR_COLOR , sal_False );
    2983           0 :             if (pItem)
    2984             :             {
    2985           0 :                 aNewAttr.Put(*pItem);
    2986             :             }
    2987             :         }
    2988           0 :         break;
    2989             :     case SID_ATTR_CHAR_KERNING:
    2990           0 :         if( rReq.GetArgs() )
    2991             :         {
    2992           0 :             SFX_REQUEST_ARG( rReq, pItem, SvxKerningItem, SID_ATTR_CHAR_KERNING , sal_False );
    2993           0 :             if (pItem)
    2994             :             {
    2995           0 :                 aNewAttr.Put(*pItem);
    2996             :             }
    2997             :         }
    2998           0 :         break;
    2999             :     case SID_SET_SUB_SCRIPT:
    3000           0 :         if( rReq.GetArgs() )
    3001             :         {
    3002           0 :             SvxEscapementItem aItem( EE_CHAR_ESCAPEMENT );
    3003             :             SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
    3004           0 :                             aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
    3005           0 :             if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
    3006           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
    3007             :             else
    3008           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_SUBSCRIPT );
    3009           0 :             aNewAttr.Put( aItem );
    3010             :         }
    3011           0 :         break;
    3012             :     case SID_SET_SUPER_SCRIPT:
    3013           0 :         if( rReq.GetArgs() )
    3014             :         {
    3015           0 :             SvxEscapementItem aItem( EE_CHAR_ESCAPEMENT );
    3016             :             SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
    3017           0 :                             aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
    3018           0 :             if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
    3019           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
    3020             :             else
    3021           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_SUPERSCRIPT );
    3022           0 :             aNewAttr.Put( aItem );
    3023             :         }
    3024           0 :         break;
    3025             :     case SID_SHRINK_FONT_SIZE:
    3026             :         case SID_GROW_FONT_SIZE:
    3027             :         //if (rReq.GetArgs())
    3028             :         {
    3029           0 :             const SvxFontListItem* pFonts = dynamic_cast<const SvxFontListItem*>(GetDocSh()->GetItem( SID_ATTR_CHAR_FONTLIST ) );
    3030           0 :             const FontList* pFontList = pFonts->GetFontList();
    3031           0 :             if( pFontList )
    3032             :             {
    3033           0 :                 FuText::ChangeFontSize( nSId == SID_GROW_FONT_SIZE, NULL, pFontList, mpView );
    3034           0 :                 GetViewFrame()->GetBindings().Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
    3035             :             }
    3036             :         }
    3037             :     default:
    3038             :         ;
    3039             :     }
    3040             : 
    3041           0 :     mpDrawView->SetAttributes(aNewAttr);
    3042           0 :     rReq.Done();
    3043           0 :     Cancel();
    3044             : }
    3045             : 
    3046             : /** This method consists basically of three parts:
    3047             :     1. Process the arguments of the SFX request.
    3048             :     2. Use the model to create a new page or duplicate an existing one.
    3049             :     3. Update the tab control and switch to the new page.
    3050             : */
    3051           0 : SdPage* DrawViewShell::CreateOrDuplicatePage (
    3052             :     SfxRequest& rRequest,
    3053             :     PageKind ePageKind,
    3054             :     SdPage* pPage,
    3055             :     const sal_Int32 nInsertPosition)
    3056             : {
    3057           0 :     SdPage* pNewPage = NULL;
    3058           0 :     if (ePageKind == PK_STANDARD && meEditMode != EM_MASTERPAGE)
    3059             :     {
    3060           0 :         if ( mpDrawView->IsTextEdit() )
    3061             :         {
    3062           0 :             mpDrawView->SdrEndTextEdit();
    3063             :         }
    3064           0 :         pNewPage = ViewShell::CreateOrDuplicatePage (rRequest, ePageKind, pPage, nInsertPosition);
    3065             :     }
    3066           0 :     return pNewPage;
    3067             : }
    3068             : 
    3069           0 : void DrawViewShell::ExecutePropPanelAttr (SfxRequest& rReq)
    3070             : {
    3071           0 :     if(SlideShow::IsRunning( GetViewShellBase() ))
    3072           0 :         return;
    3073             : 
    3074           0 :     SdDrawDocument* pDoc = GetDoc();
    3075           0 :     if (!pDoc || !mpDrawView)
    3076           0 :         return;
    3077             : 
    3078           0 :     sal_uInt16 nSId = rReq.GetSlot();
    3079           0 :     SfxItemSet aAttrs( pDoc->GetPool() );
    3080             : 
    3081           0 :     switch ( nSId )
    3082             :     {
    3083             :     case SID_TABLE_VERT_NONE:
    3084             :     case SID_TABLE_VERT_CENTER:
    3085             :     case SID_TABLE_VERT_BOTTOM:
    3086           0 :         SdrTextVertAdjust eTVA = SDRTEXTVERTADJUST_TOP;
    3087           0 :         if (nSId == SID_TABLE_VERT_CENTER)
    3088           0 :             eTVA = SDRTEXTVERTADJUST_CENTER;
    3089           0 :         else if (nSId == SID_TABLE_VERT_BOTTOM)
    3090           0 :             eTVA = SDRTEXTVERTADJUST_BOTTOM;
    3091             : 
    3092           0 :         aAttrs.Put( SdrTextVertAdjustItem(eTVA) );
    3093           0 :         mpDrawView->SetAttributes(aAttrs);
    3094             : 
    3095           0 :         break;
    3096           0 :     }
    3097             : }
    3098             : 
    3099           0 : void DrawViewShell::GetStatePropPanelAttr(SfxItemSet& rSet)
    3100             : {
    3101           0 :     SfxWhichIter    aIter( rSet );
    3102           0 :     sal_uInt16          nWhich = aIter.FirstWhich();
    3103             : 
    3104           0 :     SdDrawDocument* pDoc = GetDoc();
    3105           0 :     if (!pDoc || !mpDrawView)
    3106           0 :         return;
    3107             : 
    3108           0 :     SfxItemSet aAttrs( pDoc->GetPool() );
    3109           0 :     mpDrawView->GetAttributes( aAttrs );
    3110             : 
    3111           0 :     while ( nWhich )
    3112             :     {
    3113           0 :         sal_uInt16 nSlotId = SfxItemPool::IsWhich(nWhich)
    3114           0 :             ? GetPool().GetSlotId(nWhich)
    3115           0 :             : nWhich;
    3116           0 :         switch ( nSlotId )
    3117             :         {
    3118             :             case SID_TABLE_VERT_NONE:
    3119             :             case SID_TABLE_VERT_CENTER:
    3120             :             case SID_TABLE_VERT_BOTTOM:
    3121           0 :                 sal_Bool bContour = sal_False;
    3122           0 :                 SfxItemState eConState = aAttrs.GetItemState( SDRATTR_TEXT_CONTOURFRAME );
    3123           0 :                 if( eConState != SFX_ITEM_DONTCARE )
    3124             :                 {
    3125           0 :                     bContour = ( ( const SdrTextContourFrameItem& )aAttrs.Get( SDRATTR_TEXT_CONTOURFRAME ) ).GetValue();
    3126             :                 }
    3127           0 :                 if (bContour) break;
    3128             : 
    3129           0 :                 SfxItemState eVState = aAttrs.GetItemState( SDRATTR_TEXT_VERTADJUST );
    3130             :                 //SfxItemState eHState = aAttrs.GetItemState( SDRATTR_TEXT_HORZADJUST );
    3131             : 
    3132             :                 //if(SFX_ITEM_DONTCARE != eVState && SFX_ITEM_DONTCARE != eHState)
    3133           0 :                 if(SFX_ITEM_DONTCARE != eVState)
    3134             :                 {
    3135           0 :                     SdrTextVertAdjust eTVA = (SdrTextVertAdjust)((const SdrTextVertAdjustItem&)aAttrs.Get(SDRATTR_TEXT_VERTADJUST)).GetValue();
    3136           0 :                     sal_Bool bSet = (nSlotId == SID_TABLE_VERT_NONE && eTVA == SDRTEXTVERTADJUST_TOP) ||
    3137           0 :                             (nSlotId == SID_TABLE_VERT_CENTER && eTVA == SDRTEXTVERTADJUST_CENTER) ||
    3138           0 :                             (nSlotId == SID_TABLE_VERT_BOTTOM && eTVA == SDRTEXTVERTADJUST_BOTTOM);
    3139           0 :                     rSet.Put(SfxBoolItem(nSlotId, bSet));
    3140             :                 }
    3141             :                 else
    3142             :                 {
    3143           0 :                     rSet.Put(SfxBoolItem(nSlotId, sal_False));
    3144             :                 }
    3145           0 :                 break;
    3146             :         }
    3147           0 :         nWhich = aIter.NextWhich();
    3148           0 :     }
    3149             : }
    3150             : 
    3151          33 : } // end of namespace sd
    3152             : 
    3153             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10