LCOV - code coverage report
Current view: top level - sw/source/uibase/shells - basesh.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 227 1456 15.6 %
Date: 2015-06-13 12:38:46 Functions: 21 44 47.7 %
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 <sot/factory.hxx>
      21             : #include <hintids.hxx>
      22             : #include <svl/urihelper.hxx>
      23             : #include <svl/languageoptions.hxx>
      24             : #include <svx/svxids.hrc>
      25             : #include <sfx2/linkmgr.hxx>
      26             : #include <sfx2/htmlmode.hxx>
      27             : #include <svx/imapdlg.hxx>
      28             : #include <sfx2/dispatch.hxx>
      29             : #include <sfx2/docfile.hxx>
      30             : #include <sfx2/viewfrm.hxx>
      31             : #include <sfx2/request.hxx>
      32             : #include <svl/whiter.hxx>
      33             : #include <svl/visitem.hxx>
      34             : #include <sfx2/objitem.hxx>
      35             : #include <vcl/graphicfilter.hxx>
      36             : #include <svx/gallery.hxx>
      37             : #include <editeng/langitem.hxx>
      38             : #include <svx/clipfmtitem.hxx>
      39             : #include <svx/contdlg.hxx>
      40             : #include <vcl/graph.hxx>
      41             : #include <svl/slstitm.hxx>
      42             : #include <vcl/msgbox.hxx>
      43             : #include <svl/ptitem.hxx>
      44             : #include <svl/itemiter.hxx>
      45             : #include <svl/stritem.hxx>
      46             : #include <editeng/colritem.hxx>
      47             : #include <editeng/shaditem.hxx>
      48             : #include <editeng/boxitem.hxx>
      49             : #include <svl/srchitem.hxx>
      50             : #include <editeng/ulspitem.hxx>
      51             : #include <editeng/lrspitem.hxx>
      52             : #include <editeng/brushitem.hxx>
      53             : #include <editeng/opaqitem.hxx>
      54             : #include <editeng/sizeitem.hxx>
      55             : #include <svx/flagsdef.hxx>
      56             : #include <svx/xflclit.hxx>
      57             : #include <editeng/scripttypeitem.hxx>
      58             : #include <sfx2/objface.hxx>
      59             : #include <fmturl.hxx>
      60             : #include <fmthdft.hxx>
      61             : #include <fmtclds.hxx>
      62             : #include <docsh.hxx>
      63             : #include <wrtsh.hxx>
      64             : #include <view.hxx>
      65             : #include <swmodule.hxx>
      66             : #include <swundo.hxx>
      67             : #include <fldbas.hxx>
      68             : #include <uitool.hxx>
      69             : #include <basesh.hxx>
      70             : #include <viewopt.hxx>
      71             : #include <fontcfg.hxx>
      72             : #include <docstat.hxx>
      73             : #include <usrfld.hxx>
      74             : #include <expfld.hxx>
      75             : #include <fldmgr.hxx>
      76             : #include <frmmgr.hxx>
      77             : #include <tablemgr.hxx>
      78             : #include <mdiexp.hxx>
      79             : #include <swdtflvr.hxx>
      80             : #include <pagedesc.hxx>
      81             : #include <convert.hxx>
      82             : #include <fmtcol.hxx>
      83             : #include <edtwin.hxx>
      84             : #include <tblafmt.hxx>
      85             : #include <caption.hxx>
      86             : #include <swwait.hxx>
      87             : #include <cmdid.h>
      88             : #include <globals.hrc>
      89             : #include <shells.hrc>
      90             : #include <statstr.hrc>
      91             : #include <globals.h>
      92             : #include <unotxdoc.hxx>
      93             : #include <crsskip.hxx>
      94             : #include <fmtinfmt.hxx>
      95             : #include <doc.hxx>
      96             : #include <IDocumentSettingAccess.hxx>
      97             : #include "swabstdlg.hxx"
      98             : #include "dialog.hrc"
      99             : #include "fldui.hrc"
     100             : #include "table.hrc"
     101             : #include <modcfg.hxx>
     102             : #include <instable.hxx>
     103             : #include <svx/fmshell.hxx>
     104             : #include <SwRewriter.hxx>
     105             : #include <comcore.hrc>
     106             : #include <unomid.h>
     107             : #include <svx/galleryitem.hxx>
     108             : #include <com/sun/star/gallery/GalleryItemType.hpp>
     109             : #include <boost/scoped_ptr.hpp>
     110             : 
     111             : //UUUU
     112             : #include <svx/unobrushitemhelper.hxx>
     113             : 
     114             : FlyMode SwBaseShell::eFrameMode = FLY_DRAG_END;
     115             : 
     116             : // These variables keep the state of Gallery (slot SID_GALLERY_BG_BRUSH)
     117             : // detected by GetGalleryState() for the subsequent ExecuteGallery() call.
     118             : 
     119             : static sal_uInt8 nParagraphPos;
     120             : static sal_uInt8 nGraphicPos;
     121             : static sal_uInt8 nOlePos;
     122             : static sal_uInt8 nFramePos;
     123             : static sal_uInt8 nTablePos;
     124             : static sal_uInt8 nTableRowPos;
     125             : static sal_uInt8 nTableCellPos;
     126             : static sal_uInt8 nPagePos;
     127             : static sal_uInt8 nHeaderPos;
     128             : static sal_uInt8 nFooterPos;
     129             : 
     130             : #define SwBaseShell
     131             : #include <sfx2/msg.hxx>
     132             : #include "swslots.hxx"
     133             : 
     134             : namespace
     135             : {
     136           0 :     SvxContourDlg* GetContourDlg(SwView &rView)
     137             :     {
     138             :         SfxChildWindow *pChildWindow = rView.GetViewFrame()->GetChildWindow(
     139           0 :             SvxContourDlgChildWindow::GetChildWindowId());
     140             : 
     141           0 :         return pChildWindow ? static_cast<SvxContourDlg*>(pChildWindow->GetWindow()) : NULL;
     142             :     }
     143             : 
     144           0 :     SvxIMapDlg* GetIMapDlg(SwView &rView)
     145             :     {
     146           0 :         SfxChildWindow* pWnd = rView.GetViewFrame()->GetChildWindow(SvxIMapDlgChildWindow::GetChildWindowId());
     147           0 :         return pWnd ? static_cast<SvxIMapDlg*>(pWnd->GetWindow()) : NULL;
     148             :     }
     149             : }
     150             : 
     151             : using namespace ::com::sun::star;
     152             : using namespace ::com::sun::star::uno;
     153             : using namespace ::com::sun::star::frame;
     154             : using namespace ::com::sun::star::lang;
     155             : 
     156         826 : SFX_IMPL_SUPERCLASS_INTERFACE(SwBaseShell, SfxShell)
     157             : 
     158          59 : void SwBaseShell::InitInterface_Impl()
     159             : {
     160          59 :     GetStaticInterface()->RegisterChildWindow(SvxIMapDlgChildWindow::GetChildWindowId());
     161          59 :     GetStaticInterface()->RegisterChildWindow(SvxContourDlgChildWindow::GetChildWindowId());
     162          59 : }
     163             : 
     164       61676 : TYPEINIT1(SwBaseShell,SfxShell)
     165             : 
     166           0 : static void lcl_UpdateIMapDlg( SwWrtShell& rSh )
     167             : {
     168           0 :     Graphic aGrf( rSh.GetIMapGraphic() );
     169           0 :     GraphicType nGrfType = aGrf.GetType();
     170           0 :     void* pEditObj = GRAPHIC_NONE != nGrfType && GRAPHIC_DEFAULT != nGrfType
     171           0 :                         ? rSh.GetIMapInventor() : 0;
     172           0 :     boost::scoped_ptr<TargetList> pList(new TargetList);
     173           0 :     rSh.GetView().GetViewFrame()->GetTopFrame().GetTargetList(*pList);
     174             : 
     175           0 :     SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
     176           0 :     rSh.GetFlyFrmAttr( aSet );
     177           0 :     const SwFormatURL &rURL = static_cast<const SwFormatURL&>(aSet.Get( RES_URL ));
     178             :     SvxIMapDlgChildWindow::UpdateIMapDlg(
     179           0 :             aGrf, rURL.GetMap(), pList.get(), pEditObj );
     180           0 : }
     181             : 
     182           0 : static bool lcl_UpdateContourDlg( SwWrtShell &rSh, int nSel )
     183             : {
     184           0 :     Graphic aGraf( rSh.GetIMapGraphic() );
     185           0 :     GraphicType nGrfType = aGraf.GetType();
     186           0 :     bool bRet = GRAPHIC_NONE != nGrfType && GRAPHIC_DEFAULT != nGrfType;
     187           0 :     if( bRet )
     188             :     {
     189           0 :         OUString aGrfName;
     190           0 :         if ( nSel & nsSelectionType::SEL_GRF )
     191           0 :             rSh.GetGrfNms( &aGrfName, 0 );
     192             : 
     193           0 :         SvxContourDlg *pDlg = GetContourDlg(rSh.GetView());
     194           0 :         if (pDlg)
     195             :         {
     196           0 :             pDlg->Update(aGraf, !aGrfName.isEmpty(),
     197           0 :                          rSh.GetGraphicPolygon(), rSh.GetIMapInventor());
     198           0 :         }
     199             :     }
     200           0 :     return bRet;
     201             : }
     202             : 
     203           0 : void SwBaseShell::ExecDelete(SfxRequest &rReq)
     204             : {
     205           0 :     SwWrtShell &rSh = GetShell();
     206           0 :     SwEditWin& rTmpEditWin = GetView().GetEditWin();
     207           0 :     switch(rReq.GetSlot())
     208             :     {
     209             :         case SID_DELETE:
     210           0 :             rSh.DelRight();
     211           0 :             break;
     212             : 
     213             :         case FN_BACKSPACE:
     214             : 
     215           0 :             if( rSh.IsNoNum() )
     216             :             {
     217           0 :                 rSh.SttCrsrMove();
     218           0 :                 bool bLeft = rSh.Left( CRSR_SKIP_CHARS, true, 1, false  );
     219           0 :                 if( bLeft )
     220             :                 {
     221           0 :                     rSh.DelLeft();
     222             :                 }
     223             :                 else
     224             :                     // JP 15.07.96: If it no longer goes forward, cancel
     225             :                     //              the numbering. For example at the beginning
     226             :                     //              of a doc, frame, table or an area.
     227           0 :                     rSh.DelNumRules();
     228             : 
     229           0 :                 rSh.EndCrsrMove();
     230           0 :                 break;
     231             :             }
     232             : 
     233             :             // otherwise call DelLeft
     234             :         case FN_SHIFT_BACKSPACE:
     235           0 :             rSh.DelLeft();
     236           0 :             break;
     237             :         default:
     238             :             OSL_FAIL("wrong Dispatcher");
     239           0 :             return;
     240             :     }
     241           0 :     rReq.Done();
     242             : 
     243             :     //#i42732# - notify the edit window that from now on we do not use the input language
     244           0 :     rTmpEditWin.SetUseInputLanguage( false );
     245             : }
     246             : 
     247           0 : void SwBaseShell::ExecClpbrd(SfxRequest &rReq)
     248             : {
     249             :     // Attention: At risk of suicide!
     250             :     // After paste, paste special the shell can be destroy.
     251             : 
     252           0 :     SwWrtShell &rSh = GetShell();
     253           0 :     sal_uInt16 nId = rReq.GetSlot();
     254           0 :     bool bIgnore = false;
     255           0 :     switch( nId )
     256             :     {
     257             :         case SID_CUT:
     258             :         case SID_COPY:
     259           0 :             rView.GetEditWin().FlushInBuffer();
     260           0 :             if ( rSh.HasSelection() )
     261             :             {
     262           0 :                 SwTransferable* pTransfer = new SwTransferable( rSh );
     263           0 : /*??*/          uno::Reference< datatransfer::XTransferable > xRef( pTransfer );
     264             : 
     265           0 :                 if ( nId == SID_CUT && FlyProtectFlags::NONE == rSh.IsSelObjProtected(FlyProtectFlags::Content|FlyProtectFlags::Parent) )
     266           0 :                     pTransfer->Cut();
     267             :                 else
     268             :                 {
     269           0 :                     const bool bLockedView = rSh.IsViewLocked();
     270           0 :                     rSh.LockView( true );    //lock visible section
     271           0 :                     pTransfer->Copy();
     272           0 :                     rSh.LockView( bLockedView );
     273             :                 }
     274           0 :                 break;
     275             :             }
     276           0 :             return;
     277             : 
     278             :         case SID_PASTE:
     279             :             {
     280             :                 TransferableDataHelper aDataHelper(
     281           0 :                     TransferableDataHelper::CreateFromSystemClipboard( &rSh.GetView().GetEditWin() ) );
     282           0 :                 if( aDataHelper.GetXTransferable().is()
     283           0 :                     && SwTransferable::IsPaste( rSh, aDataHelper ) )
     284             :                 {
     285             :                     // Temporary variables, because the shell could already be
     286             :                     // destroyed after the paste.
     287           0 :                     SwView* pView = &rView;
     288           0 :                     SwTransferable::Paste( rSh, aDataHelper );
     289           0 :                     if( rSh.IsFrmSelected() || rSh.IsObjSelected() )
     290           0 :                         rSh.EnterSelFrmMode();
     291           0 :                     pView->AttrChangedNotify( &rSh );
     292             :                 }
     293             :                 else
     294           0 :                     return;
     295             :             }
     296           0 :             break;
     297             : 
     298             :         case SID_CLIPBOARD_FORMAT_ITEMS:
     299             :             {
     300           0 :                 const SfxItemSet* pArgs = rReq.GetArgs();
     301             :                 const SfxPoolItem* pFormat;
     302           0 :                 if( pArgs && SfxItemState::SET == pArgs->GetItemState( nId, false, &pFormat ) )
     303             :                 {
     304             :                     TransferableDataHelper aDataHelper(
     305             :                         TransferableDataHelper::CreateFromSystemClipboard(
     306           0 :                                             &rSh.GetView().GetEditWin()) );
     307           0 :                     if( aDataHelper.GetXTransferable().is()
     308             :                         /*&& SwTransferable::IsPaste( rSh, aDataHelper )*/ )
     309             :                     {
     310             :                         // Temporary variables, because the shell could already be
     311             :                         // destroyed after the paste.
     312           0 :                         SwView* pView = &rView;
     313             : 
     314             :                         SwTransferable::PasteFormat( rSh, aDataHelper,
     315           0 :                                         static_cast<SotClipboardFormatId>(static_cast<const SfxUInt32Item*>(pFormat)->GetValue()) );
     316             : 
     317             :                         //Done() has to be called before the shell has been removed
     318           0 :                         rReq.Done();
     319           0 :                         bIgnore = true;
     320           0 :                         if( rSh.IsFrmSelected() || rSh.IsObjSelected())
     321           0 :                             rSh.EnterSelFrmMode();
     322           0 :                         pView->AttrChangedNotify( &rSh );
     323           0 :                     }
     324             :                 }
     325             :             }
     326           0 :             break;
     327             : 
     328             :         case SID_PASTE_UNFORMATTED:
     329             :             {
     330             :                 TransferableDataHelper aDataHelper(
     331           0 :                     TransferableDataHelper::CreateFromSystemClipboard( &rSh.GetView().GetEditWin()) );
     332           0 :                 if( aDataHelper.GetXTransferable().is()
     333           0 :                     && SwTransferable::IsPaste( rSh, aDataHelper ) )
     334             :                 {
     335             :                     // Temporary variables, because the shell could already be
     336             :                     // destroyed after the paste.
     337           0 :                     SwView* pView = &rView;
     338           0 :                     rReq.Ignore();
     339           0 :                     bIgnore = true;
     340           0 :                     if(SwTransferable::PasteUnformatted( rSh, aDataHelper ))
     341             :                     {
     342           0 :                         SfxViewFrame* pViewFrame = pView->GetViewFrame();
     343             :                         uno::Reference< frame::XDispatchRecorder > xRecorder =
     344           0 :                             pViewFrame->GetBindings().GetRecorder();
     345           0 :                         if(xRecorder.is()) {
     346           0 :                             SfxRequest aReq( pViewFrame, SID_CLIPBOARD_FORMAT_ITEMS );
     347           0 :                             aReq.AppendItem( SfxUInt32Item( SID_CLIPBOARD_FORMAT_ITEMS, static_cast<sal_uInt32>(SotClipboardFormatId::STRING) ) );
     348           0 :                             aReq.Done();
     349           0 :                         }
     350             :                     }
     351             : 
     352           0 :                     if (rSh.IsFrmSelected() || rSh.IsObjSelected())
     353           0 :                         rSh.EnterSelFrmMode();
     354           0 :                     pView->AttrChangedNotify( &rSh );
     355             :                 }
     356             :                 else
     357           0 :                     return;
     358             :             }
     359           0 :             break;
     360             : 
     361             :         case SID_PASTE_SPECIAL:
     362             :             {
     363             :                 TransferableDataHelper aDataHelper(
     364           0 :                     TransferableDataHelper::CreateFromSystemClipboard( &rSh.GetView().GetEditWin()) );
     365           0 :                 if( aDataHelper.GetXTransferable().is()
     366           0 :                     && SwTransferable::IsPaste( rSh, aDataHelper )
     367           0 :                     && !rSh.CrsrInsideInputField() )
     368             :                 {
     369             :                     // Temporary variables, because the shell could already be
     370             :                     // destroyed after the paste.
     371           0 :                     SwView* pView = &rView;
     372           0 :                     SotClipboardFormatId nFormatId = SotClipboardFormatId::NONE;
     373           0 :                     rReq.Ignore();
     374           0 :                     bIgnore = true;
     375           0 :                     if(SwTransferable::PasteSpecial( rSh, aDataHelper, nFormatId ))
     376             :                     {
     377           0 :                         SfxViewFrame* pViewFrame = pView->GetViewFrame();
     378             :                         uno::Reference< frame::XDispatchRecorder > xRecorder =
     379           0 :                             pViewFrame->GetBindings().GetRecorder();
     380           0 :                         if(xRecorder.is()) {
     381           0 :                             SfxRequest aReq( pViewFrame, SID_CLIPBOARD_FORMAT_ITEMS );
     382           0 :                             aReq.AppendItem( SfxUInt32Item( SID_CLIPBOARD_FORMAT_ITEMS, static_cast<sal_uInt32>(nFormatId) ) );
     383           0 :                             aReq.Done();
     384           0 :                         }
     385             :                     }
     386             : 
     387           0 :                     if (rSh.IsFrmSelected() || rSh.IsObjSelected())
     388           0 :                         rSh.EnterSelFrmMode();
     389           0 :                     pView->AttrChangedNotify( &rSh );
     390             :                 }
     391             :                 else
     392           0 :                     return;
     393             :             }
     394           0 :             break;
     395             : 
     396             :         default:
     397             :             OSL_FAIL("wrong Dispatcher");
     398           0 :             return;
     399             :     }
     400           0 :     if(!bIgnore)
     401           0 :         rReq.Done();
     402             : }
     403             : 
     404             : // ClipBoard state
     405             : 
     406        2361 : void SwBaseShell::StateClpbrd(SfxItemSet &rSet)
     407             : {
     408        2361 :     SwWrtShell &rSh = GetShell();
     409        2361 :     SfxWhichIter aIter(rSet);
     410             : 
     411        2361 :     const bool bCopy = rSh.HasSelection();
     412             : 
     413        2361 :     sal_uInt16 nWhich = aIter.FirstWhich();
     414             : 
     415       10005 :     while(nWhich)
     416             :     {
     417        5283 :         switch(nWhich)
     418             :         {
     419             :         case SID_CUT:
     420        1318 :             if( FlyProtectFlags::NONE != rSh.IsSelObjProtected(FlyProtectFlags::Content|FlyProtectFlags::Parent ) )
     421             :             {
     422           0 :                 rSet.DisableItem( nWhich );
     423           0 :                 break;
     424             :             }
     425             :         case SID_COPY:
     426        2637 :             if( !bCopy )
     427        2611 :                 rSet.DisableItem( nWhich );
     428        2637 :             break;
     429             : 
     430             :         case SID_PASTE:
     431        1325 :             if( !GetView().IsPasteAllowed() )
     432             :             {
     433        1325 :                 rSet.DisableItem( nWhich );
     434             :             }
     435        1325 :             break;
     436             : 
     437             :         case SID_PASTE_SPECIAL:
     438          24 :             if( !GetView().IsPasteSpecialAllowed()
     439          12 :                 || rSh.CrsrInsideInputField() )
     440             :             {
     441          12 :                 rSet.DisableItem( nWhich );
     442             :             }
     443          12 :             break;
     444             : 
     445             :         case SID_PASTE_UNFORMATTED:
     446           0 :             if( !GetView().IsPasteSpecialAllowed() )
     447             :             {
     448           0 :                 rSet.DisableItem( nWhich );
     449             :             }
     450           0 :             break;
     451             : 
     452             :         case SID_CLIPBOARD_FORMAT_ITEMS:
     453             :             {
     454             :                 TransferableDataHelper aDataHelper(
     455             :                     TransferableDataHelper::CreateFromSystemClipboard(
     456        1309 :                                             &rSh.GetView().GetEditWin()) );
     457             : 
     458        2618 :                 SvxClipboardFormatItem aFormatItem( nWhich );
     459        1309 :                 SwTransferable::FillClipFormatItem( rSh, aDataHelper, aFormatItem );
     460        2618 :                 rSet.Put( aFormatItem );
     461             :             }
     462        1309 :             break;
     463             :         }
     464        5283 :         nWhich = aIter.NextWhich();
     465        2361 :     }
     466        2361 : }
     467             : 
     468             : // Perform undo
     469             : 
     470           4 : void SwBaseShell::ExecUndo(SfxRequest &rReq)
     471             : {
     472           4 :     SwWrtShell &rSh = GetShell();
     473             : 
     474           4 :     sal_uInt16 nId = rReq.GetSlot(), nCnt = 1;
     475           4 :     const SfxItemSet* pArgs = rReq.GetArgs();
     476             :     const SfxPoolItem* pItem;
     477           4 :     if( pArgs && SfxItemState::SET == pArgs->GetItemState( nId, false, &pItem ))
     478           0 :         nCnt = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
     479             : 
     480             :     // #i106349#: save pointer: undo/redo may delete the shell, i.e., this!
     481           4 :     SfxViewFrame *const pViewFrame( GetView().GetViewFrame() );
     482             : 
     483           4 :     switch( nId )
     484             :     {
     485             :         case SID_UNDO:
     486           3 :             rSh.LockPaint();
     487           3 :             rSh.Do( SwWrtShell::UNDO, nCnt );
     488           3 :             rSh.UnlockPaint();
     489           3 :             break;
     490             : 
     491             :         case SID_REDO:
     492           1 :             rSh.LockPaint();
     493           1 :             rSh.Do( SwWrtShell::REDO, nCnt );
     494           1 :             rSh.UnlockPaint();
     495           1 :             break;
     496             : 
     497             :         case SID_REPEAT:
     498           0 :             rSh.Do( SwWrtShell::REPEAT );
     499           0 :             break;
     500             :         default:
     501             :             OSL_FAIL("wrong Dispatcher");
     502             :     }
     503             : 
     504           4 :     if (pViewFrame) { pViewFrame->GetBindings().InvalidateAll(false); }
     505           4 : }
     506             : 
     507             : // State of undo
     508             : 
     509        1287 : void SwBaseShell::StateUndo(SfxItemSet &rSet)
     510             : {
     511        1287 :     SwWrtShell &rSh = GetShell();
     512        1287 :     SfxWhichIter aIter(rSet);
     513        1287 :     sal_uInt16 nWhich = aIter.FirstWhich();
     514        4445 :     while(nWhich)
     515             :     {
     516        1871 :         switch(nWhich)
     517             :         {
     518             :             case SID_UNDO:
     519             :             {
     520         932 :                 if (rSh.GetLastUndoInfo(0, 0))
     521             :                 {
     522             :                     rSet.Put( SfxStringItem(nWhich,
     523         491 :                         rSh.GetDoString(SwWrtShell::UNDO)));
     524             :                 }
     525             :                 else
     526         441 :                     rSet.DisableItem(nWhich);
     527         932 :                 break;
     528             :             }
     529             :             case SID_REDO:
     530             :             {
     531         930 :                 if (rSh.GetFirstRedoInfo(0))
     532             :                 {
     533             :                     rSet.Put(SfxStringItem(nWhich,
     534          18 :                         rSh.GetDoString(SwWrtShell::REDO)));
     535             :                 }
     536             :                 else
     537         912 :                     rSet.DisableItem(nWhich);
     538         930 :                 break;
     539             :             }
     540             :             case SID_REPEAT:
     541             :             {   // Repeat is only possible if no REDO is possible - UI-Restriction
     542          27 :                 if ((!rSh.GetFirstRedoInfo(0)) &&
     543          18 :                     !rSh.IsSelFrmMode() &&
     544           9 :                     (UNDO_EMPTY != rSh.GetRepeatInfo(0)))
     545             :                 {
     546           0 :                     rSet.Put(SfxStringItem(nWhich, rSh.GetRepeatString()));
     547             :                 }
     548             :                 else
     549           9 :                     rSet.DisableItem(nWhich);
     550           9 :                 break;
     551             :             }
     552             : 
     553             :             case SID_GETUNDOSTRINGS:
     554           0 :                 if (rSh.GetLastUndoInfo(0, 0))
     555             :                 {
     556           0 :                     SfxStringListItem aStrLst( nWhich );
     557           0 :                     rSh.GetDoStrings( SwWrtShell::UNDO, aStrLst );
     558           0 :                     rSet.Put( aStrLst );
     559             :                 }
     560             :                 else
     561           0 :                     rSet.DisableItem( nWhich );
     562           0 :                 break;
     563             : 
     564             :             case SID_GETREDOSTRINGS:
     565           0 :                 if (rSh.GetFirstRedoInfo(0))
     566             :                 {
     567           0 :                     SfxStringListItem aStrLst( nWhich );
     568           0 :                     rSh.GetDoStrings( SwWrtShell::REDO, aStrLst );
     569           0 :                     rSet.Put( aStrLst );
     570             :                 }
     571             :                 else
     572           0 :                     rSet.DisableItem( nWhich );
     573           0 :                 break;
     574             :         }
     575        1871 :         nWhich = aIter.NextWhich();
     576        1287 :     }
     577        1287 : }
     578             : 
     579             : // Evaluate respectively dispatching the slot Id
     580             : 
     581           0 : void SwBaseShell::Execute(SfxRequest &rReq)
     582             : {
     583             :     const SfxPoolItem *pItem;
     584           0 :     SwWrtShell &rSh = GetShell();
     585           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
     586           0 :     bool bMore = false;
     587             : 
     588           0 :     sal_uInt16 nSlot = rReq.GetSlot();
     589           0 :     switch(nSlot)
     590             :     {
     591             :         case FN_REPAGINATE:
     592             :             {
     593           0 :                 Reference < XModel > xModel = GetView().GetDocShell()->GetModel();
     594           0 :                 Reference < XUnoTunnel > xDocTunnel ( xModel, UNO_QUERY );
     595           0 :                 SwXTextDocument *pDoc = reinterpret_cast < SwXTextDocument * > ( xDocTunnel->getSomething ( SwXTextDocument::getUnoTunnelId() ) );
     596           0 :                 pDoc->NotifyRefreshListeners();
     597           0 :                 rSh.CalcLayout();
     598             :             }
     599           0 :             break;
     600             :         case FN_UPDATE_FIELDS:
     601             :             {
     602           0 :                 rSh.UpdateDocStat();
     603           0 :                 rSh.EndAllTableBoxEdit();
     604           0 :                 rSh.SwViewShell::UpdateFields(true);
     605             : 
     606           0 :                 if( rSh.IsCrsrInTable() )
     607             :                 {
     608           0 :                     if( !rSh.IsTableComplexForChart() )
     609           0 :                         SwTableFUNC( &rSh, false).UpdateChart();
     610           0 :                     rSh.ClearTableBoxContent();
     611           0 :                     rSh.SaveTableBoxContent();
     612             :                 }
     613             :             }
     614           0 :             break;
     615             :         case FN_UPDATE_CHARTS:
     616             :             {
     617           0 :                 SwWait aWait( *rView.GetDocShell(), true );
     618           0 :                 rSh.UpdateAllCharts();
     619             :             }
     620           0 :             break;
     621             : 
     622             :         case FN_UPDATE_ALL:
     623             :             {
     624           0 :                 SwView&  rTempView = GetView();
     625           0 :                 rSh.EnterStdMode();
     626           0 :                 if( !rSh.GetLinkManager().GetLinks().empty() )
     627             :                 {
     628           0 :                     rSh.StartAllAction();
     629           0 :                     rSh.GetLinkManager().UpdateAllLinks( false, true, true );
     630           0 :                     rSh.EndAllAction();
     631             :                 }
     632           0 :                 SfxDispatcher &rDis = *rTempView.GetViewFrame()->GetDispatcher();
     633           0 :                 rDis.Execute( FN_UPDATE_FIELDS );
     634           0 :                 rDis.Execute( FN_UPDATE_TOX );
     635           0 :                 rDis.Execute( FN_UPDATE_CHARTS );
     636           0 :                 rSh.CalcLayout();
     637             :             }
     638           0 :             break;
     639             : 
     640             :         case FN_UPDATE_INPUTFIELDS:
     641           0 :             rSh.UpdateInputFields();
     642           0 :             break;
     643             : 
     644             :         case FN_PREV_BOOKMARK:
     645           0 :             rReq.SetReturnValue(SfxBoolItem( nSlot, rSh.GoPrevBookmark()));
     646           0 :             break;
     647             :         case FN_NEXT_BOOKMARK:
     648           0 :             rReq.SetReturnValue(SfxBoolItem( nSlot, rSh.GoNextBookmark()));
     649           0 :             break;
     650             : 
     651             :         case FN_GOTO_NEXT_MARK:
     652             :         case FN_GOTO_PREV_MARK:
     653             :         {
     654           0 :             SwFieldMgr aFieldMgr;
     655           0 :             SwFieldType* pFieldType = aFieldMgr.GetFieldType(RES_JUMPEDITFLD);
     656             : 
     657           0 :             if (pFieldType)
     658             :             {
     659           0 :                 if (rSh.IsSelFrmMode())
     660             :                 {
     661           0 :                     rSh.UnSelectFrm();
     662           0 :                     rSh.LeaveSelFrmMode();
     663             :                 }
     664             : 
     665           0 :                 if (rSh.HasMark())
     666             :                 {
     667           0 :                     SwMvContext aMvContext(&rSh);
     668           0 :                     if (rSh.IsCrsrPtAtEnd())
     669           0 :                         rSh.SwapPam();
     670           0 :                     rSh.ClearMark();
     671           0 :                     rSh.EndSelect();
     672             :                 }
     673           0 :                 bool bRet = rSh.MoveFieldType( pFieldType, nSlot == FN_GOTO_NEXT_MARK );
     674           0 :                 SwField* pCurField = bRet ? rSh.GetCurField() : 0;
     675           0 :                 if (pCurField)
     676           0 :                     rSh.ClickToField(*pCurField);
     677           0 :                 rReq.SetReturnValue(SfxBoolItem( nSlot, bRet));
     678           0 :             }
     679             :         }
     680           0 :         break;
     681             : 
     682             :         case FN_START_DOC_DIRECT:
     683             :         case FN_END_DOC_DIRECT:
     684             :         {
     685           0 :             if (rSh.IsSelFrmMode())
     686             :             {
     687           0 :                 rSh.UnSelectFrm();
     688           0 :                 rSh.LeaveSelFrmMode();
     689             :             }
     690           0 :             rSh.EnterStdMode();
     691             :             nSlot == FN_START_DOC_DIRECT ?
     692           0 :                 rSh.SttEndDoc(true) :
     693           0 :                     rSh.SttEndDoc(false);
     694             :         }
     695           0 :         break;
     696             :         case FN_GOTO_PREV_OBJ:
     697             :         case FN_GOTO_NEXT_OBJ:
     698             :         {
     699           0 :                 bool bSuccess = rSh.GotoObj( nSlot == FN_GOTO_NEXT_OBJ );
     700           0 :                 rReq.SetReturnValue(SfxBoolItem(nSlot, bSuccess));
     701           0 :                 if (bSuccess && !rSh.IsSelFrmMode())
     702             :                 {
     703           0 :                     rSh.HideCrsr();
     704           0 :                     rSh.EnterSelFrmMode();
     705           0 :                     GetView().AttrChangedNotify( &rSh );
     706             :                 }
     707             :         }
     708           0 :         break;
     709             :         case SID_GALLERY_FORMATS:
     710             :         {
     711           0 :             SFX_ITEMSET_ARG( pArgs, pGalleryItem, SvxGalleryItem, SID_GALLERY_FORMATS, false );
     712           0 :             if ( !pGalleryItem )
     713           0 :                 break;
     714             : 
     715           0 :             const int nSelType = rSh.GetSelectionType();
     716           0 :             sal_Int8 nGalleryItemType( pGalleryItem->GetType() );
     717             : 
     718           0 :             if ( (!rSh.IsSelFrmMode() || nSelType & nsSelectionType::SEL_GRF) &&
     719             :                 nGalleryItemType == com::sun::star::gallery::GalleryItemType::GRAPHIC )
     720             :             {
     721           0 :                 SwWait aWait( *rView.GetDocShell(), true );
     722             : 
     723           0 :                 OUString aGrfName, aFltName;
     724           0 :                 const Graphic aGrf( pGalleryItem->GetGraphic() );
     725             : 
     726           0 :                 if ( nSelType & nsSelectionType::SEL_GRF )
     727           0 :                     rSh.ReRead( aGrfName, aFltName, &aGrf );
     728             :                 else
     729           0 :                     rSh.Insert( aGrfName, aFltName, aGrf );
     730             : 
     731           0 :                 GetView().GetEditWin().GrabFocus();
     732             :             }
     733           0 :             else if(!rSh.IsSelFrmMode() &&
     734             :                 nGalleryItemType == com::sun::star::gallery::GalleryItemType::MEDIA  )
     735             :             {
     736           0 :                 const SfxStringItem aMediaURLItem( SID_INSERT_AVMEDIA, pGalleryItem->GetURL() );
     737           0 :                 GetView().GetViewFrame()->GetDispatcher()->Execute( SID_INSERT_AVMEDIA, SfxCallMode::SYNCHRON, &aMediaURLItem, 0L );
     738             :             }
     739             :         }
     740           0 :         break;
     741             :         case FN_PAGE_STYLE_SET_COLS:
     742             :         {
     743           0 :             if (pArgs)
     744             :             {
     745             :                 // Determine the current PageDescriptor and fill the set with that.
     746           0 :                 const size_t nCurIdx = rSh.GetCurPageDesc();
     747           0 :                 SwPageDesc aPageDesc(rSh.GetPageDesc(nCurIdx));
     748             : 
     749           0 :                 SwFrameFormat &rFormat = aPageDesc.GetMaster();
     750             : 
     751           0 :                 SwFormatCol aFormatCol = rFormat.GetCol();
     752             : 
     753             :                 sal_uInt16 nCount;
     754           0 :                 if(SfxItemState::SET == pArgs->GetItemState(nSlot))
     755           0 :                     nCount = static_cast<const SfxUInt16Item &>(pArgs->Get(nSlot)).GetValue();
     756             :                 else
     757           0 :                     nCount = static_cast<const SfxUInt16Item &>(pArgs->Get(SID_ATTR_COLUMNS)).GetValue();
     758           0 :                 sal_uInt16 nGutterWidth = DEF_GUTTER_WIDTH;
     759             : 
     760           0 :                 aFormatCol.Init(nCount ? nCount : 1, nGutterWidth, USHRT_MAX);
     761           0 :                 aFormatCol.SetWishWidth(USHRT_MAX);
     762           0 :                 aFormatCol.SetGutterWidth(nGutterWidth, USHRT_MAX);
     763             : 
     764           0 :                 rFormat.SetFormatAttr(aFormatCol);
     765             : 
     766           0 :                 rSh.ChgPageDesc(nCurIdx, aPageDesc);
     767             :             }
     768             :             else
     769           0 :                 GetView().GetViewFrame()->GetDispatcher()->Execute(FN_FORMAT_PAGE_COLUMN_DLG);
     770             :         }
     771           0 :         break;
     772             :         case FN_CONVERT_TABLE_TO_TEXT:
     773             :         case FN_CONVERT_TEXT_TO_TABLE:
     774             :         case FN_CONVERT_TEXT_TABLE:
     775             :         {
     776           0 :             sal_Unicode cDelim = 0;
     777           0 :             bool bToTable = false;
     778           0 :             if( nSlot == FN_CONVERT_TEXT_TO_TABLE ||
     779           0 :                 ( nSlot == FN_CONVERT_TEXT_TABLE && 0 == rSh.GetTableFormat() ))
     780           0 :                 bToTable = true;
     781           0 :             SwInsertTableOptions aInsTableOpts( tabopts::ALL_TBL_INS_ATTR, 1 );
     782           0 :             SwTableAutoFormat const* pTAFormat = 0;
     783           0 :             boost::scoped_ptr<SwTableAutoFormatTable> pAutoFormatTable;
     784           0 :             bool bDeleteFormat = true;
     785           0 :             if(pArgs && SfxItemState::SET == pArgs->GetItemState( FN_PARAM_1, true, &pItem))
     786             :             {
     787           0 :                 aInsTableOpts.mnInsMode = 0;
     788             :                 // Delimiter
     789           0 :                 OUString sDelim = static_cast< const SfxStringItem* >(pItem)->GetValue();
     790           0 :                 if(!sDelim.isEmpty())
     791           0 :                     cDelim = sDelim[0];
     792             :                 // AutoFormat
     793           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_2, true, &pItem))
     794             :                 {
     795           0 :                     OUString sAutoFormat = static_cast< const SfxStringItem* >(pItem)->GetValue();
     796             : 
     797           0 :                     pAutoFormatTable.reset(new SwTableAutoFormatTable);
     798           0 :                     pAutoFormatTable->Load();
     799             : 
     800           0 :                     for( sal_uInt16 i = 0, nCount = pAutoFormatTable->size(); i < nCount; i++ )
     801             :                     {
     802           0 :                         SwTableAutoFormat const*const pFormat = &(*pAutoFormatTable)[ i ];
     803           0 :                         if( pFormat->GetName() == sAutoFormat )
     804             :                         {
     805           0 :                             pTAFormat = pFormat;
     806           0 :                             bDeleteFormat = false;
     807           0 :                             break;
     808             :                         }
     809           0 :                     }
     810             :                 }
     811             :                 //WithHeader
     812           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_3, true, &pItem) &&
     813           0 :                             static_cast< const SfxBoolItem* >(pItem)->GetValue())
     814           0 :                     aInsTableOpts.mnInsMode |= tabopts::HEADLINE;
     815             :                 // RepeatHeaderLines
     816           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_4, true, &pItem))
     817             :                    aInsTableOpts.mnRowsToRepeat =
     818           0 :                             (sal_uInt16)static_cast< const SfxInt16Item* >(pItem)->GetValue();
     819             :                 //WithBorder
     820           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_5, true, &pItem) &&
     821           0 :                     static_cast< const SfxBoolItem* >(pItem)->GetValue())
     822           0 :                     aInsTableOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
     823             :                 //DontSplitTable
     824           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_6, true, &pItem) &&
     825           0 :                     !static_cast< const SfxBoolItem* >(pItem)->GetValue() )
     826           0 :                     aInsTableOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
     827             :             }
     828             :             else
     829             :             {
     830           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     831             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     832             : 
     833           0 :                 boost::scoped_ptr<AbstractSwConvertTableDlg> pDlg(pFact->CreateSwConvertTableDlg(GetView(), bToTable));
     834             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
     835           0 :                 if( RET_OK == pDlg->Execute() )
     836             :                 {
     837           0 :                     pDlg->GetValues( cDelim, aInsTableOpts, pTAFormat );
     838             : 
     839           0 :                 }
     840             :             }
     841             : 
     842           0 :             if( cDelim )
     843             :             {
     844             :                 //Shell change!
     845           0 :                 SwView& rSaveView = rView;
     846           0 :                 bool bInserted = false;
     847             :                 //recording:
     848           0 :                 SfxViewFrame* pViewFrame = GetView().GetViewFrame();
     849           0 :                 if( SfxRequest::HasMacroRecorder(pViewFrame) )
     850             :                 {
     851           0 :                     SfxRequest aReq( pViewFrame, nSlot);
     852           0 :                     aReq.AppendItem( SfxStringItem( FN_PARAM_1, OUString(cDelim) ));
     853           0 :                     if(bToTable)
     854             :                     {
     855           0 :                         if(pTAFormat)
     856           0 :                             aReq.AppendItem( SfxStringItem( FN_PARAM_2, pTAFormat->GetName()));
     857           0 :                         aReq.AppendItem( SfxBoolItem ( FN_PARAM_3, 0 != (aInsTableOpts.mnInsMode & tabopts::HEADLINE)));
     858           0 :                         aReq.AppendItem( SfxInt16Item( FN_PARAM_4, (short)aInsTableOpts.mnRowsToRepeat ));
     859           0 :                         aReq.AppendItem( SfxBoolItem ( FN_PARAM_5, 0 != (aInsTableOpts.mnInsMode & tabopts::DEFAULT_BORDER) ));
     860           0 :                         aReq.AppendItem( SfxBoolItem ( FN_PARAM_6, !(aInsTableOpts.mnInsMode & tabopts::SPLIT_LAYOUT)));
     861             :                     }
     862           0 :                     aReq.Done();
     863             :                 }
     864             : 
     865           0 :                 if( !bToTable )
     866           0 :                     rSh.TableToText( cDelim );
     867             :                 else
     868             :                 {
     869           0 :                     bInserted = rSh.TextToTable( aInsTableOpts, cDelim, text::HoriOrientation::FULL, pTAFormat );
     870             :                 }
     871           0 :                 rSh.EnterStdMode();
     872             : 
     873           0 :                 if( bInserted )
     874           0 :                     rSaveView.AutoCaption( TABLE_CAP );
     875             :             }
     876           0 :             if(bDeleteFormat)
     877           0 :                 delete pTAFormat;
     878             :         }
     879           0 :         break;
     880             :         case SID_STYLE_WATERCAN:
     881             :         case SID_STYLE_UPDATE_BY_EXAMPLE:
     882             :         case SID_STYLE_NEW_BY_EXAMPLE:
     883             :         case SID_STYLE_APPLY:
     884             :         {
     885           0 :             ShellModes eMode = GetView().GetShellMode();
     886           0 :             if ( SHELL_MODE_DRAW != eMode &&
     887           0 :                  SHELL_MODE_DRAW_CTRL != eMode &&
     888           0 :                  SHELL_MODE_DRAW_FORM != eMode &&
     889           0 :                  SHELL_MODE_DRAWTEXT != eMode &&
     890             :                  SHELL_MODE_BEZIER != eMode )
     891             :             {
     892             :                 // oj #107754#
     893           0 :                 if ( SID_STYLE_WATERCAN == nSlot )
     894             :                 {
     895           0 :                     const bool bLockedView = rSh.IsViewLocked();
     896           0 :                     rSh.LockView( true );    //lock visible section
     897             : 
     898           0 :                     GetView().GetDocShell()->ExecStyleSheet(rReq);
     899             : 
     900           0 :                     rSh.LockView( bLockedView );
     901             :                 }
     902             :                 else
     903             :                 // Will be recorded from the DocShell
     904           0 :                     GetView().GetDocShell()->ExecStyleSheet(rReq);
     905             :             }
     906             :         }
     907           0 :         break;
     908             :         case FN_ESCAPE:
     909           0 :             GetView().ExecuteSlot(rReq);
     910           0 :         break;
     911             :         case SID_IMAP:
     912             :         {
     913           0 :             sal_uInt16      nId = SvxIMapDlgChildWindow::GetChildWindowId();
     914             : 
     915           0 :             SfxViewFrame* pVFrame = GetView().GetViewFrame();
     916           0 :             pVFrame->ToggleChildWindow( nId );
     917           0 :             pVFrame->GetBindings().Invalidate( SID_IMAP );
     918             : 
     919           0 :             if ( pVFrame->HasChildWindow( nId ) && rSh.IsFrmSelected() )
     920           0 :                 lcl_UpdateIMapDlg( rSh );
     921             :         }
     922           0 :         break;
     923             :         case SID_IMAP_EXEC:
     924             :         {
     925           0 :             SvxIMapDlg* pDlg = GetIMapDlg(GetView());
     926             : 
     927             :             // Check, if the allocation is useful or allowed at all.
     928           0 :             if ( rSh.IsFrmSelected() &&
     929           0 :                  pDlg->GetEditingObject() == rSh.GetIMapInventor() )
     930             :             {
     931           0 :                     SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
     932           0 :                     rSh.GetFlyFrmAttr( aSet );
     933           0 :                     SwFormatURL aURL( static_cast<const SwFormatURL&>(aSet.Get( RES_URL )) );
     934           0 :                     aURL.SetMap( &pDlg->GetImageMap() );
     935           0 :                     aSet.Put( aURL );
     936           0 :                     rSh.SetFlyFrmAttr( aSet );
     937             :             }
     938             :         }
     939           0 :         break;
     940             :         case SID_CONTOUR_DLG:
     941             :         {
     942           0 :             sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
     943             : 
     944           0 :             SfxViewFrame* pVFrame = GetView().GetViewFrame();
     945           0 :             pVFrame->ToggleChildWindow( nId );
     946           0 :             pVFrame->GetBindings().Invalidate( SID_CONTOUR_DLG );
     947             : 
     948           0 :             int nSel = rSh.GetSelectionType();
     949           0 :             if ( pVFrame->HasChildWindow( nId ) &&
     950           0 :                  (nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE)) )
     951             :             {
     952           0 :                 lcl_UpdateContourDlg( rSh, nSel );
     953             :             }
     954             :         }
     955           0 :         break;
     956             :         case SID_CONTOUR_EXEC:
     957             :         {
     958           0 :             SvxContourDlg *pDlg = GetContourDlg(GetView());
     959             :             // Check, if the allocation is useful or allowed at all.
     960           0 :             int nSel = rSh.GetSelectionType();
     961           0 :             if ( nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE) )
     962             :             {
     963           0 :                 if (pDlg && pDlg->GetEditingObject() == rSh.GetIMapInventor())
     964             :                 {
     965           0 :                     rSh.StartAction();
     966           0 :                     SfxItemSet aSet( rSh.GetAttrPool(), RES_SURROUND, RES_SURROUND);
     967           0 :                     rSh.GetFlyFrmAttr( aSet );
     968           0 :                     SwFormatSurround aSur( static_cast<const SwFormatSurround&>(aSet.Get( RES_SURROUND )) );
     969           0 :                     if ( !aSur.IsContour() )
     970             :                     {
     971           0 :                         aSur.SetContour( true );
     972           0 :                         if ( aSur.GetSurround() == SURROUND_NONE )
     973           0 :                             aSur.SetSurround( SURROUND_PARALLEL );
     974           0 :                         aSet.Put( aSur );
     975           0 :                         rSh.SetFlyFrmAttr( aSet );
     976             :                     }
     977           0 :                     const tools::PolyPolygon aPoly( pDlg->GetPolyPolygon() );
     978           0 :                     rSh.SetGraphicPolygon( &aPoly );
     979           0 :                     if ( pDlg->IsGraphicChanged() )
     980           0 :                         rSh.ReRead( OUString(), OUString(), &pDlg->GetGraphic());
     981           0 :                     rSh.EndAction();
     982             :                 }
     983             :             }
     984             :         }
     985           0 :         break;
     986             :         case FN_FRAME_TO_ANCHOR:
     987             :         {
     988           0 :             rSh.GotoFlyAnchor();
     989           0 :             rSh.EnterStdMode();
     990           0 :             rSh.CallChgLnk();
     991             :         }
     992           0 :         break;
     993             :         case FN_TOOL_ANCHOR:
     994           0 :             break;
     995             :         case FN_TOOL_ANCHOR_PAGE:
     996             :         case FN_TOOL_ANCHOR_PARAGRAPH:
     997             :         case FN_TOOL_ANCHOR_CHAR:
     998             :         case FN_TOOL_ANCHOR_AT_CHAR:
     999             :         case FN_TOOL_ANCHOR_FRAME:
    1000             :         {
    1001             :             RndStdIds eSet = nSlot == FN_TOOL_ANCHOR_PAGE
    1002             :                                 ? FLY_AT_PAGE
    1003             :                                 : nSlot == FN_TOOL_ANCHOR_PARAGRAPH
    1004             :                                     ? FLY_AT_PARA
    1005             :                                     : nSlot == FN_TOOL_ANCHOR_FRAME
    1006             :                                         ? FLY_AT_FLY
    1007             :                                         : nSlot == FN_TOOL_ANCHOR_CHAR
    1008             :                                             ? FLY_AS_CHAR
    1009           0 :                                             : FLY_AT_CHAR;
    1010           0 :             rSh.StartUndo();
    1011           0 :             if( rSh.IsObjSelected() )
    1012           0 :                 rSh.ChgAnchor( eSet );
    1013           0 :             else if( rSh.IsFrmSelected() )
    1014             :             {
    1015             :                 // The set also includes VERT/HORI_ORIENT, because the align
    1016             :                 // shall be changed in FEShell::SetFlyFrmAttr/SetFlyFrmAnchor,
    1017             :                 // possibly as a result of the anchor change.
    1018           0 :                 SfxItemSet aSet( GetPool(), RES_VERT_ORIENT, RES_ANCHOR );
    1019           0 :                 SwFormatAnchor aAnc( eSet, rSh.GetPhyPageNum() );
    1020           0 :                 aSet.Put( aAnc );
    1021           0 :                 rSh.SetFlyFrmAttr(aSet);
    1022             :             }
    1023             :             // if new anchor is 'as char' and it is a Math object and the usual
    1024             :             // pre-conditions are met then align the formula to the baseline of the text
    1025           0 :             const uno::Reference < embed::XEmbeddedObject > xObj( rSh.GetOleRef() );
    1026           0 :             const bool bDoMathBaselineAlignment = xObj.is() && SotExchange::IsMath( xObj->getClassID() )
    1027           0 :                     && FLY_AS_CHAR == eSet && rSh.GetDoc()->getIDocumentSettingAccess().get( DocumentSettingId::MATH_BASELINE_ALIGNMENT );
    1028           0 :             if (bDoMathBaselineAlignment)
    1029           0 :                 rSh.AlignFormulaToBaseline( xObj );
    1030             : 
    1031           0 :             sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
    1032           0 :             if( nHtmlMode )
    1033             :             {
    1034           0 :                 SfxItemSet aSet(GetPool(), RES_SURROUND, RES_HORI_ORIENT);
    1035           0 :                 rSh.GetFlyFrmAttr(aSet);
    1036             : 
    1037           0 :                 const SwFormatSurround& rSurround = static_cast<const SwFormatSurround&>(aSet.Get(RES_SURROUND));
    1038           0 :                 const SwFormatVertOrient& rVert = static_cast<const SwFormatVertOrient&>(aSet.Get(RES_VERT_ORIENT));
    1039           0 :                 const SwFormatHoriOrient& rHori = static_cast<const SwFormatHoriOrient&>(aSet.Get(RES_HORI_ORIENT));
    1040           0 :                 sal_Int16 eVOrient = rVert.GetVertOrient();
    1041           0 :                 sal_Int16 eHOrient = rHori.GetHoriOrient();
    1042           0 :                 SwSurround eSurround = rSurround.GetSurround();
    1043             : 
    1044           0 :                 switch( eSet )
    1045             :                 {
    1046             :                 case FLY_AT_FLY:
    1047             :                 case FLY_AT_PAGE:
    1048             :                     //Wrap through, left or from left, top, from top
    1049           0 :                     if(eSurround != SURROUND_THROUGHT)
    1050           0 :                         aSet.Put(SwFormatSurround(SURROUND_THROUGHT));
    1051             : 
    1052           0 :                     if( eVOrient != text::VertOrientation::TOP && eVOrient != text::VertOrientation::NONE)
    1053           0 :                         aSet.Put(SwFormatVertOrient(0, text::VertOrientation::TOP));
    1054             : 
    1055           0 :                     if (eHOrient != text::HoriOrientation::NONE && eHOrient != text::HoriOrientation::LEFT)
    1056           0 :                         aSet.Put(SwFormatHoriOrient(0, text::HoriOrientation::LEFT));
    1057           0 :                     break;
    1058             : 
    1059             :                 case FLY_AT_PARA:
    1060             :                     // left, from left, right, top, no wrap, wrap left and right
    1061           0 :                     if(eSurround != SURROUND_LEFT || eSurround != SURROUND_RIGHT)
    1062           0 :                         aSet.Put(SwFormatSurround(SURROUND_LEFT));
    1063             : 
    1064           0 :                     if( eVOrient != text::VertOrientation::TOP)
    1065           0 :                         aSet.Put(SwFormatVertOrient(0, text::VertOrientation::TOP));
    1066             : 
    1067           0 :                     if (eHOrient != text::HoriOrientation::NONE && eHOrient != text::HoriOrientation::LEFT && eHOrient != text::HoriOrientation::RIGHT)
    1068           0 :                         aSet.Put(SwFormatHoriOrient(0, text::HoriOrientation::LEFT));
    1069           0 :                     break;
    1070             : 
    1071             :                 case FLY_AT_CHAR:
    1072             :                     // left, from left, right, top, wrap through
    1073           0 :                     if(eSurround != SURROUND_THROUGHT)
    1074           0 :                         aSet.Put(SwFormatSurround(SURROUND_THROUGHT));
    1075             : 
    1076           0 :                     if( eVOrient != text::VertOrientation::TOP)
    1077           0 :                         aSet.Put(SwFormatVertOrient(0, text::VertOrientation::TOP));
    1078             : 
    1079           0 :                     if (eHOrient != text::HoriOrientation::NONE && eHOrient != text::HoriOrientation::LEFT && eHOrient != text::HoriOrientation::RIGHT)
    1080           0 :                         aSet.Put(SwFormatHoriOrient(0, text::HoriOrientation::LEFT));
    1081           0 :                     break;
    1082             : 
    1083             :                 default:
    1084             :                     ;
    1085             :                 }
    1086             : 
    1087           0 :                 if( aSet.Count() )
    1088           0 :                     rSh.SetFlyFrmAttr( aSet );
    1089             :             }
    1090           0 :             rSh.EndUndo();
    1091             : 
    1092           0 :             GetView().GetViewFrame()->GetBindings().Invalidate( FN_TOOL_ANCHOR );
    1093             :         }
    1094           0 :         break;
    1095             : 
    1096             :         case FN_FRAME_NOWRAP:
    1097             :         case FN_FRAME_WRAP:
    1098             :         case FN_FRAME_WRAP_IDEAL:
    1099             :         case FN_FRAME_WRAPTHRU:
    1100             :         case FN_FRAME_WRAPTHRU_TRANSP:
    1101             :         case FN_FRAME_WRAP_CONTOUR:
    1102             :         case FN_WRAP_ANCHOR_ONLY:
    1103             :         case FN_FRAME_WRAP_LEFT:
    1104             :         case FN_FRAME_WRAP_RIGHT:
    1105           0 :             SetWrapMode( nSlot );
    1106           0 :             break;
    1107             : 
    1108             :         case FN_UPDATE_ALL_LINKS:
    1109             :             {
    1110           0 :                 if( !rSh.GetLinkManager().GetLinks().empty() )
    1111             :                 {
    1112           0 :                     rSh.EnterStdMode();
    1113           0 :                     rSh.StartAllAction();
    1114           0 :                     rSh.GetLinkManager().UpdateAllLinks( false, false, false );
    1115           0 :                     rSh.EndAllAction();
    1116             :                 }
    1117             :             }
    1118           0 :             break;
    1119             : 
    1120             :         case FN_XFORMS_DESIGN_MODE:
    1121           0 :             if( pArgs != NULL
    1122           0 :                 && pArgs->GetItemState( nSlot, true, &pItem ) == SfxItemState::SET
    1123           0 :                 && pItem != NULL
    1124           0 :                 && pItem->ISA( SfxBoolItem ) )
    1125             :             {
    1126             :                 bool bDesignMode =
    1127           0 :                     static_cast<const SfxBoolItem*>( pItem )->GetValue();
    1128             : 
    1129             :                 // set form design mode
    1130             :                 OSL_ENSURE( GetView().GetFormShell() != NULL, "form shell?" );
    1131           0 :                 SfxRequest aReq( GetView().GetViewFrame(), SID_FM_DESIGN_MODE );
    1132           0 :                 aReq.AppendItem( SfxBoolItem( SID_FM_DESIGN_MODE, bDesignMode ) );
    1133           0 :                 GetView().GetFormShell()->Execute( aReq );
    1134           0 :                 aReq.Done();
    1135             : 
    1136             :                 // also set suitable view options
    1137           0 :                 SwViewOption aViewOption = *rSh.GetViewOptions();
    1138           0 :                 aViewOption.SetFormView( ! bDesignMode );
    1139           0 :                 rSh.ApplyViewOptions( aViewOption );
    1140             :             }
    1141           0 :             break;
    1142             : 
    1143             :         default:
    1144           0 :             bMore = true;
    1145             :     }
    1146           0 :     if(bMore && pArgs)
    1147             :     {
    1148           0 :         pItem = 0;
    1149           0 :         pArgs->GetItemState(GetPool().GetWhich(nSlot), false, &pItem);
    1150           0 :         if(pItem)
    1151           0 :         switch(nSlot)
    1152             :         {
    1153             :         case SID_ATTR_BRUSH:
    1154             :         case SID_ATTR_BORDER_SHADOW:
    1155             :         case RES_SHADOW:
    1156             :         {
    1157           0 :             rSh.StartAllAction();
    1158           0 :             SfxItemSet   aSet( rSh.GetAttrPool(),
    1159             :                                 RES_SHADOW, RES_SHADOW,
    1160           0 :                                 RES_BACKGROUND, RES_BACKGROUND, 0 );
    1161             : 
    1162           0 :             aSet.Put(*pItem);
    1163             :             // Tabele cell(s) selected?
    1164           0 :             if ( rSh.IsTableMode() )
    1165             :             {
    1166           0 :                 SwFrameFormat *pFormat = rSh.GetTableFormat();
    1167           0 :                 pFormat->SetFormatAttr( *pItem );
    1168             :             }
    1169           0 :             else if ( rSh.IsFrmSelected() )
    1170             :             {
    1171             :                 // Set border attributes via Frame-Manager.
    1172           0 :                 SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    1173           0 :                 aMgr.SetAttrSet( *pArgs );
    1174           0 :                 aMgr.UpdateFlyFrm();
    1175             :             }
    1176             :             else
    1177             :             {
    1178           0 :                 rSh.SetAttrSet( *pArgs );
    1179             :             }
    1180           0 :             rSh.EndAllAction();
    1181             :         }
    1182           0 :         break;
    1183             :         case FN_PAGE_STYLE_SET_LR_MARGIN:
    1184             :         case FN_PAGE_STYLE_SET_UL_MARGIN:
    1185             :         case FN_PAGE_STYLE_SET_NUMBER_FORMAT:
    1186             :         case FN_PAGE_STYLE_SET_PAPER_SIZE:
    1187             :         case FN_PAGE_STYLE_SET_PAPER_BIN:
    1188             :         {
    1189             :             OSL_FAIL("not implemented");
    1190             :         }
    1191           0 :         break;
    1192             : 
    1193             :         case SID_ATTR_BORDER_OUTER:
    1194             :         {
    1195             :             // Tabele cell(s) selected?
    1196           0 :             if ( rSh.IsTableMode() )
    1197             :             {
    1198             :                 // Set border attributes Get/SetTabBorders()
    1199           0 :                 rSh.SetTabBorders(*pArgs);
    1200             :             }
    1201           0 :             else if ( rSh.IsFrmSelected() )
    1202             :             {
    1203             :                 // Set border attributes via Frame-Manager.
    1204           0 :                 SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    1205           0 :                 aMgr.SetAttrSet(*pArgs);
    1206           0 :                 aMgr.UpdateFlyFrm();
    1207             :             }
    1208             :             else
    1209             :             {
    1210             :                 // Set border attributes via shell quite normally.
    1211           0 :                 rSh.SetAttrItem( *pItem );
    1212             :             }
    1213             :         }
    1214           0 :         break;
    1215             :         default:
    1216             :                 OSL_FAIL("wrong Dispatcher");
    1217             :         }
    1218             : 
    1219             :     }
    1220           0 : }
    1221             : 
    1222             : // Here the state fpr SID_IMAP / SID_CONTOUR will be handled
    1223             : // until the swapping of the graphic is finished.
    1224             : 
    1225           0 : IMPL_LINK_NOARG(SwBaseShell, GraphicArrivedHdl)
    1226             : {
    1227             :     sal_uInt16 nGrfType;
    1228           0 :     SwWrtShell &rSh = GetShell();
    1229           0 :     if( CNT_GRF == rSh.SwEditShell::GetCntType() &&
    1230           0 :         GRAPHIC_NONE != ( nGrfType = rSh.GetGraphicType() ) &&
    1231           0 :         !aGrfUpdateSlots.empty() )
    1232             :     {
    1233           0 :         bool bProtect = FlyProtectFlags::NONE != rSh.IsSelObjProtected(FlyProtectFlags::Content|FlyProtectFlags::Parent);
    1234           0 :         SfxViewFrame* pVFrame = GetView().GetViewFrame();
    1235             :         sal_uInt16 nSlot;
    1236           0 :         std::set<sal_uInt16>::iterator it;
    1237           0 :         for( it = aGrfUpdateSlots.begin(); it != aGrfUpdateSlots.end(); ++it )
    1238             :         {
    1239           0 :             bool bSetState = false;
    1240           0 :             bool bState = false;
    1241           0 :             switch( nSlot = *it )
    1242             :             {
    1243             :             case SID_IMAP:
    1244             :             case SID_IMAP_EXEC:
    1245             :                 {
    1246           0 :                     sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
    1247           0 :                     SfxChildWindow *pChildWindow = pVFrame->HasChildWindow(nId) ?
    1248           0 :                         pVFrame->GetChildWindow(nId) : 0;
    1249             :                     SvxIMapDlg *pDlg = pChildWindow ?
    1250           0 :                         static_cast<SvxIMapDlg*>(pChildWindow->GetWindow()) : 0;
    1251             : 
    1252           0 :                     if( pDlg && ( SID_IMAP_EXEC == nSlot ||
    1253           0 :                                 ( SID_IMAP == nSlot && !bProtect)) &&
    1254           0 :                         pDlg->GetEditingObject() != rSh.GetIMapInventor())
    1255           0 :                             lcl_UpdateIMapDlg( rSh );
    1256             : 
    1257           0 :                     if( !bProtect && SID_IMAP == nSlot )
    1258           0 :                         bSetState = true, bState = 0 != pDlg;
    1259             :                 }
    1260           0 :                 break;
    1261             : 
    1262             :             case SID_CONTOUR_DLG:
    1263           0 :                 if( !bProtect )
    1264             :                 {
    1265           0 :                     sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
    1266           0 :                     SfxChildWindow *pChildWindow = pVFrame->HasChildWindow(nId) ?
    1267           0 :                         pVFrame->GetChildWindow(nId) : 0;
    1268             :                     SvxIMapDlg *pDlg = pChildWindow ?
    1269           0 :                         static_cast<SvxIMapDlg*>(pChildWindow->GetWindow()) : 0;
    1270           0 :                     if( pDlg && pDlg->GetEditingObject() !=
    1271           0 :                                 rSh.GetIMapInventor() )
    1272           0 :                         lcl_UpdateContourDlg( rSh, nsSelectionType::SEL_GRF );
    1273             : 
    1274           0 :                     bSetState = true;
    1275           0 :                     bState = 0 != pDlg;
    1276             :                 }
    1277           0 :                 break;
    1278             : 
    1279             :             case FN_FRAME_WRAP_CONTOUR:
    1280           0 :                 if( !bProtect )
    1281             :                 {
    1282           0 :                     SfxItemSet aSet(GetPool(), RES_SURROUND, RES_SURROUND);
    1283           0 :                     rSh.GetFlyFrmAttr(aSet);
    1284           0 :                     const SwFormatSurround& rWrap = static_cast<const SwFormatSurround&>(aSet.Get(RES_SURROUND));
    1285           0 :                     bSetState = true;
    1286           0 :                     bState = rWrap.IsContour();
    1287             :                 }
    1288           0 :                 break;
    1289             : 
    1290             :             case SID_GRFFILTER:
    1291             :             case SID_GRFFILTER_INVERT:
    1292             :             case SID_GRFFILTER_SMOOTH:
    1293             :             case SID_GRFFILTER_SHARPEN:
    1294             :             case SID_GRFFILTER_REMOVENOISE:
    1295             :             case SID_GRFFILTER_SOBEL:
    1296             :             case SID_GRFFILTER_MOSAIC:
    1297             :             case SID_GRFFILTER_EMBOSS:
    1298             :             case SID_GRFFILTER_POSTER:
    1299             :             case SID_GRFFILTER_POPART:
    1300             :             case SID_GRFFILTER_SEPIA:
    1301             :             case SID_GRFFILTER_SOLARIZE:
    1302           0 :                 bSetState = bState = GRAPHIC_BITMAP == nGrfType;
    1303           0 :                 break;
    1304             :             }
    1305             : 
    1306           0 :             if( bSetState )
    1307             :             {
    1308           0 :                 SfxBoolItem aBool( nSlot, bState );
    1309           0 :                 if( pGetStateSet )
    1310           0 :                     pGetStateSet->Put( aBool );
    1311             :                 else
    1312           0 :                     pVFrame->GetBindings().SetState( aBool );
    1313             :             }
    1314             :         }
    1315           0 :         aGrfUpdateSlots.clear();
    1316             :     }
    1317           0 :     return 0;
    1318             : }
    1319             : 
    1320          10 : void SwBaseShell::GetState( SfxItemSet &rSet )
    1321             : {
    1322          10 :     SwWrtShell &rSh = GetShell();
    1323          10 :     SfxViewFrame* pVFrame = GetView().GetViewFrame();
    1324          10 :     SfxWhichIter aIter( rSet );
    1325          10 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1326          10 :     pGetStateSet = &rSet;
    1327          30 :     while ( nWhich )
    1328             :     {
    1329          10 :         switch ( nWhich )
    1330             :         {
    1331             :             case SID_GALLERY_FORMATS:
    1332           0 :                 if ( rSh.IsObjSelected() ||
    1333           0 :                      (rSh.IsSelFrmMode() &&
    1334           0 :                       !(rSh.GetSelectionType() & nsSelectionType::SEL_GRF)) )
    1335           0 :                     rSet.DisableItem( nWhich );
    1336           0 :                 break;
    1337             :             case SID_GALLERY_ENABLE_ADDCOPY:
    1338             :                 // #108230# allow copy from gallery in Writer AND Writer/Web!
    1339           0 :                 rSet.Put( SfxBoolItem( SID_GALLERY_ENABLE_ADDCOPY, true ) );
    1340           0 :                 break;
    1341             :             case FN_EDIT_REGION:
    1342           1 :                 if( !rSh.IsAnySectionInDoc() )
    1343           1 :                     rSet.DisableItem(nWhich);
    1344           1 :                 break;
    1345             : 
    1346             :             case FN_INSERT_REGION:
    1347           0 :                 if( rSh.CrsrInsideInputField()
    1348           0 :                     || rSh.IsSelFrmMode()
    1349           0 :                     || !rSh.IsInsRegionAvailable() )
    1350             :                 {
    1351           0 :                     rSet.DisableItem( nWhich );
    1352             :                 }
    1353           0 :                 break;
    1354             : 
    1355             :             case FN_CONVERT_TABLE_TO_TEXT:
    1356             :             {
    1357           0 :                 FrmTypeFlags eFrmType = rSh.GetFrmType(0,true);
    1358           0 :                 if( (eFrmType & FrmTypeFlags::FOOTNOTE) ||
    1359           0 :                     !rSh.GetTableFormat() )
    1360           0 :                     rSet.DisableItem( nWhich );
    1361             :             }
    1362           0 :             break;
    1363             :             case FN_CONVERT_TEXT_TO_TABLE:
    1364             :             {
    1365           0 :                 FrmTypeFlags eFrmType = rSh.GetFrmType(0,true);
    1366           0 :                 if( (eFrmType & FrmTypeFlags::FOOTNOTE) ||
    1367           0 :                     !rSh.IsTextToTableAvailable()  )
    1368           0 :                     rSet.DisableItem( nWhich );
    1369             :             }
    1370           0 :             break;
    1371             :             case FN_CONVERT_TEXT_TABLE:
    1372             :             {
    1373           0 :                 FrmTypeFlags eFrmType = rSh.GetFrmType(0,true);
    1374           0 :                 if( (eFrmType & FrmTypeFlags::FOOTNOTE) ||
    1375           0 :                     (!rSh.GetTableFormat() && !rSh.IsTextToTableAvailable() ) )
    1376           0 :                     rSet.DisableItem( nWhich );
    1377             :             }
    1378           0 :             break;
    1379             :             case RES_SHADOW:
    1380             :             {
    1381           0 :                 SfxItemSet   aSet( rSh.GetAttrPool(),
    1382           0 :                                     RES_SHADOW, RES_SHADOW );
    1383             : 
    1384             :                 // Table cell(s) selected?
    1385           0 :                 if ( rSh.IsTableMode() )
    1386             :                 {
    1387           0 :                     SwFrameFormat *pFormat = rSh.GetTableFormat();
    1388           0 :                     aSet.Put(pFormat->GetFormatAttr( nWhich, true ));
    1389             :                 }
    1390           0 :                 else if( rSh.IsFrmSelected() )
    1391             :                 {
    1392           0 :                     SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    1393           0 :                     aSet.Put( aMgr.GetAttrSet() );
    1394             :                 }
    1395             :                 else
    1396           0 :                     rSh.GetCurAttr( aSet );
    1397             : 
    1398           0 :                 const SvxShadowItem& rShItem = static_cast<const SvxShadowItem&>(aSet.Get(nWhich));
    1399           0 :                 rSet.Put(rShItem);
    1400             :             }
    1401           0 :             break;
    1402             :             case SID_IMAP:
    1403             :             {
    1404             :                 // #i59688#
    1405             :                 // Improve efficiency:
    1406             :                 // If selected object is protected, item has to disabled.
    1407           9 :                 const bool bProtect = FlyProtectFlags::NONE != rSh.IsSelObjProtected(FlyProtectFlags::Content|FlyProtectFlags::Parent);
    1408           9 :                 if ( bProtect )
    1409             :                 {
    1410           0 :                     rSet.DisableItem( nWhich );
    1411             :                 }
    1412             :                 else
    1413             :                 {
    1414           9 :                     const sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
    1415           9 :                     const bool bHas = pVFrame->HasChildWindow( nId );
    1416           9 :                     const bool bFrmSel = rSh.IsFrmSelected();
    1417             :                     const bool bIsGraphicSelection =
    1418           9 :                                 rSh.GetSelectionType() == nsSelectionType::SEL_GRF;
    1419             : 
    1420             :                     // #i59688#
    1421             :                     // Avoid unnecessary loading of selected graphic.
    1422             :                     // The graphic is only needed, if the dialog is open.
    1423             :                     // If the swapping of the graphic is finished, the status
    1424             :                     // must be determined asynchronously, until this the slot
    1425             :                     // will be disabled.
    1426           9 :                     if ( bHas && bIsGraphicSelection && rSh.IsGrfSwapOut( true ) )
    1427             :                     {
    1428           0 :                         if( AddGrfUpdateSlot( nWhich ))
    1429           0 :                             rSh.GetGraphic(false);  // start the loading
    1430             :                     }
    1431             :                     else
    1432             :                     {
    1433          27 :                         if ( !bHas &&
    1434           9 :                              ( !bFrmSel ||
    1435           0 :                                ( bIsGraphicSelection &&
    1436           0 :                                  rSh.GetGraphicType() == GRAPHIC_NONE ) ) )
    1437             :                         {
    1438           9 :                             rSet.DisableItem( nWhich );
    1439             :                         }
    1440             :                         else
    1441             :                         {
    1442           0 :                             SfxBoolItem aBool(nWhich, bHas);
    1443           0 :                             if ( bHas && bFrmSel )
    1444           0 :                                 lcl_UpdateIMapDlg( rSh );
    1445           0 :                             rSet.Put(aBool);
    1446             :                         }
    1447             :                     }
    1448             :                 }
    1449             :             }
    1450           9 :             break;
    1451             :             case SID_IMAP_EXEC:
    1452             :             {
    1453           0 :                 bool bDisable = false;
    1454           0 :                 if( !rSh.IsFrmSelected())
    1455           0 :                     bDisable = true;
    1456           0 :                 sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
    1457           0 :                 if(!bDisable && pVFrame->HasChildWindow( nId ))
    1458             :                 {
    1459           0 :                     if(rSh.GetSelectionType() == nsSelectionType::SEL_GRF
    1460           0 :                                     && rSh.IsGrfSwapOut(true))
    1461             :                     {
    1462           0 :                         if( AddGrfUpdateSlot( nWhich ))
    1463           0 :                             rSh.GetGraphic(false);  // start the loading
    1464             :                     }
    1465             :                     else
    1466             :                     {
    1467           0 :                         SvxIMapDlg *pDlg = GetIMapDlg(GetView());
    1468           0 :                         if (pDlg && pDlg->GetEditingObject() != rSh.GetIMapInventor())
    1469           0 :                             lcl_UpdateIMapDlg( rSh );
    1470             :                     }
    1471             :                 }
    1472           0 :                 rSet.Put(SfxBoolItem(nWhich, bDisable));
    1473             :             }
    1474           0 :             break;
    1475             : 
    1476             :             case FN_BACKSPACE:
    1477             :             case SID_DELETE:
    1478           0 :                 if ( ( rSh.HasReadonlySel() && !rSh.CrsrInsideInputField() )
    1479           0 :                      || rSh.IsSelObjProtected( FlyProtectFlags::Content|FlyProtectFlags::Parent ) != FlyProtectFlags::NONE )
    1480             :                 {
    1481           0 :                     rSet.DisableItem( nWhich );
    1482             :                 }
    1483           0 :                 break;
    1484             : 
    1485             :             case SID_CONTOUR_DLG:
    1486             :             {
    1487           0 :                 bool bParentCntProt = FlyProtectFlags::NONE != rSh.IsSelObjProtected(FlyProtectFlags::Content|FlyProtectFlags::Parent );
    1488             : 
    1489           0 :                 if( bParentCntProt || 0 != (HTMLMODE_ON & ::GetHtmlMode(
    1490           0 :                                             GetView().GetDocShell() )) )
    1491           0 :                     rSet.DisableItem( nWhich );
    1492             :                 else
    1493             :                 {
    1494           0 :                     sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
    1495           0 :                     bool bHas = GetView().GetViewFrame()->HasChildWindow( nId );
    1496           0 :                     int nSel = rSh.GetSelectionType();
    1497           0 :                     bool bOk = 0 != (nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE));
    1498             : 
    1499           0 :                     bool bDisable = false;
    1500           0 :                     if( !bHas && !bOk )
    1501           0 :                         bDisable = true;
    1502             :                     // #i59688#
    1503             :                     // Avoid unnecessary loading of selected graphic.
    1504             :                     // The graphic is only needed, if the dialog is open.
    1505             :                     // If the swapping of the graphic is finished, the status
    1506             :                     // must be determined asynchronously, until this the slot
    1507             :                     // will be disabled.
    1508           0 :                     else if ( bHas && (nSel & nsSelectionType::SEL_GRF) &&
    1509           0 :                               rSh.IsGrfSwapOut(true) )
    1510             :                     {
    1511           0 :                         if( AddGrfUpdateSlot( nWhich ))
    1512           0 :                             rSh.GetGraphic(false);  // start the loading
    1513             :                         // #i75481#
    1514           0 :                         bDisable = true;
    1515             :                     }
    1516           0 :                     else if( bHas && bOk )
    1517           0 :                         bDisable = !lcl_UpdateContourDlg( rSh, nSel );
    1518           0 :                     else if( bOk )
    1519             :                     {
    1520             :                         // #i75481#
    1521             :                         // apply fix #i59688# only for selected graphics
    1522           0 :                         if ( nSel & nsSelectionType::SEL_GRF )
    1523           0 :                             bDisable = GRAPHIC_NONE == rSh.GetGraphicType();
    1524             :                         else
    1525           0 :                             bDisable = GRAPHIC_NONE == rSh.GetIMapGraphic().GetType();
    1526             :                     }
    1527             : 
    1528           0 :                     if( bDisable )
    1529           0 :                         rSet.DisableItem( nWhich );
    1530             :                     else
    1531           0 :                         rSet.Put( SfxBoolItem(nWhich, bHas) );
    1532             :                 }
    1533             :             }
    1534           0 :             break;
    1535             :             case SID_CONTOUR_EXEC:
    1536             :             {
    1537           0 :                 bool bDisable = false;
    1538           0 :                 int nSel = rSh.GetSelectionType();
    1539           0 :                 if( !(nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE)) )
    1540           0 :                     bDisable = true;
    1541           0 :                 sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
    1542           0 :                 if( !bDisable && GetView().GetViewFrame()->HasChildWindow( nId ))
    1543             :                 {
    1544           0 :                     SvxContourDlg *pDlg = GetContourDlg(GetView());
    1545           0 :                     if (pDlg && pDlg->GetEditingObject() != rSh.GetIMapInventor())
    1546           0 :                         bDisable = true;
    1547             :                 }
    1548           0 :                 rSet.Put(SfxBoolItem(nWhich, bDisable));
    1549             :             }
    1550           0 :             break;
    1551             : 
    1552             :             case FN_TOOL_ANCHOR:
    1553             :             case FN_TOOL_ANCHOR_PAGE:
    1554             :             case FN_TOOL_ANCHOR_PARAGRAPH:
    1555             :             case FN_TOOL_ANCHOR_CHAR:
    1556             :             case FN_TOOL_ANCHOR_AT_CHAR:
    1557             :             case FN_TOOL_ANCHOR_FRAME:
    1558             :             {
    1559           0 :                 bool bObj = 0 != rSh.IsObjSelected();
    1560           0 :                 bool bParentCntProt = rSh.IsSelObjProtected( FlyProtectFlags::Content|FlyProtectFlags::Parent ) != FlyProtectFlags::NONE;
    1561             : 
    1562           0 :                 if( !bParentCntProt && (bObj || rSh.IsFrmSelected()))
    1563             :                 {
    1564           0 :                     SfxItemSet aSet(GetPool(), RES_ANCHOR, RES_ANCHOR);
    1565           0 :                     if(bObj)
    1566           0 :                         rSh.GetObjAttr(aSet);
    1567             :                     else
    1568           0 :                         rSh.GetFlyFrmAttr(aSet);
    1569           0 :                     RndStdIds eSet = static_cast<const SwFormatAnchor&>(aSet.Get(RES_ANCHOR)).GetAnchorId();
    1570             :                     const bool bSet =
    1571           0 :                            ((nWhich == FN_TOOL_ANCHOR_PAGE) &&
    1572             :                             (eSet == FLY_AT_PAGE))
    1573           0 :                         || ((nWhich == FN_TOOL_ANCHOR_PARAGRAPH) &&
    1574             :                             (eSet == FLY_AT_PARA))
    1575           0 :                         || ((nWhich == FN_TOOL_ANCHOR_FRAME) &&
    1576             :                             (eSet == FLY_AT_FLY))
    1577           0 :                         || ((nWhich == FN_TOOL_ANCHOR_AT_CHAR) &&
    1578             :                             (eSet == FLY_AT_CHAR))
    1579           0 :                         || ((nWhich == FN_TOOL_ANCHOR_CHAR) &&
    1580           0 :                             (eSet == FLY_AS_CHAR));
    1581           0 :                     if(nWhich != FN_TOOL_ANCHOR)
    1582             :                     {
    1583           0 :                         if( nWhich == FN_TOOL_ANCHOR_FRAME && !rSh.IsFlyInFly() )
    1584           0 :                             rSet.DisableItem(nWhich);
    1585             :                         else
    1586           0 :                             rSet.Put(SfxBoolItem(nWhich, bSet));
    1587             :                     }
    1588             :                     else
    1589             :                     {
    1590           0 :                         sal_uInt16 nSlotId = 0;
    1591             : 
    1592           0 :                         switch (eSet)
    1593             :                         {
    1594             :                             case FLY_AT_PAGE:
    1595           0 :                                 nSlotId = FN_TOOL_ANCHOR_PAGE;
    1596           0 :                             break;
    1597             :                             case FLY_AT_PARA:
    1598           0 :                                 nSlotId = FN_TOOL_ANCHOR_PARAGRAPH;
    1599           0 :                             break;
    1600             :                             case FLY_AS_CHAR:
    1601           0 :                                 nSlotId = FN_TOOL_ANCHOR_CHAR;
    1602           0 :                             break;
    1603             :                             case FLY_AT_CHAR:
    1604           0 :                                 nSlotId = FN_TOOL_ANCHOR_AT_CHAR;
    1605           0 :                             break;
    1606             :                             case FLY_AT_FLY:
    1607           0 :                                 nSlotId = FN_TOOL_ANCHOR_FRAME;
    1608           0 :                             break;
    1609             :                             default:
    1610             :                                 ;
    1611             :                         }
    1612           0 :                         rSet.Put(SfxUInt16Item(nWhich, nSlotId));
    1613           0 :                     }
    1614             :                 }
    1615             :                 else
    1616           0 :                     rSet.DisableItem( nWhich );
    1617             :             }
    1618           0 :             break;
    1619             :             case FN_FRAME_NOWRAP:
    1620             :             case FN_FRAME_WRAP:
    1621             :             case FN_FRAME_WRAP_IDEAL:
    1622             :             case FN_FRAME_WRAPTHRU:
    1623             :             case FN_FRAME_WRAPTHRU_TRANSP:
    1624             :             case FN_FRAME_WRAP_CONTOUR:
    1625             :             case FN_WRAP_ANCHOR_ONLY:
    1626             :             case FN_FRAME_WRAP_LEFT:
    1627             :             case FN_FRAME_WRAP_RIGHT:
    1628             :             {
    1629           0 :                 bool bObj = 0 != rSh.IsObjSelected();
    1630           0 :                 bool bParentCntProt = rSh.IsSelObjProtected( FlyProtectFlags::Content|FlyProtectFlags::Parent ) != FlyProtectFlags::NONE;
    1631             : 
    1632           0 :                 if( !bParentCntProt && (bObj || rSh.IsFrmSelected()))
    1633             :                 {
    1634           0 :                     SfxItemSet aSet(GetPool(), RES_OPAQUE, RES_ANCHOR);
    1635             :                     int nAnchorType;
    1636           0 :                     if(bObj)
    1637             :                     {
    1638           0 :                         rSh.GetObjAttr(aSet);
    1639           0 :                         nAnchorType = rSh.GetAnchorId();
    1640             :                     }
    1641             :                     else
    1642             :                     {
    1643           0 :                         rSh.GetFlyFrmAttr(aSet);
    1644           0 :                         nAnchorType = static_cast<const SwFormatAnchor&>(aSet.Get(RES_ANCHOR)).GetAnchorId();
    1645             :                     }
    1646           0 :                     const SwFormatSurround& rWrap = static_cast<const SwFormatSurround&>(aSet.Get(RES_SURROUND));
    1647             : 
    1648           0 :                     const SvxOpaqueItem& rOpaque = static_cast<const SvxOpaqueItem&>(aSet.Get(RES_OPAQUE));
    1649           0 :                     bool bOpaque = rOpaque.GetValue();
    1650           0 :                     SwSurround nSurround = rWrap.GetSurround();
    1651           0 :                     bool bSet = false;
    1652             : 
    1653             :                     bool bDisable =
    1654           0 :                         (nAnchorType == - 1) || (nAnchorType == FLY_AS_CHAR);
    1655             :                     const bool bHtmlMode =
    1656           0 :                         0 != ::GetHtmlMode(GetView().GetDocShell());
    1657             : 
    1658           0 :                     switch( nWhich )
    1659             :                     {
    1660             :                         case FN_FRAME_NOWRAP:
    1661             :                             bDisable |=
    1662             :                                 (   (nAnchorType != FLY_AT_PARA)
    1663           0 :                                  && (nAnchorType != FLY_AT_CHAR)
    1664           0 :                                  && (nAnchorType != FLY_AT_PAGE));
    1665           0 :                             bSet = nSurround == SURROUND_NONE;
    1666           0 :                         break;
    1667             :                         case FN_FRAME_WRAP:
    1668           0 :                             bDisable |= bHtmlMode;
    1669           0 :                             bSet = nSurround == SURROUND_PARALLEL;
    1670           0 :                         break;
    1671             :                         case FN_FRAME_WRAP_IDEAL:
    1672           0 :                             bDisable |= bHtmlMode;
    1673           0 :                             bSet = nSurround == SURROUND_IDEAL;
    1674           0 :                         break;
    1675             :                         case FN_FRAME_WRAPTHRU:
    1676           0 :                             bDisable |= (bHtmlMode ||
    1677             :                                 (   (nAnchorType != FLY_AT_PARA)
    1678           0 :                                  && (nAnchorType != FLY_AT_CHAR)
    1679           0 :                                  && (nAnchorType != FLY_AT_PAGE)));
    1680           0 :                             if(bObj)
    1681           0 :                                 bSet = nSurround == SURROUND_THROUGHT && rSh.GetLayerId();
    1682             :                             else
    1683           0 :                                 bSet = nSurround == SURROUND_THROUGHT && bOpaque;
    1684           0 :                         break;
    1685             :                         case FN_FRAME_WRAPTHRU_TRANSP:
    1686           0 :                             bDisable |= bHtmlMode;
    1687           0 :                             if(bObj)
    1688           0 :                                 bSet = nSurround == SURROUND_THROUGHT && !rSh.GetLayerId();
    1689             :                             else
    1690           0 :                                 bSet = nSurround == SURROUND_THROUGHT && !bOpaque;
    1691           0 :                         break;
    1692             :                         case FN_FRAME_WRAP_CONTOUR:
    1693           0 :                             bDisable |= bHtmlMode;
    1694             :                             //no contour available whenn no wrap or wrap through is set
    1695           0 :                             bDisable |= (nSurround == SURROUND_NONE || nSurround == SURROUND_THROUGHT);
    1696           0 :                             bSet = rWrap.IsContour();
    1697           0 :                             if( !bDisable )
    1698             :                             {
    1699           0 :                                 int nSel = rSh.GetSelectionType();
    1700           0 :                                 if( (nSel & nsSelectionType::SEL_GRF) &&
    1701           0 :                                             rSh.IsGrfSwapOut(true))
    1702             :                                 {
    1703           0 :                                     if( AddGrfUpdateSlot( nWhich ))
    1704           0 :                                         rSh.GetGraphic(false);  // start the loading
    1705             :                                 }
    1706           0 :                                 else if( rSh.IsFrmSelected() )
    1707             :                                 {
    1708             :                                     // #i102253# applied patch from OD (see task)
    1709             :                                     bDisable =
    1710           0 :                                         nSel & nsSelectionType::SEL_FRM ||
    1711           0 :                                         GRAPHIC_NONE == rSh.GetIMapGraphic().GetType();
    1712             :                                 }
    1713             :                             }
    1714           0 :                             bSet = !bDisable && rWrap.IsContour();
    1715             : 
    1716           0 :                         break;
    1717             :                         case FN_WRAP_ANCHOR_ONLY:
    1718           0 :                             bDisable |= (bHtmlMode ||
    1719           0 :                                 (nAnchorType != FLY_AT_PARA));
    1720           0 :                             bSet = rWrap.IsAnchorOnly();
    1721           0 :                         break;
    1722             :                         case FN_FRAME_WRAP_LEFT:
    1723           0 :                             bSet = nSurround == SURROUND_LEFT;
    1724           0 :                         break;
    1725             :                         case FN_FRAME_WRAP_RIGHT:
    1726           0 :                             bSet = nSurround == SURROUND_RIGHT;
    1727           0 :                         break;
    1728             :                     }
    1729             : 
    1730           0 :                     if(bDisable)
    1731           0 :                         rSet.DisableItem(nWhich);
    1732             :                     else
    1733           0 :                         rSet.Put(SfxBoolItem(nWhich, bSet));
    1734             :                 }
    1735             :                 else
    1736           0 :                     rSet.DisableItem(nWhich);
    1737             :             }
    1738           0 :             break;
    1739             :             case FN_UPDATE_CHARTS:
    1740           0 :                 if( !rSh.HasCharts() )
    1741           0 :                     rSet.DisableItem( nWhich );
    1742           0 :                 break;
    1743             :             case FN_UPDATE_ALL_LINKS:
    1744           0 :                 if ( rSh.GetLinkManager().GetLinks().empty() )
    1745           0 :                     rSet.DisableItem(nWhich);
    1746           0 :                 break;
    1747             :             case FN_XFORMS_DESIGN_MODE:
    1748             :                 // enable if in XForms document
    1749           0 :                 if( rSh.GetDoc()->isXForms() )
    1750             :                 {
    1751             :                     // determine current state from view options
    1752           0 :                     bool bValue = ! rSh.GetViewOptions()->IsFormView();
    1753           0 :                     rSet.Put( SfxBoolItem( nWhich, bValue ) );
    1754             :                 }
    1755             :                 else
    1756           0 :                     rSet.Put( SfxVisibilityItem( nWhich, false ) );
    1757           0 :                 break;
    1758             :         }
    1759          10 :         nWhich = aIter.NextWhich();
    1760             :     }
    1761          10 :     pGetStateSet = 0;
    1762          10 : }
    1763             : 
    1764             : // Disable the slots with this status methode
    1765             : 
    1766           0 : void SwBaseShell::StateDisableItems( SfxItemSet &rSet )
    1767             : {
    1768           0 :     SfxWhichIter aIter(rSet);
    1769           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1770             : 
    1771           0 :     while (nWhich)
    1772             :     {
    1773           0 :         rSet.DisableItem( nWhich );
    1774           0 :         nWhich = aIter.NextWhich();
    1775           0 :     }
    1776           0 : }
    1777             : 
    1778             : // Disable the slots with this status methode
    1779             : 
    1780        4372 : void SwBaseShell::StateStyle( SfxItemSet &rSet )
    1781             : {
    1782        4372 :     bool bParentCntProt = GetShell().IsSelObjProtected( FlyProtectFlags::Content|FlyProtectFlags::Parent ) != FlyProtectFlags::NONE;
    1783        4372 :     ShellModes eMode = GetView().GetShellMode();
    1784             : 
    1785        4372 :     if ( bParentCntProt ||
    1786        4372 :          SHELL_MODE_DRAW == eMode ||
    1787        4372 :          SHELL_MODE_DRAW_CTRL == eMode ||
    1788        4372 :          SHELL_MODE_DRAW_FORM == eMode ||
    1789        4372 :          SHELL_MODE_DRAWTEXT == eMode ||
    1790             :          SHELL_MODE_BEZIER == eMode )
    1791             :     {
    1792           0 :         SfxWhichIter aIter( rSet );
    1793           0 :         sal_uInt16 nWhich = aIter.FirstWhich();
    1794           0 :         while ( nWhich )
    1795             :         {
    1796           0 :             rSet.DisableItem( nWhich );
    1797           0 :             nWhich = aIter.NextWhich();
    1798           0 :         }
    1799             :     }
    1800             :     else
    1801        4372 :         GetView().GetDocShell()->StateStyleSheet(rSet, &GetShell());
    1802        4372 : }
    1803             : 
    1804           0 : void SwBaseShell::SetWrapMode( sal_uInt16 nSlot )
    1805             : {
    1806           0 :     SwWrtShell &rSh = GetShell();
    1807           0 :     bool bObj = 0 != rSh.IsObjSelected();
    1808           0 :     if( bObj || rSh.IsFrmSelected())
    1809             :     {
    1810           0 :         SfxItemSet aSet(GetPool(), RES_OPAQUE, RES_SURROUND);
    1811           0 :         if(bObj)
    1812           0 :             rSh.GetObjAttr(aSet);
    1813             :         else
    1814           0 :             rSh.GetFlyFrmAttr(aSet);
    1815           0 :         SwFormatSurround aWrap( static_cast<const SwFormatSurround&>(aSet.Get(RES_SURROUND)) );
    1816           0 :         SwSurround nOldSurround(aWrap.GetSurround());
    1817           0 :         SwSurround nSurround = SURROUND_PARALLEL;
    1818             : 
    1819           0 :         switch (nSlot)
    1820             :         {
    1821             :             case FN_FRAME_NOWRAP:
    1822           0 :                 nSurround = SURROUND_NONE;
    1823           0 :                 if (aWrap.IsContour())
    1824           0 :                     aWrap.SetContour(false);
    1825           0 :                 break;
    1826             :             case FN_FRAME_WRAP_IDEAL:
    1827           0 :                 nSurround = SURROUND_IDEAL;
    1828           0 :                 break;
    1829             :             case FN_WRAP_ANCHOR_ONLY:
    1830           0 :                 aWrap.SetAnchorOnly(!aWrap.IsAnchorOnly());
    1831             : 
    1832             :                 // keep previous wrapping
    1833             : 
    1834             :                 // switch to wrap SURROUND_PARALLEL, if previous wrap is SURROUND_NONE
    1835           0 :                 if ( nOldSurround != SURROUND_NONE )
    1836             :                 {
    1837           0 :                     nSurround = nOldSurround;
    1838             :                 }
    1839           0 :                 break;
    1840             :             case FN_FRAME_WRAP_CONTOUR:
    1841           0 :                 aWrap.SetContour(!aWrap.IsContour());
    1842           0 :                 break;
    1843             :             case FN_FRAME_WRAPTHRU_TRANSP:
    1844           0 :                 if (aWrap.IsContour())
    1845           0 :                     aWrap.SetContour(false);
    1846             :                 // No break!!!
    1847             :             case FN_FRAME_WRAPTHRU:
    1848           0 :                 nSurround = SURROUND_THROUGHT;
    1849           0 :                 break;
    1850             : 
    1851             :             case FN_FRAME_WRAP_LEFT:
    1852           0 :                 nSurround = SURROUND_LEFT;
    1853           0 :                 break;
    1854             : 
    1855             :             case FN_FRAME_WRAP_RIGHT:
    1856           0 :                 nSurround = SURROUND_RIGHT;
    1857           0 :                 break;
    1858             : 
    1859             :             default:
    1860           0 :                 break;
    1861             :         }
    1862           0 :         aWrap.SetSurround(nSurround);
    1863             : 
    1864           0 :         if (nSlot != FN_FRAME_WRAP_CONTOUR)
    1865             :         {
    1866             :             // Defaulting the contour wrap on draw objects.
    1867           0 :             if (bObj && nOldSurround != nSurround &&
    1868           0 :                 (nOldSurround == SURROUND_NONE || nOldSurround == SURROUND_THROUGHT))
    1869             :             {
    1870           0 :                 aWrap.SetContour(true);
    1871             :             }
    1872             :         }
    1873             : 
    1874           0 :         aSet.Put( aWrap );
    1875           0 :         aSet.Put(SvxOpaqueItem(RES_OPAQUE, nSlot != FN_FRAME_WRAPTHRU_TRANSP));
    1876           0 :         if(bObj)
    1877             :         {
    1878           0 :             rSh.SetObjAttr(aSet);
    1879           0 :             if (nSlot != FN_FRAME_WRAPTHRU_TRANSP)
    1880           0 :                 rSh.SelectionToHeaven();
    1881             :             else
    1882           0 :                 rSh.SelectionToHell();
    1883             :         }
    1884             :         else
    1885           0 :             rSh.SetFlyFrmAttr(aSet);
    1886             :     }
    1887           0 : }
    1888             : 
    1889             : //Force update of the status line
    1890             : 
    1891          20 : void SwBaseShell::SetFrmMode(FlyMode eMode, SwWrtShell *pSh )
    1892             : {
    1893          20 :     eFrameMode = eMode;
    1894          20 :     SfxBindings &rBnd = pSh->GetView().GetViewFrame()->GetBindings();
    1895             : 
    1896          20 :     if( eMode == FLY_DRAG || pSh->IsFrmSelected() || pSh->IsObjSelected() )
    1897             :     {
    1898          15 :         const SfxPointItem aTmp1( SID_ATTR_POSITION, pSh->GetAnchorObjDiff());
    1899          30 :         const SvxSizeItem  aTmp2( SID_ATTR_SIZE,     pSh->GetObjSize());
    1900          15 :         rBnd.SetState( aTmp1 );
    1901          30 :         rBnd.SetState( aTmp2 );
    1902             :     }
    1903           5 :     else if( eMode == FLY_DRAG_END )
    1904             :     {
    1905             :         static sal_uInt16 aInval[] =
    1906             :         {
    1907             :             SID_ATTR_POSITION, SID_ATTR_SIZE, 0
    1908             :         };
    1909           4 :         rBnd.Invalidate(aInval);
    1910             :     }
    1911          20 : }
    1912             : 
    1913        5893 : SwBaseShell::SwBaseShell(SwView& rVw) :
    1914             :     SfxShell( &rVw ),
    1915             :     rView(rVw),
    1916        5893 :     pGetStateSet(0)
    1917             : {
    1918        5893 :     SwWrtShell& rWrtSh = rView.GetWrtShell();
    1919             : 
    1920        5893 :     SetPool(&rWrtSh.GetAttrPool());
    1921        5893 :     SetName(OUString("Base"));
    1922        5893 :     rWrtSh.SetGrfArrivedLnk( LINK( this, SwBaseShell, GraphicArrivedHdl));
    1923        5893 : }
    1924             : 
    1925       11770 : SwBaseShell::~SwBaseShell()
    1926             : {
    1927        5885 :     if( rView.GetCurShell() == this )
    1928           0 :         rView.ResetSubShell();
    1929             : 
    1930        5885 :     Link<> aTmp( LINK( this, SwBaseShell, GraphicArrivedHdl));
    1931        5885 :     if( aTmp == rView.GetWrtShell().GetGrfArrivedLnk() )
    1932        2750 :         rView.GetWrtShell().SetGrfArrivedLnk( Link<>() );
    1933        5885 : }
    1934             : 
    1935           1 : void SwBaseShell::ExecTextCtrl( SfxRequest& rReq )
    1936             : {
    1937           1 :     const SfxItemSet *pArgs = rReq.GetArgs();
    1938             : 
    1939           1 :     if( pArgs)
    1940             :     {
    1941           1 :         SwWrtShell &rSh = GetShell();
    1942           1 :         boost::scoped_ptr<SvxScriptSetItem> pSSetItem;
    1943           1 :         sal_uInt16 nSlot = rReq.GetSlot();
    1944           1 :         SfxItemPool& rPool = rSh.GetAttrPool();
    1945           1 :         sal_uInt16 nWhich = rPool.GetWhich( nSlot );
    1946           1 :         SvtScriptType nScripts = SvtScriptType::LATIN | SvtScriptType::ASIAN | SvtScriptType::COMPLEX;
    1947           1 :         SfxItemSet aHeightSet( GetPool(),  RES_CHRATR_FONTSIZE, RES_CHRATR_FONTSIZE,
    1948             :                                             RES_CHRATR_CJK_FONTSIZE, RES_CHRATR_CJK_FONTSIZE,
    1949             :                                             RES_CHRATR_CTL_FONTSIZE, RES_CHRATR_CTL_FONTSIZE,
    1950           2 :                                         0L);
    1951             : 
    1952           1 :         switch( nSlot )
    1953             :         {
    1954             :             case SID_ATTR_CHAR_FONT:
    1955             :             {
    1956           0 :                 nScripts = rSh.GetScriptType();
    1957             :                 // #i42732# input language should be preferred over
    1958             :                 // current cursor position to detect script type
    1959           0 :                 if(!rSh.HasSelection())
    1960             :                 {
    1961           0 :                     LanguageType nInputLang = GetView().GetEditWin().GetInputLanguage();
    1962           0 :                     if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
    1963           0 :                         nScripts = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
    1964             :                 }
    1965             :             }
    1966             :             // fall-through
    1967             :             case SID_ATTR_CHAR_POSTURE:
    1968             :             case SID_ATTR_CHAR_WEIGHT:
    1969             :             {
    1970           1 :                 pSSetItem.reset(new SvxScriptSetItem( nSlot, rPool ));
    1971           1 :                 pSSetItem->PutItemForScriptType( nScripts, pArgs->Get( nWhich ));
    1972           1 :                 pArgs = &pSSetItem->GetItemSet();
    1973             :             }
    1974           1 :             break;
    1975             :             case SID_ATTR_CHAR_FONTHEIGHT:
    1976             :             {
    1977           0 :                 if(rSh.HasSelection())
    1978             :                 {
    1979           0 :                     pSSetItem.reset(new SvxScriptSetItem( nSlot, rPool ));
    1980           0 :                     pSSetItem->PutItemForScriptType( nScripts, pArgs->Get( nWhich ));
    1981           0 :                     pArgs = &pSSetItem->GetItemSet();
    1982             :                 }
    1983             :                 else
    1984             :                 {
    1985           0 :                     nScripts = rSh.GetScriptType();
    1986           0 :                     LanguageType nInputLang = GetView().GetEditWin().GetInputLanguage();
    1987           0 :                     if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
    1988           0 :                         nScripts = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
    1989           0 :                     sal_uInt32 nHeight = static_cast< const SvxFontHeightItem& >(pArgs->Get( nWhich )).GetHeight();
    1990           0 :                     SwStdFontConfig* pStdFont = SW_MOD()->GetStdFontConfig();
    1991             : 
    1992           0 :                     SfxItemSet aLangSet( GetPool(), RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
    1993             :                                                     RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_LANGUAGE,
    1994             :                                                     RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_LANGUAGE,
    1995           0 :                                                     0L);
    1996           0 :                     rSh.GetCurAttr( aLangSet );
    1997             : 
    1998             :                     sal_Int32 nWesternSize =
    1999             :                             pStdFont->GetFontHeight(FONT_STANDARD, FONT_GROUP_DEFAULT,
    2000           0 :                             static_cast<const SvxLanguageItem&>(aLangSet.Get( RES_CHRATR_LANGUAGE)).GetLanguage());
    2001             :                     sal_Int32 nCJKSize =
    2002             :                             pStdFont->GetFontHeight(FONT_STANDARD, FONT_GROUP_CJK,
    2003           0 :                             static_cast<const SvxLanguageItem&>(aLangSet.Get( RES_CHRATR_CJK_LANGUAGE)).GetLanguage());
    2004             :                     sal_Int32 nCTLSize =
    2005             :                             pStdFont->GetFontHeight(FONT_STANDARD, FONT_GROUP_CTL,
    2006           0 :                             static_cast<const SvxLanguageItem&>(aLangSet.Get( RES_CHRATR_CTL_LANGUAGE)).GetLanguage());
    2007             : 
    2008           0 :                     switch(nScripts)
    2009             :                     {
    2010             :                         case SvtScriptType::LATIN:
    2011           0 :                             nCJKSize = nHeight * nCJKSize / nWesternSize;
    2012           0 :                             nCTLSize = nHeight * nCTLSize / nWesternSize;
    2013           0 :                             nWesternSize = (sal_Int32) nHeight;
    2014           0 :                         break;
    2015             :                         case SvtScriptType::ASIAN:
    2016           0 :                             nCTLSize = nHeight* nCTLSize / nCJKSize;
    2017           0 :                             nWesternSize = nHeight * nWesternSize / nCJKSize;
    2018           0 :                             nCJKSize = (sal_Int32) nHeight;
    2019           0 :                         break;
    2020             :                         case SvtScriptType::COMPLEX:
    2021           0 :                             nCJKSize = nHeight * nCJKSize / nCTLSize;
    2022           0 :                             nWesternSize = nHeight * nWesternSize / nCTLSize;
    2023           0 :                             nCTLSize = (sal_Int32) nHeight;
    2024           0 :                         break;
    2025           0 :                         default: break;
    2026             :                     }
    2027           0 :                     aHeightSet.Put( SvxFontHeightItem( (sal_uInt32)nWesternSize, 100, RES_CHRATR_FONTSIZE ));
    2028           0 :                     aHeightSet.Put( SvxFontHeightItem( (sal_uInt32)nCJKSize, 100, RES_CHRATR_CJK_FONTSIZE ));
    2029           0 :                     aHeightSet.Put( SvxFontHeightItem( (sal_uInt32)nCTLSize, 100, RES_CHRATR_CTL_FONTSIZE ));
    2030           0 :                     pArgs = &aHeightSet;
    2031             :                 }
    2032             :             }
    2033           0 :             break;
    2034             :         }
    2035             : 
    2036           1 :         if( pArgs )
    2037             :         {
    2038           1 :             bool bAuto = false;
    2039           2 :             if ( !isCHRATR(nWhich) ||
    2040           1 :                  ( rSh.HasSelection() && rSh.IsSelFullPara() ) )
    2041             :             {
    2042           0 :                 SwTextFormatColl * pColl = rSh.GetCurTextFormatColl();
    2043           0 :                 if ( pColl && pColl->IsAutoUpdateFormat() )
    2044             :                 {
    2045           0 :                     rSh.AutoUpdatePara( pColl, *pArgs );
    2046           0 :                     bAuto = true;
    2047             :                 }
    2048             :             }
    2049             : 
    2050           1 :             if (!bAuto)
    2051             :             {
    2052           1 :                 rSh.SetAttrSet( *pArgs );
    2053             :             }
    2054           1 :         }
    2055             :     }
    2056             :     else
    2057           0 :         GetView().GetViewFrame()->GetDispatcher()->Execute( SID_CHAR_DLG );
    2058           1 :     rReq.Done();
    2059           1 : }
    2060             : 
    2061        3881 : void SwBaseShell::GetTextCtrlState( SfxItemSet& rSet )
    2062             : {
    2063        3881 :     SwWrtShell &rSh = GetShell();
    2064        3881 :     rSh.GetCurAttr( rSet );
    2065        3881 : }
    2066             : 
    2067        3887 : void SwBaseShell::GetTextFontCtrlState( SfxItemSet& rSet )
    2068             : {
    2069        3887 :     SwWrtShell &rSh = GetShell();
    2070        3887 :     bool bFirst = true;
    2071        3887 :     boost::scoped_ptr<SfxItemSet> pFntCoreSet;
    2072        3887 :     SvtScriptType nScriptType = SvtScriptType::LATIN;
    2073        7774 :     SfxWhichIter aIter( rSet );
    2074        3887 :     sal_uInt16 nWhich = aIter.FirstWhich();
    2075       13188 :     while( nWhich )
    2076             :     {
    2077        5414 :         switch( nWhich )
    2078             :         {
    2079             :         case RES_CHRATR_FONT:
    2080             :         case RES_CHRATR_FONTSIZE:
    2081             :         case RES_CHRATR_WEIGHT:
    2082             :         case RES_CHRATR_POSTURE:
    2083             :             {
    2084        5414 :                 if( !pFntCoreSet )
    2085             :                 {
    2086             :                     pFntCoreSet.reset(new SfxItemSet( *rSet.GetPool(),
    2087        3887 :                                     RES_CHRATR_BEGIN, RES_CHRATR_END-1 ));
    2088        3887 :                     rSh.GetCurAttr( *pFntCoreSet );
    2089        3887 :                     nScriptType = rSh.GetScriptType();
    2090             :                     // #i42732# input language should be preferred over
    2091             :                     // current cursor position to detect script type
    2092        3887 :                     SwEditWin& rEditWin = GetView().GetEditWin();
    2093        3887 :                     if( rEditWin.IsUseInputLanguage() )
    2094             :                     {
    2095        6415 :                         if(!rSh.HasSelection() && (
    2096        2028 :                             nWhich == RES_CHRATR_FONT ||
    2097             :                             nWhich == RES_CHRATR_FONTSIZE ))
    2098             :                         {
    2099        2528 :                             LanguageType nInputLang = rEditWin.GetInputLanguage();
    2100        2528 :                             if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
    2101           0 :                                 nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
    2102             :                         }
    2103             :                     }
    2104             :                 }
    2105        5414 :                 SfxItemPool& rPool = *rSet.GetPool();
    2106        5414 :                 SvxScriptSetItem aSetItem( rPool.GetSlotId( nWhich ), rPool );
    2107        5414 :                 aSetItem.GetItemSet().Put( *pFntCoreSet, false );
    2108        5414 :                 const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScriptType );
    2109        5414 :                 if( pI )
    2110        5412 :                     rSet.Put( *pI, nWhich );
    2111             :                 else
    2112           2 :                     rSet.InvalidateItem( nWhich );
    2113             :                 // Set input context of the SwEditWin according to the selected font and script type
    2114        5414 :                 if(RES_CHRATR_FONT == nWhich)
    2115             :                 {
    2116        1859 :                     vcl::Font aFont;
    2117        1859 :                     if(pI && pI->ISA(SvxFontItem))
    2118             :                     {
    2119        1859 :                         aFont.SetName( static_cast<const SvxFontItem*>(pI)->GetFamilyName());
    2120        1859 :                         aFont.SetStyleName(static_cast<const SvxFontItem*>(pI)->GetStyleName());
    2121        1859 :                         aFont.SetFamily(static_cast<const SvxFontItem*>(pI)->GetFamily());
    2122        1859 :                         aFont.SetPitch(static_cast<const SvxFontItem*>(pI)->GetPitch());
    2123        1859 :                         aFont.SetCharSet(static_cast<const SvxFontItem*>(pI)->GetCharSet());
    2124             :                     }
    2125             : 
    2126        1859 :                     bool bVertical = rSh.IsInVerticalText();
    2127        1859 :                     aFont.SetOrientation(bVertical ? 2700 : 0);
    2128        1859 :                     aFont.SetVertical(bVertical);
    2129        5577 :                     GetView().GetEditWin().SetInputContext( InputContext( aFont, InputContextFlags::Text |
    2130        5577 :                                                         InputContextFlags::ExtText ) );
    2131        5414 :                 }
    2132             :             }
    2133        5414 :             break;
    2134             : 
    2135             :         default:
    2136           0 :             if( bFirst )
    2137             :             {
    2138           0 :                 rSh.GetCurAttr( rSet );
    2139           0 :                 bFirst = false;
    2140             :             }
    2141             :         }
    2142        5414 :         nWhich = aIter.NextWhich();
    2143        3887 :     }
    2144        3887 : }
    2145             : 
    2146        1066 : void SwBaseShell::GetBckColState(SfxItemSet &rSet)
    2147             : {
    2148        1066 :     SwWrtShell &rSh = GetShell();
    2149        1066 :     SfxWhichIter aIter(rSet);
    2150        1066 :     sal_uInt16 nWhich(aIter.FirstWhich());
    2151        1066 :     int nSelType(rSh.GetSelectionType());
    2152        2132 :     SvxBrushItem aBrushItem(RES_BACKGROUND);
    2153             : 
    2154        1066 :     if( nsSelectionType::SEL_TBL_CELLS & nSelType )
    2155             :     {
    2156           3 :         rSh.GetBoxBackground( aBrushItem );
    2157             :     }
    2158             :     else
    2159             :     {
    2160             :         //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set
    2161        1063 :         SfxItemSet aCoreSet(GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
    2162             : 
    2163        1063 :         aCoreSet.SetParent(&GetView().GetDocShell()->GetDoc()->GetDfltFrameFormat()->GetAttrSet());
    2164             : 
    2165        1063 :         if(nSelType & nsSelectionType::SEL_GRF || nsSelectionType::SEL_FRM & nSelType)
    2166             :         {
    2167           0 :             rSh.GetFlyFrmAttr(aCoreSet);
    2168             :         }
    2169             :         else
    2170             :         {
    2171        1063 :             rSh.GetCurAttr(aCoreSet);
    2172             :         }
    2173             : 
    2174        1063 :         aBrushItem = getSvxBrushItemFromSourceSet(aCoreSet, RES_BACKGROUND);
    2175             :     }
    2176             : 
    2177        3198 :     while(nWhich)
    2178             :     {
    2179        1066 :         switch(nWhich)
    2180             :         {
    2181             :             case SID_BACKGROUND_COLOR:
    2182             :             {
    2183        1066 :                 SvxColorItem aColorItem(aBrushItem.GetColor(),SID_BACKGROUND_COLOR);
    2184        1066 :                 rSet.Put(aColorItem,SID_BACKGROUND_COLOR);
    2185        1066 :                 break;
    2186             :             }
    2187             :             case SID_ATTR_BRUSH:
    2188             :             case RES_BACKGROUND:
    2189             :             {
    2190           0 :                 rSet.Put(aBrushItem,GetPool().GetWhich(nWhich));
    2191           0 :                 break;
    2192             :             }
    2193             :         }
    2194             : 
    2195        1066 :         nWhich = aIter.NextWhich();
    2196        1066 :     }
    2197        1066 : }
    2198             : 
    2199           0 : void SwBaseShell::ExecBckCol(SfxRequest& rReq)
    2200             : {
    2201           0 :     SwWrtShell &rSh = GetShell();
    2202           0 :     int nSelType(rSh.GetSelectionType());
    2203           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
    2204           0 :     sal_uInt16 nSlot(rReq.GetSlot());
    2205             : 
    2206           0 :     if(!pArgs  && nSlot != SID_BACKGROUND_COLOR)
    2207             :     {
    2208           0 :         return;
    2209             :     }
    2210             : 
    2211           0 :     SvxBrushItem aBrushItem(RES_BACKGROUND);
    2212             : 
    2213           0 :     if( nsSelectionType::SEL_TBL_CELLS & nSelType )
    2214             :     {
    2215           0 :         rSh.GetBoxBackground( aBrushItem );
    2216             :     }
    2217             :     else
    2218             :     {
    2219             :         //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set
    2220           0 :         SfxItemSet aCoreSet(GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
    2221             : 
    2222           0 :         aCoreSet.SetParent(&GetView().GetDocShell()->GetDoc()->GetDfltFrameFormat()->GetAttrSet());
    2223             : 
    2224           0 :         if((nsSelectionType::SEL_FRM & nSelType) || (nsSelectionType::SEL_GRF & nSelType))
    2225             :         {
    2226           0 :             rSh.GetFlyFrmAttr(aCoreSet);
    2227             :         }
    2228             :         else
    2229             :         {
    2230           0 :             rSh.GetCurAttr(aCoreSet);
    2231             :         }
    2232             : 
    2233           0 :         aBrushItem = getSvxBrushItemFromSourceSet(aCoreSet, RES_BACKGROUND);
    2234             :     }
    2235             : 
    2236           0 :     switch(nSlot)
    2237             :     {
    2238             :         case SID_BACKGROUND_COLOR:
    2239             :         {
    2240           0 :             aBrushItem.SetGraphicPos(GPOS_NONE);
    2241             : 
    2242           0 :             if(pArgs)
    2243             :             {
    2244           0 :                 const SvxColorItem& rNewColorItem = static_cast<const SvxColorItem&>(pArgs->Get(SID_BACKGROUND_COLOR));
    2245           0 :                 const Color& rNewColor = rNewColorItem.GetValue();
    2246           0 :                 aBrushItem.SetColor(rNewColor);
    2247           0 :                 GetView().GetViewFrame()->GetBindings().SetState(rNewColorItem);
    2248             :             }
    2249             :             else
    2250             :             {
    2251           0 :                 aBrushItem.SetColor(COL_TRANSPARENT);
    2252           0 :                 rReq.AppendItem(SvxColorItem(Color(COL_TRANSPARENT),nSlot));
    2253             :             }
    2254           0 :             break;
    2255             :         }
    2256             : 
    2257             :         case SID_ATTR_BRUSH:
    2258             :         case RES_BACKGROUND:
    2259             :         {
    2260           0 :             const SvxBrushItem& rNewBrushItem = static_cast<const SvxBrushItem&>(pArgs->Get(GetPool().GetWhich(nSlot)));
    2261           0 :             aBrushItem = rNewBrushItem;
    2262           0 :             break;
    2263             :         }
    2264             :         default:
    2265             :         {
    2266           0 :             rReq.Ignore();
    2267             :             OSL_FAIL("unknown message in ExecuteAttr!" );
    2268           0 :             return;
    2269             :         }
    2270             :     }
    2271             : 
    2272           0 :     if( nsSelectionType::SEL_TBL_CELLS & nSelType )
    2273             :     {
    2274           0 :         rSh.SetBoxBackground( aBrushItem );
    2275             :     }
    2276             :     else
    2277             :     {
    2278             :         //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set
    2279           0 :         SfxItemSet aCoreSet(GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
    2280             : 
    2281           0 :         aCoreSet.SetParent(&GetView().GetDocShell()->GetDoc()->GetDfltFrameFormat()->GetAttrSet());
    2282           0 :         setSvxBrushItemAsFillAttributesToTargetSet(aBrushItem, aCoreSet);
    2283             : 
    2284           0 :         if((nsSelectionType::SEL_FRM & nSelType) || (nsSelectionType::SEL_GRF & nSelType))
    2285             :         {
    2286             :             // Template autoupdate
    2287           0 :             SwFrameFormat* pFormat = rSh.GetCurFrameFormat();
    2288             : 
    2289           0 :             if(pFormat && pFormat->IsAutoUpdateFormat())
    2290             :             {
    2291           0 :                 rSh.AutoUpdateFrame(pFormat, aCoreSet);
    2292             :             }
    2293             :             else
    2294             :             {
    2295           0 :                 rSh.SetFlyFrmAttr(aCoreSet);
    2296           0 :             }
    2297             :         }
    2298             :         else
    2299             :         {
    2300           0 :             SwTextFormatColl* pColl = rSh.GetCurTextFormatColl();
    2301             : 
    2302           0 :             if(pColl && pColl->IsAutoUpdateFormat())
    2303             :             {
    2304           0 :                 rSh.AutoUpdatePara(pColl, aCoreSet);
    2305             :             }
    2306             :             else
    2307             :             {
    2308           0 :                 rSh.SetAttrSet(aCoreSet);
    2309             :             }
    2310           0 :         }
    2311             :     }
    2312             : 
    2313           0 :     rReq.Done();
    2314             : }
    2315             : 
    2316           0 : void SwBaseShell::GetBorderState(SfxItemSet &rSet)
    2317             : {
    2318           0 :     SwWrtShell &rSh = GetShell();
    2319             :     // Tabele cell(s) selected?
    2320           0 :     bool bPrepare = true;
    2321           0 :     bool bTableMode = rSh.IsTableMode();
    2322           0 :     if ( bTableMode )
    2323             :     {
    2324           0 :         SfxItemSet aCoreSet( GetPool(),
    2325             :                              RES_BOX, RES_BOX,
    2326           0 :                              SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
    2327           0 :         SvxBoxInfoItem aBoxInfo( SID_ATTR_BORDER_INNER );
    2328           0 :         aCoreSet.Put( aBoxInfo );
    2329           0 :         rSh.GetTabBorders( aCoreSet );
    2330           0 :         rSet.Put( aCoreSet );
    2331             :     }
    2332           0 :     else if ( rSh.IsFrmSelected() )
    2333             :     {
    2334           0 :         SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    2335           0 :         rSet.Put( aMgr.GetAttrSet() );
    2336           0 :         bPrepare = false;
    2337             :     }
    2338             :     else
    2339             :         // Get border attributes via shell quite normal
    2340           0 :         rSh.GetCurAttr( rSet );
    2341           0 :     if ( bPrepare )
    2342           0 :         ::PrepareBoxInfo( rSet, rSh );
    2343             :     // Switch the border toolbox controller mode
    2344           0 :     rSet.Put( SfxBoolItem( SID_BORDER_REDUCED_MODE, !bTableMode ));
    2345           0 : }
    2346             : 
    2347           0 : void SwBaseShell::ExecDlg(SfxRequest &rReq)
    2348             : {
    2349           0 :     SwWrtShell &rSh = GetShell();
    2350           0 :     vcl::Window *pMDI = &GetView().GetViewFrame()->GetWindow();
    2351             :     // So that from the basic no dialogues for the background views are called:
    2352           0 :     bool bBackground = (&GetView() != GetActiveView());
    2353           0 :     const SfxPoolItem* pItem = 0;
    2354           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
    2355             : 
    2356           0 :     sal_uInt16 nSlot = rReq.GetSlot();
    2357           0 :     const SfxItemSet* pOutSet = 0;
    2358           0 :     bool bDone = false;
    2359           0 :     if(pArgs)
    2360           0 :         pArgs->GetItemState( GetPool().GetWhich(nSlot), false, &pItem );
    2361             : 
    2362           0 :     switch ( nSlot )
    2363             :     {
    2364             :         case FN_FORMAT_TITLEPAGE_DLG:
    2365             :         {
    2366           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2367           0 :             boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateTitlePageDlg( pMDI ));
    2368           0 :             pDlg->Execute();
    2369             :         }
    2370           0 :         break;
    2371             :         case FN_FORMAT_PAGE_DLG:
    2372             :         case FN_FORMAT_PAGE_COLUMN_DLG:
    2373             :         case FN_FORMAT_PAGE_SETTING_DLG:
    2374             :         {
    2375           0 :             if( !bBackground )
    2376             :             {
    2377           0 :                 const size_t nCurIdx = rSh.GetCurPageDesc();
    2378           0 :                 const SwPageDesc& rPageDesc = rSh.GetPageDesc( nCurIdx );
    2379             :                 // Temporary view, because the shell does not need to be valid after the dialogue
    2380             :                 // for example disable header
    2381           0 :                 SwView& rTempView = GetView();
    2382             : 
    2383           0 :                 OString sPageId;
    2384           0 :                 switch (nSlot)
    2385             :                 {
    2386             :                     case FN_FORMAT_PAGE_COLUMN_DLG:
    2387           0 :                         sPageId = "columns";
    2388           0 :                         break;
    2389             :                     case FN_FORMAT_PAGE_SETTING_DLG:
    2390           0 :                         sPageId = "page";
    2391           0 :                         break;
    2392             :                 }
    2393             : 
    2394             :                 rTempView.GetDocShell()->FormatPage(
    2395           0 :                     rPageDesc.GetName(), sPageId, rSh);
    2396           0 :                 rTempView.InvalidateRulerPos();
    2397             :             }
    2398             :         }
    2399           0 :         break;
    2400             :         case FN_FORMAT_BORDER_DLG:
    2401             :         {
    2402           0 :             SfxItemSet   aSet( rSh.GetAttrPool(),
    2403             :                                RES_BOX              , RES_SHADOW,
    2404             :                                SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
    2405           0 :                                0 );
    2406           0 :             boost::scoped_ptr<SfxAbstractDialog> pDlg;
    2407             :             // Table cell(s) selected?
    2408           0 :             if ( rSh.IsTableMode() )
    2409             :             {
    2410             :                 // Set border attributes Get/SetTabBorders()
    2411           0 :                 ::PrepareBoxInfo( aSet, rSh );
    2412           0 :                 rSh.GetTabBorders( aSet );
    2413           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2414             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2415             : 
    2416           0 :                 pDlg.reset(pFact->CreateSwBorderDlg( pMDI, aSet, SwBorderModes::TABLE, RC_DLG_SWBORDERDLG ));
    2417             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2418           0 :                 if ( pDlg->Execute() == RET_OK )
    2419             :                 {
    2420           0 :                     rSh.SetTabBorders( *pDlg->GetOutputItemSet() );
    2421           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2422             :                 }
    2423             :             }
    2424           0 :             else if ( rSh.IsFrmSelected() )
    2425             :             {
    2426             :                 // Set border attributes via Frame-Manager
    2427           0 :                 SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    2428           0 :                 aSet.Put( aMgr.GetAttrSet() );
    2429             : 
    2430           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2431             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2432             : 
    2433           0 :                 pDlg.reset(pFact->CreateSwBorderDlg( pMDI, aSet, SwBorderModes::FRAME, RC_DLG_SWBORDERDLG ));
    2434             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2435           0 :                 if ( pDlg->Execute() == RET_OK )
    2436             :                 {
    2437           0 :                     aMgr.SetAttrSet( *pDlg->GetOutputItemSet() );
    2438           0 :                     aMgr.UpdateFlyFrm();
    2439           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2440           0 :                 }
    2441             :             }
    2442             :             else
    2443             :             {
    2444             :                 // Set border attributes via Shell quite normal
    2445           0 :                 rSh.GetCurAttr( aSet );
    2446           0 :                 ::PrepareBoxInfo( aSet, rSh );
    2447             : 
    2448           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2449             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2450             : 
    2451           0 :                 pDlg.reset(pFact->CreateSwBorderDlg( pMDI, aSet, SwBorderModes::PARA, RC_DLG_SWBORDERDLG ));
    2452             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2453           0 :                 if ( pDlg->Execute() == RET_OK )
    2454             :                 {
    2455           0 :                     rSh.SetAttrSet( *pDlg->GetOutputItemSet() );
    2456           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2457             :                 }
    2458             :             }
    2459           0 :             if(pOutSet)
    2460             :             {
    2461           0 :                 rReq.Done(*pOutSet);
    2462           0 :                 bDone = true;
    2463           0 :             }
    2464             :         }
    2465           0 :         break;
    2466             :         case FN_FORMAT_BACKGROUND_DLG:
    2467             :         {
    2468           0 :             SfxItemSet aSet( rSh.GetAttrPool(),
    2469           0 :                              RES_BACKGROUND, RES_BACKGROUND );
    2470             : 
    2471           0 :             boost::scoped_ptr<SfxAbstractDialog> pDlg;
    2472           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2473             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2474             : 
    2475             :             // Table cell(s) selected?
    2476           0 :             if ( rSh.IsTableMode() )
    2477             :             {
    2478             :                 // Get background attributes of the table and put it in the set
    2479           0 :                 SvxBrushItem aBrush(RES_BACKGROUND);
    2480           0 :                 rSh.GetBoxBackground( aBrush );
    2481             :                 pDlg.reset(pFact->CreateSfxDialog( pMDI, aSet,
    2482           0 :                     rView.GetViewFrame()->GetFrame().GetFrameInterface(),
    2483           0 :                     RC_SWDLG_BACKGROUND ));
    2484             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2485           0 :                 aSet.Put( aBrush );
    2486           0 :                 if ( pDlg->Execute() == RET_OK )
    2487             :                 {
    2488             : 
    2489             :                     rSh.SetBoxBackground( static_cast<const SvxBrushItem&>(
    2490           0 :                         pDlg->GetOutputItemSet()->Get( RES_BACKGROUND )));
    2491           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2492           0 :                 }
    2493             :             }
    2494           0 :             else if ( rSh.IsFrmSelected() )
    2495             :             {
    2496             : 
    2497           0 :                 rSh.GetFlyFrmAttr( aSet );
    2498             : 
    2499             :                 pDlg.reset(pFact->CreateSfxDialog( pMDI, aSet,
    2500           0 :                     rView.GetViewFrame()->GetFrame().GetFrameInterface(),
    2501           0 :                     RC_SWDLG_BACKGROUND ));
    2502             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2503           0 :                 if ( pDlg->Execute() == RET_OK )
    2504             :                 {
    2505           0 :                     rSh.SetFlyFrmAttr((SfxItemSet &) *pDlg->GetOutputItemSet() );
    2506           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2507             :                 }
    2508             :             }
    2509             :             else
    2510             :             {
    2511             :                 // Set border attributes Umrandungsattribute with the shell quite normal.
    2512           0 :                 rSh.GetCurAttr( aSet );
    2513             : 
    2514             :                 pDlg.reset(pFact->CreateSfxDialog( pMDI, aSet,
    2515           0 :                     rView.GetViewFrame()->GetFrame().GetFrameInterface(),
    2516           0 :                     RC_SWDLG_BACKGROUND ));
    2517             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2518           0 :                 if ( pDlg->Execute() == RET_OK )
    2519             :                 {
    2520           0 :                     rSh.SetAttrSet( *pDlg->GetOutputItemSet() );
    2521           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2522             :                 }
    2523             :             }
    2524           0 :             if(pOutSet)
    2525             :             {
    2526           0 :                 rReq.Done(*pOutSet);
    2527           0 :                 bDone = true;
    2528           0 :             }
    2529             :         }
    2530           0 :         break;
    2531             :         default:OSL_FAIL("wrong Dispatcher (basesh.cxx)");
    2532             :     }
    2533           0 :     if(!bDone)
    2534           0 :         rReq.Done();
    2535           0 : }
    2536             : 
    2537       44028 : SwWrtShell& SwBaseShell::GetShell()
    2538             : {
    2539       44028 :     return rView.GetWrtShell();
    2540             : }
    2541             : 
    2542           0 : SwWrtShell* SwBaseShell::GetShellPtr()
    2543             : {
    2544           0 :     return rView.GetWrtShellPtr();
    2545             : }
    2546             : 
    2547           0 : void SwBaseShell::InsertTable( SfxRequest& _rRequest )
    2548             : {
    2549           0 :     const SfxItemSet* pArgs = _rRequest.GetArgs();
    2550           0 :     SwWrtShell& rSh = GetShell();
    2551             : 
    2552           0 :     if ( !( rSh.GetFrmType( 0, true ) & FrmTypeFlags::FOOTNOTE ) )
    2553             :     {
    2554           0 :         SwView &rTempView = GetView(); // Because GetView() does not work after the shell exchange
    2555           0 :         bool bHTMLMode = 0 != (::GetHtmlMode(rTempView.GetDocShell())&HTMLMODE_ON);
    2556           0 :         bool bCallEndUndo = false;
    2557             : 
    2558           0 :         if( !pArgs && rSh.IsSelection() && !rSh.IsInClickToEdit() &&
    2559           0 :             !rSh.IsTableMode() )
    2560             :         {
    2561           0 :             const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    2562           0 :             SwInsertTableOptions aInsTableOpts = pModOpt->GetInsTableFlags(bHTMLMode);
    2563             : 
    2564           0 :             rSh.StartUndo(UNDO_INSTABLE);
    2565           0 :             bCallEndUndo = true;
    2566             : 
    2567           0 :             bool bInserted = rSh.TextToTable( aInsTableOpts, '\t', text::HoriOrientation::FULL );
    2568           0 :             rSh.EnterStdMode();
    2569           0 :             if (bInserted)
    2570           0 :                 rTempView.AutoCaption(TABLE_CAP);
    2571           0 :             _rRequest.Done();
    2572             :         }
    2573             :         else
    2574             :         {
    2575           0 :             sal_uInt16 nCols = 0;
    2576           0 :             sal_uInt16 nRows = 0;
    2577           0 :             SwInsertTableOptions aInsTableOpts( tabopts::ALL_TBL_INS_ATTR, 1 );
    2578           0 :             OUString aTableName;
    2579           0 :             OUString aAutoName;
    2580           0 :             SwTableAutoFormat* pTAFormat = 0;
    2581             : 
    2582           0 :             if( pArgs && pArgs->Count() >= 2 )
    2583             :             {
    2584           0 :                 SFX_REQUEST_ARG( _rRequest, pName, SfxStringItem, FN_INSERT_TABLE, false );
    2585           0 :                 SFX_REQUEST_ARG( _rRequest, pCols, SfxUInt16Item, SID_ATTR_TABLE_COLUMN, false );
    2586           0 :                 SFX_REQUEST_ARG( _rRequest, pRows, SfxUInt16Item, SID_ATTR_TABLE_ROW, false );
    2587           0 :                 SFX_REQUEST_ARG( _rRequest, pFlags, SfxInt32Item, FN_PARAM_1, false );
    2588           0 :                 SFX_REQUEST_ARG( _rRequest, pAuto, SfxStringItem, FN_PARAM_2, false );
    2589             : 
    2590           0 :                 if ( pName )
    2591           0 :                     aTableName = pName->GetValue();
    2592           0 :                 if ( pCols )
    2593           0 :                     nCols = pCols->GetValue();
    2594           0 :                 if ( pRows )
    2595           0 :                     nRows = pRows->GetValue();
    2596           0 :                 if ( pAuto )
    2597             :                 {
    2598           0 :                     aAutoName = pAuto->GetValue();
    2599           0 :                     if ( !aAutoName.isEmpty() )
    2600             :                     {
    2601           0 :                         SwTableAutoFormatTable aTableTable;
    2602           0 :                         aTableTable.Load();
    2603           0 :                         for ( size_t n=0; n<aTableTable.size(); n++ )
    2604             :                         {
    2605           0 :                             if ( aTableTable[n].GetName() == aAutoName )
    2606             :                             {
    2607           0 :                                 pTAFormat = new SwTableAutoFormat( aTableTable[n] );
    2608           0 :                                 break;
    2609             :                             }
    2610           0 :                         }
    2611             :                     }
    2612             :                 }
    2613             : 
    2614           0 :                 if ( pFlags )
    2615           0 :                     aInsTableOpts.mnInsMode = (sal_uInt16) pFlags->GetValue();
    2616             :                 else
    2617             :                 {
    2618           0 :                     const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    2619           0 :                     aInsTableOpts = pModOpt->GetInsTableFlags(bHTMLMode);
    2620             :                 }
    2621             :             }
    2622             : 
    2623           0 :             if( !nCols || !nRows )
    2624             :             {
    2625           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2626             :                 OSL_ENSURE(pFact, "Dialog creation failed!");
    2627           0 :                 boost::scoped_ptr<AbstractInsTableDlg> pDlg(pFact->CreateInsTableDlg(rTempView));
    2628             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2629           0 :                 if( RET_OK == pDlg->Execute() )
    2630             :                 {
    2631           0 :                     pDlg->GetValues( aTableName, nRows, nCols, aInsTableOpts, aAutoName, pTAFormat );
    2632             :                 }
    2633             :                 else
    2634           0 :                     _rRequest.Ignore();
    2635             :             }
    2636             : 
    2637           0 :             if( nCols && nRows )
    2638             :             {
    2639             :                 // record before shell change
    2640           0 :                 _rRequest.AppendItem( SfxStringItem( FN_INSERT_TABLE, aTableName ) );
    2641           0 :                 if ( !aAutoName.isEmpty() )
    2642           0 :                     _rRequest.AppendItem( SfxStringItem( FN_PARAM_2, aAutoName ) );
    2643           0 :                 _rRequest.AppendItem( SfxUInt16Item( SID_ATTR_TABLE_COLUMN, nCols ) );
    2644           0 :                 _rRequest.AppendItem( SfxUInt16Item( SID_ATTR_TABLE_ROW, nRows ) );
    2645           0 :                 _rRequest.AppendItem( SfxInt32Item( FN_PARAM_1, (sal_Int32) aInsTableOpts.mnInsMode ) );
    2646           0 :                 _rRequest.Done();
    2647             : 
    2648           0 :                 rSh.StartUndo(UNDO_INSTABLE);
    2649           0 :                 bCallEndUndo = true;
    2650             : 
    2651           0 :                 rSh.StartAllAction();
    2652           0 :                 if( rSh.HasSelection() )
    2653           0 :                     rSh.DelRight();
    2654             : 
    2655           0 :                 rSh.InsertTable( aInsTableOpts, nRows, nCols, text::HoriOrientation::FULL, pTAFormat );
    2656           0 :                 rSh.MoveTable( fnTablePrev, fnTableStart );
    2657             : 
    2658           0 :                 if( !aTableName.isEmpty() && !rSh.GetTableStyle( aTableName ) )
    2659           0 :                     rSh.GetTableFormat()->SetName( aTableName );
    2660             : 
    2661           0 :                 rSh.EndAllAction();
    2662           0 :                 rTempView.AutoCaption(TABLE_CAP);
    2663             :             }
    2664           0 :             delete pTAFormat;
    2665             :         }
    2666             : 
    2667           0 :         if( bCallEndUndo )
    2668             :         {
    2669           0 :             SwRewriter aRewriter;
    2670             : 
    2671           0 :             if (rSh.GetTableFormat())
    2672             :             {
    2673           0 :                 aRewriter.AddRule(UndoArg1, SW_RESSTR(STR_START_QUOTE));
    2674           0 :                 aRewriter.AddRule(UndoArg2, rSh.GetTableFormat()->GetName());
    2675           0 :                 aRewriter.AddRule(UndoArg3, SW_RESSTR(STR_END_QUOTE));
    2676             : 
    2677             :             }
    2678           0 :             rSh.EndUndo(UNDO_INSTABLE, &aRewriter); // If possible change the Shell
    2679             :         }
    2680             :     }
    2681           0 : }
    2682             : 
    2683           0 : void SwBaseShell::GetGalleryState( SfxItemSet &rSet )
    2684             : {
    2685           0 :     SwWrtShell &rSh = GetShell();
    2686           0 :     SfxWhichIter aIter( rSet );
    2687           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
    2688           0 :     switch ( nWhich )
    2689             :     {
    2690             :         case SID_GALLERY_BG_BRUSH:
    2691             :         {
    2692           0 :             int nSel = rSh.GetSelectionType();
    2693           0 :             SfxStringListItem aLst( nWhich );
    2694           0 :             std::vector<OUString> &rLst = aLst.GetList();
    2695             :             nParagraphPos = nGraphicPos = nOlePos = nFramePos = nTablePos =
    2696             :             nTableRowPos  = nTableCellPos = nPagePos =
    2697           0 :             nHeaderPos    = nFooterPos = 0;
    2698           0 :             sal_uInt8 nPos = 1;
    2699           0 :             rLst.push_back( SW_RESSTR( STR_SWBG_PAGE ) );
    2700           0 :             nPagePos = nPos++;
    2701           0 :             sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
    2702           0 :             bool bHtmlMode = 0 != (nHtmlMode & HTMLMODE_ON);
    2703             : 
    2704           0 :             if ( (!bHtmlMode || (nHtmlMode & HTMLMODE_FULL_STYLES)) &&
    2705           0 :                  (nSel & nsSelectionType::SEL_TXT) )
    2706             :             {
    2707           0 :                 rLst.push_back( SW_RESSTR( STR_SWBG_PARAGRAPH ) );
    2708           0 :                 nParagraphPos = nPos++;
    2709             :             }
    2710           0 :             if ( (!bHtmlMode || (nHtmlMode & HTMLMODE_SOME_STYLES)) &&
    2711           0 :                     nSel & (nsSelectionType::SEL_TBL|nsSelectionType::SEL_TBL_CELLS) )
    2712             :             {
    2713           0 :                 rLst.push_back( SW_RESSTR( STR_SWBG_TABLE ) );
    2714           0 :                 nTablePos = nPos++;
    2715             : 
    2716           0 :                 if(!bHtmlMode)
    2717             :                 {
    2718           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_TABLE_ROW ) );
    2719           0 :                     nTableRowPos = nPos++;
    2720             :                 }
    2721             : 
    2722           0 :                 rLst.push_back( SW_RESSTR( STR_SWBG_TABLE_CELL) );
    2723           0 :                 nTableCellPos = nPos++;
    2724             :             }
    2725           0 :             if(!bHtmlMode)
    2726             :             {
    2727           0 :                 if ( nSel & nsSelectionType::SEL_FRM )
    2728             :                 {
    2729           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_FRAME ) );
    2730           0 :                     nFramePos = nPos++;
    2731             :                 }
    2732           0 :                 if ( nSel & nsSelectionType::SEL_GRF )
    2733             :                 {
    2734           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_GRAPHIC ) );
    2735           0 :                     nGraphicPos = nPos++;
    2736             :                 }
    2737           0 :                 if ( nSel & nsSelectionType::SEL_OLE )
    2738             :                 {
    2739           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_OLE ) );
    2740           0 :                     nOlePos = nPos++;
    2741             :                 }
    2742           0 :                 const FrmTypeFlags nType = rSh.GetFrmType(0,true);
    2743           0 :                 if ( nType & FrmTypeFlags::HEADER )
    2744             :                 {
    2745           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_HEADER ) );
    2746           0 :                     nHeaderPos = nPos++;
    2747             :                 }
    2748           0 :                 if ( nType & FrmTypeFlags::FOOTER )
    2749             :                 {
    2750           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_FOOTER ) );
    2751           0 :                     nFooterPos = nPos;
    2752             :                 }
    2753             :             }
    2754           0 :             if ( rLst.empty() )
    2755           0 :                 rSet.DisableItem( nWhich );
    2756             :             else
    2757           0 :                 rSet.Put( aLst );
    2758           0 :             break;
    2759             :         }
    2760           0 :     }
    2761           0 : }
    2762             : 
    2763           0 : void SwBaseShell::ExecuteGallery(SfxRequest &rReq)
    2764             : {
    2765           0 :     SwWrtShell &rSh = GetShell();
    2766           0 :     rSh.StartAction();
    2767           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
    2768           0 :     sal_uInt16 nSlot = rReq.GetSlot();
    2769           0 :     switch(nSlot)
    2770             :     {
    2771             :         case SID_GALLERY_BG_BRUSH:
    2772             :         {
    2773           0 :             if ( !pArgs )
    2774           0 :                 break;
    2775             : 
    2776           0 :             int nSel = rSh.GetSelectionType();
    2777           0 :             if ( nSel & nsSelectionType::SEL_DRW_TXT )
    2778           0 :                 break;
    2779             : 
    2780           0 :             SFX_REQUEST_ARG( rReq, pPos, SfxUInt16Item, SID_GALLERY_BG_POS, false );
    2781           0 :             SFX_REQUEST_ARG( rReq, pBrush, SvxBrushItem, SID_GALLERY_BG_BRUSH, false );
    2782           0 :             if ( !pPos || !pBrush )
    2783             :                 break;
    2784             : 
    2785           0 :             sal_uInt8 nPos = pPos->GetValue();
    2786           0 :             ++nPos;
    2787             : 
    2788           0 :             SvxBrushItem aBrush( *pBrush );
    2789           0 :             aBrush.SetWhich( RES_BACKGROUND );
    2790           0 :             if ( nPos == nParagraphPos )
    2791           0 :                 rSh.SetAttrItem( aBrush );
    2792           0 :             else if ( nPos == nTablePos )
    2793           0 :                 rSh.SetTabBackground( aBrush );
    2794           0 :             else if ( nPos == nTableRowPos )
    2795           0 :                 rSh.SetRowBackground( aBrush );
    2796           0 :             else if ( nPos == nTableCellPos )
    2797           0 :                 rSh.SetBoxBackground( aBrush );
    2798           0 :             else if ( nPos == nFramePos || nPos == nGraphicPos || nPos == nOlePos )
    2799             :             {
    2800           0 :                 SfxItemSet aCoreSet(GetPool(), RES_BACKGROUND, RES_BACKGROUND);
    2801           0 :                 aCoreSet.Put( aBrush );
    2802           0 :                 rSh.SetFlyFrmAttr( aCoreSet );
    2803             :             }
    2804           0 :             else if ( nPos == nPagePos || nPos == nHeaderPos || nPos == nFooterPos )
    2805             :             {
    2806           0 :                 sal_uInt16 nDesc = rSh.GetCurPageDesc();
    2807           0 :                 SwPageDesc aDesc( rSh.GetPageDesc( nDesc ) );
    2808           0 :                 if ( nPos == nPagePos )
    2809           0 :                     aDesc.GetMaster().SetFormatAttr( aBrush );
    2810           0 :                 else if ( nPos == nHeaderPos )
    2811             :                 {
    2812           0 :                     SwFormatHeader aHead( aDesc.GetMaster().GetHeader() );
    2813           0 :                     aHead.GetHeaderFormat()->SetFormatAttr( aBrush );
    2814           0 :                     aDesc.GetMaster().SetFormatAttr( aHead );
    2815             :                 }
    2816           0 :                 else if ( nPos == nFooterPos )
    2817             :                 {
    2818           0 :                     SwFormatFooter aFoot( aDesc.GetMaster().GetFooter() );
    2819           0 :                     aFoot.GetFooterFormat()->SetFormatAttr( aBrush );
    2820           0 :                     aDesc.GetMaster().SetFormatAttr( aFoot );
    2821             :                 }
    2822           0 :                 rSh.ChgPageDesc( nDesc, aDesc );
    2823             :             }
    2824           0 :             break;
    2825             :         }
    2826             :     }
    2827           0 :     rSh.EndAction();
    2828           0 :     rReq.Done();
    2829           0 : }
    2830             : 
    2831           0 : void SwBaseShell::ExecField( SfxRequest& rReq )
    2832             : {
    2833           0 :     sal_uInt16 nSlot = rReq.GetSlot();
    2834           0 :     switch( nSlot )
    2835             :     {
    2836             :         case FN_CHANGE_DBFIELD:
    2837             :         {
    2838           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2839             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2840             : 
    2841           0 :             boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateSwChangeDBDlg(GetView()));
    2842             :             OSL_ENSURE(pDlg, "Dialog creation failed!");
    2843           0 :             pDlg->Execute();
    2844             :         }
    2845           0 :         break;
    2846             :         default:
    2847             :             OSL_FAIL("wrong dispatcher");
    2848             :     }
    2849         177 : }
    2850             : 
    2851             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11