LCOV - code coverage report
Current view: top level - sc/source/ui/miscdlgs - crnrdlg.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 485 0.0 %
Date: 2014-04-14 Functions: 0 36 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include "reffact.hxx"
      21             : #include "document.hxx"
      22             : #include "scresid.hxx"
      23             : #include "globstr.hrc"
      24             : #include "docsh.hxx"
      25             : 
      26             : #define _CRNRDLG_CXX
      27             : #include "crnrdlg.hxx"
      28             : #undef _CRNRDLG_CXX
      29             : #include <vcl/msgbox.hxx>
      30             : #include <boost/scoped_array.hpp>
      31             : 
      32             : #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute()
      33             : #define QUERYBOX(m) QueryBox(this,WinBits(WB_YES_NO|WB_DEF_YES),m).Execute()
      34             : 
      35             : const sal_uLong nEntryDataCol = 0;
      36             : const sal_uLong nEntryDataRow = 1;
      37             : const sal_uLong nEntryDataDelim = 2;
      38             : 
      39             : //  class ScColRowNameRangesDlg
      40             : 
      41             : 
      42             : /*************************************************************************
      43             : #*  Member:     ScColRowNameRangesDlg
      44             : #*------------------------------------------------------------------------
      45             : #*
      46             : #*  Klasse:     ScColRowNameRangesDlg
      47             : #*
      48             : #*  Funktion:   Konstruktor der Klasse ScColRowNameRangesDlg.
      49             : #*              Initialisieren der Klassen- Mitglieder,
      50             : #*              Uebernahme der Range- Angaben und Aufruf
      51             : #*              der eigentlichen Initialisierungsroutine
      52             : #*
      53             : #*  Input:      Sfx- Verknuepfungen
      54             : #*              Parent- Window
      55             : #*              SCViewData
      56             : #*
      57             : #*  Output:     ---
      58             : #*
      59             : #************************************************************************/
      60             : 
      61           0 : ScColRowNameRangesDlg::ScColRowNameRangesDlg( SfxBindings* pB,
      62             :                                 SfxChildWindow* pCW,
      63             :                                 Window* pParent,
      64             :                                 ScViewData* ptrViewData )
      65             : 
      66             :     :   ScAnyRefDlg ( pB, pCW, pParent, "NameRangesDialog" , "modules/scalc/ui/namerangesdialog.ui" ),
      67             : 
      68             :         pViewData       ( ptrViewData ),
      69           0 :         pDoc            ( ptrViewData->GetDocument() ),
      70             : 
      71             :         pEdActive       ( NULL ),
      72           0 :         bDlgLostFocus   ( false )
      73             : {
      74           0 :     get(pLbRange,"range");
      75             : 
      76           0 :     get(pEdAssign,"edassign");
      77           0 :     get(pRbAssign,"rbassign");
      78           0 :     pRbAssign->SetReferences(this, pEdAssign);
      79           0 :     pEdAssign->SetReferences(this, get<VclFrame>("rangeframe")->get_label_widget());
      80           0 :     get(pBtnColHead,"colhead");
      81           0 :     get(pBtnRowHead,"rowhead");
      82           0 :     get(pEdAssign2,"edassign2");
      83           0 :     get(pRbAssign2,"rbassign2");
      84           0 :     pRbAssign2->SetReferences(this, pEdAssign2);
      85           0 :     pEdAssign2->SetReferences(this, get<FixedText>("datarange"));
      86             : 
      87           0 :     get(pBtnOk,"ok");
      88           0 :     get(pBtnCancel,"cancel");
      89           0 :     get(pBtnAdd,"add");
      90           0 :     get(pBtnRemove,"delete");
      91             : 
      92           0 :     xColNameRanges = pDoc->GetColNameRanges()->Clone();
      93           0 :     xRowNameRanges = pDoc->GetRowNameRanges()->Clone();
      94           0 :     Init();
      95           0 : }
      96             : 
      97             : 
      98             : /*************************************************************************
      99             : #*  Member:     ~ScColRowNameRangesDlg
     100             : #*------------------------------------------------------------------------
     101             : #*
     102             : #*  Klasse:     ScColRowNameRangesDlg
     103             : #*
     104             : #*  Funktion:   Destruktor der Klasse
     105             : #*
     106             : #*  Input:      ---
     107             : #*
     108             : #*  Output:     ---
     109             : #*
     110             : #************************************************************************/
     111             : 
     112           0 : ScColRowNameRangesDlg::~ScColRowNameRangesDlg()
     113             : {
     114           0 : }
     115             : 
     116             : 
     117             : /*************************************************************************
     118             : #*  Member:     Init
     119             : #*------------------------------------------------------------------------
     120             : #*
     121             : #*  Klasse:     ScColRowNameRangesDlg
     122             : #*
     123             : #*  Funktion:   Initialisierungs- Routine:
     124             : #*              Umlenken der Event- Handler und einstellen der
     125             : #*              Startparameter.
     126             : #*
     127             : #*  Input:      ---
     128             : #*
     129             : #*  Output:     ---
     130             : #*
     131             : #************************************************************************/
     132             : 
     133           0 : void ScColRowNameRangesDlg::Init()
     134             : {
     135           0 :     pBtnOk->SetClickHdl      ( LINK( this, ScColRowNameRangesDlg, OkBtnHdl ) );
     136           0 :     pBtnCancel->SetClickHdl  ( LINK( this, ScColRowNameRangesDlg, CancelBtnHdl ) );
     137           0 :     pBtnAdd->SetClickHdl     ( LINK( this, ScColRowNameRangesDlg, AddBtnHdl ) );
     138           0 :     pBtnRemove->SetClickHdl  ( LINK( this, ScColRowNameRangesDlg, RemoveBtnHdl ) );
     139           0 :     pLbRange->SetSelectHdl   ( LINK( this, ScColRowNameRangesDlg, Range1SelectHdl ) );
     140           0 :     pEdAssign->SetModifyHdl  ( LINK( this, ScColRowNameRangesDlg, Range1DataModifyHdl ) );
     141           0 :     pBtnColHead->SetClickHdl ( LINK( this, ScColRowNameRangesDlg, ColClickHdl ) );
     142           0 :     pBtnRowHead->SetClickHdl ( LINK( this, ScColRowNameRangesDlg, RowClickHdl ) );
     143           0 :     pEdAssign2->SetModifyHdl ( LINK( this, ScColRowNameRangesDlg, Range2DataModifyHdl ) );
     144             : 
     145           0 :     Link aLink = LINK( this, ScColRowNameRangesDlg, GetFocusHdl );
     146           0 :     pEdAssign->SetGetFocusHdl( aLink );
     147           0 :     pRbAssign->SetGetFocusHdl( aLink );
     148           0 :     pEdAssign2->SetGetFocusHdl( aLink );
     149           0 :     pRbAssign2->SetGetFocusHdl( aLink );
     150             : 
     151           0 :     aLink = LINK( this, ScColRowNameRangesDlg, LoseFocusHdl );
     152           0 :     pEdAssign->SetLoseFocusHdl( aLink );
     153           0 :     pRbAssign->SetLoseFocusHdl( aLink );
     154           0 :     pEdAssign2->SetLoseFocusHdl( aLink );
     155           0 :     pRbAssign2->SetLoseFocusHdl( aLink );
     156             : 
     157           0 :     pLbRange->SetDropDownLineCount(10);
     158             : 
     159           0 :     pEdActive = pEdAssign;
     160             : 
     161           0 :     UpdateNames();
     162             : 
     163           0 :     if ( pViewData && pDoc )
     164             :     {
     165           0 :         SCCOL nStartCol = 0;
     166           0 :         SCROW nStartRow = 0;
     167           0 :         SCTAB nStartTab = 0;
     168           0 :         SCCOL nEndCol   = 0;
     169           0 :         SCROW nEndRow   = 0;
     170           0 :         SCTAB nEndTab   = 0;
     171             :         pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab,
     172           0 :                                   nEndCol,   nEndRow,  nEndTab );
     173             :         SetColRowData( ScRange( ScAddress( nStartCol, nStartRow, nStartTab ),
     174           0 :                               ScAddress( nEndCol,   nEndRow,   nEndTab ) ) );
     175             :     }
     176             :     else
     177             :     {
     178           0 :         pBtnColHead->Check( true );
     179           0 :         pBtnRowHead->Check( false );
     180           0 :         pEdAssign->SetText( EMPTY_OUSTRING );
     181           0 :         pEdAssign2->SetText( EMPTY_OUSTRING );
     182             :     }
     183             : 
     184           0 :     pLbRange->SetBorderStyle( WINDOW_BORDER_MONO );
     185           0 :     pBtnColHead->Enable();
     186           0 :     pBtnRowHead->Enable();
     187           0 :     pEdAssign->Enable();
     188           0 :     pEdAssign->GrabFocus();
     189           0 :     pRbAssign->Enable();
     190             : 
     191           0 :     Range1SelectHdl( 0 );
     192           0 : }
     193             : 
     194             : 
     195             : /*************************************************************************
     196             : #*  Member:     SetColRowData
     197             : #*------------------------------------------------------------------------
     198             : #*
     199             : #*  Klasse:     ScColRowNameRangesDlg
     200             : #*
     201             : #*  Funktion:   zugehoerigen Datenbereich eines Beschriftungsbereiches
     202             : #*              auf default Werte setzen und beide Referenz-Edit-Felder
     203             : #*              fuellen.
     204             : #*
     205             : #*  Input:      Einstellbereich fuer Labels
     206             : #*
     207             : #*  Output:     ---
     208             : #*
     209             : #************************************************************************/
     210             : 
     211           0 : void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange, bool bRef)
     212             : {
     213           0 :     theCurData = theCurArea = rLabelRange;
     214           0 :     sal_Bool bValid = sal_True;
     215           0 :     SCCOL nCol1 = theCurArea.aStart.Col();
     216           0 :     SCCOL nCol2 = theCurArea.aEnd.Col();
     217           0 :     SCROW nRow1 = theCurArea.aStart.Row();
     218           0 :     SCROW nRow2 = theCurArea.aEnd.Row();
     219           0 :     if ( (static_cast<SCCOLROW>(nCol2 - nCol1) >= nRow2 - nRow1) || (nCol1 == 0 && nCol2 == MAXCOL) )
     220             :     {   // Spaltenkoepfe und Grenzfall gesamte Tabelle
     221           0 :         pBtnColHead->Check( true );
     222           0 :         pBtnRowHead->Check( false );
     223           0 :         if ( nRow2 == MAXROW  )
     224             :         {
     225           0 :             if ( nRow1 == 0 )
     226           0 :                 bValid = false;     // Grenzfall gesamte Tabelle
     227             :             else
     228             :             {   // Head unten, Data oben
     229           0 :                 theCurData.aStart.SetRow( 0 );
     230           0 :                 theCurData.aEnd.SetRow( nRow1 - 1 );
     231             :             }
     232             :         }
     233             :         else
     234             :         {   // Head oben, Data unten
     235           0 :             theCurData.aStart.SetRow( nRow2 + 1 );
     236           0 :             theCurData.aEnd.SetRow( MAXROW );
     237             :         }
     238             :     }
     239             :     else
     240             :     {   // Zeilenkoepfe
     241           0 :         pBtnRowHead->Check( true );
     242           0 :         pBtnColHead->Check( false );
     243           0 :         if ( nCol2 == MAXCOL )
     244             :         {   // Head rechts, Data links
     245           0 :             theCurData.aStart.SetCol( 0 );
     246           0 :             theCurData.aEnd.SetCol( nCol2 - 1 );
     247             :         }
     248             :         else
     249             :         {   // Head links, Data rechts
     250           0 :             theCurData.aStart.SetCol( nCol2 + 1 );
     251           0 :             theCurData.aEnd.SetCol( MAXCOL );
     252             :         }
     253             :     }
     254           0 :     if ( bValid )
     255             :     {
     256           0 :         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
     257           0 :         OUString aStr(theCurArea.Format(SCR_ABS_3D, pDoc, eConv));
     258             : 
     259           0 :         if(bRef)
     260           0 :             pEdAssign->SetRefString( aStr );
     261             :         else
     262           0 :             pEdAssign->SetText( aStr );
     263             : 
     264           0 :         pEdAssign->SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
     265           0 :         aStr = theCurData.Format(SCR_ABS_3D, pDoc, eConv);
     266             : 
     267           0 :         if(bRef)
     268           0 :             pEdAssign2->SetRefString( aStr );
     269             :         else
     270           0 :             pEdAssign2->SetText( aStr );
     271             :     }
     272             :     else
     273             :     {
     274           0 :         theCurData = theCurArea = ScRange();
     275             : 
     276           0 :         if(bRef)
     277             :         {
     278           0 :             pEdAssign->SetRefString( EMPTY_OUSTRING );
     279           0 :             pEdAssign2->SetRefString( EMPTY_OUSTRING );
     280             :         }
     281             :         else
     282             :         {
     283           0 :             pEdAssign->SetText( EMPTY_OUSTRING );
     284           0 :             pEdAssign2->SetText( EMPTY_OUSTRING );
     285             :         }
     286             : 
     287           0 :         pBtnColHead->Disable();
     288           0 :         pBtnRowHead->Disable();
     289           0 :         pEdAssign2->Disable();
     290           0 :         pRbAssign2->Disable();
     291             :     }
     292           0 : }
     293             : 
     294             : 
     295             : /*************************************************************************
     296             : #*  Member:     AdjustColRowData
     297             : #*------------------------------------------------------------------------
     298             : #*
     299             : #*  Klasse:     ScColRowNameRangesDlg
     300             : #*
     301             : #*  Funktion:   zugehoerigen Datenbereich eines Beschriftungsbereiches
     302             : #*              anpassen und Data-Referenz-Edit-Feld fuellen.
     303             : #*
     304             : #*  Input:      Bereich fuer Labels
     305             : #*
     306             : #*  Output:     ---
     307             : #*
     308             : #************************************************************************/
     309             : 
     310           0 : void ScColRowNameRangesDlg::AdjustColRowData( const ScRange& rDataRange, bool bRef)
     311             : {
     312           0 :     theCurData = rDataRange;
     313           0 :     if ( pBtnColHead->IsChecked() )
     314             :     {   // Datenbereich gleiche Spalten wie Koepfe
     315           0 :         theCurData.aStart.SetCol( theCurArea.aStart.Col() );
     316           0 :         theCurData.aEnd.SetCol( theCurArea.aEnd.Col() );
     317           0 :         if ( theCurData.Intersects( theCurArea ) )
     318             :         {
     319           0 :             SCROW nRow1 = theCurArea.aStart.Row();
     320           0 :             SCROW nRow2 = theCurArea.aEnd.Row();
     321           0 :             if ( nRow1 > 0
     322           0 :               && (theCurData.aEnd.Row() < nRow2 || nRow2 == MAXROW) )
     323             :             {   // Data oben
     324           0 :                 theCurData.aEnd.SetRow( nRow1 - 1 );
     325           0 :                 if ( theCurData.aStart.Row() > theCurData.aEnd.Row() )
     326           0 :                     theCurData.aStart.SetRow( theCurData.aEnd.Row() );
     327             :             }
     328             :             else
     329             :             {   // Data unten
     330           0 :                 theCurData.aStart.SetRow( nRow2 + 1 );
     331           0 :                 if ( theCurData.aStart.Row() > theCurData.aEnd.Row() )
     332           0 :                     theCurData.aEnd.SetRow( theCurData.aStart.Row() );
     333             :             }
     334             :         }
     335             :     }
     336             :     else
     337             :     {   // Datenbereich gleiche Zeilen wie Koepfe
     338           0 :         theCurData.aStart.SetRow( theCurArea.aStart.Row() );
     339           0 :         theCurData.aEnd.SetRow( theCurArea.aEnd.Row() );
     340           0 :         if ( theCurData.Intersects( theCurArea ) )
     341             :         {
     342           0 :             SCCOL nCol1 = theCurArea.aStart.Col();
     343           0 :             SCCOL nCol2 = theCurArea.aEnd.Col();
     344           0 :             if ( nCol1 > 0
     345           0 :               && (theCurData.aEnd.Col() < nCol2 || nCol2 == MAXCOL) )
     346             :             {   // Data links
     347           0 :                 theCurData.aEnd.SetCol( nCol1 - 1 );
     348           0 :                 if ( theCurData.aStart.Col() > theCurData.aEnd.Col() )
     349           0 :                     theCurData.aStart.SetCol( theCurData.aEnd.Col() );
     350             :             }
     351             :             else
     352             :             {   // Data rechts
     353           0 :                 theCurData.aStart.SetCol( nCol2 + 1 );
     354           0 :                 if ( theCurData.aStart.Col() > theCurData.aEnd.Col() )
     355           0 :                     theCurData.aEnd.SetCol( theCurData.aStart.Col() );
     356             :             }
     357             :         }
     358             :     }
     359           0 :     OUString aStr(theCurData.Format(SCR_ABS_3D, pDoc, pDoc->GetAddressConvention()));
     360             : 
     361           0 :     if(bRef)
     362           0 :         pEdAssign2->SetRefString( aStr );
     363             :     else
     364           0 :         pEdAssign2->SetText( aStr );
     365             : 
     366           0 :     pEdAssign2->SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
     367           0 : }
     368             : 
     369             : 
     370             : /*************************************************************************
     371             : #*  Member:     SetReference
     372             : #*------------------------------------------------------------------------
     373             : #*
     374             : #*  Klasse:     ScColRowNameRangesDlg
     375             : #*
     376             : #*  Funktion:   Uebergabe eines mit der Maus selektierten Tabellen-
     377             : #*              bereiches, der dann als neue Selektion im Referenz-
     378             : #*              Fenster angezeigt wird.
     379             : #*
     380             : #*  Input:      Bereich fuer Labels
     381             : #*              Dokumentklasse
     382             : #*
     383             : #*  Output:     ---
     384             : #*
     385             : #************************************************************************/
     386             : 
     387           0 : void ScColRowNameRangesDlg::SetReference( const ScRange& rRef, ScDocument* /* pDoc */ )
     388             : {
     389           0 :     if ( pEdActive )
     390             :     {
     391           0 :         if ( rRef.aStart != rRef.aEnd )
     392           0 :             RefInputStart( pEdActive );
     393             : 
     394           0 :         if ( pEdActive == pEdAssign )
     395           0 :             SetColRowData( rRef, true );
     396             :         else
     397           0 :             AdjustColRowData( rRef, true );
     398           0 :         pBtnColHead->Enable();
     399           0 :         pBtnRowHead->Enable();
     400           0 :         pBtnAdd->Enable();
     401           0 :         pBtnRemove->Disable();
     402             :     }
     403           0 : }
     404             : 
     405             : 
     406             : /*************************************************************************
     407             : #*  Member:     Close
     408             : #*------------------------------------------------------------------------
     409             : #*
     410             : #*  Klasse:     ScColRowNameRangesDlg
     411             : #*
     412             : #*  Funktion:   Schliessen des Fensters
     413             : #*
     414             : #*  Input:      ---
     415             : #*
     416             : #*  Output:     ---
     417             : #*
     418             : #************************************************************************/
     419             : 
     420           0 : bool ScColRowNameRangesDlg::Close()
     421             : {
     422           0 :     return DoClose( ScColRowNameRangesDlgWrapper::GetChildWindowId() );
     423             : }
     424             : 
     425             : 
     426             : /*************************************************************************
     427             : #*  Member:     SetActive
     428             : #*------------------------------------------------------------------------
     429             : #*
     430             : #*  Klasse:     ScColRowNameRangesDlg
     431             : #*
     432             : #*  Funktion:   Aktivieren des Fensters
     433             : #*
     434             : #*  Input:      ---
     435             : #*
     436             : #*  Output:     ---
     437             : #*
     438             : #************************************************************************/
     439             : 
     440           0 : void ScColRowNameRangesDlg::SetActive()
     441             : {
     442           0 :     if ( bDlgLostFocus )
     443             :     {
     444           0 :         bDlgLostFocus = false;
     445           0 :         if( pEdActive )
     446           0 :             pEdActive->GrabFocus();
     447             :     }
     448             :     else
     449           0 :         GrabFocus();
     450             : 
     451           0 :     if( pEdActive == pEdAssign )
     452           0 :         Range1DataModifyHdl( 0 );
     453           0 :     else if( pEdActive == pEdAssign2 )
     454           0 :         Range2DataModifyHdl( 0 );
     455             : 
     456           0 :     RefInputDone();
     457           0 : }
     458             : 
     459             : 
     460             : /*************************************************************************
     461             : #*  Member:     UpdateNames
     462             : #*------------------------------------------------------------------------
     463             : #*
     464             : #*  Klasse:     ScColRowNameRangesDlg
     465             : #*
     466             : #*  Funktion:   Aktualisieren der Namen
     467             : #*
     468             : #*  Input:      ---
     469             : #*
     470             : #*  Output:     ---
     471             : #*
     472             : #************************************************************************/
     473             : 
     474           0 : void ScColRowNameRangesDlg::UpdateNames()
     475             : {
     476           0 :     pLbRange->SetUpdateMode( false );
     477             : 
     478           0 :     pLbRange->Clear();
     479           0 :     aRangeMap.clear();
     480           0 :     pEdAssign->SetText( EMPTY_OUSTRING );
     481             : 
     482             :     size_t nCount, j;
     483             :     sal_uInt16 nPos; //@008 Hilfsvariable q eingefuegt
     484             : 
     485             :     SCCOL nCol1;
     486             :     SCROW nRow1;    //Erweiterung fuer Bereichsnamen
     487             :     SCTAB nTab1;
     488             :     SCCOL nCol2;
     489             :     SCROW nRow2;
     490             :     SCTAB nTab2;
     491           0 :     OUString rString;
     492           0 :     OUString strShow;
     493           0 :     const ScAddress::Details aDetails(pDoc->GetAddressConvention());
     494             : 
     495           0 :     OUString aString;
     496           0 :     OUString strDelim(" --- ");
     497           0 :     aString = strDelim;
     498           0 :     aString += ScGlobal::GetRscString( STR_COLUMN );
     499           0 :     aString += strDelim;
     500           0 :     nPos = pLbRange->InsertEntry( aString );
     501           0 :     pLbRange->SetEntryData( nPos, (void*)nEntryDataDelim );
     502           0 :     if ( (nCount = xColNameRanges->size()) > 0 )
     503             :     {
     504             :         boost::scoped_array<ScRangePair*> ppSortArray(xColNameRanges->CreateNameSortedArray(
     505           0 :                nCount, pDoc ));
     506           0 :         for ( j=0; j < nCount; j++ )
     507             :         {
     508           0 :             const ScRange aRange(ppSortArray[j]->GetRange(0));
     509           0 :             aString = aRange.Format(SCR_ABS_3D, pDoc, aDetails);
     510             : 
     511             :             //@008 Hole Bereichsparameter aus Dok
     512           0 :             ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
     513           0 :                                             nCol2, nRow2, nTab2 );
     514           0 :             SCCOL q=nCol1+3;
     515           0 :             if(q>nCol2) q=nCol2;
     516             :             //@008 Baue String zusammen
     517           0 :             strShow = " [";
     518           0 :             if(pDoc!=NULL)
     519             :             {
     520           0 :                 rString = pDoc->GetString(nCol1, nRow1, nTab1);
     521           0 :                 strShow += rString;
     522           0 :                 for(SCCOL i=nCol1+1;i<=q;i++)
     523             :                 {
     524           0 :                     strShow += ", ";
     525           0 :                     rString = pDoc->GetString(i, nRow1, nTab1);
     526           0 :                     strShow += rString;
     527             :                 }
     528             :             }
     529           0 :             if(q<nCol2) // Zu lang? Ergaenzen um ",..."
     530             :             {
     531           0 :                 strShow += ", ...";
     532             :             }
     533           0 :             strShow += "]";
     534             : 
     535             :             //@008 String einfuegen in Listbox
     536           0 :             OUString aInsStr = aString;
     537           0 :             aInsStr += strShow;
     538           0 :             nPos = pLbRange->InsertEntry( aInsStr );
     539           0 :             aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) );
     540           0 :             pLbRange->SetEntryData( nPos, (void*)nEntryDataCol );
     541           0 :         }
     542             :     }
     543           0 :     aString = strDelim;
     544           0 :     aString += ScGlobal::GetRscString( STR_ROW );
     545           0 :     aString += strDelim;
     546           0 :     nPos = pLbRange->InsertEntry( aString );
     547           0 :     pLbRange->SetEntryData( nPos, (void*)nEntryDataDelim );
     548           0 :     if ( (nCount = xRowNameRanges->size()) > 0 )
     549             :     {
     550             :         boost::scoped_array<ScRangePair*> ppSortArray(xRowNameRanges->CreateNameSortedArray(
     551           0 :                nCount, pDoc ));
     552           0 :         for ( j=0; j < nCount; j++ )
     553             :         {
     554           0 :             const ScRange aRange(ppSortArray[j]->GetRange(0));
     555           0 :             aString = aRange.Format(SCR_ABS_3D, pDoc, aDetails);
     556             : 
     557             :             //@008 Ab hier baue String fuer Zeilen
     558           0 :             ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
     559           0 :                                             nCol2, nRow2, nTab2 );
     560           0 :             SCROW q=nRow1+3;
     561           0 :             if(q>nRow2) q=nRow2;
     562           0 :             strShow = " [";
     563           0 :             if(pDoc!=NULL)
     564             :             {
     565           0 :                 rString = pDoc->GetString(nCol1, nRow1, nTab1);
     566           0 :                 strShow += rString;
     567           0 :                 for(SCROW i=nRow1+1;i<=q;i++)
     568             :                 {
     569           0 :                     strShow += ", ";
     570           0 :                     rString = pDoc->GetString(nCol1, i, nTab1);
     571           0 :                     strShow += rString;
     572             :                 }
     573             :             }
     574           0 :             if(q<nRow2)
     575             :             {
     576           0 :                 strShow += ", ...";
     577             :             }
     578           0 :             strShow += "]";
     579             : 
     580           0 :             OUString aInsStr = aString;
     581           0 :             aInsStr += strShow;
     582           0 :             nPos = pLbRange->InsertEntry( aInsStr );
     583           0 :             aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) );
     584           0 :             pLbRange->SetEntryData( nPos, (void*)nEntryDataRow );
     585           0 :         }
     586             :     }
     587             : 
     588           0 :     pLbRange->SetUpdateMode( true );
     589           0 :     pLbRange->Invalidate();
     590           0 : }
     591             : 
     592             : 
     593             : /*************************************************************************
     594             : #*  Member:     UpdateRangeData
     595             : #*------------------------------------------------------------------------
     596             : #*
     597             : #*  Klasse:     ScColRowNameRangesDlg
     598             : #*
     599             : #*  Funktion:   Aktualisieren der Bereichsdaten
     600             : #*
     601             : #*  Input:      Bereichs-String
     602             : #*              Flag fuer Spalten
     603             : #*
     604             : #*  Output:     ---
     605             : #*
     606             : #************************************************************************/
     607             : 
     608           0 : void ScColRowNameRangesDlg::UpdateRangeData( const ScRange& rRange, bool bColName )
     609             : {
     610           0 :     ScRangePair* pPair = NULL;
     611           0 :     sal_Bool bFound = false;
     612           0 :     if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL )
     613           0 :         bFound = sal_True;
     614           0 :     else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL )
     615           0 :         bFound = sal_True;
     616             : 
     617           0 :     if ( bFound )
     618             :     {
     619           0 :         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
     620           0 :         theCurArea = rRange;
     621           0 :         OUString aStr(theCurArea.Format(SCR_ABS_3D, pDoc, eConv));
     622           0 :         pEdAssign->SetText( aStr );
     623           0 :         pBtnAdd->Disable();
     624           0 :         pBtnRemove->Enable();
     625           0 :         pBtnColHead->Check( bColName );
     626           0 :         pBtnRowHead->Check( !bColName );
     627           0 :         theCurData = pPair->GetRange(1);
     628           0 :         aStr = theCurData.Format(SCR_ABS_3D, pDoc, eConv);
     629           0 :         pEdAssign2->SetText( aStr );
     630             :     }
     631             :     else
     632             :     {
     633           0 :         pBtnAdd->Enable();
     634           0 :         pBtnRemove->Disable();
     635             :     }
     636           0 :     pBtnColHead->Enable();
     637           0 :     pBtnRowHead->Enable();
     638           0 :     pEdAssign2->Enable();
     639           0 :     pRbAssign2->Enable();
     640           0 : }
     641             : 
     642             : 
     643             : /*************************************************************************
     644             : #*  Member:     IsRefInputMode
     645             : #*------------------------------------------------------------------------
     646             : #*
     647             : #*  Klasse:     ScColRowNameRangesDlg
     648             : #*
     649             : #*  Funktion:   Abfragefunktion fuer Referenz- Input- Mode.
     650             : #*
     651             : #*  Input:      Bereichs-String
     652             : #*              Flag fuer Spalten
     653             : #*
     654             : #*  Output:     true, wenn Referenz- Input- Mode
     655             : #*
     656             : #************************************************************************/
     657             : 
     658           0 : bool ScColRowNameRangesDlg::IsRefInputMode() const
     659             : {
     660           0 :     return (pEdActive != NULL);
     661             : }
     662             : 
     663             : 
     664             : // Handler:
     665             : 
     666             : 
     667             : /*************************************************************************
     668             : #*  Handler:    OkBtnHdl
     669             : #*------------------------------------------------------------------------
     670             : #*
     671             : #*  Klasse:     ScColRowNameRangesDlg
     672             : #*
     673             : #*  Funktion:   Wird ausgeloest, wenn der OK- Button gedrueckt wurde.
     674             : #*              Hinzufuegen- Button ausloesen, und die neu einge-
     675             : #*              stellten Bereiche ans Dokument uebergeben.
     676             : #*              Fensterschliessen- Anweisung ausloesen.
     677             : #*  Input:      ---
     678             : #*
     679             : #*  Output:     ---
     680             : #*
     681             : #************************************************************************/
     682             : 
     683           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, OkBtnHdl)
     684             : {
     685           0 :     AddBtnHdl( 0 );
     686             : 
     687             :     // die RangeLists den Refs am Doc zuweisen
     688           0 :     pDoc->GetColNameRangesRef() = xColNameRanges;
     689           0 :     pDoc->GetRowNameRangesRef() = xRowNameRanges;
     690             :     // geaenderte Datenbereiche muessen sich auswirken
     691           0 :     pDoc->CompileColRowNameFormula();
     692           0 :     ScDocShell* pDocShell = pViewData->GetDocShell();
     693           0 :     pDocShell->PostPaint(ScRange(0, 0, 0, MAXCOL, MAXROW, MAXTAB), PAINT_GRID);
     694           0 :     pDocShell->SetDocumentModified();
     695             : 
     696           0 :     Close();
     697           0 :     return 0;
     698             : }
     699             : 
     700             : 
     701             : /*************************************************************************
     702             : #*  Handler:    CancelBtnHdl
     703             : #*------------------------------------------------------------------------
     704             : #*
     705             : #*  Klasse:     ScColRowNameRangesDlg
     706             : #*
     707             : #*  Funktion:   Fensterschliessen- Anweisung ausloesen.
     708             : #*
     709             : #*  Input:      ---
     710             : #*
     711             : #*  Output:     ---
     712             : #*
     713             : #************************************************************************/
     714             : 
     715           0 : IMPL_LINK_NOARG_INLINE_START(ScColRowNameRangesDlg, CancelBtnHdl)
     716             : {
     717           0 :     Close();
     718           0 :     return 0;
     719             : }
     720           0 : IMPL_LINK_NOARG_INLINE_END(ScColRowNameRangesDlg, CancelBtnHdl)
     721             : 
     722             : 
     723             : /*************************************************************************
     724             : #*  Handler:    AddBtnHdl
     725             : #*------------------------------------------------------------------------
     726             : #*
     727             : #*  Klasse:     ScColRowNameRangesDlg
     728             : #*
     729             : #*  Funktion:   Nach betaetigen des Hinzufuegen- Buttons, werden
     730             : #*              die Bereichsangaben eingestellt und in der
     731             : #*              Listbox dargestellt.
     732             : #*
     733             : #*  Input:      ---
     734             : #*
     735             : #*  Output:     ---
     736             : #*
     737             : #************************************************************************/
     738             : 
     739           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, AddBtnHdl)
     740             : {
     741           0 :     OUString aNewArea( pEdAssign->GetText() );
     742           0 :     OUString aNewData( pEdAssign2->GetText() );
     743             : 
     744           0 :     if ( !aNewArea.isEmpty() && !aNewData.isEmpty() )
     745             :     {
     746           0 :         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
     747           0 :         ScRange aRange1, aRange2;
     748             :         sal_Bool bOk1;
     749           0 :         if ( (bOk1 = ((aRange1.ParseAny( aNewArea, pDoc, eConv ) & SCA_VALID) == SCA_VALID))
     750           0 :           && ((aRange2.ParseAny( aNewData, pDoc, eConv ) & SCA_VALID) == SCA_VALID) )
     751             :         {
     752           0 :             theCurArea = aRange1;
     753           0 :             AdjustColRowData( aRange2 );
     754             :             ScRangePair* pPair;
     755           0 :             if ( ( pPair = xColNameRanges->Find( theCurArea ) ) != NULL )
     756             :             {
     757           0 :                 xColNameRanges->Remove( pPair );
     758           0 :                 delete pPair;
     759             :             }
     760           0 :             if ( ( pPair = xRowNameRanges->Find( theCurArea ) ) != NULL )
     761             :             {
     762           0 :                 xRowNameRanges->Remove( pPair );
     763           0 :                 delete pPair;
     764             :             }
     765           0 :             if ( pBtnColHead->IsChecked() )
     766           0 :                 xColNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
     767             :             else
     768           0 :                 xRowNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
     769             : 
     770           0 :             UpdateNames();
     771             : 
     772           0 :             pEdAssign->GrabFocus();
     773           0 :             pBtnAdd->Disable();
     774           0 :             pBtnRemove->Disable();
     775           0 :             pEdAssign->SetText( EMPTY_OUSTRING );
     776           0 :             pBtnColHead->Check( true );
     777           0 :             pBtnRowHead->Check( false );
     778           0 :             pEdAssign2->SetText( EMPTY_OUSTRING );
     779           0 :             theCurArea = ScRange();
     780           0 :             theCurData = theCurArea;
     781           0 :             Range1SelectHdl( 0 );
     782             :         }
     783             :         else
     784             :         {
     785           0 :             ERRORBOX( ScGlobal::GetRscString(STR_INVALIDTABNAME) );
     786           0 :             if ( !bOk1 )
     787           0 :                 pEdAssign->GrabFocus();
     788             :             else
     789           0 :                 pEdAssign2->GrabFocus();
     790             :         }
     791             :     }
     792           0 :     return 0;
     793             : }
     794             : 
     795             : 
     796             : /*************************************************************************
     797             : #*  Handler:    RemoveBtnHdl
     798             : #*------------------------------------------------------------------------
     799             : #*
     800             : #*  Klasse:     ScColRowNameRangesDlg
     801             : #*
     802             : #*  Funktion:   Nach betaetigen des Loeschen- Buttons, wird
     803             : #*              die markierte Bereichsangabe geloescht.
     804             : #*
     805             : #*  Input:      ---
     806             : #*
     807             : #*  Output:     ---
     808             : #*
     809             : #************************************************************************/
     810             : 
     811           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, RemoveBtnHdl)
     812             : {
     813           0 :     OUString aRangeStr = pLbRange->GetSelectEntry();
     814           0 :     sal_uInt16 nSelectPos = pLbRange->GetSelectEntryPos();
     815             :     sal_Bool bColName =
     816           0 :         ((sal_uLong)pLbRange->GetEntryData( nSelectPos ) == nEntryDataCol);
     817           0 :     NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr);
     818           0 :     if (itr == aRangeMap.end())
     819           0 :         return 0;
     820           0 :     const ScRange& rRange = itr->second;
     821             : 
     822           0 :     ScRangePair* pPair = NULL;
     823           0 :     sal_Bool bFound = false;
     824           0 :     if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL )
     825           0 :         bFound = sal_True;
     826           0 :     else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL )
     827           0 :         bFound = sal_True;
     828           0 :     if ( bFound )
     829             :     {
     830           0 :         OUString aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
     831           0 :         OUString aMsg       = aStrDelMsg.getToken( 0, '#' );
     832             : 
     833           0 :         aMsg += aRangeStr;
     834           0 :         aMsg += aStrDelMsg.getToken( 1, '#' );
     835             : 
     836           0 :         if ( RET_YES == QUERYBOX(aMsg) )
     837             :         {
     838           0 :             if ( bColName )
     839           0 :                 xColNameRanges->Remove( pPair );
     840             :             else
     841           0 :                 xRowNameRanges->Remove( pPair );
     842           0 :             delete pPair;
     843             : 
     844           0 :             UpdateNames();
     845           0 :             sal_uInt16 nCnt = pLbRange->GetEntryCount();
     846           0 :             if ( nSelectPos >= nCnt )
     847             :             {
     848           0 :                 if ( nCnt )
     849           0 :                     nSelectPos = nCnt - 1;
     850             :                 else
     851           0 :                     nSelectPos = 0;
     852             :             }
     853           0 :             pLbRange->SelectEntryPos( nSelectPos );
     854           0 :             if ( nSelectPos &&
     855           0 :                     (sal_uLong)pLbRange->GetEntryData( nSelectPos ) == nEntryDataDelim )
     856           0 :                 pLbRange->SelectEntryPos( --nSelectPos );    // ---Zeile---
     857             : 
     858           0 :             pLbRange->GrabFocus();
     859           0 :             pBtnAdd->Disable();
     860           0 :             pBtnRemove->Disable();
     861           0 :             pEdAssign->SetText( EMPTY_OUSTRING );
     862           0 :             theCurArea = theCurData = ScRange();
     863           0 :             pBtnColHead->Check( true );
     864           0 :             pBtnRowHead->Check( false );
     865           0 :             pEdAssign2->SetText( EMPTY_OUSTRING );
     866           0 :             Range1SelectHdl( 0 );
     867           0 :         }
     868             :     }
     869           0 :     return 0;
     870             : }
     871             : 
     872             : 
     873             : /*************************************************************************
     874             : #*  Handler:    Range1SelectHdl
     875             : #*------------------------------------------------------------------------
     876             : #*
     877             : #*  Klasse:     ScColRowNameRangesDlg
     878             : #*
     879             : #*  Funktion:   Wenn Zeile in Listbox ausgewaehlt wird,
     880             : #*              werden die Eingabefelder entsprechend
     881             : #*              eingestellt.
     882             : #*
     883             : #*  Input:      ---
     884             : #*
     885             : #*  Output:     ---
     886             : #*
     887             : #************************************************************************/
     888             : 
     889           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, Range1SelectHdl)
     890             : {
     891           0 :     sal_uInt16 nSelectPos = pLbRange->GetSelectEntryPos();
     892           0 :     sal_uInt16 nCnt = pLbRange->GetEntryCount();
     893           0 :     sal_uInt16 nMoves = 0;
     894           0 :     while ( nSelectPos < nCnt
     895           0 :             && (sal_uLong)pLbRange->GetEntryData( nSelectPos ) == nEntryDataDelim )
     896             :     {   // skip Delimiter
     897           0 :         ++nMoves;
     898           0 :         pLbRange->SelectEntryPos( ++nSelectPos );
     899             :     }
     900           0 :     OUString aRangeStr = pLbRange->GetSelectEntry();
     901           0 :     if ( nMoves )
     902             :     {
     903           0 :         if ( nSelectPos > 1 && nSelectPos >= nCnt )
     904             :         {   // am Ende nicht auf dem " --- Zeile --- " Delimiter stehenbleiben
     905             :             // wenn davor Eintraege existieren
     906           0 :             nSelectPos = nCnt - 2;
     907           0 :             pLbRange->SelectEntryPos( nSelectPos );
     908           0 :             aRangeStr = pLbRange->GetSelectEntry();
     909             :         }
     910           0 :         else if ( nSelectPos > 2 && nSelectPos < nCnt && !aRangeStr.isEmpty()
     911           0 :                   && aRangeStr == pEdAssign->GetText() )
     912             :         {   // nach oben wandern statt nach unten auf die vorherige Position
     913           0 :             nSelectPos -= 2;
     914           0 :             pLbRange->SelectEntryPos( nSelectPos );
     915           0 :             aRangeStr = pLbRange->GetSelectEntry();
     916             :         }
     917             :     }
     918           0 :     NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr);
     919           0 :     if ( itr != aRangeMap.end() )
     920             :     {
     921             :         sal_Bool bColName =
     922           0 :             ((sal_uLong)pLbRange->GetEntryData( nSelectPos ) == nEntryDataCol);
     923           0 :         UpdateRangeData( itr->second, bColName );
     924           0 :         pBtnAdd->Disable();
     925           0 :         pBtnRemove->Enable();
     926             :     }
     927             :     else
     928             :     {
     929           0 :         if ( !pEdAssign->GetText().isEmpty() )
     930             :         {
     931           0 :             if ( !pEdAssign2->GetText().isEmpty() )
     932           0 :                 pBtnAdd->Enable();
     933             :             else
     934           0 :                 pBtnAdd->Disable();
     935           0 :             pBtnColHead->Enable();
     936           0 :             pBtnRowHead->Enable();
     937           0 :             pEdAssign2->Enable();
     938           0 :             pRbAssign2->Enable();
     939             :         }
     940             :         else
     941             :         {
     942           0 :             pBtnAdd->Disable();
     943           0 :             pBtnColHead->Disable();
     944           0 :             pBtnRowHead->Disable();
     945           0 :             pEdAssign2->Disable();
     946           0 :             pRbAssign2->Disable();
     947             :         }
     948           0 :         pBtnRemove->Disable();
     949           0 :         pEdAssign->GrabFocus();
     950             :     }
     951             : 
     952           0 :     pEdAssign->Enable();
     953           0 :     pRbAssign->Enable();
     954             : 
     955           0 :     return 0;
     956             : }
     957             : 
     958             : 
     959             : /*************************************************************************
     960             : #*  Handler:    Range1DataModifyHdl
     961             : #*------------------------------------------------------------------------
     962             : #*
     963             : #*  Klasse:     ScColRowNameRangesDlg
     964             : #*
     965             : #*  Funktion:   Wird ausgeloest, wenn in der Tabelle, der Label-
     966             : #*              Bereich geaendert wurde.
     967             : #*
     968             : #*  Input:      ---
     969             : #*
     970             : #*  Output:     ---
     971             : #*
     972             : #************************************************************************/
     973             : 
     974           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, Range1DataModifyHdl)
     975             : {
     976           0 :     OUString aNewArea( pEdAssign->GetText() );
     977           0 :     sal_Bool bValid = false;
     978           0 :     if (!aNewArea.isEmpty() && pDoc)
     979             :     {
     980           0 :         ScRange aRange;
     981           0 :         if ( (aRange.ParseAny( aNewArea, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID )
     982             :         {
     983           0 :             SetColRowData( aRange );
     984           0 :             bValid = sal_True;
     985             :         }
     986             :     }
     987           0 :     if ( bValid )
     988             :     {
     989           0 :         pBtnAdd->Enable();
     990           0 :         pBtnColHead->Enable();
     991           0 :         pBtnRowHead->Enable();
     992           0 :         pEdAssign2->Enable();
     993           0 :         pRbAssign2->Enable();
     994             :     }
     995             :     else
     996             :     {
     997           0 :         pBtnAdd->Disable();
     998           0 :         pBtnColHead->Disable();
     999           0 :         pBtnRowHead->Disable();
    1000           0 :         pEdAssign2->Disable();
    1001           0 :         pRbAssign2->Disable();
    1002             :     }
    1003           0 :     pBtnRemove->Disable();
    1004           0 :     return 0;
    1005             : }
    1006             : 
    1007             : 
    1008             : /*************************************************************************
    1009             : #*  Handler:    Range2DataModifyHdl
    1010             : #*------------------------------------------------------------------------
    1011             : #*
    1012             : #*  Klasse:     ScColRowNameRangesDlg
    1013             : #*
    1014             : #*  Funktion:   Wird ausgeloest, wenn in der Tabelle, der Daten-
    1015             : #*              Bereich geaendert wurde
    1016             : #*
    1017             : #*  Input:      ---
    1018             : #*
    1019             : #*  Output:     ---
    1020             : #*
    1021             : #************************************************************************/
    1022             : 
    1023           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, Range2DataModifyHdl)
    1024             : {
    1025           0 :     OUString aNewData( pEdAssign2->GetText() );
    1026           0 :     if ( !aNewData.isEmpty() )
    1027             :     {
    1028           0 :         ScRange aRange;
    1029           0 :         if ( (aRange.ParseAny( aNewData, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID )
    1030             :         {
    1031           0 :             AdjustColRowData( aRange );
    1032           0 :             pBtnAdd->Enable();
    1033             :         }
    1034             :         else
    1035           0 :             pBtnAdd->Disable();
    1036             :     }
    1037             :     else
    1038             :     {
    1039           0 :         pBtnAdd->Disable();
    1040             :     }
    1041           0 :     return 0;
    1042             : }
    1043             : 
    1044             : 
    1045             : /*************************************************************************
    1046             : #*  Handler:    ColClickHdl
    1047             : #*------------------------------------------------------------------------
    1048             : #*
    1049             : #*  Klasse:     ScColRowNameRangesDlg
    1050             : #*
    1051             : #*  Funktion:   Radiobutton fuer Spalten wurde betaetigt,
    1052             : #*              die entsprechenden Einstellungen werden
    1053             : #*              vorgenommen
    1054             : #*
    1055             : #*  Input:      ---
    1056             : #*
    1057             : #*  Output:     ---
    1058             : #*
    1059             : #************************************************************************/
    1060             : 
    1061           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, ColClickHdl)
    1062             : {
    1063           0 :     if ( !pBtnColHead->GetSavedValue() )
    1064             :     {
    1065           0 :         pBtnColHead->Check( true );
    1066           0 :         pBtnRowHead->Check( false );
    1067           0 :         if ( theCurArea.aStart.Row() == 0 && theCurArea.aEnd.Row() == MAXROW )
    1068             :         {
    1069           0 :             theCurArea.aEnd.SetRow( MAXROW - 1 );
    1070           0 :             OUString aStr(theCurArea.Format(SCR_ABS_3D, pDoc, pDoc->GetAddressConvention()));
    1071           0 :             pEdAssign->SetText( aStr );
    1072             :         }
    1073           0 :         ScRange aRange( theCurData );
    1074           0 :         aRange.aStart.SetRow( std::min( (long)(theCurArea.aEnd.Row() + 1), (long)MAXROW ) );
    1075           0 :         aRange.aEnd.SetRow( MAXROW );
    1076           0 :         AdjustColRowData( aRange );
    1077             :     }
    1078           0 :     return 0;
    1079             : }
    1080             : 
    1081             : 
    1082             : /*************************************************************************
    1083             : #*  Handler:    RowClickHdl
    1084             : #*------------------------------------------------------------------------
    1085             : #*
    1086             : #*  Klasse:     ScColRowNameRangesDlg
    1087             : #*
    1088             : #*  Funktion:   Radiobutton fuer Zeilen wurde betaetigt,
    1089             : #*              die entsprechenden Einstellungen werden
    1090             : #*              vorgenommen
    1091             : #*
    1092             : #*  Input:      ---
    1093             : #*
    1094             : #*  Output:     ---
    1095             : #*
    1096             : #************************************************************************/
    1097             : 
    1098           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, RowClickHdl)
    1099             : {
    1100           0 :     if ( !pBtnRowHead->GetSavedValue() )
    1101             :     {
    1102           0 :         pBtnRowHead->Check( true );
    1103           0 :         pBtnColHead->Check( false );
    1104           0 :         if ( theCurArea.aStart.Col() == 0 && theCurArea.aEnd.Col() == MAXCOL )
    1105             :         {
    1106           0 :             theCurArea.aEnd.SetCol( MAXCOL - 1 );
    1107           0 :             OUString aStr(theCurArea.Format(SCR_ABS_3D, pDoc, pDoc->GetAddressConvention()));
    1108           0 :             pEdAssign->SetText( aStr );
    1109             :         }
    1110           0 :         ScRange aRange( theCurData );
    1111           0 :         aRange.aStart.SetCol( static_cast<SCCOL>(std::min( (long)(theCurArea.aEnd.Col() + 1), (long)MAXCOL )) );
    1112           0 :         aRange.aEnd.SetCol( MAXCOL );
    1113           0 :         AdjustColRowData( aRange );
    1114             :     }
    1115           0 :     return 0;
    1116             : }
    1117             : 
    1118             : 
    1119           0 : IMPL_LINK( ScColRowNameRangesDlg, GetFocusHdl, Control*, pCtrl )
    1120             : {
    1121           0 :     if( (pCtrl == (Control*)pEdAssign) || (pCtrl == (Control*)pRbAssign) )
    1122           0 :         pEdActive = pEdAssign;
    1123           0 :     else if( (pCtrl == (Control*)pEdAssign2) || (pCtrl == (Control*)pRbAssign2) )
    1124           0 :         pEdActive = pEdAssign2;
    1125             :     else
    1126           0 :         pEdActive = NULL;
    1127             : 
    1128           0 :     if( pEdActive )
    1129           0 :         pEdActive->SetSelection( Selection( 0, SELECTION_MAX ) );
    1130             : 
    1131           0 :     return 0;
    1132             : }
    1133             : 
    1134             : 
    1135           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, LoseFocusHdl)
    1136             : {
    1137           0 :     bDlgLostFocus = !IsActive();
    1138           0 :     return 0;
    1139           0 : }
    1140             : 
    1141             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10