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

Generated by: LCOV version 1.10