LCOV - code coverage report
Current view: top level - sc/source/ui/view - cellsh3.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 377 0.0 %
Date: 2012-08-25 Functions: 0 1 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 554 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include "scitems.hxx"
      30                 :            : #include <sfx2/viewfrm.hxx>
      31                 :            : #include <sfx2/bindings.hxx>
      32                 :            : #include <sfx2/dispatch.hxx>
      33                 :            : #include <sfx2/request.hxx>
      34                 :            : #include <svl/stritem.hxx>
      35                 :            : #include <vcl/msgbox.hxx>
      36                 :            : #include <sfx2/app.hxx>
      37                 :            : #include "globstr.hrc"
      38                 :            : #include "scmod.hxx"
      39                 :            : #include "appoptio.hxx"
      40                 :            : #include "tabvwsh.hxx"
      41                 :            : #include "document.hxx"
      42                 :            : #include "sc.hrc"
      43                 :            : #include "docsh.hxx"
      44                 :            : #include "reffact.hxx"
      45                 :            : #include "uiitems.hxx"
      46                 :            : #include "autoform.hxx"
      47                 :            : #include "autofmt.hxx"
      48                 :            : #include "cellsh.hxx"
      49                 :            : #include "attrdlg.hrc"      // TP_ALIGNMENT
      50                 :            : #include "inputhdl.hxx"
      51                 :            : #include "editable.hxx"
      52                 :            : #include "markdata.hxx"
      53                 :            : #include "scabstdlg.hxx"
      54                 :            : 
      55                 :            : #ifdef ENABLE_TELEPATHY
      56                 :            : #include "sccollaboration.hxx"
      57                 :            : #endif
      58                 :            : 
      59                 :            : #define IS_EDITMODE() GetViewData()->HasEditView( GetViewData()->GetActivePart() )
      60                 :            : 
      61                 :            : using sc::HMMToTwips;
      62                 :            : using sc::TwipsToHMM;
      63                 :            : using sc::TwipsToEvenHMM;
      64                 :            : 
      65                 :            : //------------------------------------------------------------------
      66                 :            : 
      67                 :          0 : void ScCellShell::Execute( SfxRequest& rReq )
      68                 :            : {
      69                 :          0 :     ScTabViewShell* pTabViewShell   = GetViewData()->GetViewShell();
      70                 :          0 :     SfxBindings&        rBindings   = pTabViewShell->GetViewFrame()->GetBindings();
      71                 :          0 :     ScModule*           pScMod      = SC_MOD();
      72                 :          0 :     const SfxItemSet*   pReqArgs    = rReq.GetArgs();
      73                 :          0 :     sal_uInt16              nSlot       = rReq.GetSlot();
      74                 :            : 
      75         [ #  # ]:          0 :     if (nSlot != SID_CURRENTCELL)       // this comes with MouseButtonUp
      76                 :          0 :         pTabViewShell->HideListBox();   // Autofilter-DropDown-Listbox
      77                 :            : 
      78         [ #  # ]:          0 :     if ( IS_EDITMODE() )
      79                 :            :     {
      80      [ #  #  # ]:          0 :         switch ( nSlot )
      81                 :            :         {
      82                 :            :             //  when opening a reference-dialog the subshell may not be switched
      83                 :            :             //  (on closing the dialog StopEditShell is called)
      84                 :            :             case SID_OPENDLG_FUNCTION:
      85                 :            :                     //  inplace leads to trouble with EditShell ...
      86                 :            :                     //! cannot always be switched werden ????
      87         [ #  # ]:          0 :                     if (!pTabViewShell->GetViewFrame()->GetFrame().IsInPlace())
      88                 :          0 :                         pTabViewShell->SetDontSwitch(sal_True);         // do not switch off EditShell
      89                 :            :                     // no break
      90                 :            : 
      91                 :            :             case FID_CELL_FORMAT:
      92                 :            :             case SID_ENABLE_HYPHENATION:
      93                 :            :             case SID_DATA_SELECT:
      94                 :            :             case SID_OPENDLG_CONSOLIDATE:
      95                 :            :             case SID_OPENDLG_SOLVE:
      96                 :            :             case SID_OPENDLG_OPTSOLVER:
      97                 :            : 
      98                 :          0 :                     pScMod->InputEnterHandler();
      99                 :          0 :                     pTabViewShell->UpdateInputHandler();
     100                 :            : 
     101                 :          0 :                     pTabViewShell->SetDontSwitch(false);
     102                 :            : 
     103                 :          0 :                     break;
     104                 :            : 
     105                 :            :             default:
     106                 :          0 :                     break;
     107                 :            :         }
     108                 :            :     }
     109                 :            : 
     110   [ #  #  #  #  :          0 :     switch ( nSlot )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
                #  #  # ]
     111                 :            :     {
     112                 :            : 
     113                 :            : 
     114                 :            : 
     115                 :            :         case SID_ATTR_SIZE://XXX ???
     116                 :          0 :             break;
     117                 :            : 
     118                 :            :         case SID_COLLABORATION:
     119                 :            : #ifdef ENABLE_TELEPATHY
     120                 :            :             GetViewData()->GetDocShell()->GetCollaboration()->DisplayContacts();
     121                 :            : #endif
     122                 :          0 :             break;
     123                 :            : 
     124                 :            :         case SID_STATUS_SELMODE:
     125         [ #  # ]:          0 :             if ( pReqArgs )
     126                 :            :             {
     127                 :            :                 /* 0: STD   Click cancels selection
     128                 :            :                  * 1: ER    Click extends selection
     129                 :            :                  * 2: ERG   Click defines further selection
     130                 :            :                  */
     131                 :          0 :                 sal_uInt16 nMode = ((const SfxUInt16Item&)pReqArgs->Get( nSlot )).GetValue();
     132                 :            : 
     133      [ #  #  # ]:          0 :                 switch ( nMode )
     134                 :            :                 {
     135                 :          0 :                     case 1: nMode = KEY_SHIFT;  break;
     136                 :          0 :                     case 2: nMode = KEY_MOD1;   break; // control-key
     137                 :            :                     case 0:
     138                 :            :                     default:
     139                 :          0 :                         nMode = 0;
     140                 :            :                 }
     141                 :            : 
     142                 :          0 :                 pTabViewShell->LockModifiers( nMode );
     143                 :            :             }
     144                 :            :             else
     145                 :            :             {
     146                 :            :                 //  no arguments (also executed by double click on the status bar controller):
     147                 :            :                 //  advance to next selection mode
     148                 :            : 
     149                 :          0 :                 sal_uInt16 nModifiers = pTabViewShell->GetLockedModifiers();
     150      [ #  #  # ]:          0 :                 switch ( nModifiers )
     151                 :            :                 {
     152                 :          0 :                     case KEY_SHIFT: nModifiers = KEY_MOD1;  break;      // EXT -> ADD
     153                 :          0 :                     case KEY_MOD1:  nModifiers = 0;         break;      // ADD -> STD
     154                 :          0 :                     default:        nModifiers = KEY_SHIFT; break;      // STD -> EXT
     155                 :            :                 }
     156                 :          0 :                 pTabViewShell->LockModifiers( nModifiers );
     157                 :            :             }
     158                 :            : 
     159                 :          0 :             rBindings.Invalidate( SID_STATUS_SELMODE );
     160                 :          0 :             rReq.Done();
     161                 :          0 :             break;
     162                 :            : 
     163                 :            :         //  SID_STATUS_SELMODE_NORM is not used ???
     164                 :            : 
     165                 :            :         case SID_STATUS_SELMODE_NORM:
     166                 :          0 :             pTabViewShell->LockModifiers( 0 );
     167                 :          0 :             rBindings.Invalidate( SID_STATUS_SELMODE );
     168                 :          0 :             break;
     169                 :            : 
     170                 :            :         //  SID_STATUS_SELMODE_ERG / SID_STATUS_SELMODE_ERW as toggles:
     171                 :            : 
     172                 :            :         case SID_STATUS_SELMODE_ERG:
     173         [ #  # ]:          0 :             if ( pTabViewShell->GetLockedModifiers() & KEY_MOD1 )
     174                 :          0 :                 pTabViewShell->LockModifiers( 0 );
     175                 :            :             else
     176                 :          0 :                 pTabViewShell->LockModifiers( KEY_MOD1 );
     177                 :          0 :             rBindings.Invalidate( SID_STATUS_SELMODE );
     178                 :          0 :             break;
     179                 :            : 
     180                 :            :         case SID_STATUS_SELMODE_ERW:
     181         [ #  # ]:          0 :             if ( pTabViewShell->GetLockedModifiers() & KEY_SHIFT )
     182                 :          0 :                 pTabViewShell->LockModifiers( 0 );
     183                 :            :             else
     184                 :          0 :                 pTabViewShell->LockModifiers( KEY_SHIFT );
     185                 :          0 :             rBindings.Invalidate( SID_STATUS_SELMODE );
     186                 :          0 :             break;
     187                 :            : 
     188                 :            :         case SID_ENTER_STRING:
     189                 :            :             {
     190         [ #  # ]:          0 :                 if ( pReqArgs )
     191                 :            :                 {
     192                 :            :                     String aStr( ((const SfxStringItem&)pReqArgs->
     193 [ #  # ][ #  # ]:          0 :                                     Get( SID_ENTER_STRING )).GetValue() );
     194                 :            : 
     195                 :          0 :                     pTabViewShell->EnterData( GetViewData()->GetCurX(),
     196                 :            :                                                GetViewData()->GetCurY(),
     197                 :          0 :                                                GetViewData()->GetTabNo(),
     198         [ #  # ]:          0 :                                                aStr );
     199                 :            : 
     200 [ #  # ][ #  # ]:          0 :                     ScInputHandler* pHdl = SC_MOD()->GetInputHdl( pTabViewShell );
     201 [ #  # ][ #  # ]:          0 :                     if ( !pHdl || !pHdl->IsInEnterHandler() )
                 [ #  # ]
     202                 :            :                     {
     203                 :            :                         //  UpdateInputHandler is needed after the cell content
     204                 :            :                         //  has changed, but if called from EnterHandler, UpdateInputHandler
     205                 :            :                         //  will be called later when moving the cursor.
     206                 :            : 
     207         [ #  # ]:          0 :                         pTabViewShell->UpdateInputHandler();
     208                 :            :                     }
     209                 :            : 
     210 [ #  # ][ #  # ]:          0 :                     rReq.Done();
     211                 :            : 
     212                 :            :                     //  no GrabFocus here, as otherwise on a Mac the tab jumps before the
     213                 :            :                     //  sideview, when the input was not finished
     214                 :            :                     //  (GrabFocus is called in KillEditView)
     215                 :            :                 }
     216                 :            :             }
     217                 :          0 :             break;
     218                 :            : 
     219                 :            :         case SID_INSERT_MATRIX:
     220                 :            :             {
     221         [ #  # ]:          0 :                 if ( pReqArgs )
     222                 :            :                 {
     223                 :            :                     String aStr = ((const SfxStringItem&)pReqArgs->
     224 [ #  # ][ #  # ]:          0 :                                     Get( SID_INSERT_MATRIX )).GetValue();
     225         [ #  # ]:          0 :                     ScDocument* pDoc = GetViewData()->GetDocument();
     226 [ #  # ][ #  # ]:          0 :                     pTabViewShell->EnterMatrix( aStr, pDoc->GetGrammar() );
     227 [ #  # ][ #  # ]:          0 :                     rReq.Done();
     228                 :            :                 }
     229                 :            :             }
     230                 :          0 :             break;
     231                 :            : 
     232                 :            :         case FID_INPUTLINE_ENTER:
     233                 :            :         case FID_INPUTLINE_BLOCK:
     234                 :            :         case FID_INPUTLINE_MATRIX:
     235                 :            :             {
     236         [ #  # ]:          0 :                 if( pReqArgs == 0 ) //XXX temporary HACK to avoid GPF
     237                 :            :                     break;
     238                 :            : 
     239                 :            :                 const ScInputStatusItem* pStatusItem
     240                 :            :                     = (const ScInputStatusItem*)&pReqArgs->
     241         [ #  # ]:          0 :                             Get( FID_INPUTLINE_STATUS );
     242                 :            : 
     243                 :          0 :                 ScAddress aCursorPos = pStatusItem->GetPos();
     244         [ #  # ]:          0 :                 String aString = pStatusItem->GetString();
     245                 :          0 :                 const EditTextObject* pData = pStatusItem->GetEditData();
     246         [ #  # ]:          0 :                 if (pData)
     247                 :            :                 {
     248         [ #  # ]:          0 :                     if (nSlot == FID_INPUTLINE_BLOCK)
     249                 :            :                     {
     250         [ #  # ]:          0 :                         pTabViewShell->EnterBlock( aString, pData );
     251                 :            :                     }
     252 [ #  # ][ #  # ]:          0 :                     else if ( aString.Len() > 0 && ( aString.GetChar(0) == '=' || aString.GetChar(0) == '+' || aString.GetChar(0) == '-' ) )
         [ #  # ][ #  # ]
                 [ #  # ]
     253                 :            :                     {
     254         [ #  # ]:          0 :                         pTabViewShell->EnterData( aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(), aString, pData );
     255                 :            :                     }
     256                 :            :                     else
     257                 :            :                     {
     258         [ #  # ]:          0 :                         pTabViewShell->EnterData( aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(), pData );
     259                 :            :                     }
     260                 :            :                 }
     261                 :            :                 else
     262                 :            :                 {
     263         [ #  # ]:          0 :                     if (nSlot == FID_INPUTLINE_ENTER)
     264                 :            :                     {
     265 [ #  # ][ #  #  :          0 :                         if (
             #  #  #  # ]
     266                 :          0 :                             aCursorPos.Col() == GetViewData()->GetCurX() &&
     267                 :          0 :                             aCursorPos.Row() == GetViewData()->GetCurY() &&
     268                 :          0 :                             aCursorPos.Tab() == GetViewData()->GetTabNo()
     269                 :            :                             )
     270                 :            :                         {
     271         [ #  # ]:          0 :                             SfxStringItem   aItem( SID_ENTER_STRING, aString );
     272                 :            : 
     273                 :            :                             // SfxBindings& rBindings = pTabViewShell->GetViewFrame()->GetBindings();
     274                 :            :                             const SfxPoolItem* aArgs[2];
     275                 :          0 :                             aArgs[0] = &aItem;
     276                 :          0 :                             aArgs[1] = NULL;
     277 [ #  # ][ #  # ]:          0 :                             rBindings.Execute( SID_ENTER_STRING, aArgs );
     278                 :            :                         }
     279                 :            :                         else
     280                 :            :                         {
     281                 :          0 :                             pTabViewShell->EnterData( aCursorPos.Col(),
     282                 :            :                                                     aCursorPos.Row(),
     283                 :          0 :                                                     aCursorPos.Tab(),
     284         [ #  # ]:          0 :                                                     aString );
     285         [ #  # ]:          0 :                             rReq.Done();
     286                 :            :                         }
     287                 :            :                     }
     288         [ #  # ]:          0 :                     else if (nSlot == FID_INPUTLINE_BLOCK)
     289                 :            :                     {
     290         [ #  # ]:          0 :                         pTabViewShell->EnterBlock( aString, NULL );
     291         [ #  # ]:          0 :                         rReq.Done();
     292                 :            :                     }
     293                 :            :                     else
     294                 :            :                     {
     295         [ #  # ]:          0 :                         ScDocument* pDoc = GetViewData()->GetDocument();
     296 [ #  # ][ #  # ]:          0 :                         pTabViewShell->EnterMatrix( aString, pDoc->GetGrammar() );
     297         [ #  # ]:          0 :                         rReq.Done();
     298                 :            :                     }
     299                 :            : 
     300         [ #  # ]:          0 :                 }
     301                 :            : 
     302                 :            :                 //  no GrabFocus here, as otherwise on a Mac the tab jumps before the
     303                 :            :                 //  sideview, when the input was not finished
     304                 :            :                 //  (GrabFocus is called in KillEditView)
     305                 :            :             }
     306                 :          0 :             break;
     307                 :            : 
     308                 :            :         case SID_OPENDLG_FUNCTION:
     309                 :            :             {
     310                 :          0 :                 sal_uInt16 nId = SID_OPENDLG_FUNCTION;
     311                 :          0 :                 SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
     312                 :          0 :                 SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
     313                 :            : 
     314                 :          0 :                 pScMod->SetRefDialog( nId, pWnd ? false : sal_True );
     315                 :          0 :                 rReq.Ignore();
     316                 :            :             }
     317                 :          0 :             break;
     318                 :            : 
     319                 :            :         case SID_OPENDLG_CONSOLIDATE:
     320                 :            :             {
     321                 :          0 :                 sal_uInt16          nId  = ScConsolidateDlgWrapper::GetChildWindowId();
     322                 :          0 :                 SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
     323                 :          0 :                 SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
     324                 :            : 
     325                 :          0 :                 pScMod->SetRefDialog( nId, pWnd ? false : sal_True );
     326                 :            :             }
     327                 :          0 :             break;
     328                 :            : 
     329                 :            :         case FID_CELL_FORMAT:
     330                 :            :             {
     331         [ #  # ]:          0 :                 if ( pReqArgs != NULL )
     332                 :            :                 {
     333                 :            :                     //----------------------------------
     334                 :            :                     // set cell attribute without dialog:
     335                 :            :                     //----------------------------------
     336                 :            :                     SfxItemSet*     pEmptySet =
     337                 :            :                                         new SfxItemSet( *pReqArgs->GetPool(),
     338                 :            :                                                         ATTR_PATTERN_START,
     339 [ #  # ][ #  # ]:          0 :                                                         ATTR_PATTERN_END );
     340                 :            : 
     341                 :            :                     SfxItemSet*     pNewSet =
     342                 :            :                                         new SfxItemSet( *pReqArgs->GetPool(),
     343                 :            :                                                         ATTR_PATTERN_START,
     344 [ #  # ][ #  # ]:          0 :                                                         ATTR_PATTERN_END );
     345                 :            : 
     346                 :          0 :                     const SfxPoolItem*  pAttr = NULL;
     347                 :          0 :                     sal_uInt16              nWhich = 0;
     348                 :            : 
     349         [ #  # ]:          0 :                     for ( nWhich=ATTR_PATTERN_START; nWhich<=ATTR_PATTERN_END; nWhich++ )
     350 [ #  # ][ #  # ]:          0 :                         if ( pReqArgs->GetItemState( nWhich, sal_True, &pAttr ) == SFX_ITEM_SET )
     351         [ #  # ]:          0 :                             pNewSet->Put( *pAttr );
     352                 :            : 
     353         [ #  # ]:          0 :                     pTabViewShell->ApplyAttributes( pNewSet, pEmptySet );
     354                 :            : 
     355 [ #  # ][ #  # ]:          0 :                     delete pNewSet;
     356 [ #  # ][ #  # ]:          0 :                     delete pEmptySet;
     357                 :            : 
     358         [ #  # ]:          0 :                     rReq.Done();
     359                 :            :                 }
     360         [ #  # ]:          0 :                 else if ( pReqArgs == NULL )
     361                 :            :                 {
     362                 :          0 :                     pTabViewShell->ExecuteCellFormatDlg( rReq );
     363                 :            :                 }
     364                 :            :             }
     365                 :          0 :             break;
     366                 :            : 
     367                 :            :         case SID_ENABLE_HYPHENATION:
     368                 :          0 :             pTabViewShell->ExecuteCellFormatDlg( rReq, TP_ALIGNMENT );
     369                 :          0 :             break;
     370                 :            : 
     371                 :            :         case SID_OPENDLG_SOLVE:
     372                 :            :             {
     373                 :          0 :                 sal_uInt16          nId  = ScSolverDlgWrapper::GetChildWindowId();
     374                 :          0 :                 SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
     375                 :          0 :                 SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
     376                 :            : 
     377                 :          0 :                 pScMod->SetRefDialog( nId, pWnd ? false : sal_True );
     378                 :            :             }
     379                 :          0 :             break;
     380                 :            : 
     381                 :            :         case SID_OPENDLG_OPTSOLVER:
     382                 :            :             {
     383                 :          0 :                 sal_uInt16 nId = ScOptSolverDlgWrapper::GetChildWindowId();
     384                 :          0 :                 SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
     385                 :          0 :                 SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
     386                 :            : 
     387                 :          0 :                 pScMod->SetRefDialog( nId, pWnd ? false : sal_True );
     388                 :            :             }
     389                 :          0 :             break;
     390                 :            : 
     391                 :            :         case SID_OPENDLG_TABOP:
     392                 :            :             {
     393                 :          0 :                 sal_uInt16          nId  = ScTabOpDlgWrapper::GetChildWindowId();
     394                 :          0 :                 SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
     395                 :          0 :                 SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
     396                 :            : 
     397                 :          0 :                 pScMod->SetRefDialog( nId, pWnd ? false : sal_True );
     398                 :            :             }
     399                 :          0 :             break;
     400                 :            : 
     401                 :            :         case SID_SCENARIOS:
     402                 :            :             {
     403                 :          0 :                 ScDocument* pDoc = GetViewData()->GetDocument();
     404                 :          0 :                 ScMarkData& rMark = GetViewData()->GetMarkData();
     405                 :          0 :                 SCTAB nTab = GetViewData()->GetTabNo();
     406                 :            : 
     407         [ #  # ]:          0 :                 if ( pDoc->IsScenario(nTab) )
     408                 :            :                 {
     409                 :          0 :                     rMark.MarkToMulti();
     410         [ #  # ]:          0 :                     if ( rMark.IsMultiMarked() )
     411                 :            :                     {
     412 [ #  # ][ #  # ]:          0 :                         if (   rReq.IsAPI()
         [ #  # ][ #  # ]
     413                 :            :                             || RET_YES ==
     414                 :            :                                QueryBox( pTabViewShell->GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
     415         [ #  # ]:          0 :                                          ScGlobal::GetRscString(STR_UPDATE_SCENARIO) ).
     416 [ #  # ][ #  # ]:          0 :                                         Execute() )
         [ #  # ][ #  # ]
                 [ #  # ]
     417                 :            :                         {
     418                 :          0 :                             pTabViewShell->ExtendScenario();
     419                 :          0 :                             rReq.Done();
     420                 :            :                         }
     421                 :            :                     }
     422         [ #  # ]:          0 :                     else if( ! rReq.IsAPI() )
     423                 :            :                     {
     424                 :            :                         ErrorBox aErrorBox( pTabViewShell->GetDialogParent(), WinBits(WB_OK | WB_DEF_OK),
     425 [ #  # ][ #  # ]:          0 :                                             ScGlobal::GetRscString(STR_NOAREASELECTED) );
                 [ #  # ]
     426 [ #  # ][ #  # ]:          0 :                         aErrorBox.Execute();
     427                 :            :                     }
     428                 :            :                 }
     429                 :            :                 else
     430                 :            :                 {
     431                 :          0 :                     rMark.MarkToMulti();
     432         [ #  # ]:          0 :                     if ( rMark.IsMultiMarked() )
     433                 :            :                     {
     434                 :          0 :                         SCTAB i=1;
     435         [ #  # ]:          0 :                         String aBaseName;
     436                 :          0 :                         rtl::OUString aName;
     437                 :          0 :                         rtl::OUString aComment;
     438                 :          0 :                         Color  aColor;
     439                 :            :                         sal_uInt16 nFlags;
     440                 :            : 
     441                 :          0 :                         rtl::OUString aTmp;
     442         [ #  # ]:          0 :                         pDoc->GetName(nTab, aTmp);
     443         [ #  # ]:          0 :                         aBaseName = aTmp;
     444         [ #  # ]:          0 :                         aBaseName += '_';
     445 [ #  # ][ #  # ]:          0 :                         aBaseName += ScGlobal::GetRscString(STR_SCENARIO);
     446         [ #  # ]:          0 :                         aBaseName += '_';
     447                 :            : 
     448                 :            :                         //  first test, if the prefix is recognised as valid,
     449                 :            :                         //  else avoid only doubles
     450 [ #  # ][ #  # ]:          0 :                         sal_Bool bPrefix = pDoc->ValidTabName( aBaseName );
     451                 :            :                         OSL_ENSURE(bPrefix, "ungueltiger Tabellenname");
     452                 :            : 
     453 [ #  # ][ #  # ]:          0 :                         while ( pDoc->IsScenario(nTab+i) )
     454                 :          0 :                             i++;
     455                 :            : 
     456                 :            :                         sal_Bool bValid;
     457                 :            :                         SCTAB nDummy;
     458 [ #  # ][ #  # ]:          0 :                         do
                 [ #  # ]
     459                 :            :                         {
     460         [ #  # ]:          0 :                             aName = aBaseName;
     461 [ #  # ][ #  # ]:          0 :                             aName += String::CreateFromInt32( i );
                 [ #  # ]
     462         [ #  # ]:          0 :                             if (bPrefix)
     463         [ #  # ]:          0 :                                 bValid = pDoc->ValidNewTabName( aName );
     464                 :            :                             else
     465         [ #  # ]:          0 :                                 bValid = !pDoc->GetTable( aName, nDummy );
     466                 :          0 :                             ++i;
     467                 :            :                         }
     468                 :            :                         while ( !bValid && i <= MAXTAB + 2 );
     469                 :            : 
     470         [ #  # ]:          0 :                         if ( pReqArgs != NULL )
     471                 :            :                         {
     472         [ #  # ]:          0 :                             String aArgName;
     473         [ #  # ]:          0 :                             String aArgComment;
     474                 :            :                             const SfxPoolItem* pItem;
     475 [ #  # ][ #  # ]:          0 :                             if ( pReqArgs->GetItemState( SID_SCENARIOS, sal_True, &pItem ) == SFX_ITEM_SET )
     476         [ #  # ]:          0 :                                 aArgName = ((const SfxStringItem*)pItem)->GetValue();
     477 [ #  # ][ #  # ]:          0 :                             if ( pReqArgs->GetItemState( SID_NEW_TABLENAME, sal_True, &pItem ) == SFX_ITEM_SET )
     478         [ #  # ]:          0 :                                 aArgComment = ((const SfxStringItem*)pItem)->GetValue();
     479                 :            : 
     480                 :          0 :                             aColor = Color( COL_LIGHTGRAY );        // Default
     481                 :          0 :                             nFlags = 0;                             // not-TwoWay
     482                 :            : 
     483         [ #  # ]:          0 :                             pTabViewShell->MakeScenario( aArgName, aArgComment, aColor, nFlags );
     484 [ #  # ][ #  # ]:          0 :                             if( ! rReq.IsAPI() )
     485 [ #  # ][ #  # ]:          0 :                                 rReq.Done();
                 [ #  # ]
     486                 :            :                         }
     487                 :            :                         else
     488                 :            :                         {
     489         [ #  # ]:          0 :                             sal_Bool bSheetProtected = pDoc->IsTabProtected(nTab);
     490         [ #  # ]:          0 :                             ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
     491                 :            :                             OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
     492                 :            : 
     493 [ #  # ][ #  # ]:          0 :                             AbstractScNewScenarioDlg* pNewDlg = pFact->CreateScNewScenarioDlg( pTabViewShell->GetDialogParent(), aName, RID_SCDLG_NEWSCENARIO, false,bSheetProtected);
         [ #  # ][ #  # ]
     494                 :            :                             OSL_ENSURE(pNewDlg, "Dialog create fail!");
     495 [ #  # ][ #  # ]:          0 :                             if ( pNewDlg->Execute() == RET_OK )
     496                 :            :                             {
     497         [ #  # ]:          0 :                                 pNewDlg->GetScenarioData( aName, aComment, aColor, nFlags );
     498 [ #  # ][ #  # ]:          0 :                                 pTabViewShell->MakeScenario( aName, aComment, aColor, nFlags );
         [ #  # ][ #  # ]
                 [ #  # ]
     499                 :            : 
     500 [ #  # ][ #  # ]:          0 :                                 rReq.AppendItem( SfxStringItem( SID_SCENARIOS, aName ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     501 [ #  # ][ #  # ]:          0 :                                 rReq.AppendItem( SfxStringItem( SID_NEW_TABLENAME, aComment ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     502         [ #  # ]:          0 :                                 rReq.Done();
     503                 :            :                             }
     504 [ #  # ][ #  # ]:          0 :                             delete pNewDlg;
     505         [ #  # ]:          0 :                         }
     506                 :            :                     }
     507         [ #  # ]:          0 :                     else if( ! rReq.IsAPI() )
     508                 :            :                     {
     509                 :          0 :                         pTabViewShell->ErrorMessage(STR_ERR_NEWSCENARIO);
     510                 :            :                     }
     511                 :            :                 }
     512                 :            :             }
     513                 :          0 :             break;
     514                 :            : 
     515                 :            : 
     516                 :            :         case SID_SELECTALL:
     517                 :            :             {
     518                 :          0 :                 pTabViewShell->SelectAll();
     519                 :          0 :                 rReq.Done();
     520                 :            :             }
     521                 :          0 :             break;
     522                 :            : 
     523                 :            :         //----------------------------------------------------------------
     524                 :            : 
     525                 :            :         case FID_ROW_HEIGHT:
     526                 :            :             {
     527         [ #  # ]:          0 :                 if ( pReqArgs )
     528                 :            :                 {
     529                 :          0 :                     const SfxUInt16Item&  rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_ROW_HEIGHT );
     530                 :            : 
     531                 :            :                     // #101390#; the value of the macro is in HMM so use HMMToTwips to convert
     532                 :            :                     pTabViewShell->SetMarkedWidthOrHeight( false, SC_SIZE_DIRECT,
     533                 :          0 :                                     sal::static_int_cast<sal_uInt16>( HMMToTwips(rUInt16Item.GetValue()) ) );
     534         [ #  # ]:          0 :                     if( ! rReq.IsAPI() )
     535                 :          0 :                         rReq.Done();
     536                 :            :                 }
     537                 :            :                 else
     538                 :            :                 {
     539                 :          0 :                     ScViewData* pData      = GetViewData();
     540                 :          0 :                     FieldUnit   eMetric    = SC_MOD()->GetAppOptions().GetAppMetric();
     541                 :            :                     sal_uInt16      nCurHeight = pData->GetDocument()->
     542                 :            :                                                 GetRowHeight( pData->GetCurY(),
     543                 :          0 :                                                               pData->GetTabNo() );
     544                 :          0 :                     ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
     545                 :            :                     OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
     546                 :            : 
     547                 :            :                     AbstractScMetricInputDlg* pDlg = pFact->CreateScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_ROW_MAN,
     548                 :            :                                                                                     nCurHeight,
     549                 :            :                                                                                     ScGlobal::nStdRowHeight,
     550                 :            :                                                                                     RID_SCDLG_ROW_MAN,
     551                 :            :                                                                                     eMetric,
     552                 :            :                                                                                     2,
     553                 :          0 :                                                                                     MAX_ROW_HEIGHT);
     554                 :            :                     OSL_ENSURE(pDlg, "Dialog create fail!");
     555                 :            : 
     556         [ #  # ]:          0 :                     if ( pDlg->Execute() == RET_OK )
     557                 :            :                     {
     558                 :          0 :                         long nVal = pDlg->GetInputValue();
     559                 :          0 :                         pTabViewShell->SetMarkedWidthOrHeight( false, SC_SIZE_DIRECT, (sal_uInt16)nVal );
     560                 :            : 
     561                 :            :                         // #101390#; the value of the macro should be in HMM so use TwipsToEvenHMM to convert
     562         [ #  # ]:          0 :                         rReq.AppendItem( SfxUInt16Item( FID_ROW_HEIGHT, (sal_uInt16)TwipsToEvenHMM(nVal) ) );
     563                 :          0 :                         rReq.Done();
     564                 :            : 
     565                 :            :                     }
     566         [ #  # ]:          0 :                     delete pDlg;
     567                 :            :                 }
     568                 :            :             }
     569                 :          0 :             break;
     570                 :            : 
     571                 :            :         case FID_ROW_OPT_HEIGHT:
     572                 :            :             {
     573         [ #  # ]:          0 :                 if ( pReqArgs )
     574                 :            :                 {
     575                 :          0 :                     const SfxUInt16Item&  rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_ROW_OPT_HEIGHT );
     576                 :            : 
     577                 :            :                     // #101390#; the value of the macro is in HMM so use HMMToTwips to convert
     578                 :            :                     pTabViewShell->SetMarkedWidthOrHeight( false, SC_SIZE_OPTIMAL,
     579                 :          0 :                                     sal::static_int_cast<sal_uInt16>( HMMToTwips(rUInt16Item.GetValue()) ) );
     580                 :          0 :                     ScGlobal::nLastRowHeightExtra = rUInt16Item.GetValue();
     581                 :            : 
     582         [ #  # ]:          0 :                     if( ! rReq.IsAPI() )
     583                 :          0 :                         rReq.Done();
     584                 :            :                 }
     585                 :            :                 else
     586                 :            :                 {
     587                 :          0 :                     FieldUnit eMetric = SC_MOD()->GetAppOptions().GetAppMetric();
     588                 :            : 
     589                 :          0 :                     ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
     590                 :            :                     OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
     591                 :            : 
     592                 :            :                     AbstractScMetricInputDlg* pDlg = pFact->CreateScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_ROW_OPT,
     593                 :            :                                                                                     ScGlobal::nLastRowHeightExtra,
     594                 :            :                                                                                     0,
     595                 :            :                                                                                     RID_SCDLG_ROW_OPT,
     596                 :            :                                                                                     eMetric,
     597                 :            :                                                                                     1,
     598                 :          0 :                                                                                     MAX_EXTRA_HEIGHT);
     599                 :            :                     OSL_ENSURE(pDlg, "Dialog create fail!");
     600                 :            : 
     601         [ #  # ]:          0 :                     if ( pDlg->Execute() == RET_OK )
     602                 :            :                     {
     603                 :          0 :                         long nVal = pDlg->GetInputValue();
     604                 :          0 :                         pTabViewShell->SetMarkedWidthOrHeight( false, SC_SIZE_OPTIMAL, (sal_uInt16)nVal );
     605                 :          0 :                         ScGlobal::nLastRowHeightExtra = nVal;
     606                 :            : 
     607                 :            :                         // #101390#; the value of the macro should be in HMM so use TwipsToEvenHMM to convert
     608         [ #  # ]:          0 :                         rReq.AppendItem( SfxUInt16Item( FID_ROW_OPT_HEIGHT, (sal_uInt16)TwipsToEvenHMM(nVal) ) );
     609                 :          0 :                         rReq.Done();
     610                 :            : 
     611                 :            :                     }
     612         [ #  # ]:          0 :                     delete pDlg;
     613                 :            :                 }
     614                 :            :             }
     615                 :          0 :             break;
     616                 :            : 
     617                 :            :         case FID_COL_WIDTH:
     618                 :            :             {
     619         [ #  # ]:          0 :                 if ( pReqArgs )
     620                 :            :                 {
     621                 :          0 :                     const SfxUInt16Item&  rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_COL_WIDTH );
     622                 :            : 
     623                 :            :                     // #101390#; the value of the macro is in HMM so use HMMToTwips to convert
     624                 :            :                     pTabViewShell->SetMarkedWidthOrHeight( sal_True, SC_SIZE_DIRECT,
     625                 :          0 :                                     sal::static_int_cast<sal_uInt16>( HMMToTwips(rUInt16Item.GetValue()) ) );
     626         [ #  # ]:          0 :                     if( ! rReq.IsAPI() )
     627                 :          0 :                         rReq.Done();
     628                 :            :                 }
     629                 :            :                 else
     630                 :            :                 {
     631                 :          0 :                     FieldUnit   eMetric    = SC_MOD()->GetAppOptions().GetAppMetric();
     632                 :          0 :                     ScViewData* pData      = GetViewData();
     633                 :            :                     sal_uInt16      nCurHeight = pData->GetDocument()->
     634                 :          0 :                                                 GetColWidth( pData->GetCurX(),
     635                 :          0 :                                                              pData->GetTabNo() );
     636                 :          0 :                     ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
     637                 :            :                     OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
     638                 :            : 
     639                 :            :                     AbstractScMetricInputDlg* pDlg = pFact->CreateScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_COL_MAN,
     640                 :            :                                                                                     nCurHeight,
     641                 :            :                                                                                     STD_COL_WIDTH,
     642                 :            :                                                                                     RID_SCDLG_COL_MAN,
     643                 :            :                                                                                     eMetric,
     644                 :            :                                                                                     2,
     645                 :          0 :                                                                                     MAX_COL_WIDTH);
     646                 :            :                     OSL_ENSURE(pDlg, "Dialog create fail!");
     647                 :            : 
     648         [ #  # ]:          0 :                     if ( pDlg->Execute() == RET_OK )
     649                 :            :                     {
     650                 :          0 :                         long nVal = pDlg->GetInputValue();
     651                 :          0 :                         pTabViewShell->SetMarkedWidthOrHeight( sal_True, SC_SIZE_DIRECT, (sal_uInt16)nVal );
     652                 :            : 
     653                 :            :                         // #101390#; the value of the macro should be in HMM so use TwipsToEvenHMM to convert
     654         [ #  # ]:          0 :                         rReq.AppendItem( SfxUInt16Item( FID_COL_WIDTH, (sal_uInt16)TwipsToEvenHMM(nVal)) );
     655                 :          0 :                         rReq.Done();
     656                 :            : 
     657                 :            :                     }
     658         [ #  # ]:          0 :                     delete pDlg;
     659                 :            :                 }
     660                 :            :             }
     661                 :          0 :             break;
     662                 :            : 
     663                 :            :         case FID_COL_OPT_WIDTH:
     664                 :            :             {
     665         [ #  # ]:          0 :                 if ( pReqArgs )
     666                 :            :                 {
     667                 :          0 :                     const SfxUInt16Item&  rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_COL_OPT_WIDTH );
     668                 :            : 
     669                 :            :                     // #101390#; the value of the macro is in HMM so use HMMToTwips to convert
     670                 :            :                     pTabViewShell->SetMarkedWidthOrHeight( sal_True, SC_SIZE_OPTIMAL,
     671                 :          0 :                                     sal::static_int_cast<sal_uInt16>( HMMToTwips(rUInt16Item.GetValue()) ) );
     672                 :          0 :                     ScGlobal::nLastColWidthExtra = rUInt16Item.GetValue();
     673                 :            : 
     674         [ #  # ]:          0 :                     if( ! rReq.IsAPI() )
     675                 :          0 :                         rReq.Done();
     676                 :            :                 }
     677                 :            :                 else
     678                 :            :                 {
     679                 :          0 :                     FieldUnit eMetric = SC_MOD()->GetAppOptions().GetAppMetric();
     680                 :            : 
     681                 :          0 :                     ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
     682                 :            :                     OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
     683                 :            : 
     684                 :            :                     AbstractScMetricInputDlg* pDlg = pFact->CreateScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_COL_OPT,
     685                 :            :                                                                                     ScGlobal::nLastColWidthExtra,
     686                 :            :                                                                                     STD_EXTRA_WIDTH,
     687                 :            :                                                                                     RID_SCDLG_COL_OPT,
     688                 :            :                                                                                     eMetric,
     689                 :            :                                                                                     1,
     690                 :          0 :                                                                                     MAX_EXTRA_WIDTH);
     691                 :            :                     OSL_ENSURE(pDlg, "Dialog create fail!");
     692         [ #  # ]:          0 :                     if ( pDlg->Execute() == RET_OK )
     693                 :            :                     {
     694                 :          0 :                         long nVal = pDlg->GetInputValue();
     695                 :          0 :                         pTabViewShell->SetMarkedWidthOrHeight( sal_True, SC_SIZE_OPTIMAL, (sal_uInt16)nVal );
     696                 :          0 :                         ScGlobal::nLastColWidthExtra = nVal;
     697                 :            : 
     698                 :            :                         // #101390#; the value of the macro should be in HMM so use TwipsToEvenHMM to convert
     699         [ #  # ]:          0 :                         rReq.AppendItem( SfxUInt16Item( FID_COL_OPT_WIDTH, (sal_uInt16)TwipsToEvenHMM(nVal) ) );
     700                 :          0 :                         rReq.Done();
     701                 :            :                     }
     702         [ #  # ]:          0 :                     delete pDlg;
     703                 :            :                 }
     704                 :            :             }
     705                 :          0 :             break;
     706                 :            : 
     707                 :            :         case FID_COL_OPT_DIRECT:
     708                 :          0 :             pTabViewShell->SetMarkedWidthOrHeight( sal_True, SC_SIZE_OPTIMAL, STD_EXTRA_WIDTH );
     709                 :          0 :             rReq.Done();
     710                 :          0 :             break;
     711                 :            : 
     712                 :            :         case FID_ROW_HIDE:
     713                 :          0 :             pTabViewShell->SetMarkedWidthOrHeight( false, SC_SIZE_DIRECT, 0 );
     714                 :          0 :             rReq.Done();
     715                 :          0 :             break;
     716                 :            :         case FID_ROW_SHOW:
     717                 :          0 :             pTabViewShell->SetMarkedWidthOrHeight( false, SC_SIZE_SHOW, 0 );
     718                 :          0 :             rReq.Done();
     719                 :          0 :             break;
     720                 :            :         case FID_COL_HIDE:
     721                 :          0 :             pTabViewShell->SetMarkedWidthOrHeight( sal_True, SC_SIZE_DIRECT, 0 );
     722                 :          0 :             rReq.Done();
     723                 :          0 :             break;
     724                 :            :         case FID_COL_SHOW:
     725                 :          0 :             pTabViewShell->SetMarkedWidthOrHeight( sal_True, SC_SIZE_SHOW, 0 );
     726                 :          0 :             rReq.Done();
     727                 :          0 :             break;
     728                 :            : 
     729                 :            :         //----------------------------------------------------------------
     730                 :            : 
     731                 :            : 
     732                 :            :         case SID_CELL_FORMAT_RESET:
     733                 :            :             {
     734                 :          0 :                 pTabViewShell->DeleteContents( IDF_HARDATTR | IDF_EDITATTR );
     735                 :          0 :                 rReq.Done();
     736                 :            :             }
     737                 :          0 :             break;
     738                 :            : 
     739                 :            :         case FID_MERGE_ON:
     740                 :            :         case FID_MERGE_OFF:
     741                 :            :         case FID_MERGE_TOGGLE:
     742                 :            :         {
     743         [ #  # ]:          0 :             if ( !GetViewData()->GetDocument()->GetChangeTrack() )
     744                 :            :             {
     745                 :            :                 // test whether to merge or to split
     746                 :          0 :                 bool bMerge = false;
     747                 :          0 :                 sal_Bool bCenter = false;
     748   [ #  #  #  # ]:          0 :                 switch( nSlot )
     749                 :            :                 {
     750                 :            :                     case FID_MERGE_ON:
     751                 :          0 :                         bMerge = true;
     752                 :          0 :                     break;
     753                 :            :                     case FID_MERGE_OFF:
     754                 :          0 :                         bMerge = false;
     755                 :          0 :                     break;
     756                 :            :                     case FID_MERGE_TOGGLE:
     757                 :            :                     {
     758                 :          0 :                         bCenter = true;
     759                 :          0 :                         SfxPoolItem* pItem = 0;
     760 [ #  # ][ #  # ]:          0 :                         if( rBindings.QueryState( nSlot, pItem ) >= SFX_ITEM_DEFAULT )
     761                 :          0 :                             bMerge = !static_cast< SfxBoolItem* >( pItem )->GetValue();
     762                 :            :                     }
     763                 :          0 :                     break;
     764                 :            :                 }
     765                 :            : 
     766         [ #  # ]:          0 :                 if( bMerge )
     767                 :            :                 {
     768                 :            :                     // merge - check if to move contents of covered cells
     769                 :          0 :                     sal_Bool bMoveContents = false;
     770         [ #  # ]:          0 :                     sal_Bool bApi = rReq.IsAPI();
     771                 :            :                     const SfxPoolItem* pItem;
     772 [ #  # ][ #  # ]:          0 :                     if ( pReqArgs &&
                 [ #  # ]
     773         [ #  # ]:          0 :                         pReqArgs->GetItemState(nSlot, sal_True, &pItem) == SFX_ITEM_SET )
     774                 :            :                     {
     775                 :            :                         OSL_ENSURE(pItem && pItem->ISA(SfxBoolItem), "falsches Item");
     776                 :          0 :                         bMoveContents = ((const SfxBoolItem*)pItem)->GetValue();
     777                 :            :                     }
     778                 :            : 
     779 [ #  # ][ #  # ]:          0 :                     if (pTabViewShell->MergeCells( bApi, bMoveContents, true, bCenter ))
     780                 :            :                     {
     781 [ #  # ][ #  # ]:          0 :                         if (!bApi && bMoveContents)             // "yes" clicked in dialog
     782 [ #  # ][ #  # ]:          0 :                             rReq.AppendItem( SfxBoolItem( nSlot, bMoveContents ) );
                 [ #  # ]
     783         [ #  # ]:          0 :                         rBindings.Invalidate( nSlot );
     784         [ #  # ]:          0 :                         rReq.Done();
     785                 :            :                     }
     786                 :            :                 }
     787                 :            :                 else
     788                 :            :                 {
     789                 :            :                     // split cells
     790         [ #  # ]:          0 :                     if (pTabViewShell->RemoveMerge())
     791                 :            :                     {
     792                 :          0 :                         rBindings.Invalidate( nSlot );
     793                 :          0 :                         rReq.Done();
     794                 :            :                     }
     795                 :            :                 }
     796                 :          0 :                 break;
     797                 :            :             }
     798                 :            :         }
     799                 :          0 :         break;
     800                 :            : 
     801                 :            :         case SID_AUTOFORMAT:
     802                 :            :             {
     803         [ #  # ]:          0 :                 Window* pDlgParent = pTabViewShell->GetDialogParent();
     804                 :            :                 SCCOL nStartCol;
     805                 :            :                 SCROW nStartRow;
     806                 :            :                 SCTAB nStartTab;
     807                 :            :                 SCCOL nEndCol;
     808                 :            :                 SCROW nEndRow;
     809                 :            :                 SCTAB nEndTab;
     810                 :            : 
     811         [ #  # ]:          0 :                 const ScMarkData& rMark = GetViewData()->GetMarkData();
     812 [ #  # ][ #  # ]:          0 :                 if ( !rMark.IsMarked() && !rMark.IsMultiMarked() )
                 [ #  # ]
     813         [ #  # ]:          0 :                     pTabViewShell->MarkDataArea( sal_True );
     814                 :            : 
     815                 :            :                 GetViewData()->GetSimpleArea( nStartCol,nStartRow,nStartTab,
     816         [ #  # ]:          0 :                                               nEndCol,nEndRow,nEndTab );
     817                 :            : 
     818   [ #  #  #  # ]:          0 :                 if (   ( Abs((SCsCOL)nEndCol-(SCsCOL)nStartCol) > 1 )
                 [ #  # ]
     819                 :          0 :                     && ( Abs((SCsROW)nEndRow-(SCsROW)nStartRow) > 1 ) )
     820                 :            :                 {
     821         [ #  # ]:          0 :                     if ( pReqArgs )
     822                 :            :                     {
     823         [ #  # ]:          0 :                         const SfxStringItem& rNameItem = (const SfxStringItem&)pReqArgs->Get( SID_AUTOFORMAT );
     824         [ #  # ]:          0 :                         ScAutoFormat* pFormat = ScGlobal::GetOrCreateAutoFormat();
     825 [ #  # ][ #  # ]:          0 :                         ScAutoFormat::const_iterator it = pFormat->find(rNameItem.GetValue());
                 [ #  # ]
     826 [ #  # ][ #  # ]:          0 :                         ScAutoFormat::const_iterator itBeg = pFormat->begin();
     827         [ #  # ]:          0 :                         size_t nIndex = std::distance(itBeg, it);
     828                 :            : 
     829         [ #  # ]:          0 :                         pTabViewShell->AutoFormat( nIndex );
     830                 :            : 
     831 [ #  # ][ #  # ]:          0 :                         if( ! rReq.IsAPI() )
     832         [ #  # ]:          0 :                             rReq.Done();
     833                 :            :                     }
     834                 :            :                     else
     835                 :            :                     {
     836         [ #  # ]:          0 :                         ScGlobal::ClearAutoFormat();
     837         [ #  # ]:          0 :                         ScAutoFormatData* pNewEntry = pTabViewShell->CreateAutoFormatData();
     838         [ #  # ]:          0 :                         ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
     839                 :            :                         OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
     840                 :            : 
     841 [ #  # ][ #  # ]:          0 :                         AbstractScAutoFormatDlg* pDlg = pFact->CreateScAutoFormatDlg( pDlgParent, ScGlobal::GetOrCreateAutoFormat(), pNewEntry,GetViewData()->GetDocument(), RID_SCDLG_AUTOFORMAT );
                 [ #  # ]
     842                 :            :                         OSL_ENSURE(pDlg, "Dialog create fail!");
     843                 :            : 
     844 [ #  # ][ #  # ]:          0 :                         if ( pDlg->Execute() == RET_OK )
     845                 :            :                         {
     846 [ #  # ][ #  # ]:          0 :                             ScEditableTester aTester( pTabViewShell );
     847         [ #  # ]:          0 :                             if ( !aTester.IsEditable() )
     848                 :            :                             {
     849 [ #  # ][ #  # ]:          0 :                                 pTabViewShell->ErrorMessage(aTester.GetMessageId());
     850                 :            :                             }
     851                 :            :                             else
     852                 :            :                             {
     853 [ #  # ][ #  # ]:          0 :                                 pTabViewShell->AutoFormat( pDlg->GetIndex() );
     854                 :            : 
     855 [ #  # ][ #  # ]:          0 :                                 rReq.AppendItem( SfxStringItem( SID_AUTOFORMAT, pDlg->GetCurrFormatName() ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     856         [ #  # ]:          0 :                                 rReq.Done();
     857                 :          0 :                             }
     858                 :            :                         }
     859 [ #  # ][ #  # ]:          0 :                         delete pDlg;
     860 [ #  # ][ #  # ]:          0 :                         delete pNewEntry;
     861                 :            :                     }
     862                 :            :                 }
     863                 :            :                 else
     864                 :            :                     ErrorBox( pDlgParent, WinBits( WB_OK | WB_DEF_OK ),
     865 [ #  # ][ #  # ]:          0 :                               ScGlobal::GetRscString(STR_INVALID_AFAREA) ).Execute();
         [ #  # ][ #  # ]
     866                 :            :             }
     867                 :          0 :             break;
     868                 :            : 
     869                 :            :         case SID_CANCEL:
     870                 :            :             {
     871         [ #  # ]:          0 :                 if (GetViewData()->HasEditView(GetViewData()->GetActivePart()))
     872                 :          0 :                     pScMod->InputCancelHandler();
     873         [ #  # ]:          0 :                 else if (pTabViewShell->HasPaintBrush())
     874                 :          0 :                     pTabViewShell->ResetBrushDocument();            // abort format paint brush
     875         [ #  # ]:          0 :                 else if (pTabViewShell->HasHintWindow())
     876                 :          0 :                     pTabViewShell->RemoveHintWindow();
     877         [ #  # ]:          0 :                 else if( ScViewUtil::IsFullScreen( *pTabViewShell ) )
     878                 :          0 :                     ScViewUtil::SetFullScreen( *pTabViewShell, false );
     879                 :            :                 else
     880                 :            :                 {
     881                 :            :                     // TODO/LATER: when is this code executed?
     882                 :          0 :                     pTabViewShell->Escape();
     883                 :            :                 }
     884                 :            :             }
     885                 :          0 :             break;
     886                 :            : 
     887                 :            :         case SID_DATA_SELECT:
     888                 :          0 :             pTabViewShell->StartDataSelect();
     889                 :          0 :             break;
     890                 :            : 
     891                 :            :         case SID_DETECTIVE_FILLMODE:
     892                 :            :             {
     893                 :          0 :                 sal_Bool bOldMode = pTabViewShell->IsAuditShell();
     894                 :          0 :                 pTabViewShell->SetAuditShell( !bOldMode );
     895                 :          0 :                 pTabViewShell->Invalidate( nSlot );
     896                 :            :             }
     897                 :          0 :             break;
     898                 :            : 
     899                 :            :         //  ----------------------------------------------------------------
     900                 :            : 
     901                 :            :         case FID_INPUTLINE_STATUS:
     902                 :            :             OSL_FAIL("Execute von InputLine-Status");
     903                 :          0 :             break;
     904                 :            : 
     905                 :            :         case SID_STATUS_DOCPOS:
     906                 :            :             // Launch navigator.
     907                 :          0 :             GetViewData()->GetDispatcher().Execute(
     908                 :          0 :                 SID_NAVIGATOR, SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD );
     909                 :          0 :             break;
     910                 :            : 
     911                 :            :         case SID_MARKAREA:
     912                 :            :             // called from Basic at the hidden view to select a range in the visible view
     913                 :            :             OSL_FAIL("old slot SID_MARKAREA");
     914                 :          0 :             break;
     915                 :            : 
     916                 :            :         default:
     917                 :            :             OSL_FAIL("Unbekannter Slot bei ScCellShell::Execute");
     918                 :          0 :             break;
     919                 :            :     }
     920                 :          0 : }
     921                 :            : 
     922                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10