LCOV - code coverage report
Current view: top level - libreoffice/sc/source/ui/miscdlgs - crnrdlg.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 480 0.2 %
Date: 2012-12-27 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, 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, 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 :         String aRefStr;
     403           0 :         if ( pEdActive == &aEdAssign )
     404           0 :             SetColRowData( rRef, sal_True );
     405             :         else
     406           0 :             AdjustColRowData( rRef, sal_True );
     407           0 :         aBtnColHead.Enable();
     408           0 :         aBtnRowHead.Enable();
     409           0 :         aBtnAdd.Enable();
     410           0 :         aBtnRemove.Disable();
     411             :     }
     412           0 : }
     413             : 
     414             : 
     415             : /*************************************************************************
     416             : #*  Member:     Close
     417             : #*------------------------------------------------------------------------
     418             : #*
     419             : #*  Klasse:     ScColRowNameRangesDlg
     420             : #*
     421             : #*  Funktion:   Schliessen des Fensters
     422             : #*
     423             : #*  Input:      ---
     424             : #*
     425             : #*  Output:     ---
     426             : #*
     427             : #************************************************************************/
     428             : 
     429           0 : sal_Bool ScColRowNameRangesDlg::Close()
     430             : {
     431           0 :     return DoClose( ScColRowNameRangesDlgWrapper::GetChildWindowId() );
     432             : }
     433             : 
     434             : 
     435             : /*************************************************************************
     436             : #*  Member:     SetActive
     437             : #*------------------------------------------------------------------------
     438             : #*
     439             : #*  Klasse:     ScColRowNameRangesDlg
     440             : #*
     441             : #*  Funktion:   Aktivieren des Fensters
     442             : #*
     443             : #*  Input:      ---
     444             : #*
     445             : #*  Output:     ---
     446             : #*
     447             : #************************************************************************/
     448             : 
     449           0 : void ScColRowNameRangesDlg::SetActive()
     450             : {
     451           0 :     if ( bDlgLostFocus )
     452             :     {
     453           0 :         bDlgLostFocus = false;
     454           0 :         if( pEdActive )
     455           0 :             pEdActive->GrabFocus();
     456             :     }
     457             :     else
     458           0 :         GrabFocus();
     459             : 
     460           0 :     if( pEdActive == &aEdAssign )
     461           0 :         Range1DataModifyHdl( 0 );
     462           0 :     else if( pEdActive == &aEdAssign2 )
     463           0 :         Range2DataModifyHdl( 0 );
     464             : 
     465           0 :     RefInputDone();
     466           0 : }
     467             : 
     468             : 
     469             : /*************************************************************************
     470             : #*  Member:     UpdateNames
     471             : #*------------------------------------------------------------------------
     472             : #*
     473             : #*  Klasse:     ScColRowNameRangesDlg
     474             : #*
     475             : #*  Funktion:   Aktualisieren der Namen
     476             : #*
     477             : #*  Input:      ---
     478             : #*
     479             : #*  Output:     ---
     480             : #*
     481             : #************************************************************************/
     482             : 
     483           0 : void ScColRowNameRangesDlg::UpdateNames()
     484             : {
     485           0 :     aLbRange.SetUpdateMode( false );
     486             :     //-----------------------------------------------------------
     487           0 :     aLbRange.Clear();
     488           0 :     aRangeMap.clear();
     489           0 :     aEdAssign.SetText( EMPTY_STRING );
     490             : 
     491             :     size_t nCount, j;
     492             :     sal_uInt16 nPos; //@008 Hilfsvariable q eingefuegt
     493             : 
     494             :     SCCOL nCol1;
     495             :     SCROW nRow1;    //Erweiterung fuer Bereichsnamen
     496             :     SCTAB nTab1;
     497             :     SCCOL nCol2;
     498             :     SCROW nRow2;
     499             :     SCTAB nTab2;
     500           0 :     String rString;
     501           0 :     String strShow;
     502           0 :     const ScAddress::Details aDetails(pDoc->GetAddressConvention());
     503             : 
     504           0 :     String aString;
     505           0 :     rtl::OUString strDelim(" --- ");
     506           0 :     aString = strDelim;
     507           0 :     aString += ScGlobal::GetRscString( STR_COLUMN );
     508           0 :     aString += strDelim;
     509           0 :     nPos = aLbRange.InsertEntry( aString );
     510           0 :     aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim );
     511           0 :     if ( (nCount = xColNameRanges->size()) > 0 )
     512             :     {
     513             :         ScRangePair** ppSortArray = xColNameRanges->CreateNameSortedArray(
     514           0 :             nCount, pDoc );
     515           0 :         for ( j=0; j < nCount; j++ )
     516             :         {
     517           0 :             const ScRange aRange(ppSortArray[j]->GetRange(0));
     518           0 :             aRange.Format( aString, SCR_ABS_3D, pDoc, aDetails );
     519             : 
     520             :             //@008 Hole Bereichsparameter aus Dok
     521           0 :             ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
     522           0 :                                             nCol2, nRow2, nTab2 );
     523           0 :             SCCOL q=nCol1+3;
     524           0 :             if(q>nCol2) q=nCol2;
     525             :             //@008 Baue String zusammen
     526           0 :             strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" ["));
     527           0 :             if(pDoc!=NULL)
     528             :             {
     529           0 :                 pDoc->GetString(nCol1, nRow1, nTab1,rString);
     530           0 :                 strShow +=rString;
     531           0 :                 for(SCCOL i=nCol1+1;i<=q;i++)
     532             :                 {
     533           0 :                     strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
     534           0 :                     pDoc->GetString(i, nRow1, nTab1,rString);
     535           0 :                     strShow += rString;
     536             :                 }
     537             :             }
     538           0 :             if(q<nCol2) // Zu lang? Ergaenzen um ",..."
     539             :             {
     540           0 :                 strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ..."));
     541             :             }
     542           0 :             strShow += ']';
     543             : 
     544             :             //@008 String einfuegen in Listbox
     545           0 :             String aInsStr = aString;
     546           0 :             aInsStr += strShow;
     547           0 :             nPos = aLbRange.InsertEntry( aInsStr );
     548           0 :             aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) );
     549           0 :             aLbRange.SetEntryData( nPos, (void*)nEntryDataCol );
     550           0 :         }
     551           0 :         delete [] ppSortArray;
     552             :     }
     553           0 :     aString = strDelim;
     554           0 :     aString += ScGlobal::GetRscString( STR_ROW );
     555           0 :     aString += strDelim;
     556           0 :     nPos = aLbRange.InsertEntry( aString );
     557           0 :     aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim );
     558           0 :     if ( (nCount = xRowNameRanges->size()) > 0 )
     559             :     {
     560             :         ScRangePair** ppSortArray = xRowNameRanges->CreateNameSortedArray(
     561           0 :             nCount, pDoc );
     562           0 :         for ( j=0; j < nCount; j++ )
     563             :         {
     564           0 :             const ScRange aRange(ppSortArray[j]->GetRange(0));
     565           0 :             aRange.Format( aString, SCR_ABS_3D, pDoc, aDetails );
     566             : 
     567             :             //@008 Ab hier baue String fuer Zeilen
     568           0 :             ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
     569           0 :                                             nCol2, nRow2, nTab2 );
     570           0 :             SCROW q=nRow1+3;
     571           0 :             if(q>nRow2) q=nRow2;
     572           0 :             strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" ["));
     573           0 :             if(pDoc!=NULL)
     574             :             {
     575           0 :                 pDoc->GetString(nCol1, nRow1, nTab1,rString);
     576           0 :                 strShow += rString;
     577           0 :                 for(SCROW i=nRow1+1;i<=q;i++)
     578             :                 {
     579           0 :                     strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
     580           0 :                     pDoc->GetString(nCol1, i, nTab1,rString);
     581           0 :                     strShow += rString;
     582             :                 }
     583             :             }
     584           0 :             if(q<nRow2)
     585             :             {
     586           0 :                 strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ..."));
     587             :             }
     588           0 :             strShow += ']';
     589             : 
     590           0 :             String aInsStr = aString;
     591           0 :             aInsStr += strShow;
     592           0 :             nPos = aLbRange.InsertEntry( aInsStr );
     593           0 :             aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) );
     594           0 :             aLbRange.SetEntryData( nPos, (void*)nEntryDataRow );
     595           0 :         }
     596           0 :         delete [] ppSortArray;
     597             :     }
     598             :     //-----------------------------------------------------------
     599           0 :     aLbRange.SetUpdateMode( sal_True );
     600           0 :     aLbRange.Invalidate();
     601           0 : }
     602             : 
     603             : 
     604             : /*************************************************************************
     605             : #*  Member:     UpdateRangeData
     606             : #*------------------------------------------------------------------------
     607             : #*
     608             : #*  Klasse:     ScColRowNameRangesDlg
     609             : #*
     610             : #*  Funktion:   Aktualisieren der Bereichsdaten
     611             : #*
     612             : #*  Input:      Bereichs-String
     613             : #*              Flag fuer Spalten
     614             : #*
     615             : #*  Output:     ---
     616             : #*
     617             : #************************************************************************/
     618             : 
     619           0 : void ScColRowNameRangesDlg::UpdateRangeData( const ScRange& rRange, sal_Bool bColName )
     620             : {
     621           0 :     ScRangePair* pPair = NULL;
     622           0 :     sal_Bool bFound = false;
     623           0 :     if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL )
     624           0 :         bFound = sal_True;
     625           0 :     else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL )
     626           0 :         bFound = sal_True;
     627             : 
     628           0 :     if ( bFound )
     629             :     {
     630           0 :         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
     631           0 :         String aStr;
     632           0 :         theCurArea = rRange;
     633           0 :         theCurArea.Format( aStr, SCR_ABS_3D, pDoc, eConv );
     634           0 :         aEdAssign.SetText( aStr );
     635           0 :         aBtnAdd.Disable();
     636           0 :         aBtnRemove.Enable();
     637           0 :         aBtnColHead.Check( bColName );
     638           0 :         aBtnRowHead.Check( !bColName );
     639           0 :         theCurData = pPair->GetRange(1);
     640           0 :         theCurData.Format( aStr, SCR_ABS_3D, pDoc, eConv );
     641           0 :         aEdAssign2.SetText( aStr );
     642             :     }
     643             :     else
     644             :     {
     645           0 :         aBtnAdd.Enable();
     646           0 :         aBtnRemove.Disable();
     647             :     }
     648           0 :     aBtnColHead.Enable();
     649           0 :     aBtnRowHead.Enable();
     650           0 :     aEdAssign2.Enable();
     651           0 :     aRbAssign2.Enable();
     652           0 : }
     653             : 
     654             : 
     655             : /*************************************************************************
     656             : #*  Member:     IsRefInputMode
     657             : #*------------------------------------------------------------------------
     658             : #*
     659             : #*  Klasse:     ScColRowNameRangesDlg
     660             : #*
     661             : #*  Funktion:   Abfragefunktion fuer Referenz- Input- Mode.
     662             : #*
     663             : #*  Input:      Bereichs-String
     664             : #*              Flag fuer Spalten
     665             : #*
     666             : #*  Output:     true, wenn Referenz- Input- Mode
     667             : #*
     668             : #************************************************************************/
     669             : 
     670           0 : sal_Bool ScColRowNameRangesDlg::IsRefInputMode() const
     671             : {
     672           0 :     return (pEdActive != NULL);
     673             : }
     674             : 
     675             : //------------------------------------------------------------------------
     676             : // Handler:
     677             : // ========
     678             : 
     679             : /*************************************************************************
     680             : #*  Handler:    OkBtnHdl
     681             : #*------------------------------------------------------------------------
     682             : #*
     683             : #*  Klasse:     ScColRowNameRangesDlg
     684             : #*
     685             : #*  Funktion:   Wird ausgeloest, wenn der OK- Button gedrueckt wurde.
     686             : #*              Hinzufuegen- Button ausloesen, und die neu einge-
     687             : #*              stellten Bereiche ans Dokument uebergeben.
     688             : #*              Fensterschliessen- Anweisung ausloesen.
     689             : #*  Input:      ---
     690             : #*
     691             : #*  Output:     ---
     692             : #*
     693             : #************************************************************************/
     694             : 
     695           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, OkBtnHdl)
     696             : {
     697           0 :     AddBtnHdl( 0 );
     698             : 
     699             :     // die RangeLists den Refs am Doc zuweisen
     700           0 :     pDoc->GetColNameRangesRef() = xColNameRanges;
     701           0 :     pDoc->GetRowNameRangesRef() = xRowNameRanges;
     702             :     // geaenderte Datenbereiche muessen sich auswirken
     703           0 :     pDoc->CompileColRowNameFormula();
     704           0 :     ScDocShell* pDocShell = pViewData->GetDocShell();
     705           0 :     pDocShell->PostPaint(ScRange(0, 0, 0, MAXCOL, MAXROW, MAXTAB), PAINT_GRID);
     706           0 :     pDocShell->SetDocumentModified();
     707             : 
     708           0 :     Close();
     709           0 :     return 0;
     710             : }
     711             : 
     712             : 
     713             : /*************************************************************************
     714             : #*  Handler:    CancelBtnHdl
     715             : #*------------------------------------------------------------------------
     716             : #*
     717             : #*  Klasse:     ScColRowNameRangesDlg
     718             : #*
     719             : #*  Funktion:   Fensterschliessen- Anweisung ausloesen.
     720             : #*
     721             : #*  Input:      ---
     722             : #*
     723             : #*  Output:     ---
     724             : #*
     725             : #************************************************************************/
     726             : 
     727           0 : IMPL_LINK_NOARG_INLINE_START(ScColRowNameRangesDlg, CancelBtnHdl)
     728             : {
     729           0 :     Close();
     730           0 :     return 0;
     731             : }
     732           0 : IMPL_LINK_NOARG_INLINE_END(ScColRowNameRangesDlg, CancelBtnHdl)
     733             : 
     734             : 
     735             : /*************************************************************************
     736             : #*  Handler:    AddBtnHdl
     737             : #*------------------------------------------------------------------------
     738             : #*
     739             : #*  Klasse:     ScColRowNameRangesDlg
     740             : #*
     741             : #*  Funktion:   Nach betaetigen des Hinzufuegen- Buttons, werden
     742             : #*              die Bereichsangaben eingestellt und in der
     743             : #*              Listbox dargestellt.
     744             : #*
     745             : #*  Input:      ---
     746             : #*
     747             : #*  Output:     ---
     748             : #*
     749             : #************************************************************************/
     750             : 
     751           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, AddBtnHdl)
     752             : {
     753           0 :     String aNewArea( aEdAssign.GetText() );
     754           0 :     String aNewData( aEdAssign2.GetText() );
     755             : 
     756           0 :     if ( aNewArea.Len() > 0 && aNewData.Len() > 0 )
     757             :     {
     758           0 :         const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
     759           0 :         ScRange aRange1, aRange2;
     760             :         sal_Bool bOk1;
     761           0 :         if ( (bOk1 = ((aRange1.ParseAny( aNewArea, pDoc, eConv ) & SCA_VALID) == SCA_VALID)) != false
     762           0 :           && ((aRange2.ParseAny( aNewData, pDoc, eConv ) & SCA_VALID) == SCA_VALID) )
     763             :         {
     764           0 :             theCurArea = aRange1;
     765           0 :             AdjustColRowData( aRange2 );
     766             :             ScRangePair* pPair;
     767           0 :             if ( ( pPair = xColNameRanges->Find( theCurArea ) ) != NULL )
     768             :             {
     769           0 :                 xColNameRanges->Remove( pPair );
     770           0 :                 delete pPair;
     771             :             }
     772           0 :             if ( ( pPair = xRowNameRanges->Find( theCurArea ) ) != NULL )
     773             :             {
     774           0 :                 xRowNameRanges->Remove( pPair );
     775           0 :                 delete pPair;
     776             :             }
     777           0 :             if ( aBtnColHead.IsChecked() )
     778           0 :                 xColNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
     779             :             else
     780           0 :                 xRowNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
     781             : 
     782           0 :             UpdateNames();
     783             : 
     784           0 :             aEdAssign.GrabFocus();
     785           0 :             aBtnAdd.Disable();
     786           0 :             aBtnRemove.Disable();
     787           0 :             aEdAssign.SetText( EMPTY_STRING );
     788           0 :             aBtnColHead.Check( sal_True );
     789           0 :             aBtnRowHead.Check( false );
     790           0 :             aEdAssign2.SetText( EMPTY_STRING );
     791           0 :             theCurArea = ScRange();
     792           0 :             theCurData = theCurArea;
     793           0 :             Range1SelectHdl( 0 );
     794             :         }
     795             :         else
     796             :         {
     797           0 :             ERRORBOX( ScGlobal::GetRscString(STR_INVALIDTABNAME) );
     798           0 :             if ( !bOk1 )
     799           0 :                 aEdAssign.GrabFocus();
     800             :             else
     801           0 :                 aEdAssign2.GrabFocus();
     802             :         }
     803             :     }
     804           0 :     return 0;
     805             : }
     806             : 
     807             : 
     808             : /*************************************************************************
     809             : #*  Handler:    RemoveBtnHdl
     810             : #*------------------------------------------------------------------------
     811             : #*
     812             : #*  Klasse:     ScColRowNameRangesDlg
     813             : #*
     814             : #*  Funktion:   Nach betaetigen des Loeschen- Buttons, wird
     815             : #*              die markierte Bereichsangabe geloescht.
     816             : #*
     817             : #*  Input:      ---
     818             : #*
     819             : #*  Output:     ---
     820             : #*
     821             : #************************************************************************/
     822             : 
     823           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, RemoveBtnHdl)
     824             : {
     825           0 :     String aRangeStr = aLbRange.GetSelectEntry();
     826           0 :     sal_uInt16 nSelectPos = aLbRange.GetSelectEntryPos();
     827             :     sal_Bool bColName =
     828           0 :         ((sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol);
     829           0 :     NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr);
     830           0 :     if (itr == aRangeMap.end())
     831           0 :         return 0;
     832           0 :     const ScRange& rRange = itr->second;
     833             : 
     834           0 :     ScRangePair* pPair = NULL;
     835           0 :     sal_Bool bFound = false;
     836           0 :     if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL )
     837           0 :         bFound = sal_True;
     838           0 :     else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL )
     839           0 :         bFound = sal_True;
     840           0 :     if ( bFound )
     841             :     {
     842           0 :         String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
     843           0 :         String aMsg       = aStrDelMsg.GetToken( 0, '#' );
     844             : 
     845           0 :         aMsg += aRangeStr;
     846           0 :         aMsg += aStrDelMsg.GetToken( 1, '#' );
     847             : 
     848           0 :         if ( RET_YES == QUERYBOX(aMsg) )
     849             :         {
     850           0 :             if ( bColName )
     851           0 :                 xColNameRanges->Remove( pPair );
     852             :             else
     853           0 :                 xRowNameRanges->Remove( pPair );
     854           0 :             delete pPair;
     855             : 
     856           0 :             UpdateNames();
     857           0 :             sal_uInt16 nCnt = aLbRange.GetEntryCount();
     858           0 :             if ( nSelectPos >= nCnt )
     859             :             {
     860           0 :                 if ( nCnt )
     861           0 :                     nSelectPos = nCnt - 1;
     862             :                 else
     863           0 :                     nSelectPos = 0;
     864             :             }
     865           0 :             aLbRange.SelectEntryPos( nSelectPos );
     866           0 :             if ( nSelectPos &&
     867           0 :                     (sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim )
     868           0 :                 aLbRange.SelectEntryPos( --nSelectPos );    // ---Zeile---
     869             : 
     870           0 :             aLbRange.GrabFocus();
     871           0 :             aBtnAdd.Disable();
     872           0 :             aBtnRemove.Disable();
     873           0 :             aEdAssign.SetText( EMPTY_STRING );
     874           0 :             theCurArea = theCurData = ScRange();
     875           0 :             aBtnColHead.Check( sal_True );
     876           0 :             aBtnRowHead.Check( false );
     877           0 :             aEdAssign2.SetText( EMPTY_STRING );
     878           0 :             Range1SelectHdl( 0 );
     879           0 :         }
     880             :     }
     881           0 :     return 0;
     882             : }
     883             : 
     884             : 
     885             : /*************************************************************************
     886             : #*  Handler:    Range1SelectHdl
     887             : #*------------------------------------------------------------------------
     888             : #*
     889             : #*  Klasse:     ScColRowNameRangesDlg
     890             : #*
     891             : #*  Funktion:   Wenn Zeile in Listbox ausgewaehlt wird,
     892             : #*              werden die Eingabefelder entsprechend
     893             : #*              eingestellt.
     894             : #*
     895             : #*  Input:      ---
     896             : #*
     897             : #*  Output:     ---
     898             : #*
     899             : #************************************************************************/
     900             : 
     901           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, Range1SelectHdl)
     902             : {
     903           0 :     sal_uInt16 nSelectPos = aLbRange.GetSelectEntryPos();
     904           0 :     sal_uInt16 nCnt = aLbRange.GetEntryCount();
     905           0 :     sal_uInt16 nMoves = 0;
     906           0 :     while ( nSelectPos < nCnt
     907           0 :             && (sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim )
     908             :     {   // skip Delimiter
     909           0 :         ++nMoves;
     910           0 :         aLbRange.SelectEntryPos( ++nSelectPos );
     911             :     }
     912           0 :     String aRangeStr = aLbRange.GetSelectEntry();
     913           0 :     if ( nMoves )
     914             :     {
     915           0 :         if ( nSelectPos > 1 && nSelectPos >= nCnt )
     916             :         {   // am Ende nicht auf dem " --- Zeile --- " Delimiter stehenbleiben
     917             :             // wenn davor Eintraege existieren
     918           0 :             nSelectPos = nCnt - 2;
     919           0 :             aLbRange.SelectEntryPos( nSelectPos );
     920           0 :             aRangeStr = aLbRange.GetSelectEntry();
     921             :         }
     922           0 :         else if ( nSelectPos > 2 && nSelectPos < nCnt && aRangeStr.Len()
     923           0 :                 && aRangeStr == aEdAssign.GetText() )
     924             :         {   // nach oben wandern statt nach unten auf die vorherige Position
     925           0 :             nSelectPos -= 2;
     926           0 :             aLbRange.SelectEntryPos( nSelectPos );
     927           0 :             aRangeStr = aLbRange.GetSelectEntry();
     928             :         }
     929             :     }
     930           0 :     NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr);
     931           0 :     if ( itr != aRangeMap.end() )
     932             :     {
     933             :         sal_Bool bColName =
     934           0 :             ((sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol);
     935           0 :         UpdateRangeData( itr->second, bColName );
     936           0 :         aBtnAdd.Disable();
     937           0 :         aBtnRemove.Enable();
     938             :     }
     939             :     else
     940             :     {
     941           0 :         if ( aEdAssign.GetText().Len() > 0 )
     942             :         {
     943           0 :             if ( aEdAssign2.GetText().Len() > 0 )
     944           0 :                 aBtnAdd.Enable();
     945             :             else
     946           0 :                 aBtnAdd.Disable();
     947           0 :             aBtnColHead.Enable();
     948           0 :             aBtnRowHead.Enable();
     949           0 :             aEdAssign2.Enable();
     950           0 :             aRbAssign2.Enable();
     951             :         }
     952             :         else
     953             :         {
     954           0 :             aBtnAdd.Disable();
     955           0 :             aBtnColHead.Disable();
     956           0 :             aBtnRowHead.Disable();
     957           0 :             aEdAssign2.Disable();
     958           0 :             aRbAssign2.Disable();
     959             :         }
     960           0 :         aBtnRemove.Disable();
     961           0 :         aEdAssign.GrabFocus();
     962             :     }
     963             : 
     964           0 :     aEdAssign.Enable();
     965           0 :     aRbAssign.Enable();
     966             : 
     967           0 :     return 0;
     968             : }
     969             : 
     970             : 
     971             : /*************************************************************************
     972             : #*  Handler:    Range1DataModifyHdl
     973             : #*------------------------------------------------------------------------
     974             : #*
     975             : #*  Klasse:     ScColRowNameRangesDlg
     976             : #*
     977             : #*  Funktion:   Wird ausgeloest, wenn in der Tabelle, der Label-
     978             : #*              Bereich geaendert wurde.
     979             : #*
     980             : #*  Input:      ---
     981             : #*
     982             : #*  Output:     ---
     983             : #*
     984             : #************************************************************************/
     985             : 
     986           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, Range1DataModifyHdl)
     987             : {
     988           0 :     String aNewArea( aEdAssign.GetText() );
     989           0 :     sal_Bool bValid = false;
     990           0 :     if ( aNewArea.Len() > 0 )
     991             :     {
     992           0 :         ScRange aRange;
     993           0 :         if ( (aRange.ParseAny( aNewArea, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID )
     994             :         {
     995           0 :             SetColRowData( aRange );
     996           0 :             bValid = sal_True;
     997             :         }
     998             :     }
     999           0 :     if ( bValid )
    1000             :     {
    1001           0 :         aBtnAdd.Enable();
    1002           0 :         aBtnColHead.Enable();
    1003           0 :         aBtnRowHead.Enable();
    1004           0 :         aEdAssign2.Enable();
    1005           0 :         aRbAssign2.Enable();
    1006             :     }
    1007             :     else
    1008             :     {
    1009           0 :         aBtnAdd.Disable();
    1010           0 :         aBtnColHead.Disable();
    1011           0 :         aBtnRowHead.Disable();
    1012           0 :         aEdAssign2.Disable();
    1013           0 :         aRbAssign2.Disable();
    1014             :     }
    1015           0 :     aBtnRemove.Disable();
    1016           0 :     return 0;
    1017             : }
    1018             : 
    1019             : 
    1020             : /*************************************************************************
    1021             : #*  Handler:    Range2DataModifyHdl
    1022             : #*------------------------------------------------------------------------
    1023             : #*
    1024             : #*  Klasse:     ScColRowNameRangesDlg
    1025             : #*
    1026             : #*  Funktion:   Wird ausgeloest, wenn in der Tabelle, der Daten-
    1027             : #*              Bereich geaendert wurde
    1028             : #*
    1029             : #*  Input:      ---
    1030             : #*
    1031             : #*  Output:     ---
    1032             : #*
    1033             : #************************************************************************/
    1034             : 
    1035           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, Range2DataModifyHdl)
    1036             : {
    1037           0 :     String aNewData( aEdAssign2.GetText() );
    1038           0 :     if ( aNewData.Len() > 0 )
    1039             :     {
    1040           0 :         ScRange aRange;
    1041           0 :         if ( (aRange.ParseAny( aNewData, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID )
    1042             :         {
    1043           0 :             AdjustColRowData( aRange );
    1044           0 :             aBtnAdd.Enable();
    1045             :         }
    1046             :         else
    1047           0 :             aBtnAdd.Disable();
    1048             :     }
    1049             :     else
    1050             :     {
    1051           0 :         aBtnAdd.Disable();
    1052             :     }
    1053           0 :     return 0;
    1054             : }
    1055             : 
    1056             : 
    1057             : /*************************************************************************
    1058             : #*  Handler:    ColClickHdl
    1059             : #*------------------------------------------------------------------------
    1060             : #*
    1061             : #*  Klasse:     ScColRowNameRangesDlg
    1062             : #*
    1063             : #*  Funktion:   Radiobutton fuer Spalten wurde betaetigt,
    1064             : #*              die entsprechenden Einstellungen werden
    1065             : #*              vorgenommen
    1066             : #*
    1067             : #*  Input:      ---
    1068             : #*
    1069             : #*  Output:     ---
    1070             : #*
    1071             : #************************************************************************/
    1072             : 
    1073           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, ColClickHdl)
    1074             : {
    1075           0 :     if ( !aBtnColHead.GetSavedValue() )
    1076             :     {
    1077           0 :         aBtnColHead.Check( sal_True );
    1078           0 :         aBtnRowHead.Check( false );
    1079           0 :         if ( theCurArea.aStart.Row() == 0 && theCurArea.aEnd.Row() == MAXROW )
    1080             :         {
    1081           0 :             theCurArea.aEnd.SetRow( MAXROW - 1 );
    1082           0 :             String aStr;
    1083           0 :             theCurArea.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() );
    1084           0 :             aEdAssign.SetText( aStr );
    1085             :         }
    1086           0 :         ScRange aRange( theCurData );
    1087           0 :         aRange.aStart.SetRow( Min( (long)(theCurArea.aEnd.Row() + 1), (long)MAXROW ) );
    1088           0 :         aRange.aEnd.SetRow( MAXROW );
    1089           0 :         AdjustColRowData( aRange );
    1090             :     }
    1091           0 :     return 0;
    1092             : }
    1093             : 
    1094             : 
    1095             : /*************************************************************************
    1096             : #*  Handler:    RowClickHdl
    1097             : #*------------------------------------------------------------------------
    1098             : #*
    1099             : #*  Klasse:     ScColRowNameRangesDlg
    1100             : #*
    1101             : #*  Funktion:   Radiobutton fuer Zeilen wurde betaetigt,
    1102             : #*              die entsprechenden Einstellungen werden
    1103             : #*              vorgenommen
    1104             : #*
    1105             : #*  Input:      ---
    1106             : #*
    1107             : #*  Output:     ---
    1108             : #*
    1109             : #************************************************************************/
    1110             : 
    1111           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, RowClickHdl)
    1112             : {
    1113           0 :     if ( !aBtnRowHead.GetSavedValue() )
    1114             :     {
    1115           0 :         aBtnRowHead.Check( sal_True );
    1116           0 :         aBtnColHead.Check( false );
    1117           0 :         if ( theCurArea.aStart.Col() == 0 && theCurArea.aEnd.Col() == MAXCOL )
    1118             :         {
    1119           0 :             theCurArea.aEnd.SetCol( MAXCOL - 1 );
    1120           0 :             String aStr;
    1121           0 :             theCurArea.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() );
    1122           0 :             aEdAssign.SetText( aStr );
    1123             :         }
    1124           0 :         ScRange aRange( theCurData );
    1125           0 :         aRange.aStart.SetCol( static_cast<SCCOL>(Min( (long)(theCurArea.aEnd.Col() + 1), (long)MAXCOL )) );
    1126           0 :         aRange.aEnd.SetCol( MAXCOL );
    1127           0 :         AdjustColRowData( aRange );
    1128             :     }
    1129           0 :     return 0;
    1130             : }
    1131             : 
    1132             : 
    1133           0 : IMPL_LINK( ScColRowNameRangesDlg, GetFocusHdl, Control*, pCtrl )
    1134             : {
    1135           0 :     if( (pCtrl == (Control*)&aEdAssign) || (pCtrl == (Control*)&aRbAssign) )
    1136           0 :         pEdActive = &aEdAssign;
    1137           0 :     else if( (pCtrl == (Control*)&aEdAssign2) || (pCtrl == (Control*)&aRbAssign2) )
    1138           0 :         pEdActive = &aEdAssign2;
    1139             :     else
    1140           0 :         pEdActive = NULL;
    1141             : 
    1142           0 :     if( pEdActive )
    1143           0 :         pEdActive->SetSelection( Selection( 0, SELECTION_MAX ) );
    1144             : 
    1145           0 :     return 0;
    1146             : }
    1147             : 
    1148             : 
    1149           0 : IMPL_LINK_NOARG(ScColRowNameRangesDlg, LoseFocusHdl)
    1150             : {
    1151           0 :     bDlgLostFocus = !IsActive();
    1152           0 :     return 0;
    1153          15 : }
    1154             : 
    1155             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10