ooo-build r11588 - in trunk: . patches/src680



Author: kyoshida
Date: Thu Feb 14 22:37:46 2008
New Revision: 11588
URL: http://svn.gnome.org/viewvc/ooo-build?rev=11588&view=rev

Log:
2008-02-14  Kohei Yoshida  <kyoshida novell com>

	* patches/src680/sc-datapilot-dynamic-range.diff: update the field list
	when the source range is modified, instead of when the OK button is 
	pressed, so that the user can have a chance to edit it in case of new 
	field names.


Modified:
   trunk/ChangeLog
   trunk/patches/src680/sc-datapilot-dynamic-range.diff

Modified: trunk/patches/src680/sc-datapilot-dynamic-range.diff
==============================================================================
--- trunk/patches/src680/sc-datapilot-dynamic-range.diff	(original)
+++ trunk/patches/src680/sc-datapilot-dynamic-range.diff	Thu Feb 14 22:37:46 2008
@@ -171,7 +171,7 @@
 Only in sc/source/ui/dbgui: pivot.src~
 diff -urp --exclude=CVS sc.clean/source/ui/dbgui/pvlaydlg.cxx sc/source/ui/dbgui/pvlaydlg.cxx
 --- sc.clean/source/ui/dbgui/pvlaydlg.cxx	2008-02-05 11:16:56.000000000 -0500
-+++ sc/source/ui/dbgui/pvlaydlg.cxx	2008-02-14 14:29:15.000000000 -0500
++++ sc/source/ui/dbgui/pvlaydlg.cxx	2008-02-14 17:14:03.000000000 -0500
 @@ -41,6 +41,7 @@
  //----------------------------------------------------------------------------
  
@@ -228,18 +228,36 @@
      aBtnMore.SetClickHdl( LINK( this, ScDPLayoutDlg, MoreClickHdl ) );
  
  	{
-@@ -237,6 +249,23 @@ void __EXPORT ScDPLayoutDlg::Init()
+@@ -237,31 +249,35 @@ void __EXPORT ScDPLayoutDlg::Init()
      aRowArr.resize( MAX_FIELDS );
      aDataArr.resize( MAX_FIELDS );
  
+-	InitWndSelect( thePivotData.ppLabelArr, static_cast<long>(thePivotData.nLabels) );
+-    InitWnd( thePivotData.aPageArr, static_cast<long>(thePivotData.nPageCount), TYPE_PAGE );
+-	InitWnd( thePivotData.aColArr,  static_cast<long>(thePivotData.nColCount),  TYPE_COL );
+-	InitWnd( thePivotData.aRowArr,  static_cast<long>(thePivotData.nRowCount),  TYPE_ROW );
+-	InitWnd( thePivotData.aDataArr, static_cast<long>(thePivotData.nDataCount), TYPE_DATA );
+-
+-    aSlider.SetPageSize( PAGE_SIZE );
+-    aSlider.SetVisibleSize( PAGE_SIZE );
+-    aSlider.SetLineSize( LINE_SIZE );
+-    aSlider.SetRange( Range( 0, static_cast<long>(((thePivotData.nLabels+LINE_SIZE-1)/LINE_SIZE)*LINE_SIZE) ) );
+-
+-	if ( thePivotData.nLabels > PAGE_SIZE )
+-	{
+-        aSlider.SetEndScrollHdl( LINK( this, ScDPLayoutDlg, ScrollHdl ) );
+-		aSlider.Show();
+-	}
+-	else
+-		aSlider.Hide();
 +    ScRange inRange;
 +    String inString;
 +    if (xDlgDPObject->GetSheetDesc())
 +    {
 +        aEdInPos.Enable();
 +        aRbInPos.Enable();
-+        inRange = xDlgDPObject->GetSheetDesc()->aSourceRange;
-+        inRange.Format( inString, STD_FORMAT, pDoc);
++        aOldRange = xDlgDPObject->GetSheetDesc()->aSourceRange;
++        aOldRange.Format( inString, STD_FORMAT, pDoc);
 +        aEdInPos.SetText(inString);
 +    }
 +    else 
@@ -248,11 +266,9 @@
 +        aEdInPos.Disable();
 +        aRbInPos.Disable();
 +    }
-+
- 	InitWndSelect( thePivotData.ppLabelArr, static_cast<long>(thePivotData.nLabels) );
-     InitWnd( thePivotData.aPageArr, static_cast<long>(thePivotData.nPageCount), TYPE_PAGE );
- 	InitWnd( thePivotData.aColArr,  static_cast<long>(thePivotData.nColCount),  TYPE_COL );
-@@ -260,8 +289,14 @@ void __EXPORT ScDPLayoutDlg::Init()
+ 
+-	// Ein-/Ausgabebereiche: ----------------------------------------------
++    InitFields();
  
      aLbOutPos .SetSelectHdl( LINK( this, ScDPLayoutDlg, SelAreaHdl ) );
      aEdOutPos .SetModifyHdl( LINK( this, ScDPLayoutDlg, EdModifyHdl ) );
@@ -267,18 +283,46 @@
  
  	if ( pViewData && pDoc )
  	{
-@@ -1314,23 +1349,66 @@ BOOL ScDPLayoutDlg::GetPivotArrays(    P
+@@ -480,6 +496,27 @@ void ScDPLayoutDlg::InitFocus()
+         aWndSelect.GrabFocus();
+ }
+ 
++void ScDPLayoutDlg::InitFields()
++{
++    InitWndSelect( thePivotData.ppLabelArr, static_cast<long>(thePivotData.nLabels) );
++    InitWnd( thePivotData.aPageArr, static_cast<long>(thePivotData.nPageCount), TYPE_PAGE );
++    InitWnd( thePivotData.aColArr,  static_cast<long>(thePivotData.nColCount),  TYPE_COL );
++    InitWnd( thePivotData.aRowArr,  static_cast<long>(thePivotData.nRowCount),  TYPE_ROW );
++    InitWnd( thePivotData.aDataArr, static_cast<long>(thePivotData.nDataCount), TYPE_DATA );
++
++    aSlider.SetPageSize( PAGE_SIZE );
++    aSlider.SetVisibleSize( PAGE_SIZE );
++    aSlider.SetLineSize( LINE_SIZE );
++    aSlider.SetRange( Range( 0, static_cast<long>(((thePivotData.nLabels+LINE_SIZE-1)/LINE_SIZE)*LINE_SIZE) ) );
++
++    if ( thePivotData.nLabels > PAGE_SIZE )
++    {
++        aSlider.SetEndScrollHdl( LINK( this, ScDPLayoutDlg, ScrollHdl ) );
++        aSlider.Show();
++    }
++    else
++        aSlider.Hide();
++}
+ 
+ //----------------------------------------------------------------------------
+ 
+@@ -1314,23 +1351,79 @@ BOOL ScDPLayoutDlg::GetPivotArrays(    P
  	return bFit;
  }
  
-+bool ScDPLayoutDlg::UpdateSrcRange()
++void ScDPLayoutDlg::UpdateSrcRange()
 +{
 +    String  theCurPosStr = aEdInPos.GetText();
 +    USHORT  nResult = ScRange().Parse(theCurPosStr, pDoc);
 +
 +    if ( SCA_VALID != (nResult & SCA_VALID) )
 +        // invalid source range.
-+        return false;
++        return;
 +
 +    ScRefAddress start, end;
 +    ConvertDoubleRef(pDoc, theCurPosStr, 1,  start, end);
@@ -287,14 +331,12 @@
 +
 +    if (inSheet.aSourceRange == aNewRange)
 +        // new range is identical to the current range.  Nothing to do.
-+        return true;
++        return;
 +
 +    ScTabViewShell * pTabViewShell = pViewData->GetViewShell();
 +    inSheet.aSourceRange = aNewRange;
 +    xDlgDPObject->SetSheetDesc(inSheet);
 +    xDlgDPObject->InvalidateSource();
-+    xDlgDPObject->Output();
-+    xDlgDPObject->SetAlive(true);     // needed to get structure information
 +    xDlgDPObject->FillOldParam(thePivotData, true);
 +    xDlgDPObject->FillLabelData(thePivotData);
 +
@@ -306,7 +348,22 @@
 +    aWndCol.ClearFields();
 +    aWndPage.ClearFields();
 +
-+    return true;
++    for (USHORT i = 0; i < MAX_LABELS; ++i)
++        aSelectArr[i].reset();
++
++    for (USHORT i = 0; i < MAX_FIELDS; ++i)
++    {
++        RemoveField(TYPE_COL,  i);
++        RemoveField(TYPE_ROW,  i);
++        RemoveField(TYPE_DATA, i);
++    }
++
++    for (USHORT i = 0; i < MAX_PAGEFIELDS; ++i)
++        RemoveField(TYPE_PAGE, i);
++
++    InitFields();
++
++    return;
 +}
  
  //----------------------------------------------------------------------------
@@ -346,7 +403,7 @@
  }
  
  
-@@ -1340,8 +1418,13 @@ void ScDPLayoutDlg::SetActive()
+@@ -1340,8 +1433,13 @@ void ScDPLayoutDlg::SetActive()
  {
  	if ( bRefInputMode )
  	{
@@ -362,20 +419,27 @@
  	}
  	else
  	{
-@@ -1384,6 +1467,12 @@ IMPL_LINK( ScDPLayoutDlg, OkHdl, OKButto
- 	if (   bToNewTable
- 		|| ( (aOutPosStr.Len() > 0) && (SCA_VALID == (nResult & SCA_VALID)) ) )
- 	{
-+        if (!UpdateSrcRange())
-+        {
-+            ErrorBox( this, WinBits(WB_OK | WB_DEF_OK), ScGlobal::GetRscString(STR_INVALID_TABREF) ).Execute();
-+            aEdInPos.GrabFocus();
-+            return 0;
-+        }
- 		//@BugID 54702 Enablen/Disablen nur noch in Basisklasse
- 		//SFX_APPWINDOW->Enable();
+@@ -1497,12 +1595,17 @@ IMPL_LINK( ScDPLayoutDlg, OkHdl, OKButto
+ 
+ //----------------------------------------------------------------------------
  
-@@ -1514,9 +1603,18 @@ IMPL_LINK( ScDPLayoutDlg, MoreClickHdl, 
+-IMPL_LINK_INLINE_START( ScDPLayoutDlg, CancelHdl, CancelButton *, EMPTYARG )
++IMPL_LINK( ScDPLayoutDlg, CancelHdl, CancelButton *, EMPTYARG )
+ {
++    ScSheetSourceDesc inSheet = *xDlgDPObject->GetSheetDesc();
++    inSheet.aSourceRange = aOldRange;
++    xDlgDPObject->SetSheetDesc(inSheet);
++    xDlgDPObject->InvalidateSource();
++    xDlgDPObject->FillOldParam(thePivotData, true);
++    xDlgDPObject->FillLabelData(thePivotData);
+ 	Close();
+ 	return 0;
+ }
+-IMPL_LINK_INLINE_END( ScDPLayoutDlg, CancelHdl, CancelButton *, EMPTYARG )
+ 
+ 
+ //----------------------------------------------------------------------------
+@@ -1514,9 +1617,18 @@ IMPL_LINK( ScDPLayoutDlg, MoreClickHdl, 
  		bRefInputMode = TRUE;
  		//@BugID 54702 Enablen/Disablen nur noch in Basisklasse
  		//SFX_APPWINDOW->Enable();
@@ -397,12 +461,13 @@
  	}
  	else
  	{
-@@ -1557,6 +1655,12 @@ IMPL_LINK( ScDPLayoutDlg, EdModifyHdl, E
+@@ -1557,6 +1669,13 @@ IMPL_LINK( ScDPLayoutDlg, EdModifyHdl, E
  }
  
  
 +IMPL_LINK( ScDPLayoutDlg, EdInModifyHdl, Edit *, EMPTYARG )
 +{
++    UpdateSrcRange();
 +    return 0;
 +}
 +
@@ -410,7 +475,7 @@
  //----------------------------------------------------------------------------
  
  IMPL_LINK( ScDPLayoutDlg, SelAreaHdl, ListBox *, EMPTYARG )
-@@ -1610,4 +1714,16 @@ IMPL_LINK( ScDPLayoutDlg, ScrollHdl, Scr
+@@ -1610,4 +1729,16 @@ IMPL_LINK( ScDPLayoutDlg, ScrollHdl, Scr
  	return 0;
  }
  
@@ -430,7 +495,7 @@
 Only in sc/source/ui/dbgui: pvlaydlg.cxx.orig
 diff -urp --exclude=CVS sc.clean/source/ui/inc/pvlaydlg.hxx sc/source/ui/inc/pvlaydlg.hxx
 --- sc.clean/source/ui/inc/pvlaydlg.hxx	2008-02-05 11:16:55.000000000 -0500
-+++ sc/source/ui/inc/pvlaydlg.hxx	2008-02-14 14:25:26.000000000 -0500
++++ sc/source/ui/inc/pvlaydlg.hxx	2008-02-14 16:42:01.000000000 -0500
 @@ -143,10 +143,18 @@ private:
      FixedInfo               aFtInfo;
  
@@ -459,12 +524,28 @@
      Rectangle               aRectPage;
      Rectangle               aRectRow;
      Rectangle               aRectCol;
-@@ -221,14 +231,19 @@ private:
+@@ -187,6 +197,7 @@ private:
+     ScDPFuncDataVec         aDataArr;
+ 
+     ScDPObjectPtr           xDlgDPObject;
++    ScRange                 aOldRange;
+     ScPivotParam            thePivotData;
+     ScViewData*             pViewData;
+     ScDocument*             pDoc;
+@@ -198,6 +209,7 @@ private:
+     void                    InitWndSelect   ( LabelData** ppLabelArr, long nLabels );
+     void                    InitWnd         ( PivotField* pArr, long nCount, ScDPFieldType eType );
+     void                    InitFocus       ();
++    void                    InitFields      ();
+     void                    CalcWndSizes    ();
+     Point                   DlgPos2WndPos   ( const Point& rPt, Window& rWnd );
+     ScDPLabelData*          GetLabelData    ( SCsCOL nCol, size_t* pPos = NULL );
+@@ -221,14 +233,19 @@ private:
                                                USHORT&       rColCount,
                                                USHORT&       rRowCount,
                                                USHORT&       rDataCount );
 +
-+    bool                    UpdateSrcRange();
++    void                    UpdateSrcRange();
 +
  	// Handler
      DECL_LINK( ClickHdl, PushButton * );



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]