LCOV - code coverage report
Current view: top level - libreoffice/sd/source/ui/view - drviewsc.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 363 0.3 %
Date: 2012-12-27 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 "DrawViewShell.hxx"
      21             : #include "ViewShellImplementation.hxx"
      22             : #include <vcl/waitobj.hxx>
      23             : 
      24             : #include <svx/svxids.hrc>
      25             : #include <svx/dialogs.hrc>
      26             : #include <svx/imapdlg.hxx>
      27             : #include <vcl/msgbox.hxx>
      28             : #include <sfx2/request.hxx>
      29             : #include <svx/svdogrp.hxx>
      30             : #include <svx/svdoole2.hxx>
      31             : #include <svx/svdograf.hxx>
      32             : #include <svx/svxdlg.hxx>
      33             : #include <sfx2/bindings.hxx>
      34             : #include <sfx2/dispatch.hxx>
      35             : #include <svl/style.hxx>
      36             : #include <svx/svdpagv.hxx>
      37             : #include <svx/grafctrl.hxx>
      38             : #include "stlsheet.hxx"
      39             : 
      40             : #include <sfx2/viewfrm.hxx>
      41             : 
      42             : #include "app.hrc"
      43             : #include "strings.hrc"
      44             : #include "helpids.h"
      45             : #include "Window.hxx"
      46             : #include "imapinfo.hxx"
      47             : #include "futempl.hxx"
      48             : #include "fusel.hxx"
      49             : #include "sdresid.hxx"
      50             : #include "drawdoc.hxx"
      51             : #include "DrawDocShell.hxx"
      52             : #include "drawview.hxx"
      53             : #include "sdabstdlg.hxx"
      54             : #include "brkdlg.hrc"
      55             : namespace sd {
      56             : 
      57             : #define MIN_ACTIONS_FOR_DIALOG  5000    // bei mehr als 1600 Metaobjekten
      58             :                                         // wird beim Aufbrechen ein Dialog
      59             :                                         // angezeigt.
      60             : /*************************************************************************
      61             : |*
      62             : |* SfxRequests fuer temporaere Funktionen
      63             : |*
      64             : \************************************************************************/
      65             : 
      66           0 : void DrawViewShell::FuTemp03(SfxRequest& rReq)
      67             : {
      68           0 :     sal_uInt16 nSId = rReq.GetSlot();
      69           0 :     switch( nSId )
      70             :     {
      71             :         case SID_GROUP:  // BASIC
      72             :         {
      73           0 :             if ( mpDrawView->IsPresObjSelected( sal_True, sal_True, sal_True ) )
      74             :             {
      75           0 :                 ::sd::Window* pWindow = GetActiveWindow();
      76           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
      77             :             }
      78             :             else
      79             :             {
      80           0 :                 mpDrawView->GroupMarked();
      81             :             }
      82           0 :             Cancel();
      83           0 :             rReq.Done ();
      84             :         }
      85           0 :         break;
      86             : 
      87             :         case SID_UNGROUP:  // BASIC
      88             :         {
      89           0 :             mpDrawView->UnGroupMarked();
      90           0 :             Cancel();
      91           0 :             rReq.Done ();
      92             :         }
      93           0 :         break;
      94             : 
      95             :         case SID_NAME_GROUP:
      96             :         {
      97             :             // only allow for single object selection since the name of an object needs
      98             :             // to be unique
      99           0 :             if(1L == mpDrawView->GetMarkedObjectCount())
     100             :             {
     101             :                 // #i68101#
     102           0 :                 SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
     103             :                 OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
     104           0 :                 String aName(pSelected->GetName());
     105             : 
     106           0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     107             :                 OSL_ENSURE(pFact, "Dialogdiet fail!");
     108           0 :                 AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName);
     109             :                 OSL_ENSURE(pDlg, "Dialogdiet fail!");
     110             : 
     111           0 :                 pDlg->SetCheckNameHdl(LINK(this, DrawViewShell, NameObjectHdl));
     112             : 
     113           0 :                 if(RET_OK == pDlg->Execute())
     114             :                 {
     115           0 :                     pDlg->GetName(aName);
     116           0 :                     pSelected->SetName(aName);
     117             :                 }
     118             : 
     119           0 :                 delete pDlg;
     120             :             }
     121             : 
     122           0 :             SfxBindings& rBindings = GetViewFrame()->GetBindings();
     123           0 :             rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
     124           0 :             rBindings.Invalidate( SID_CONTEXT );
     125             : 
     126           0 :             Cancel();
     127           0 :             rReq.Ignore();
     128           0 :             break;
     129             :         }
     130             : 
     131             :         // #i68101#
     132             :         case SID_OBJECT_TITLE_DESCRIPTION:
     133             :         {
     134           0 :             if(1L == mpDrawView->GetMarkedObjectCount())
     135             :             {
     136           0 :                 SdrObject* pSelected = mpDrawView->GetMarkedObjectByIndex(0L);
     137             :                 OSL_ENSURE(pSelected, "DrawViewShell::FuTemp03: nMarkCount, but no object (!)");
     138           0 :                 String aTitle(pSelected->GetTitle());
     139           0 :                 String aDescription(pSelected->GetDescription());
     140             : 
     141           0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     142             :                 OSL_ENSURE(pFact, "Dialogdiet fail!");
     143           0 :                 AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription);
     144             :                 OSL_ENSURE(pDlg, "Dialogdiet fail!");
     145             : 
     146           0 :                 if(RET_OK == pDlg->Execute())
     147             :                 {
     148           0 :                     pDlg->GetTitle(aTitle);
     149           0 :                     pDlg->GetDescription(aDescription);
     150           0 :                     pSelected->SetTitle(aTitle);
     151           0 :                     pSelected->SetDescription(aDescription);
     152             :                 }
     153             : 
     154           0 :                 delete pDlg;
     155             :             }
     156             : 
     157           0 :             SfxBindings& rBindings = GetViewFrame()->GetBindings();
     158           0 :             rBindings.Invalidate( SID_NAVIGATOR_STATE, sal_True, sal_False );
     159           0 :             rBindings.Invalidate( SID_CONTEXT );
     160             : 
     161           0 :             Cancel();
     162           0 :             rReq.Ignore();
     163           0 :             break;
     164             :         }
     165             : 
     166             :         case SID_ENTER_GROUP:  // BASIC
     167             :         {
     168           0 :             mpDrawView->EnterMarkedGroup();
     169           0 :             Cancel();
     170           0 :             rReq.Done ();
     171             :         }
     172           0 :         break;
     173             : 
     174             :         case SID_LEAVE_GROUP:  // BASIC
     175             :         {
     176           0 :             mpDrawView->LeaveOneGroup();
     177           0 :             Cancel();
     178           0 :             rReq.Done ();
     179             :         }
     180           0 :         break;
     181             : 
     182             :         case SID_LEAVE_ALL_GROUPS:  // BASIC
     183             :         {
     184           0 :             mpDrawView->LeaveAllGroup();
     185           0 :             Cancel();
     186           0 :             rReq.Done ();
     187             :         }
     188           0 :         break;
     189             : 
     190             :         case SID_COMBINE:  // BASIC
     191             :         {
     192             :             // End text edit to avoid conflicts
     193           0 :             if(mpDrawView->IsTextEdit())
     194           0 :                 mpDrawView->SdrEndTextEdit();
     195             : 
     196           0 :             if ( mpDrawView->IsPresObjSelected() )
     197             :             {
     198           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     199           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     200             :             }
     201             :             else
     202             :             {
     203           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     204           0 :                 mpDrawView->CombineMarkedObjects(sal_False);
     205             :             }
     206           0 :             Cancel();
     207           0 :             rReq.Done ();
     208             :         }
     209           0 :         break;
     210             : 
     211             :         case SID_DISTRIBUTE_DLG:
     212             :         {
     213           0 :             if ( mpDrawView->IsPresObjSelected() )
     214             :             {
     215           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     216           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     217             :             }
     218             :             else
     219             :             {
     220           0 :                 mpDrawView->DistributeMarkedObjects();
     221             :             }
     222           0 :             Cancel();
     223           0 :             rReq.Done ();
     224             :         }
     225           0 :         break;
     226             : 
     227             :         case SID_POLY_MERGE:
     228             :         {
     229             :             // End text edit to avoid conflicts
     230           0 :             if(mpDrawView->IsTextEdit())
     231           0 :                 mpDrawView->SdrEndTextEdit();
     232             : 
     233           0 :             if ( mpDrawView->IsPresObjSelected() )
     234             :             {
     235           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     236           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     237             :             }
     238             :             else
     239             :             {
     240           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     241           0 :                 mpDrawView->MergeMarkedObjects(SDR_MERGE_MERGE);
     242             :             }
     243           0 :             Cancel();
     244           0 :             rReq.Done ();
     245             :         }
     246           0 :         break;
     247             : 
     248             :         case SID_POLY_SUBSTRACT:
     249             :         {
     250             :             // End text edit to avoid conflicts
     251           0 :             if(mpDrawView->IsTextEdit())
     252           0 :                 mpDrawView->SdrEndTextEdit();
     253             : 
     254           0 :             if ( mpDrawView->IsPresObjSelected() )
     255             :             {
     256           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     257           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     258             :             }
     259             :             else
     260             :             {
     261           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     262           0 :                 mpDrawView->MergeMarkedObjects(SDR_MERGE_SUBSTRACT);
     263             :             }
     264           0 :             Cancel();
     265           0 :             rReq.Done ();
     266             :         }
     267           0 :         break;
     268             : 
     269             :         case SID_POLY_INTERSECT:
     270             :         {
     271             :             // End text edit to avoid conflicts
     272           0 :             if(mpDrawView->IsTextEdit())
     273           0 :                 mpDrawView->SdrEndTextEdit();
     274             : 
     275           0 :             if ( mpDrawView->IsPresObjSelected() )
     276             :             {
     277           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     278           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     279             :             }
     280             :             else
     281             :             {
     282           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     283           0 :                 mpDrawView->MergeMarkedObjects(SDR_MERGE_INTERSECT);
     284             :             }
     285           0 :             Cancel();
     286           0 :             rReq.Done ();
     287             :         }
     288           0 :         break;
     289             : 
     290             :         case SID_DISMANTLE:  // BASIC
     291             :         {
     292           0 :             if ( mpDrawView->IsDismantlePossible(sal_False) )
     293             :             {
     294           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     295           0 :                 mpDrawView->DismantleMarkedObjects(sal_False);
     296             :             }
     297           0 :             Cancel();
     298           0 :             rReq.Done ();
     299             :         }
     300           0 :         break;
     301             : 
     302             :         case SID_CONNECT:  // BASIC
     303             :         {
     304           0 :             if ( mpDrawView->IsPresObjSelected() )
     305             :             {
     306           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     307           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     308             :             }
     309             :             else
     310             :             {
     311           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     312           0 :                 mpDrawView->CombineMarkedObjects(sal_True);
     313             :             }
     314           0 :             Cancel();
     315           0 :             rReq.Done ();
     316             :         }
     317           0 :         break;
     318             : 
     319             :         case SID_BREAK:  // BASIC
     320             :         {
     321           0 :             if ( mpDrawView->IsTextEdit() )
     322             :             {
     323           0 :                 mpDrawView->SdrEndTextEdit();
     324             :             }
     325             : 
     326           0 :             if ( mpDrawView->IsBreak3DObjPossible() )
     327             :             {
     328           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     329           0 :                 mpDrawView->Break3DObj();
     330             :             }
     331           0 :             else if ( mpDrawView->IsDismantlePossible(sal_True) )
     332             :             {
     333           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     334           0 :                 mpDrawView->DismantleMarkedObjects(sal_True);
     335             :             }
     336           0 :             else if ( mpDrawView->IsImportMtfPossible() )
     337             :             {
     338           0 :                 WaitObject aWait( (Window*)GetActiveWindow() );
     339           0 :                 const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
     340           0 :                 sal_uLong nAnz=rMarkList.GetMarkCount();
     341             : 
     342             :                 // Summe der Metaobjekte aller sel. Metafiles erm.
     343           0 :                 sal_uLong nCount = 0;
     344           0 :                 for(sal_uLong nm=0; nm<nAnz; nm++)
     345             :                 {
     346           0 :                     SdrMark*     pM=rMarkList.GetMark(nm);
     347           0 :                     SdrObject*   pObj=pM->GetMarkedSdrObj();
     348           0 :                     SdrGrafObj*  pGraf=PTR_CAST(SdrGrafObj,pObj);
     349           0 :                     SdrOle2Obj*  pOle2=PTR_CAST(SdrOle2Obj,pObj);
     350             : 
     351           0 :                     if(pGraf)
     352             :                     {
     353           0 :                         if(pGraf->HasGDIMetaFile())
     354             :                         {
     355           0 :                             nCount += pGraf->GetGraphic().GetGDIMetaFile().GetActionSize();
     356             :                         }
     357           0 :                         else if(pGraf->isEmbeddedSvg())
     358             :                         {
     359           0 :                             nCount += pGraf->getMetafileFromEmbeddedSvg().GetActionSize();
     360             :                         }
     361             :                     }
     362             : 
     363           0 :                     if(pOle2 && pOle2->GetGraphic())
     364             :                     {
     365           0 :                          nCount += pOle2->GetGraphic()->GetGDIMetaFile().GetActionSize();
     366             :                     }
     367             :                 }
     368             : 
     369             :                 // anhand der erm. Summe entscheiden ob mit
     370             :                 // oder ohne Dialog aufgebrochen wird.
     371           0 :                 if(nCount < MIN_ACTIONS_FOR_DIALOG)
     372             :                 {
     373             :                     // ohne Dialog aufbrechen
     374           0 :                     mpDrawView->DoImportMarkedMtf();
     375             :                 }
     376             :                 else
     377             :                 {
     378           0 :                     SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
     379           0 :                     if( pFact )
     380             :                     {
     381           0 :                         VclAbstractDialog* pDlg = pFact->CreateBreakDlg(GetActiveWindow(), mpDrawView, GetDocSh(), nCount, nAnz );
     382           0 :                         if( pDlg )
     383             :                         {
     384           0 :                             pDlg->Execute();
     385           0 :                             delete pDlg;
     386             :                         }
     387             :                     }
     388           0 :                 }
     389             :             }
     390             : 
     391           0 :             Cancel();
     392           0 :             rReq.Done ();
     393             :         }
     394           0 :         break;
     395             : 
     396             :         case SID_CONVERT_TO_3D:
     397             :         {
     398           0 :             if ( mpDrawView->IsPresObjSelected() )
     399             :             {
     400           0 :                 ::sd::Window* pWindow = GetActiveWindow();
     401           0 :                 InfoBox(pWindow, String(SdResId(STR_ACTION_NOTPOSSIBLE) ) ).Execute();
     402             :             }
     403             :             else
     404             :             {
     405           0 :                 if (mpDrawView->IsConvertTo3DObjPossible())
     406             :                 {
     407           0 :                     if (mpDrawView->IsTextEdit())
     408             :                     {
     409           0 :                         mpDrawView->SdrEndTextEdit();
     410             :                     }
     411             : 
     412           0 :                     WaitObject aWait( (Window*)GetActiveWindow() );
     413           0 :                     mpDrawView->ConvertMarkedObjTo3D(sal_True);
     414             :                 }
     415             :             }
     416             : 
     417           0 :             Cancel();
     418           0 :             rReq.Done();
     419             :         }
     420           0 :         break;
     421             : 
     422             :         case SID_FRAME_TO_TOP:  // BASIC
     423             :         {
     424           0 :             mpDrawView->PutMarkedToTop();
     425           0 :             Cancel();
     426           0 :             Invalidate( SID_POSITION );
     427           0 :             rReq.Done ();
     428             :         }
     429           0 :         break;
     430             : 
     431             :         case SID_MOREFRONT:  // BASIC
     432             :         {
     433           0 :             mpDrawView->MovMarkedToTop();
     434           0 :             Cancel();
     435           0 :             Invalidate( SID_POSITION );
     436           0 :             rReq.Done ();
     437             :         }
     438           0 :         break;
     439             : 
     440             :         case SID_MOREBACK:  // BASIC
     441             :         {
     442           0 :             mpDrawView->MovMarkedToBtm();
     443           0 :             Cancel();
     444           0 :             Invalidate( SID_POSITION );
     445           0 :             rReq.Done ();
     446             :         }
     447           0 :         break;
     448             : 
     449             :         case SID_FRAME_TO_BOTTOM:   // BASIC
     450             :         {
     451           0 :             mpDrawView->PutMarkedToBtm();
     452           0 :             Cancel();
     453           0 :             Invalidate( SID_POSITION );
     454           0 :             rReq.Done ();
     455             :         }
     456           0 :         break;
     457             : 
     458             :         case SID_HORIZONTAL:  // BASIC
     459             :         {
     460           0 :             mpDrawView->MirrorAllMarkedHorizontal();
     461           0 :             Cancel();
     462           0 :             rReq.Done ();
     463             :         }
     464           0 :         break;
     465             : 
     466             :         case SID_VERTICAL:  // BASIC
     467             :         {
     468           0 :             mpDrawView->MirrorAllMarkedVertical();
     469           0 :             Cancel();
     470           0 :             rReq.Done ();
     471             :         }
     472           0 :         break;
     473             : 
     474             :         case SID_OBJECT_ALIGN_LEFT:  // BASIC
     475             :         {
     476           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_LEFT, SDRVALIGN_NONE);
     477           0 :             Cancel();
     478           0 :             rReq.Done ();
     479             :         }
     480           0 :         break;
     481             : 
     482             :         case SID_OBJECT_ALIGN_CENTER:  // BASIC
     483             :         {
     484           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_CENTER, SDRVALIGN_NONE);
     485           0 :             Cancel();
     486           0 :             rReq.Done ();
     487             :         }
     488           0 :         break;
     489             : 
     490             :         case SID_OBJECT_ALIGN_RIGHT:  // BASIC
     491             :         {
     492           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_RIGHT, SDRVALIGN_NONE);
     493           0 :             Cancel();
     494           0 :             rReq.Done ();
     495             :         }
     496           0 :         break;
     497             : 
     498             :         case SID_OBJECT_ALIGN_UP:  // BASIC
     499             :         {
     500           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_TOP);
     501           0 :             Cancel();
     502           0 :             rReq.Done ();
     503             :         }
     504           0 :         break;
     505             : 
     506             :         case SID_OBJECT_ALIGN_MIDDLE:  // BASIC
     507             :         {
     508           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_CENTER);
     509           0 :             Cancel();
     510           0 :             rReq.Done ();
     511             :         }
     512           0 :         break;
     513             : 
     514             :         case SID_OBJECT_ALIGN_DOWN:  // BASIC
     515             :         {
     516           0 :             mpDrawView->AlignMarkedObjects(SDRHALIGN_NONE, SDRVALIGN_BOTTOM);
     517           0 :             Cancel();
     518           0 :             rReq.Done ();
     519             :         }
     520           0 :         break;
     521             : 
     522             :         case SID_SELECTALL:  // BASIC
     523             :         {
     524           0 :             if( (dynamic_cast<FuSelection*>( GetOldFunction().get() ) != 0) &&
     525           0 :                 !GetView()->IsFrameDragSingles() && GetView()->HasMarkablePoints())
     526             :             {
     527           0 :                 if ( !mpDrawView->IsAction() )
     528           0 :                     mpDrawView->MarkAllPoints();
     529             :             }
     530             :             else
     531           0 :                 mpDrawView->SelectAll();
     532             : 
     533           0 :             Cancel();
     534           0 :             rReq.Done ();
     535             :         }
     536           0 :         break;
     537             : 
     538             :         case SID_STYLE_NEW: // BASIC ???
     539             :         case SID_STYLE_APPLY:
     540             :         case SID_STYLE_EDIT:
     541             :         case SID_STYLE_DELETE:
     542             :         case SID_STYLE_HIDE:
     543             :         case SID_STYLE_SHOW:
     544             :         case SID_STYLE_FAMILY:
     545             :         case SID_STYLE_WATERCAN:
     546             :         case SID_STYLE_UPDATE_BY_EXAMPLE:
     547             :         case SID_STYLE_NEW_BY_EXAMPLE:
     548             :         {
     549           0 :             if( rReq.GetSlot() == SID_STYLE_EDIT && !rReq.GetArgs() )
     550             :             {
     551           0 :                 SfxStyleSheet* pStyleSheet = mpDrawView->GetStyleSheet();
     552           0 :                 if( pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
     553           0 :                     pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
     554             : 
     555           0 :                 if( (pStyleSheet == NULL) && GetView()->IsTextEdit() )
     556             :                 {
     557           0 :                     GetView()->SdrEndTextEdit();
     558             : 
     559           0 :                     pStyleSheet = mpDrawView->GetStyleSheet();
     560           0 :                     if(pStyleSheet && pStyleSheet->GetFamily() == SD_STYLE_FAMILY_MASTERPAGE)
     561           0 :                         pStyleSheet = ((SdStyleSheet*)pStyleSheet)->GetPseudoStyleSheet();
     562             :                 }
     563             : 
     564           0 :                 if( pStyleSheet == NULL )
     565             :                 {
     566           0 :                     rReq.Ignore();
     567             :                     break;
     568             :                 }
     569             : 
     570           0 :                 SfxAllItemSet aSet(GetDoc()->GetPool());
     571             : 
     572           0 :                 SfxStringItem aStyleNameItem( SID_STYLE_EDIT, pStyleSheet->GetName() );
     573           0 :                 aSet.Put(aStyleNameItem);
     574             : 
     575           0 :                 SfxUInt16Item aStyleFamilyItem( SID_STYLE_FAMILY, (sal_uInt16)pStyleSheet->GetFamily() );
     576           0 :                 aSet.Put(aStyleFamilyItem);
     577             : 
     578           0 :                 rReq.SetArgs(aSet);
     579             :             }
     580             : 
     581           0 :             if( rReq.GetArgs() )
     582             :             {
     583           0 :                 SetCurrentFunction( FuTemplate::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
     584           0 :                 if( rReq.GetSlot() == SID_STYLE_APPLY )
     585           0 :                     GetViewFrame()->GetBindings().Invalidate( SID_STYLE_APPLY );
     586           0 :                 Cancel();
     587             :             }
     588           0 :             else if( rReq.GetSlot() == SID_STYLE_APPLY )
     589           0 :                 GetViewFrame()->GetDispatcher()->Execute( SID_STYLE_DESIGNER, SFX_CALLMODE_ASYNCHRON );
     590           0 :             rReq.Ignore ();
     591             :         }
     592           0 :         break;
     593             : 
     594             :         case SID_IMAP:
     595             :         {
     596           0 :             sal_uInt16      nId = SvxIMapDlgChildWindow::GetChildWindowId();
     597             : 
     598           0 :             GetViewFrame()->ToggleChildWindow( nId );
     599           0 :             GetViewFrame()->GetBindings().Invalidate( SID_IMAP );
     600             : 
     601           0 :             if ( GetViewFrame()->HasChildWindow( nId )
     602           0 :                 && ( ( ViewShell::Implementation::GetImageMapDialog() ) != NULL ) )
     603             :             {
     604           0 :                 const SdrMarkList&  rMarkList = mpDrawView->GetMarkedObjectList();
     605             : 
     606           0 :                 if ( rMarkList.GetMarkCount() == 1 )
     607           0 :                     UpdateIMapDlg( rMarkList.GetMark( 0 )->GetMarkedSdrObj() );
     608             :             }
     609             : 
     610           0 :             Cancel();
     611           0 :             rReq.Ignore ();
     612             :         }
     613           0 :         break;
     614             : 
     615             :         case SID_GRID_FRONT:
     616             :         {
     617           0 :             mpDrawView->SetGridFront( !mpDrawView->IsGridFront() );
     618           0 :             Cancel();
     619           0 :             rReq.Done ();
     620             :         }
     621           0 :         break;
     622             : 
     623             :         case SID_HELPLINES_FRONT:
     624             :         {
     625           0 :             mpDrawView->SetHlplFront( !mpDrawView->IsHlplFront() );
     626           0 :             Cancel();
     627           0 :             rReq.Done ();
     628             :         }
     629           0 :         break;
     630             : 
     631             :         default:
     632           0 :             FuTemp04(rReq);
     633           0 :         break;
     634             :     };
     635           0 : };
     636             : 
     637             : /*************************************************************************
     638             : |*
     639             : |* Liefert die globale/Haupt-ID zurueck, also die ID, ueber die die
     640             : |* Toolbox ausgeloest wird
     641             : |*
     642             : \************************************************************************/
     643             : 
     644           0 : sal_uInt16 DrawViewShell::GetIdBySubId( sal_uInt16 nSId )
     645             : {
     646           0 :     sal_uInt16 nMappedSId = 0;
     647           0 :     switch( nSId )
     648             :     {
     649             :         case SID_OBJECT_ROTATE:
     650             :         case SID_OBJECT_MIRROR:
     651             :         case SID_OBJECT_TRANSPARENCE:
     652             :         case SID_OBJECT_GRADIENT:
     653             :         case SID_OBJECT_SHEAR:
     654             :         case SID_OBJECT_CROOK_ROTATE:
     655             :         case SID_OBJECT_CROOK_SLANT:
     656             :         case SID_OBJECT_CROOK_STRETCH:
     657             :         case SID_CONVERT_TO_3D_LATHE:
     658             :         {
     659           0 :             nMappedSId = SID_OBJECT_CHOOSE_MODE;
     660             :         }
     661           0 :         break;
     662             : 
     663             :         case SID_OBJECT_ALIGN_LEFT:
     664             :         case SID_OBJECT_ALIGN_CENTER:
     665             :         case SID_OBJECT_ALIGN_RIGHT:
     666             :         case SID_OBJECT_ALIGN_UP:
     667             :         case SID_OBJECT_ALIGN_MIDDLE:
     668             :         case SID_OBJECT_ALIGN_DOWN:
     669             :         {
     670           0 :             nMappedSId = SID_OBJECT_ALIGN;
     671             :         }
     672           0 :         break;
     673             : 
     674             :         case SID_FRAME_TO_TOP:
     675             :         case SID_MOREFRONT:
     676             :         case SID_MOREBACK:
     677             :         case SID_FRAME_TO_BOTTOM:
     678             :         case SID_BEFORE_OBJ:
     679             :         case SID_BEHIND_OBJ:
     680             :         case SID_REVERSE_ORDER:
     681             :         {
     682           0 :             nMappedSId = SID_POSITION;
     683             :         }
     684           0 :         break;
     685             : 
     686             :         case SID_ZOOM_OUT:
     687             :         case SID_ZOOM_IN:
     688             :         case SID_SIZE_REAL:
     689             :         case SID_ZOOM_PANNING:
     690             :         case SID_SIZE_PAGE:
     691             :         case SID_SIZE_PAGE_WIDTH:
     692             :         case SID_SIZE_ALL:
     693             :         case SID_SIZE_OPTIMAL:
     694             :         case SID_ZOOM_NEXT:
     695             :         case SID_ZOOM_PREV:
     696             :         {
     697           0 :             nMappedSId = SID_ZOOM_TOOLBOX;
     698             :         }
     699           0 :         break;
     700             : 
     701             :         case SID_ATTR_CHAR:
     702             :         case SID_TEXT_FITTOSIZE:
     703             :         case SID_DRAW_CAPTION:
     704             :         case SID_DRAW_FONTWORK:
     705             :         case SID_DRAW_FONTWORK_VERTICAL:
     706             :         {
     707           0 :             nMappedSId = SID_DRAWTBX_TEXT;
     708             :         }
     709           0 :         break;
     710             : 
     711             :         case SID_DRAW_RECT:
     712             :         case SID_DRAW_SQUARE:
     713             :         case SID_DRAW_RECT_ROUND:
     714             :         case SID_DRAW_SQUARE_ROUND:
     715             :         case SID_DRAW_RECT_NOFILL:
     716             :         case SID_DRAW_SQUARE_NOFILL:
     717             :         case SID_DRAW_RECT_ROUND_NOFILL:
     718             :         case SID_DRAW_SQUARE_ROUND_NOFILL:
     719             :         {
     720           0 :             nMappedSId = SID_DRAWTBX_RECTANGLES;
     721             :         }
     722           0 :         break;
     723             : 
     724             :         case SID_DRAW_ELLIPSE:
     725             :         case SID_DRAW_CIRCLE:
     726             :         case SID_DRAW_PIE:
     727             :         case SID_DRAW_CIRCLEPIE:
     728             :         case SID_DRAW_ELLIPSECUT:
     729             :         case SID_DRAW_CIRCLECUT:
     730             :         case SID_DRAW_ARC:
     731             :         case SID_DRAW_CIRCLEARC:
     732             :         case SID_DRAW_ELLIPSE_NOFILL:
     733             :         case SID_DRAW_CIRCLE_NOFILL:
     734             :         case SID_DRAW_PIE_NOFILL:
     735             :         case SID_DRAW_CIRCLEPIE_NOFILL:
     736             :         case SID_DRAW_ELLIPSECUT_NOFILL:
     737             :         case SID_DRAW_CIRCLECUT_NOFILL:
     738             :         {
     739           0 :             nMappedSId = SID_DRAWTBX_ELLIPSES;
     740             :         }
     741           0 :         break;
     742             : 
     743             :         case SID_DRAW_BEZIER_NOFILL:
     744             :         case SID_DRAW_POLYGON_NOFILL:
     745             :         case SID_DRAW_XPOLYGON_NOFILL:
     746             :         case SID_DRAW_FREELINE_NOFILL:
     747             :         case SID_DRAW_BEZIER_FILL:
     748             :         case SID_DRAW_POLYGON:
     749             :         case SID_DRAW_XPOLYGON:
     750             :         case SID_DRAW_FREELINE:
     751             :         {
     752           0 :             nMappedSId = SID_DRAWTBX_LINES;
     753             :         }
     754           0 :         break;
     755             : 
     756             :         case SID_DRAW_LINE:
     757             :         case SID_DRAW_XLINE:
     758             :         case SID_DRAW_MEASURELINE:
     759             :         case SID_LINE_ARROW_START:
     760             :         case SID_LINE_ARROW_END:
     761             :         case SID_LINE_ARROWS:
     762             :         case SID_LINE_ARROW_CIRCLE:
     763             :         case SID_LINE_CIRCLE_ARROW:
     764             :         case SID_LINE_ARROW_SQUARE:
     765             :         case SID_LINE_SQUARE_ARROW:
     766             :         {
     767           0 :             nMappedSId = SID_DRAWTBX_ARROWS;
     768             :         }
     769           0 :         break;
     770             : 
     771             :         case SID_3D_CUBE:
     772             :         case SID_3D_TORUS:
     773             :         case SID_3D_SPHERE:
     774             :         case SID_3D_SHELL:
     775             :         case SID_3D_HALF_SPHERE:
     776             :         case SID_3D_CYLINDER:
     777             :         case SID_3D_CONE:
     778             :         case SID_3D_PYRAMID:
     779             :         {
     780           0 :             nMappedSId = SID_DRAWTBX_3D_OBJECTS;
     781             :         }
     782           0 :         break;
     783             : 
     784             :         case SID_INSERT_DIAGRAM:
     785             :         case SID_ATTR_TABLE:
     786             :         case SID_INSERTFILE:
     787             :         case SID_INSERT_GRAPHIC:
     788             :         case SID_INSERT_AVMEDIA:
     789             :         case SID_INSERTPAGE:
     790             :         case SID_INSERT_MATH:
     791             :         case SID_INSERT_FLOATINGFRAME:
     792             :         case SID_INSERT_OBJECT:
     793             :         case SID_INSERT_PLUGIN:
     794             :         case SID_INSERT_SOUND:
     795             :         case SID_INSERT_VIDEO:
     796             :         case SID_INSERT_TABLE:
     797             :         {
     798           0 :             nMappedSId = SID_DRAWTBX_INSERT;
     799             :         }
     800           0 :         break;
     801             : 
     802             :         case SID_TOOL_CONNECTOR:
     803             :         case SID_CONNECTOR_ARROW_START:
     804             :         case SID_CONNECTOR_ARROW_END:
     805             :         case SID_CONNECTOR_ARROWS:
     806             :         case SID_CONNECTOR_CIRCLE_START:
     807             :         case SID_CONNECTOR_CIRCLE_END:
     808             :         case SID_CONNECTOR_CIRCLES:
     809             :         case SID_CONNECTOR_LINE:
     810             :         case SID_CONNECTOR_LINE_ARROW_START:
     811             :         case SID_CONNECTOR_LINE_ARROW_END:
     812             :         case SID_CONNECTOR_LINE_ARROWS:
     813             :         case SID_CONNECTOR_LINE_CIRCLE_START:
     814             :         case SID_CONNECTOR_LINE_CIRCLE_END:
     815             :         case SID_CONNECTOR_LINE_CIRCLES:
     816             :         case SID_CONNECTOR_CURVE:
     817             :         case SID_CONNECTOR_CURVE_ARROW_START:
     818             :         case SID_CONNECTOR_CURVE_ARROW_END:
     819             :         case SID_CONNECTOR_CURVE_ARROWS:
     820             :         case SID_CONNECTOR_CURVE_CIRCLE_START:
     821             :         case SID_CONNECTOR_CURVE_CIRCLE_END:
     822             :         case SID_CONNECTOR_CURVE_CIRCLES:
     823             :         case SID_CONNECTOR_LINES:
     824             :         case SID_CONNECTOR_LINES_ARROW_START:
     825             :         case SID_CONNECTOR_LINES_ARROW_END:
     826             :         case SID_CONNECTOR_LINES_ARROWS:
     827             :         case SID_CONNECTOR_LINES_CIRCLE_START:
     828             :         case SID_CONNECTOR_LINES_CIRCLE_END:
     829             :         case SID_CONNECTOR_LINES_CIRCLES:
     830             :         {
     831           0 :             nMappedSId = SID_DRAWTBX_CONNECTORS;
     832             :         }
     833             :     }
     834           0 :     return( nMappedSId );
     835             : }
     836             : 
     837             : /*************************************************************************
     838             : |*
     839             : |* Fuellt das SlotArray, um das aktuelle Mapping des ToolboxSlots zu
     840             : |* bekommen
     841             : |*
     842             : \************************************************************************/
     843             : 
     844           0 : void DrawViewShell::MapSlot( sal_uInt16 nSId )
     845             : {
     846           0 :     sal_uInt16 nMappedSId = GetIdBySubId( nSId );
     847             : 
     848           0 :     if( nMappedSId > 0 )
     849             :     {
     850           0 :         sal_uInt16 nID = GetArrayId( nMappedSId ) + 1;
     851           0 :         mpSlotArray[ nID ] = nSId;
     852             :     }
     853           0 : }
     854             : 
     855             : /*************************************************************************
     856             : |*
     857             : |* Ermoeglicht ueber das SlotArray ein ImageMapping
     858             : |*
     859             : \************************************************************************/
     860             : 
     861           0 : void DrawViewShell::UpdateToolboxImages( SfxItemSet &rSet, sal_Bool bPermanent )
     862             : {
     863           0 :     if( !bPermanent )
     864             :     {
     865           0 :         sal_uInt16 nId = GetArrayId( SID_ZOOM_TOOLBOX ) + 1;
     866           0 :         rSet.Put( TbxImageItem( SID_ZOOM_TOOLBOX, mpSlotArray[nId] ) );
     867             : 
     868           0 :         nId = GetArrayId( SID_DRAWTBX_INSERT ) + 1;
     869           0 :         rSet.Put( TbxImageItem( SID_DRAWTBX_INSERT, mpSlotArray[nId] ) );
     870             : 
     871           0 :         nId = GetArrayId( SID_POSITION ) + 1;
     872           0 :         rSet.Put( TbxImageItem( SID_POSITION, mpSlotArray[nId] ) );
     873             : 
     874           0 :         nId = GetArrayId( SID_OBJECT_ALIGN ) + 1;
     875           0 :         rSet.Put( TbxImageItem( SID_OBJECT_ALIGN, mpSlotArray[nId] ) );
     876             :     }
     877             :     else
     878             :     {
     879           0 :         for( sal_uInt16 nId = 0; nId < SLOTARRAY_COUNT; nId += 2 )
     880             :         {
     881           0 :             rSet.Put( TbxImageItem( mpSlotArray[nId], mpSlotArray[nId+1] ) );
     882             :         }
     883             :     }
     884           0 : }
     885             : 
     886             : /*************************************************************************
     887             : |*
     888             : |* Gibt den gemappten Slot zurueck
     889             : |*
     890             : \************************************************************************/
     891             : 
     892           0 : sal_uInt16 DrawViewShell::GetMappedSlot( sal_uInt16 nSId )
     893             : {
     894           0 :     sal_uInt16 nSlot = 0;
     895           0 :     sal_uInt16 nId = GetArrayId( nSId );
     896           0 :     if( nId != USHRT_MAX )
     897           0 :         nSlot = mpSlotArray[ nId+1 ];
     898             : 
     899             :     // Wenn der Slot noch auf sich selbst gemapped ist, muss 0 zurueck-
     900             :     // gegeben werden, da sonst der Slot immer wieder selbst executet
     901             :     // wird. Im Array ist der Slot selbst initial vorhanden, damit das
     902             :     // Image richtig angezeigt wird.
     903           0 :     if( nSId == nSlot )
     904           0 :         return( 0 );
     905             : 
     906           0 :     return( nSlot );
     907             : }
     908             : 
     909             : /*************************************************************************
     910             : |*
     911             : |* Gibt die Nummer des HauptSlots im SlotArray zurueck
     912             : |*
     913             : \************************************************************************/
     914             : 
     915           0 : sal_uInt16 DrawViewShell::GetArrayId( sal_uInt16 nSId )
     916             : {
     917           0 :     for( sal_uInt16 i = 0; i < SLOTARRAY_COUNT; i += 2 )
     918             :     {
     919           0 :         if( mpSlotArray[ i ] == nSId )
     920           0 :             return( i );
     921             :     }
     922             :     OSL_FAIL( "Slot im Array nicht gefunden!" );
     923           0 :     return( USHRT_MAX );
     924             : }
     925             : 
     926             : 
     927             : /*************************************************************************
     928             : |*
     929             : |* IMap-Dlg updaten
     930             : |*
     931             : \************************************************************************/
     932             : 
     933           0 : void DrawViewShell::UpdateIMapDlg( SdrObject* pObj )
     934             : {
     935           0 :     if( ( pObj->ISA( SdrGrafObj ) || pObj->ISA( SdrOle2Obj ) ) && !mpDrawView->IsTextEdit() &&
     936           0 :          GetViewFrame()->HasChildWindow( SvxIMapDlgChildWindow::GetChildWindowId() ) )
     937             :     {
     938           0 :         Graphic     aGraphic;
     939           0 :         ImageMap*   pIMap = NULL;
     940           0 :         TargetList* pTargetList = NULL;
     941           0 :         SdIMapInfo* pIMapInfo = GetDoc()->GetIMapInfo( pObj );
     942             : 
     943             :         // get graphic from shape
     944           0 :         SdrGrafObj* pGrafObj = dynamic_cast< SdrGrafObj* >( pObj );
     945           0 :         if( pGrafObj )
     946           0 :             aGraphic = pGrafObj->GetGraphic();
     947             : 
     948           0 :         if ( pIMapInfo )
     949             :         {
     950           0 :             pIMap = (ImageMap*) &pIMapInfo->GetImageMap();
     951           0 :             pTargetList = new TargetList;
     952           0 :             GetViewFrame()->GetTargetList( *pTargetList );
     953             :         }
     954             : 
     955           0 :         SvxIMapDlgChildWindow::UpdateIMapDlg( aGraphic, pIMap, pTargetList, pObj );
     956             : 
     957             :         // TargetListe kann von uns wieder geloescht werden
     958           0 :         if ( pTargetList )
     959             :         {
     960           0 :             for ( size_t i = 0, n = pTargetList->size(); i < n; ++i )
     961           0 :                 delete pTargetList->at( i );
     962           0 :             delete pTargetList;
     963           0 :         }
     964             :     }
     965           0 : }
     966             : 
     967             : // -----------------------------------------------------------------------------
     968             : 
     969           0 : IMPL_LINK( DrawViewShell, NameObjectHdl, AbstractSvxNameDialog*, pDialog )
     970             : {
     971           0 :     String aName;
     972             : 
     973           0 :     if( pDialog )
     974           0 :         pDialog->GetName( aName );
     975             : 
     976           0 :     return( ( !aName.Len() || ( GetDoc() && !GetDoc()->GetObj( aName ) ) ) ? 1 : 0 );
     977             : }
     978             : 
     979           9 : } // end of namespace sd
     980             : 
     981             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10