diff options
Diffstat (limited to 'chart2/source/controller/dialogs')
44 files changed, 821 insertions, 328 deletions
diff --git a/chart2/source/controller/dialogs/Bitmaps.hrc b/chart2/source/controller/dialogs/Bitmaps.hrc index 58b1d540cc1a..8823b582a28e 100644 --- a/chart2/source/controller/dialogs/Bitmaps.hrc +++ b/chart2/source/controller/dialogs/Bitmaps.hrc @@ -34,23 +34,28 @@ #include <svtools/solar.hrc> #endif -// next free: 100 - #ifndef STD_MASKCOLOR #define STD_MASKCOLOR Color { Red = 0xFF00; Green = 0x0000; Blue = 0xFF00; } #endif //----------------------------------------------------------------------------- // chart types +// Images: #define IMG_TYPE_COLUMN (RID_APP_START + 1) #define IMG_TYPE_BAR (RID_APP_START + 2) #define IMG_TYPE_PIE (RID_APP_START + 3) -#define IMG_TYPE_LINE (RID_APP_START + 4) -#define IMG_TYPE_AREA (RID_APP_START + 5) -#define IMG_TYPE_NET (RID_APP_START + 6) -#define IMG_TYPE_STOCK (RID_APP_START + 7) -#define IMG_TYPE_COLUMN_LINE (RID_APP_START + 8) +#define IMG_TYPE_AREA (RID_APP_START + 4) +#define IMG_TYPE_LINE (RID_APP_START + 5) +#define IMG_TYPE_XY (RID_APP_START + 6) +#define IMG_TYPE_BUBBLE (RID_APP_START + 7) +#define IMG_TYPE_NET (RID_APP_START + 8) +#define IMG_TYPE_STOCK (RID_APP_START + 9) +#define IMG_TYPE_COLUMN_LINE (RID_APP_START + 10) + +//----------------------------------------------------------------------------- +//Chart Subtypes +// Bitmaps: //---------------------- // Column Chart Subtypes @@ -168,8 +173,8 @@ #define BMP_NET_SYMB_STACK (RID_APP_START + 77) #define BMP_NET_LINESYMB (RID_APP_START + 78) #define BMP_NET_LINESYMB_STACK (RID_APP_START + 79) -#define BMP_NET_FILLED (RID_APP_START + 80) -#define BMP_NET_FILLED_STACKED (RID_APP_START + 81) +#define BMP_NET_FILL (RID_APP_START + 80) +#define BMP_NET_FILL_STACK (RID_APP_START + 81) //---------------------- // Stock Chart Subtypes @@ -185,7 +190,13 @@ #define BMP_COLUMN_LINE (RID_APP_START + 86) #define BMP_COLUMN_LINE_STACKED (RID_APP_START + 87) +//---------------------- +// Bubble Chart Subtypes +#define BMP_BUBBLE_1 (RID_APP_START + 88) + //----------------------------------------------------------------------------- +//further Images: + //SchStatisticTabPage and SchDataStatisticsDlg part 1 #define BMP_INDICATE_BOTH_VERTI (RID_APP_START + 89) #define BMP_INDICATE_UP (RID_APP_START + 90) @@ -201,9 +212,8 @@ #define BMP_REGRESSION_EXP (RID_APP_START + 95) #define BMP_REGRESSION_POWER (RID_APP_START + 96) -//----------------------------------------------------------------------------- // hide-button for range-choosing -#define IMG_SELECTRANGE (RID_APP_START + 9) +#define IMG_SELECTRANGE (RID_APP_START + 100) // CHART_BITMAPS_HRC #endif diff --git a/chart2/source/controller/dialogs/Bitmaps.src b/chart2/source/controller/dialogs/Bitmaps.src index 2af607b6963c..67d8588897d8 100644 --- a/chart2/source/controller/dialogs/Bitmaps.src +++ b/chart2/source/controller/dialogs/Bitmaps.src @@ -49,6 +49,11 @@ Image IMG_TYPE_LINE ImageBitmap = Bitmap { File = "typepointline_16.png" ; }; MaskColor = STD_MASKCOLOR; }; +Image IMG_TYPE_XY +{ + ImageBitmap = Bitmap { File = "typexy_16.png" ; }; + MaskColor = STD_MASKCOLOR; +}; Image IMG_TYPE_AREA { ImageBitmap = Bitmap { File = "typearea_16.png" ; }; @@ -69,6 +74,15 @@ Image IMG_TYPE_COLUMN_LINE ImageBitmap = Bitmap { File = "typecolumnline_16.png" ; }; MaskColor = STD_MASKCOLOR; }; +Image IMG_TYPE_BUBBLE +{ + ImageBitmap = Bitmap { File = "typebubble_16.png" ; }; + MaskColor = STD_MASKCOLOR; +}; +Bitmap BMP_BUBBLE_1 +{ + File = "bubble_52x60.png" ; +}; Bitmap BMP_AREAS_2D { File = "areas_52x60.png" ; @@ -345,13 +359,13 @@ Bitmap BMP_NET_LINESYMB_STACK { File = "netlinepointstack_52x60.png" ; }; -Bitmap BMP_NET_FILLED +Bitmap BMP_NET_FILL { - File = "net_52x60.png" ; + File = "netfill_52x60.png" ; }; -Bitmap BMP_NET_FILLED_STACKED +Bitmap BMP_NET_FILL_STACK { - File = "netstack_52x60.png" ; + File = "netstackfill_52x60.png" ; }; //--------------------- Bitmap BMP_PYRAMIDQ_3D_1 diff --git a/chart2/source/controller/dialogs/Bitmaps_HC.hrc b/chart2/source/controller/dialogs/Bitmaps_HC.hrc index 0b65579973c5..8dd4acaffd15 100644 --- a/chart2/source/controller/dialogs/Bitmaps_HC.hrc +++ b/chart2/source/controller/dialogs/Bitmaps_HC.hrc @@ -41,15 +41,22 @@ //----------------------------------------------------------------------------- // chart types +// Images: #define IMG_TYPE_COLUMN_HC (RID_SCH_START + 1) #define IMG_TYPE_BAR_HC (RID_SCH_START + 2) #define IMG_TYPE_PIE_HC (RID_SCH_START + 3) -#define IMG_TYPE_LINE_HC (RID_SCH_START + 4) -#define IMG_TYPE_AREA_HC (RID_SCH_START + 5) -#define IMG_TYPE_NET_HC (RID_SCH_START + 6) -#define IMG_TYPE_STOCK_HC (RID_SCH_START + 7) -#define IMG_TYPE_COLUMN_LINE_HC (RID_SCH_START + 8) +#define IMG_TYPE_AREA_HC (RID_SCH_START + 4) +#define IMG_TYPE_LINE_HC (RID_SCH_START + 5) +#define IMG_TYPE_XY_HC (RID_SCH_START + 6) +#define IMG_TYPE_BUBBLE_HC (RID_SCH_START + 7) +#define IMG_TYPE_NET_HC (RID_SCH_START + 8) +#define IMG_TYPE_STOCK_HC (RID_SCH_START + 9) +#define IMG_TYPE_COLUMN_LINE_HC (RID_SCH_START + 10) + +//----------------------------------------------------------------------------- +//Chart Subtypes +// Bitmaps: //---------------------- // Column Chart Subtypes @@ -166,8 +173,8 @@ #define BMP_NET_SYMB_STACK_HC (RID_SCH_START + 77) #define BMP_NET_LINESYMB_HC (RID_SCH_START + 78) #define BMP_NET_LINESYMB_STACK_HC (RID_SCH_START + 79) -#define BMP_NET_FILLED_HC (RID_SCH_START + 80) -#define BMP_NET_FILLED_STACKED_HC (RID_SCH_START + 81) +#define BMP_NET_FILL_HC (RID_SCH_START + 80) +#define BMP_NET_FILL_STACK_HC (RID_SCH_START + 81) //---------------------- // Stock Chart Subtypes @@ -183,7 +190,13 @@ #define BMP_COLUMN_LINE_HC (RID_SCH_START + 86) #define BMP_COLUMN_LINE_STACKED_HC (RID_SCH_START + 87) +//---------------------- +// Bubble Chart Subtypes +#define BMP_BUBBLE_1_HC (RID_SCH_START + 88) + //----------------------------------------------------------------------------- +//further Images: + //SchStatisticTabPage and SchDataStatisticsDlg part 1 #define BMP_INDICATE_BOTH_VERTI_HC (RID_SCH_START + 89) #define BMP_INDICATE_UP_HC (RID_SCH_START + 90) @@ -199,6 +212,5 @@ #define BMP_REGRESSION_EXP_HC (RID_SCH_START + 95) #define BMP_REGRESSION_POWER_HC (RID_SCH_START + 96) -//----------------------------------------------------------------------------- // hide-button for range-choosing -#define IMG_SELECTRANGE_HC (RID_SCH_START + 9) +#define IMG_SELECTRANGE_HC (RID_SCH_START + 100) diff --git a/chart2/source/controller/dialogs/Bitmaps_HC.src b/chart2/source/controller/dialogs/Bitmaps_HC.src index 1e2fe5f4ba14..a82893273ae2 100644 --- a/chart2/source/controller/dialogs/Bitmaps_HC.src +++ b/chart2/source/controller/dialogs/Bitmaps_HC.src @@ -49,6 +49,11 @@ Image IMG_TYPE_LINE_HC ImageBitmap = Bitmap { File = "typepointline_16.png" ; }; MaskColor = SC_HC_MASKCOLOR; }; +Image IMG_TYPE_XY_HC +{ + ImageBitmap = Bitmap { File = "typexy_16.png" ; }; + MaskColor = SC_HC_MASKCOLOR; +}; Image IMG_TYPE_AREA_HC { ImageBitmap = Bitmap { File = "typearea_16.png" ; }; @@ -69,6 +74,15 @@ Image IMG_TYPE_COLUMN_LINE_HC ImageBitmap = Bitmap { File = "typecolumnline_16.png" ; }; MaskColor = SC_HC_MASKCOLOR; }; +Image IMG_TYPE_BUBBLE_HC +{ + ImageBitmap = Bitmap { File = "typebubble_16.png" ; }; + MaskColor = SC_HC_MASKCOLOR; +}; +Bitmap BMP_BUBBLE_1_HC +{ + File = "bubble_52x60_h.png" ; +}; Bitmap BMP_AREAS_2D_HC { File = "areas_52x60_h.png" ; @@ -345,13 +359,13 @@ Bitmap BMP_NET_LINESYMB_STACK_HC { File = "netlinepointstack_52x60_h.png" ; }; -Bitmap BMP_NET_FILLED_HC +Bitmap BMP_NET_FILL_HC { - File = "net_52x60_h.png" ; + File = "netfill_52x60_h.png" ; }; -Bitmap BMP_NET_FILLED_STACKED_HC +Bitmap BMP_NET_FILL_STACK_HC { - File = "netstack_52x60_h.png" ; + File = "netstackfill_52x60_h.png" ; }; //--------------------- Bitmap BMP_PYRAMIDQ_3D_1_HC diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx index 79efe0b04919..fa51d17a03d8 100644 --- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx +++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx @@ -808,7 +808,7 @@ String XYChartDialogController::getName() } Image XYChartDialogController::getImage( bool bIsHighContrast ) { - return SELECT_IMAGE( IMG_TYPE_LINE ); + return SELECT_IMAGE( IMG_TYPE_XY ); } const tTemplateServiceChartTypeParameterMap& XYChartDialogController::getTemplateMap() const { @@ -1000,6 +1000,10 @@ const tTemplateServiceChartTypeParameterMap& NetChartDialogController::getTempla ( C2U( "com.sun.star.chart2.template.NetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_NONE,false,true) ) ( C2U( "com.sun.star.chart2.template.StackedNetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y,false,true) ) ( C2U( "com.sun.star.chart2.template.PercentStackedNetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT,false,true) ) + + ( C2U( "com.sun.star.chart2.template.FilledNet" ), ChartTypeParameter(4,false,false,GlobalStackMode_NONE,false,false) ) + ( C2U( "com.sun.star.chart2.template.StackedFilledNet" ), ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y,false,false) ) + ( C2U( "com.sun.star.chart2.template.PercentStackedFilledNet" ),ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y_PERCENT,false,false) ) ; return m_aTemplateMap; } @@ -1012,17 +1016,20 @@ void NetChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIs rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_NET_SYMB ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_NET_LINESYMB ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_NET ) ); + rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_NET_FILL ) ); } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_NET_SYMB_STACK ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_NET_LINESYMB_STACK ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_NET_STACK ) ); + rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_NET_FILL_STACK ) ); } rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) ); + rSubTypeList.SetItemText( 4, String( SchResId( STR_FILLED )) ); } void NetChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { @@ -1040,6 +1047,10 @@ void NetChartDialogController::adjustParameterToSubType( ChartTypeParameter& rPa rParameter.bSymbols = false; rParameter.bLines = true; break; + case 4: + rParameter.bSymbols = false; + rParameter.bLines = false; + break; default: rParameter.bSymbols = true; rParameter.bLines = false; @@ -1238,6 +1249,40 @@ void CombiColumnLineChartDialogController::adjustParameterToSubType( ChartTypePa break; } } +//-------------------------------------------------------------------------- +BubbleChartDialogController::BubbleChartDialogController() +{ +} +BubbleChartDialogController::~BubbleChartDialogController() +{ +} +String BubbleChartDialogController::getName() +{ + return String( SchResId( STR_TYPE_BUBBLE )); +} +Image BubbleChartDialogController::getImage( bool bIsHighContrast ) +{ + return SELECT_IMAGE( IMG_TYPE_BUBBLE ); +} +const tTemplateServiceChartTypeParameterMap& BubbleChartDialogController::getTemplateMap() const +{ + static tTemplateServiceChartTypeParameterMap m_aTemplateMap = + tTemplateServiceChartTypeParameterMap + ( C2U( "com.sun.star.chart2.template.Bubble" ), ChartTypeParameter(1,true) ) ; + return m_aTemplateMap; +} +void BubbleChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& /*rParameter*/ ) +{ + rSubTypeList.Clear(); + rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_BUBBLE_1 ) ); + + rSubTypeList.SetItemText( 1, String( SchResId( STR_BUBBLE_1 )) ); +} +void BubbleChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) +{ + rParameter.b3DLook = false; + rParameter.eStackMode = GlobalStackMode_NONE; +} //............................................................................. } //namespace chart //............................................................................. diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.hxx b/chart2/source/controller/dialogs/ChartTypeDialogController.hxx index 0f6c7a8ae2c0..cdbda807813f 100644 --- a/chart2/source/controller/dialogs/ChartTypeDialogController.hxx +++ b/chart2/source/controller/dialogs/ChartTypeDialogController.hxx @@ -301,6 +301,19 @@ private: MetricField* m_pMF_NumberOfLines; }; +class BubbleChartDialogController : public ChartTypeDialogController +{ +public: + BubbleChartDialogController(); + virtual ~BubbleChartDialogController(); + + virtual String getName(); + virtual Image getImage( bool bIsHighContrast ); + virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const; + virtual void fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ); + virtual void adjustParameterToSubType( ChartTypeParameter& rParameter ); +}; + //............................................................................. } //namespace chart //............................................................................. diff --git a/chart2/source/controller/dialogs/DataBrowser.cxx b/chart2/source/controller/dialogs/DataBrowser.cxx index 6dbce3afac61..56ef98b159ba 100644 --- a/chart2/source/controller/dialogs/DataBrowser.cxx +++ b/chart2/source/controller/dialogs/DataBrowser.cxx @@ -101,33 +101,6 @@ using namespace ::svt; namespace { -void lcl_setNumberFormat( - SvNumberFormatter * pNumFormatter, long nFmt, - double fData, String & rOutString ) -{ - short eType = pNumFormatter->GetType( nFmt ); - - // change nFmt to an editable format (without loss of information) - if( eType == NUMBERFORMAT_CURRENCY ) // for currencies just display decimals - { - nFmt = pNumFormatter->GetStandardIndex(); - } - else - { - const SvNumberformat* pFormat = pNumFormatter->GetEntry( nFmt ); - if( pFormat ) - { - LanguageType eLanguage = pFormat->GetLanguage(); - nFmt = pNumFormatter->GetStandardFormat( nFmt, eType, eLanguage ); - } - // else: format is 'standard' - } - - // format string to an editable format (without loss of information) - Color* pDummy = NULL; - pNumFormatter->GetOutputString( fData, nFmt, rOutString, &pDummy ); -} - sal_Int32 lcl_getRowInData( long nRow ) { return static_cast< sal_Int32 >( nRow ); @@ -218,7 +191,6 @@ public: sal_Int32 GetEndColumn() const; void Show(); - void Hide(); /** call this before destroying the class. This notifies the listeners to changes of the edit field for the series name. @@ -380,13 +352,6 @@ void SeriesHeader::Show() m_spColorBar->Show(); } -void SeriesHeader::Hide() -{ - m_spSymbol->Hide(); - m_spSeriesName->Hide(); - m_spColorBar->Hide(); -} - void SeriesHeader::SetEditChangedHdl( const Link & rLink ) { m_aChangeLink = rLink; @@ -442,14 +407,14 @@ Image SeriesHeader::GetChartTypeImage( } else if( aChartTypeName.equals( CHART2_SERVICE_NAME_CHARTTYPE_SCATTER )) { - // @todo: correct image for scatter chart type - aResult = SELECT_IMAGE( IMG_TYPE_LINE, bHC ); + aResult = SELECT_IMAGE( IMG_TYPE_XY, bHC ); } else if( aChartTypeName.equals( CHART2_SERVICE_NAME_CHARTTYPE_PIE )) { aResult = SELECT_IMAGE( IMG_TYPE_PIE, bHC ); } - else if( aChartTypeName.equals( CHART2_SERVICE_NAME_CHARTTYPE_NET )) + else if( aChartTypeName.equals( CHART2_SERVICE_NAME_CHARTTYPE_NET ) + || aChartTypeName.equals( CHART2_SERVICE_NAME_CHARTTYPE_FILLED_NET ) ) { aResult = SELECT_IMAGE( IMG_TYPE_NET, bHC ); } @@ -458,6 +423,10 @@ Image SeriesHeader::GetChartTypeImage( // @todo: correct image for candle-stick type aResult = SELECT_IMAGE( IMG_TYPE_STOCK, bHC ); } + else if( aChartTypeName.equals( CHART2_SERVICE_NAME_CHARTTYPE_BUBBLE )) + { + aResult = SELECT_IMAGE( IMG_TYPE_BUBBLE, bHC ); + } return aResult; } @@ -1103,6 +1072,7 @@ sal_Bool DataBrowser::IsTabAllowed( sal_Bool bForward ) const if( CellContainsNumbers( nRow, nCol )) { + m_aNumberEditField.UseInputStringForFormatting(); m_aNumberEditField.SetFormatKey( GetNumberFormatKey( nRow, nCol )); return m_rNumberEditController; } @@ -1313,12 +1283,10 @@ void DataBrowser::ImplAdjustHeaderControls() { (*aIt)->SetPixelPosX( nStartPos + 2 ); (*aIt)->SetPixelWidth( nCurrentPos - nStartPos - 3 ); -// (*aIt)->Show(); } else // do not hide, to get focus events. Move outside the dialog for "hiding" (*aIt)->SetPixelPosX( nMaxPos + 42 ); -// (*aIt)->Hide(); ++aIt; } } diff --git a/chart2/source/controller/dialogs/DataBrowserModel.cxx b/chart2/source/controller/dialogs/DataBrowserModel.cxx index f89171d4d55e..1db67c6721af 100644 --- a/chart2/source/controller/dialogs/DataBrowserModel.cxx +++ b/chart2/source/controller/dialogs/DataBrowserModel.cxx @@ -41,6 +41,8 @@ #include "macros.hxx" #include "StatisticsHelper.hxx" #include "ContainerHelper.hxx" +#include "ChartTypeHelper.hxx" +#include "chartview/ExplicitValueProvider.hxx" #include <com/sun/star/container/XIndexReplace.hpp> #include <com/sun/star/chart2/XDataSeriesContainer.hpp> @@ -103,7 +105,7 @@ OUString lcl_getUIRoleName( { OUString aResult( lcl_getRole( xLSeq )); if( aResult.getLength()) - aResult = chart::DialogModel::ConvertRoleFromInternalToUI( aResult ); + aResult = ::chart::DialogModel::ConvertRoleFromInternalToUI( aResult ); return aResult; } @@ -279,8 +281,8 @@ struct DataBrowserModel::implColumnLess : public ::std::binary_function< { if( rLeft.m_xLabeledDataSequence.is() && rRight.m_xLabeledDataSequence.is()) { - return chart::DialogModel::GetRoleIndexForSorting( lcl_getRole( rLeft.m_xLabeledDataSequence )) < - chart::DialogModel::GetRoleIndexForSorting( lcl_getRole( rRight.m_xLabeledDataSequence )); + return DialogModel::GetRoleIndexForSorting( lcl_getRole( rLeft.m_xLabeledDataSequence )) < + DialogModel::GetRoleIndexForSorting( lcl_getRole( rRight.m_xLabeledDataSequence )); } return true; } @@ -329,6 +331,8 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex ) Reference< chart2::XDataSeries > xSeries; if( static_cast< tDataColumnVector::size_type >( nAfterColumnIndex ) <= m_aColumns.size()) xSeries.set( m_aColumns[nAfterColumnIndex].m_xDataSeries ); + + sal_Int32 nSeriesNumberFormat = 0; if( xSeries.is()) { xChartType.set( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries )); @@ -337,6 +341,10 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex ) lcl_DataSeriesOfHeaderMatches( xSeries ))); if( aIt != m_aHeaders.end()) nStartCol = aIt->m_nEndColumn; + + Reference< beans::XPropertySet > xSeriesProps( xSeries, uno::UNO_QUERY ); + if( xSeriesProps.is() ) + xSeriesProps->getPropertyValue( C2U( "NumberFormat" )) >>= nSeriesNumberFormat; } else { @@ -404,6 +412,14 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex ) } } } + if( nSeriesNumberFormat != 0 ) + { + //give the new series the same number format as the former series especially for bubble charts thus the bubble size values can be edited with same format immidiately + Reference< beans::XPropertySet > xNewSeriesProps( xNewSeries, uno::UNO_QUERY ); + if( xNewSeriesProps.is() ) + xNewSeriesProps->setPropertyValue( C2U( "NumberFormat" ), uno::makeAny( nSeriesNumberFormat ) ); + } + updateFromModel(); } } @@ -708,7 +724,7 @@ void DataBrowserModel::updateFromModel() tDataColumn aCategories; aCategories.m_xLabeledDataSequence.set( xCategories ); if( lcl_ShowCategoriesAsDataLabel( xDiagram )) - aCategories.m_aUIRoleName = chart::DialogModel::GetRoleDataLabel(); + aCategories.m_aUIRoleName = DialogModel::GetRoleDataLabel(); else aCategories.m_aUIRoleName = lcl_getUIRoleName( xCategories ); aCategories.m_eCellType = TEXT; @@ -724,11 +740,15 @@ void DataBrowserModel::updateFromModel() { Reference< chart2::XChartTypeContainer > xCTCnt( aCooSysSeq[nCooSysIdx], uno::UNO_QUERY_THROW ); Sequence< Reference< chart2::XChartType > > aChartTypes( xCTCnt->getChartTypes()); + sal_Int32 nXAxisNumberFormat = DataSeriesHelper::getNumberFormatKeyFromAxis( 0, aCooSysSeq[nCooSysIdx], 0, 0 ); + for( sal_Int32 nCTIdx=0; nCTIdx<aChartTypes.getLength(); ++nCTIdx ) { Reference< chart2::XDataSeriesContainer > xSeriesCnt( aChartTypes[nCTIdx], uno::UNO_QUERY ); if( xSeriesCnt.is()) { + rtl::OUString aRoleForDataLabelNumberFormat = ChartTypeHelper::getRoleOfSequenceForDataLabelNumberFormatDetection( aChartTypes[nCTIdx] ); + Sequence< Reference< chart2::XDataSeries > > aSeries( xSeriesCnt->getDataSeries()); lcl_tSharedSeqVec aSharedSequences( lcl_getSharedSequences( aSeries )); for( lcl_tSharedSeqVec::const_iterator aIt( aSharedSequences.begin()); @@ -741,16 +761,15 @@ void DataBrowserModel::updateFromModel() // as the sequences are shared it should be ok to take the first series // @todo: dimension index 0 for x-values used here. This is just a guess. // Also, the axis index is 0, as there is usually only one x-axis - aSharedSequence.m_nNumberFormatKey = - DataSeriesHelper::getNumberFormatKeyFromAxis( - aSeries[0], aCooSysSeq[nCooSysIdx], 0, 0 ); + aSharedSequence.m_nNumberFormatKey = nXAxisNumberFormat; m_aColumns.push_back( aSharedSequence ); ++nHeaderStart; } for( sal_Int32 nSeriesIdx=0; nSeriesIdx<aSeries.getLength(); ++nSeriesIdx ) { tDataColumnVector::size_type nStartColIndex = m_aColumns.size(); - Reference< chart2::data::XDataSource > xSource( aSeries[nSeriesIdx], uno::UNO_QUERY ); + Reference< chart2::XDataSeries > xSeries( aSeries[nSeriesIdx] ); + Reference< chart2::data::XDataSource > xSource( xSeries, uno::UNO_QUERY ); if( xSource.is()) { Sequence< Reference< chart2::data::XLabeledDataSequence > > aLSeqs( xSource->getDataSequences()); @@ -768,9 +787,14 @@ void DataBrowserModel::updateFromModel() { sal_Int32 nSequenceNumberFormatKey = nYAxisNumberFormatKey; OUString aRole = lcl_getRole( aLSeqs[nSeqIdx] ); - if( aRole.equals( C2U( "values-x" ) ) ) - nSequenceNumberFormatKey = DataSeriesHelper::getNumberFormatKeyFromAxis( - aSeries[nSeriesIdx], aCooSysSeq[nCooSysIdx], 0, 0 ); + + if( aRole.equals( aRoleForDataLabelNumberFormat ) ) + { + nSequenceNumberFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( + Reference< beans::XPropertySet >( xSeries, uno::UNO_QUERY ), xSeries, -1, xDiagram ); + } + else if( aRole.equals( C2U( "values-x" ) ) ) + nSequenceNumberFormatKey = nXAxisNumberFormat; if( ::std::find_if( aSharedSequences.begin(), aSharedSequences.end(), lcl_RepresentationsOfLSeqMatch( aLSeqs[nSeqIdx] )) == aSharedSequences.end()) diff --git a/chart2/source/controller/dialogs/DialogModel.cxx b/chart2/source/controller/dialogs/DialogModel.cxx index 28d9f6420419..69e693911c22 100644 --- a/chart2/source/controller/dialogs/DialogModel.cxx +++ b/chart2/source/controller/dialogs/DialogModel.cxx @@ -40,8 +40,6 @@ #include "macros.hxx" #include "Strings.hrc" #include "ResId.hxx" -#include "LabeledDataSequence.hxx" -#include "CachedDataSequence.hxx" #include "ContainerHelper.hxx" #include "CommonFunctors.hxx" #include "ControllerLockGuard.hxx" @@ -110,6 +108,7 @@ OUString lcl_ConvertRole( const OUString & rRoleString, bool bFromInternalToUI ) aTranslationMap[ C2U( "values-min" ) ] = OUString( String( ::chart::SchResId( STR_DATA_ROLE_MIN ))); aTranslationMap[ C2U( "values-x" ) ] = OUString( String( ::chart::SchResId( STR_DATA_ROLE_X ))); aTranslationMap[ C2U( "values-y" ) ] = OUString( String( ::chart::SchResId( STR_DATA_ROLE_Y ))); + aTranslationMap[ C2U( "values-size" ) ] = OUString( String( ::chart::SchResId( STR_DATA_ROLE_SIZE ))); } if( bFromInternalToUI ) @@ -157,6 +156,7 @@ void lcl_createRoleIndexMap( lcl_tRoleIndexMap & rOutMap ) rOutMap[ C2U( "values-min" ) ] = ++nIndex; rOutMap[ C2U( "values-max" ) ] = ++nIndex; rOutMap[ C2U( "values-last" ) ] = ++nIndex; + rOutMap[ C2U( "values-size" ) ] = ++nIndex; } struct lcl_DataSeriesContainerAppend : public @@ -328,26 +328,26 @@ Reference< XDataSeries > lcl_CreateNewSeries( { if( aRoles[nI].equals( lcl_aLabelRole )) continue; - Reference< data::XDataSequence > xSeq( new ::chart::CachedDataSequence()); + Reference< data::XDataSequence > xSeq( ::chart::DataSourceHelper::createCachedDataSequence() ); lcl_SetSequenceRole( xSeq, aRoles[nI] ); // assert that aRoleOfSeqForSeriesLabel is part of the mandatory roles if( aRoles[nI].equals( aRoleOfSeqForSeriesLabel )) { - Reference< data::XDataSequence > xLabel( new ::chart::CachedDataSequence( aLabel )); + Reference< data::XDataSequence > xLabel( ::chart::DataSourceHelper::createCachedDataSequence( aLabel )); lcl_SetSequenceRole( xLabel, lcl_aLabelRole ); - aNewSequences.push_back( new ::chart::LabeledDataSequence( xSeq, xLabel )); + aNewSequences.push_back( ::chart::DataSourceHelper::createLabeledDataSequence( xSeq, xLabel )); } else - aNewSequences.push_back( new ::chart::LabeledDataSequence( xSeq )); + aNewSequences.push_back( ::chart::DataSourceHelper::createLabeledDataSequence( xSeq )); } for(nI=0; nI<aOptRoles.getLength(); ++nI) { if( aOptRoles[nI].equals( lcl_aLabelRole )) continue; - Reference< data::XDataSequence > xSeq( new ::chart::CachedDataSequence()); + Reference< data::XDataSequence > xSeq( ::chart::DataSourceHelper::createCachedDataSequence()); lcl_SetSequenceRole( xSeq, aOptRoles[nI] ); - aNewSequences.push_back( new ::chart::LabeledDataSequence( xSeq )); + aNewSequences.push_back( ::chart::DataSourceHelper::createLabeledDataSequence( xSeq )); } xSink->setData( ContainerToSequence( aNewSequences )); @@ -723,12 +723,6 @@ OUString DialogModel::ConvertRoleFromInternalToUI( const OUString & rRoleString } // static -OUString DialogModel::ConvertRoleFromUIToInternal( const OUString & rRoleString ) -{ - return lcl_ConvertRole( rRoleString, false ); -} - -// static OUString DialogModel::GetRoleDataLabel() { return OUString( String( ::chart::SchResId( STR_OBJECT_DATALABELS ))); @@ -750,43 +744,6 @@ sal_Int32 DialogModel::GetRoleIndexForSorting( const ::rtl::OUString & rInternal return 0; } -// static -bool DialogModel::isSeriesValid( - const Reference< chart2::XDataSeries > & xSeries, - const OUString & aRoleOfSequenceForLabel, - const Reference< chart2::XChartType > & xChartType ) -{ - if( ! (xSeries.is() && xChartType.is())) - return false; - - try - { - sal_Int32 nFoundRoles = 0; - DialogModel::tRolesWithRanges aRolesWithRanges; - Reference< data::XDataSource > xSource( xSeries, uno::UNO_QUERY_THROW ); - const Sequence< Reference< data::XLabeledDataSequence > > aSeq( xSource->getDataSequences()); - ::std::copy( aSeq.getConstArray(), aSeq.getConstArray() + aSeq.getLength(), - lcl_RolesWithRangeAppend( aRolesWithRanges, aRoleOfSequenceForLabel )); - const Sequence< OUString > aRoles( xChartType->getSupportedMandatoryRoles()); - for( sal_Int32 nI = 0; nI < aRoles.getLength(); ++nI ) - if( !aRoles[nI].equals( lcl_aLabelRole ) && aRolesWithRanges.find( aRoles[nI] ) != aRolesWithRanges.end() ) - ++nFoundRoles; - // strong condition: all mandatory roles exist (except the label) -// if( !aRoles[nI].equals( lcl_aLabelRole ) && aRolesWithRanges.find( aRoles[nI] ) == aRolesWithRanges.end() ) -// return false; - // weak condition: one mandatory role exists - if( aRoles.getLength() > 0 && nFoundRoles == 0 ) - return false; - } - catch( uno::Exception & ex ) - { - ASSERT_EXCEPTION( ex ); - return false; - } - - return true; -} - // private methods void DialogModel::createBackup() diff --git a/chart2/source/controller/dialogs/DialogModel.hxx b/chart2/source/controller/dialogs/DialogModel.hxx index 65579ab652be..744262cbbd1f 100644 --- a/chart2/source/controller/dialogs/DialogModel.hxx +++ b/chart2/source/controller/dialogs/DialogModel.hxx @@ -154,20 +154,12 @@ public: void startControllerLockTimer(); static ::rtl::OUString ConvertRoleFromInternalToUI( const ::rtl::OUString & rRoleString ); - static ::rtl::OUString ConvertRoleFromUIToInternal( const ::rtl::OUString & rRoleString ); static ::rtl::OUString GetRoleDataLabel(); // pass a role string (not translated) and get an index that serves for // relative ordering, to get e.g. x-values and y-values in the right order static sal_Int32 GetRoleIndexForSorting( const ::rtl::OUString & rInternalRoleString ); - static bool isSeriesValid( - const ::com::sun::star::uno::Reference< - ::com::sun::star::chart2::XDataSeries > & xSeries, - const ::rtl::OUString & aRoleOfSequenceForLabel, - const ::com::sun::star::uno::Reference< - ::com::sun::star::chart2::XChartType > & xChartType ); - private: ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx index 7ee4ae67761d..24b717adba7f 100644 --- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx +++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx @@ -87,6 +87,16 @@ OUString lcl_getDataSeriesName( const rtl::OUString& rObjectCID, const Reference return aRet; } +OUString lcl_getFullSeriesName( const rtl::OUString& rObjectCID, const Reference< frame::XModel >& xChartModel ) +{ + OUString aRet = String(SchResId(STR_TIP_DATASERIES)); + OUString aWildcard( C2U("%SERIESNAME") ); + sal_Int32 nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) + aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), lcl_getDataSeriesName( rObjectCID, xChartModel ) ); + return aRet; +} + void lcl_addText( OUString& rOut, const OUString& rSeparator, const OUString& rNext ) { if( rOut.getLength() && rNext.getLength() ) @@ -109,7 +119,7 @@ OUString lcl_getDataPointValueText( const Reference< XDataSeries >& xSeries, sal Sequence< Reference< data::XLabeledDataSequence > > aDataSequences( xDataSource->getDataSequences() ); - rtl::OUString aX, aY, aY_Min, aY_Max, aY_First, aY_Last; + rtl::OUString aX, aY, aY_Min, aY_Max, aY_First, aY_Last, a_Size; double fValue = 0; uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( xChartModel, uno::UNO_QUERY ); @@ -170,6 +180,12 @@ OUString lcl_getDataPointValueText( const Reference< XDataSeries >& xSeries, sal sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); aY_Last = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); } + else if( aRole.equals(C2U("values-size")) ) + { + aData[nPointIndex]>>= fValue; + sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); + a_Size = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); + } } catch( uno::Exception& e ) { @@ -201,6 +217,7 @@ OUString lcl_getDataPointValueText( const Reference< XDataSeries >& xSeries, sal lcl_addText( aRet, aSeparator, aY_Min ); lcl_addText( aRet, aSeparator, aY_Max ); lcl_addText( aRet, aSeparator, aY_Last ); + lcl_addText( aRet, aSeparator, a_Size ); return aRet; } @@ -281,22 +298,27 @@ rtl::OUString ObjectNameProvider::getName( ObjectType eObjectType, bool bPlural aRet=String(SchResId(STR_OBJECT_LABEL)); break; case OBJECTTYPE_DATA_ERRORS: - aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe distinguish plural singular + aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe distinguish plural singular break; case OBJECTTYPE_DATA_ERRORS_X: - aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe specialize in future + aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe specialize in future break; case OBJECTTYPE_DATA_ERRORS_Y: - aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe specialize in future + aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe specialize in future break; case OBJECTTYPE_DATA_ERRORS_Z: - aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe specialize in future + aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe specialize in future break; case OBJECTTYPE_DATA_AVERAGE_LINE: aRet=String(SchResId(STR_OBJECT_AVERAGE_LINE)); break; case OBJECTTYPE_DATA_CURVE: - aRet=String(SchResId(STR_OBJECT_CURVE)); + { + if(bPlural) + aRet=String(SchResId(STR_OBJECT_CURVES)); + else + aRet=String(SchResId(STR_OBJECT_CURVE)); + } break; case OBJECTTYPE_DATA_STOCK_RANGE: //aRet=String(SchResId()); @@ -326,15 +348,24 @@ rtl::OUString ObjectNameProvider::getAxisName( const rtl::OUString& rObjectCID Reference< XAxis > xAxis( ObjectIdentifier::getObjectPropertySet( rObjectCID , xChartModel ), uno::UNO_QUERY ); - sal_Int32 nDimensionIndex = AxisHelper::getDimensionIndexOfAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) ); + sal_Int32 nCooSysIndex = 0; + sal_Int32 nDimensionIndex = 0; + sal_Int32 nAxisIndex = 0; + AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ), nCooSysIndex, nDimensionIndex, nAxisIndex ); switch(nDimensionIndex) { case 0://x-axis - aRet=String(SchResId(STR_OBJECT_AXIS_X)); + if( nAxisIndex == 0 ) + aRet=String(SchResId(STR_OBJECT_AXIS_X)); + else + aRet=String(SchResId(STR_OBJECT_SECONDARY_X_AXIS)); break; case 1://y-axis - aRet=String(SchResId(STR_OBJECT_AXIS_Y)); + if( nAxisIndex == 0 ) + aRet=String(SchResId(STR_OBJECT_AXIS_Y)); + else + aRet=String(SchResId(STR_OBJECT_SECONDARY_Y_AXIS)); break; case 2://z-axis aRet=String(SchResId(STR_OBJECT_AXIS_Z)); @@ -348,6 +379,45 @@ rtl::OUString ObjectNameProvider::getAxisName( const rtl::OUString& rObjectCID } //static +OUString ObjectNameProvider::getTitleNameByType( TitleHelper::eTitleType eType ) +{ + OUString aRet; + + switch(eType) + { + case TitleHelper::MAIN_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_MAIN)); + break; + case TitleHelper::SUB_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_SUB)); + break; + case TitleHelper::X_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_X_AXIS)); + break; + case TitleHelper::Y_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_Y_AXIS)); + break; + case TitleHelper::Z_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_Z_AXIS)); + break; + case TitleHelper::SECONDARY_X_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_SECONDARY_X_AXIS)); + break; + case TitleHelper::SECONDARY_Y_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_SECONDARY_Y_AXIS)); + break; + default: + DBG_ERROR("unknown title type"); + break; + } + + if( !aRet.getLength() ) + aRet=String(SchResId(STR_OBJECT_TITLE)); + + return aRet; +} + +//static OUString ObjectNameProvider::getTitleName( const OUString& rObjectCID , const Reference< frame::XModel >& xChartModel ) { @@ -359,35 +429,7 @@ OUString ObjectNameProvider::getTitleName( const OUString& rObjectCID { TitleHelper::eTitleType eType; if( TitleHelper::getTitleType( eType, xTitle, xChartModel ) ) - { - switch(eType) - { - case TitleHelper::MAIN_TITLE: - aRet=String(SchResId(STR_OBJECT_TITLE_MAIN)); - break; - case TitleHelper::SUB_TITLE: - aRet=String(SchResId(STR_OBJECT_TITLE_SUB)); - break; - case TitleHelper::X_AXIS_TITLE: - aRet=String(SchResId(STR_OBJECT_TITLE_X_AXIS)); - break; - case TitleHelper::Y_AXIS_TITLE: - aRet=String(SchResId(STR_OBJECT_TITLE_Y_AXIS)); - break; - case TitleHelper::Z_AXIS_TITLE: - aRet=String(SchResId(STR_OBJECT_TITLE_Z_AXIS)); - break; - case TitleHelper::SECONDARY_X_AXIS_TITLE: - aRet=String(SchResId(STR_OBJECT_TITLE_SECONDARY_X_AXIS)); - break; - case TitleHelper::SECONDARY_Y_AXIS_TITLE: - aRet=String(SchResId(STR_OBJECT_TITLE_SECONDARY_Y_AXIS)); - break; - default: - DBG_ERROR("unknown title type"); - break; - } - } + aRet = ObjectNameProvider::getTitleNameByType( eType ); } if( !aRet.getLength() ) aRet=String(SchResId(STR_OBJECT_TITLE)); @@ -474,12 +516,7 @@ rtl::OUString ObjectNameProvider::getHelpText( const rtl::OUString& rObjectCID, } else if( OBJECTTYPE_DATA_SERIES == eObjectType ) { - aRet=String(SchResId(STR_TIP_DATASERIES)); - - OUString aWildcard( C2U("%SERIESNAME") ); - sal_Int32 nIndex = aRet.indexOf( aWildcard ); - if( nIndex != -1 ) - aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), lcl_getDataSeriesName( rObjectCID, xChartModel ) ); + aRet = lcl_getFullSeriesName( rObjectCID, xChartModel ); } else if( OBJECTTYPE_DATA_POINT == eObjectType ) { @@ -746,7 +783,41 @@ rtl::OUString ObjectNameProvider::getNameForCID( case OBJECTTYPE_TITLE: return getTitleName( rObjectCID, xModel ); case OBJECTTYPE_GRID: + case OBJECTTYPE_SUBGRID: return getGridName( rObjectCID, xModel ); + case OBJECTTYPE_DATA_SERIES: + return lcl_getFullSeriesName( rObjectCID, xModel ); + //case OBJECTTYPE_LEGEND_ENTRY: + case OBJECTTYPE_DATA_POINT: + case OBJECTTYPE_DATA_LABELS: + case OBJECTTYPE_DATA_LABEL: + case OBJECTTYPE_DATA_ERRORS: + case OBJECTTYPE_DATA_ERRORS_X: + case OBJECTTYPE_DATA_ERRORS_Y: + case OBJECTTYPE_DATA_ERRORS_Z: + case OBJECTTYPE_DATA_CURVE: + case OBJECTTYPE_DATA_AVERAGE_LINE: + case OBJECTTYPE_DATA_CURVE_EQUATION: + { + rtl::OUString aRet = lcl_getFullSeriesName( rObjectCID, xModel ); + aRet += C2U(" "); + if( eType == OBJECTTYPE_DATA_POINT || eType == OBJECTTYPE_DATA_LABEL ) + { + aRet += getName( OBJECTTYPE_DATA_POINT ); + sal_Int32 nPointIndex = ObjectIdentifier::getIndexFromParticleOrCID( rObjectCID ); + aRet += C2U(" "); + aRet += OUString::valueOf(nPointIndex+1); + + if( eType == OBJECTTYPE_DATA_LABEL ) + { + aRet += C2U(" "); + aRet += getName( OBJECTTYPE_DATA_LABEL ); + } + } + else + aRet += getName( eType ); + return aRet; + } default: break; } @@ -754,6 +825,32 @@ rtl::OUString ObjectNameProvider::getNameForCID( return getName( eType ); } +//static +rtl::OUString ObjectNameProvider::getName_ObjectForSeries( + ObjectType eObjectType, + const rtl::OUString& rSeriesCID, + const uno::Reference< chart2::XChartDocument >& xChartDocument ) +{ + uno::Reference< frame::XModel> xChartModel( xChartDocument, uno::UNO_QUERY ); + Reference< XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rSeriesCID , xChartModel ), uno::UNO_QUERY ); + if( xSeries.is() ) + { + OUString aRet = String(SchResId(STR_OBJECT_FOR_SERIES)); + replaceParamterInString( aRet, C2U("%OBJECTNAME"), getName( eObjectType, false /*bPlural*/ ) ); + replaceParamterInString( aRet, C2U("%SERIESNAME"), lcl_getDataSeriesName( rSeriesCID, xChartModel ) ); + return aRet; + } + else + return ObjectNameProvider::getName_ObjectForAllSeries( eObjectType ); +} + +//static +rtl::OUString ObjectNameProvider::getName_ObjectForAllSeries( ObjectType eObjectType ) +{ + OUString aRet = String(SchResId(STR_OBJECT_FOR_ALL_SERIES)); + replaceParamterInString( aRet, C2U("%OBJECTNAME"), getName( eObjectType, true /*bPlural*/ ) ); + return aRet; +} //............................................................................. } //namespace chart diff --git a/chart2/source/controller/dialogs/Strings.src b/chart2/source/controller/dialogs/Strings.src index 8da8700a4406..b7ef643e3ff3 100644 --- a/chart2/source/controller/dialogs/Strings.src +++ b/chart2/source/controller/dialogs/Strings.src @@ -84,9 +84,9 @@ String STR_PAGE_TRANSPARENCY Text [ en-US ] = "Transparency"; }; -String STR_PAGE_CHARACTERS +String STR_PAGE_FONT { - Text [ en-US ] = "Characters" ; + Text [ en-US ] = "Font" ; }; String STR_PAGE_FONT_EFFECTS @@ -156,6 +156,12 @@ String STR_PAGE_ILLUMINATION { Text [ en-US ] = "Illumination" ; }; + +String STR_PAGE_ASIAN +{ + Text [ en-US ] = "Asian Typography" ; +}; + String STR_OBJECT_AVERAGE_LINE_WITH_PARAMETERS { Text [ en-US ] = "Mean value line with value %AVERAGE_VALUE and standard deviation %STD_DEVIATION"; @@ -177,6 +183,14 @@ String STR_OBJECT_AXIS_Z { Text [ en-US ] = "Z Axis" ; }; +String STR_OBJECT_SECONDARY_X_AXIS +{ + Text [ en-US ] = "Secondary X Axis" ; +}; +String STR_OBJECT_SECONDARY_Y_AXIS +{ + Text [ en-US ] = "Secondary Y Axis" ; +}; String STR_OBJECT_AXES { @@ -306,18 +320,18 @@ String STR_OBJECT_CURVE_EQUATION Text[ en-US ] = "Equation"; }; -String STR_OBJECT_ERROR_INDICATOR +String STR_OBJECT_ERROR_BARS { - Text [ en-US ] = "Error Indicator"; + Text [ en-US ] = "Error Bars"; }; String STR_OBJECT_STOCK_LOSS { - Text [ en-US ] = "Negative Deviation"; + Text [ en-US ] = "Stock Loss"; }; String STR_OBJECT_STOCK_GAIN { - Text [ en-US ] = "Positive Deviation"; + Text [ en-US ] = "Stock Gain"; }; String STR_OBJECT_PAGE @@ -399,6 +413,18 @@ String STR_STATUS_PIE_SEGMENT_EXPLODED //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +String STR_OBJECT_FOR_SERIES +{ + Text [ en-US ] = "%OBJECTNAME for Data Series '%SERIESNAME'" ; +}; + +String STR_OBJECT_FOR_ALL_SERIES +{ + Text [ en-US ] = "%OBJECTNAME for all Data Series" ; +}; + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- String STR_ACTION_EDIT_CHARTTYPE { Text [ en-US ] = "Edit chart type" ; @@ -465,6 +491,11 @@ String STR_DATA_ROLE_Y Text [ en-US ] = "Y-Values" ; }; +String STR_DATA_ROLE_SIZE +{ + Text [ en-US ] = "Bubble Sizes" ; +}; + String STR_DATA_ROLE_X_ERROR { Text [ en-US ] = "X-Error-Bars" ; diff --git a/chart2/source/controller/dialogs/Strings_ChartTypes.src b/chart2/source/controller/dialogs/Strings_ChartTypes.src index 1e18f0e8724f..f2731b2971c2 100644 --- a/chart2/source/controller/dialogs/Strings_ChartTypes.src +++ b/chart2/source/controller/dialogs/Strings_ChartTypes.src @@ -139,5 +139,18 @@ String STR_DEEP { Text [ en-US ] = "Deep" ; }; +String STR_FILLED +{ + Text [ en-US ] = "Filled" ; +}; +//----------------------------------------------------------------------------- +String STR_TYPE_BUBBLE +{ + Text [ en-US ] = "Bubble" ; +}; +String STR_BUBBLE_1 +{ + Text [ en-US ] = "Bubble Chart" ; +}; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- diff --git a/chart2/source/controller/dialogs/Strings_Statistic.src b/chart2/source/controller/dialogs/Strings_Statistic.src index a0f1a1811cd3..9f6572c6ae82 100644 --- a/chart2/source/controller/dialogs/Strings_Statistic.src +++ b/chart2/source/controller/dialogs/Strings_Statistic.src @@ -52,10 +52,6 @@ String STR_CONTROLTEXT_ERROR_BARS_FROM_DATA //------------------------------------------------------------------------ //------------------------------------------------------------------------ -String STR_REGRESSION_NONE -{ - Text [ en-US ] = "No Regression" ; -}; String STR_REGRESSION_LINEAR { Text [ en-US ] = "Linear Regression" ; diff --git a/chart2/source/controller/dialogs/TabPages.hrc b/chart2/source/controller/dialogs/TabPages.hrc index d56534257500..8c92c062ad14 100644 --- a/chart2/source/controller/dialogs/TabPages.hrc +++ b/chart2/source/controller/dialogs/TabPages.hrc @@ -83,22 +83,6 @@ #define CTL_BITMAP_PREVIEW 6 */ -//#define TP_OPTIONS 908 -#define GRP_OPT_AXIS 1 -#define RBT_OPT_AXIS_1 2 -#define RBT_OPT_AXIS_2 3 -#define MT_GAP 4 -#define MT_OVERLAP 5 -#define FT_GAP 6 -#define FT_OVERLAP 7 -#define GB_BAR 8 -#define CB_CONNECTOR 9 -#define CB_BARS_SIDE_BY_SIDE 10 -#define FL_PLOT_MISSING_VALUES 11 -#define RB_DONT_PAINT 12 -#define RB_ASSUME_ZERO 13 -#define RB_CONTINUE_LINE 14 - //------------ //from old chart tplabel.hrc diff --git a/chart2/source/controller/dialogs/dlg_DataSource.cxx b/chart2/source/controller/dialogs/dlg_DataSource.cxx index 1d76a106d72b..1aa7db1f0f17 100644 --- a/chart2/source/controller/dialogs/dlg_DataSource.cxx +++ b/chart2/source/controller/dialogs/dlg_DataSource.cxx @@ -202,6 +202,19 @@ DataSourceDialog::~DataSourceDialog() delete m_pTabControl; } +short DataSourceDialog::Execute() +{ + short nResult = TabDialog::Execute(); + if( nResult == RET_OK ) + { + if( m_pRangeChooserTabePage ) + m_pRangeChooserTabePage->commitPage(); + if( m_pDataSourceTabPage ) + m_pDataSourceTabPage->commitPage(); + } + return nResult; +} + void DataSourceDialog::setInvalidPage( TabPage * pTabPage ) { if( pTabPage == m_pRangeChooserTabePage ) diff --git a/chart2/source/controller/dialogs/dlg_InsertDataLabel.cxx b/chart2/source/controller/dialogs/dlg_InsertDataLabel.cxx index 79f4bf52d05b..d7eb3357e6e8 100644 --- a/chart2/source/controller/dialogs/dlg_InsertDataLabel.cxx +++ b/chart2/source/controller/dialogs/dlg_InsertDataLabel.cxx @@ -47,11 +47,12 @@ DataLabelsDialog::DataLabelsDialog(Window* pWindow, const SfxItemSet& rInAttrs, m_aBtnOK(this, SchResId(BTN_OK)), m_aBtnCancel(this, SchResId(BTN_CANCEL)), m_aBtnHelp(this, SchResId(BTN_HELP)), - m_apDataLabelResources( new DataLabelResources(this,rInAttrs,false) ), + m_apDataLabelResources( new DataLabelResources(this,rInAttrs) ), m_rInAttrs(rInAttrs) { FreeResource(); - SetText( ObjectNameProvider::getName(OBJECTTYPE_DATA_LABELS) ); + this->SetText( ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_LABELS ) ); + m_apDataLabelResources->SetNumberFormatter( pFormatter ); Reset(); } diff --git a/chart2/source/controller/dialogs/dlg_InsertDataLabel.src b/chart2/source/controller/dialogs/dlg_InsertDataLabel.src index b11b2102ecef..091628a2c73e 100644 --- a/chart2/source/controller/dialogs/dlg_InsertDataLabel.src +++ b/chart2/source/controller/dialogs/dlg_InsertDataLabel.src @@ -38,8 +38,8 @@ ModalDialog DLG_DATA_DESCR HelpID = SID_INSERT_DESCRIPTION ; OutputSize = TRUE ; SVLook = TRUE ; - Size = MAP_APPFONT ( 200 , 136 ) ; + Size = MAP_APPFONT ( 316 , 185 ) ; Moveable = TRUE ; - BUTTONS_OK_CANCEL_HELP_STACKED(144) + BUTTONS_OK_CANCEL_HELP_STACKED(260) RESOURCE_DATALABEL( 6, 7 ) }; diff --git a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx index e6b74c8e660a..535b07a7df38 100644 --- a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx +++ b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx @@ -42,6 +42,7 @@ #include "ObjectIdentifier.hxx" #include "DiagramHelper.hxx" #include "AxisHelper.hxx" +#include "ObjectNameProvider.hxx" #include <com/sun/star/chart2/XAxis.hpp> #include <com/sun/star/chart2/XDiagram.hpp> @@ -70,7 +71,8 @@ InsertErrorBarsDialog::InsertErrorBarsDialog( /* bNoneAvailable = */ true, eType )) { FreeResource(); - this->SetText( String( SchResId( STR_PAGE_YERROR_BARS ))); + this->SetText( ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_ERRORS ) ); + m_apErrorBarResources->SetChartDocumentForRangeChoosing( xChartDocument ); } diff --git a/chart2/source/controller/dialogs/dlg_InsertTrendline.cxx b/chart2/source/controller/dialogs/dlg_InsertTrendline.cxx index 95c9754f3b7e..042baa292f65 100644 --- a/chart2/source/controller/dialogs/dlg_InsertTrendline.cxx +++ b/chart2/source/controller/dialogs/dlg_InsertTrendline.cxx @@ -42,6 +42,7 @@ #include "ObjectIdentifier.hxx" #include "DiagramHelper.hxx" #include "AxisHelper.hxx" +#include "ObjectNameProvider.hxx" #include <com/sun/star/chart2/XAxis.hpp> #include <com/sun/star/chart2/XDiagram.hpp> @@ -74,7 +75,7 @@ InsertTrendlineDialog::InsertTrendlineDialog( Window* pParent, const SfxItemSet& m_apTrendlineResources( new TrendlineResources( this, rInAttrs, true )) { FreeResource(); - this->SetText( String( SchResId( STR_OBJECT_CURVES ))); + this->SetText( ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_CURVE ) ); } InsertTrendlineDialog::~InsertTrendlineDialog() diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx index 2087df6deb9e..097c6c1d0107 100644 --- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx +++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx @@ -82,6 +82,8 @@ #include <svx/flagsdef.hxx> #include <svx/numinf.hxx> +#include <svtools/cjkoptions.hxx> + //............................................................................. namespace chart { @@ -141,7 +143,7 @@ void ObjectPropertiesDialogParameter::init( const uno::Reference< frame::XModel uno::Reference< XChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries ); sal_Int32 nDimensionCount = DiagramHelper::getDimension( xDiagram ); - bool bHasSeriesProperties = (OBJECTTYPE_DATA_SERIES==m_eObjectType || OBJECTTYPE_DATA_LABELS==m_eObjectType); + bool bHasSeriesProperties = (OBJECTTYPE_DATA_SERIES==m_eObjectType); bool bHasDataPointproperties = (OBJECTTYPE_DATA_POINT==m_eObjectType); if( bHasSeriesProperties || bHasDataPointproperties ) @@ -220,14 +222,37 @@ void ObjectPropertiesDialogParameter::init( const uno::Reference< frame::XModel { m_aLocalizedName = ObjectNameProvider::getAxisName( m_aObjectCID, xChartModel ); } + else if( !m_bAffectsMultipleObjects && ( OBJECTTYPE_GRID == m_eObjectType || OBJECTTYPE_SUBGRID == m_eObjectType ) ) + { + m_aLocalizedName = ObjectNameProvider::getGridName( m_aObjectCID, xChartModel ); + } + else if( !m_bAffectsMultipleObjects && OBJECTTYPE_TITLE == m_eObjectType ) + { + m_aLocalizedName = ObjectNameProvider::getTitleName( m_aObjectCID, xChartModel ); + } else { - ObjectType eType = m_eObjectType; - if( OBJECTTYPE_DATA_LABEL == eType ) - eType = OBJECTTYPE_DATA_POINT; - else if( OBJECTTYPE_DATA_LABELS == eType ) - eType = OBJECTTYPE_DATA_SERIES; - m_aLocalizedName = ObjectNameProvider::getName(eType,m_bAffectsMultipleObjects); + switch( m_eObjectType ) + { + case OBJECTTYPE_DATA_POINT: + case OBJECTTYPE_DATA_LABEL: + case OBJECTTYPE_DATA_LABELS: + case OBJECTTYPE_DATA_ERRORS: + case OBJECTTYPE_DATA_ERRORS_X: + case OBJECTTYPE_DATA_ERRORS_Y: + case OBJECTTYPE_DATA_ERRORS_Z: + case OBJECTTYPE_DATA_AVERAGE_LINE: + case OBJECTTYPE_DATA_CURVE: + case OBJECTTYPE_DATA_CURVE_EQUATION: + if( m_bAffectsMultipleObjects ) + m_aLocalizedName = ObjectNameProvider::getName_ObjectForAllSeries( m_eObjectType ); + else + m_aLocalizedName = ObjectNameProvider::getName_ObjectForSeries( m_eObjectType, m_aObjectCID, m_xChartDocument ); + break; + default: + m_aLocalizedName = ObjectNameProvider::getName(m_eObjectType,m_bAffectsMultipleObjects); + break; + } } } } @@ -345,47 +370,58 @@ SchAttribTabDlg::SchAttribTabDlg(Window* pParent, this->SetText( pDialogParameter->getLocalizedName() ); + SvtCJKOptions aCJKOptions; + switch (eObjectType) { case OBJECTTYPE_TITLE: AddTabPage(RID_SVXPAGE_LINE, String(SchResId(STR_PAGE_BORDER))); AddTabPage(RID_SVXPAGE_AREA, String(SchResId(STR_PAGE_AREA))); AddTabPage(RID_SVXPAGE_TRANSPARENCE, String(SchResId(STR_PAGE_TRANSPARENCY))); - AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_CHARACTERS))); + AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_FONT))); AddTabPage(RID_SVXPAGE_CHAR_EFFECTS, String(SchResId(STR_PAGE_FONT_EFFECTS))); AddTabPage(TP_ALIGNMENT, String(SchResId(STR_PAGE_ALIGNMENT)), SchAlignmentTabPage::Create, NULL); + if( aCJKOptions.IsAsianTypographyEnabled() ) + AddTabPage(RID_SVXPAGE_PARA_ASIAN, String(SchResId(STR_PAGE_ASIAN))); break; case OBJECTTYPE_LEGEND: AddTabPage(RID_SVXPAGE_LINE, String(SchResId(STR_PAGE_BORDER))); AddTabPage(RID_SVXPAGE_AREA, String(SchResId(STR_PAGE_AREA))); AddTabPage(RID_SVXPAGE_TRANSPARENCE, String(SchResId(STR_PAGE_TRANSPARENCY))); - AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_CHARACTERS))); + AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_FONT))); AddTabPage(RID_SVXPAGE_CHAR_EFFECTS, String(SchResId(STR_PAGE_FONT_EFFECTS))); AddTabPage(TP_LEGEND_POS, String(SchResId(STR_PAGE_POSITION)), SchLegendPosTabPage::Create, NULL); + if( aCJKOptions.IsAsianTypographyEnabled() ) + AddTabPage(RID_SVXPAGE_PARA_ASIAN, String(SchResId(STR_PAGE_ASIAN))); break; case OBJECTTYPE_DATA_SERIES: case OBJECTTYPE_DATA_POINT: - case OBJECTTYPE_DATA_LABEL: - case OBJECTTYPE_DATA_LABELS: - AddTabPage(RID_SVXPAGE_LINE, String(SchResId( m_pParameter->HasAreaProperties() ? STR_PAGE_BORDER : STR_PAGE_LINE ))); + if( m_pParameter->ProvidesSecondaryYAxis() || m_pParameter->ProvidesOverlapAndGapWidth() || m_pParameter->ProvidesMissingValueTreatments() ) + AddTabPage(TP_OPTIONS, String(SchResId(STR_PAGE_OPTIONS)),SchOptionTabPage::Create, NULL); + if( m_pParameter->ProvidesStartingAngle()) + AddTabPage(TP_POLAROPTIONS, String(SchResId(STR_PAGE_OPTIONS)),PolarOptionsTabPage::Create, NULL); + + if( m_pParameter->HasGeometryProperties() ) + AddTabPage(TP_LAYOUT, String(SchResId(STR_PAGE_LAYOUT)),SchLayoutTabPage::Create, NULL); + if(m_pParameter->HasAreaProperties()) { AddTabPage(RID_SVXPAGE_AREA, String(SchResId(STR_PAGE_AREA))); AddTabPage(RID_SVXPAGE_TRANSPARENCE, String(SchResId(STR_PAGE_TRANSPARENCY))); } - AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_CHARACTERS))); - AddTabPage(RID_SVXPAGE_CHAR_EFFECTS, String(SchResId(STR_PAGE_FONT_EFFECTS))); + AddTabPage(RID_SVXPAGE_LINE, String(SchResId( m_pParameter->HasAreaProperties() ? STR_PAGE_BORDER : STR_PAGE_LINE ))); + break; + + case OBJECTTYPE_DATA_LABEL: + case OBJECTTYPE_DATA_LABELS: AddTabPage(TP_DATA_DESCR, String(SchResId(STR_OBJECT_DATALABELS)), DataLabelsTabPage::Create, NULL); -// if( m_pParameter->HasStatisticProperties() ) -// AddTabPage(TP_YERRORBAR, String(SchResId(STR_PAGE_YERROR_BARS)), ErrorBarsTabPage::Create, NULL); - if( m_pParameter->HasGeometryProperties() ) - AddTabPage(TP_LAYOUT, String(SchResId(STR_PAGE_LAYOUT)),SchLayoutTabPage::Create, NULL); - if( m_pParameter->ProvidesSecondaryYAxis() || m_pParameter->ProvidesOverlapAndGapWidth() || m_pParameter->ProvidesMissingValueTreatments() ) - AddTabPage(TP_OPTIONS, String(SchResId(STR_PAGE_OPTIONS)),SchOptionTabPage::Create, NULL); - if( m_pParameter->ProvidesStartingAngle()) - AddTabPage(TP_POLAROPTIONS, String(SchResId(STR_PAGE_OPTIONS)),PolarOptionsTabPage::Create, NULL); + AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_FONT))); + AddTabPage(RID_SVXPAGE_CHAR_EFFECTS, String(SchResId(STR_PAGE_FONT_EFFECTS))); + if( aCJKOptions.IsAsianTypographyEnabled() ) + AddTabPage(RID_SVXPAGE_PARA_ASIAN, String(SchResId(STR_PAGE_ASIAN))); + break; case OBJECTTYPE_AXIS: @@ -399,8 +435,10 @@ SchAttribTabDlg::SchAttribTabDlg(Window* pParent, AddTabPage(TP_AXIS_LABEL, String(SchResId(STR_OBJECT_LABEL)), SchAxisLabelTabPage::Create, NULL); if( m_pParameter->HasNumberProperties() ) AddTabPage(RID_SVXPAGE_NUMBERFORMAT, String(SchResId(STR_PAGE_NUMBERS))); - AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_CHARACTERS))); + AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_FONT))); AddTabPage(RID_SVXPAGE_CHAR_EFFECTS, String(SchResId(STR_PAGE_FONT_EFFECTS))); + if( aCJKOptions.IsAsianTypographyEnabled() ) + AddTabPage(RID_SVXPAGE_PARA_ASIAN, String(SchResId(STR_PAGE_ASIAN))); break; } @@ -444,7 +482,7 @@ SchAttribTabDlg::SchAttribTabDlg(Window* pParent, AddTabPage(RID_SVXPAGE_LINE, String(SchResId(STR_PAGE_BORDER))); AddTabPage(RID_SVXPAGE_AREA, String(SchResId(STR_PAGE_AREA))); AddTabPage(RID_SVXPAGE_TRANSPARENCE, String(SchResId(STR_PAGE_TRANSPARENCY))); - AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_CHARACTERS))); + AddTabPage(RID_SVXPAGE_CHAR_NAME, String(SchResId(STR_PAGE_FONT))); AddTabPage(RID_SVXPAGE_CHAR_EFFECTS, String(SchResId(STR_PAGE_FONT_EFFECTS))); AddTabPage(RID_SVXPAGE_NUMBERFORMAT, String(SchResId(STR_PAGE_NUMBERS))); if( SvtLanguageOptions().IsCTLFontEnabled() ) diff --git a/chart2/source/controller/dialogs/hidother.src b/chart2/source/controller/dialogs/hidother.src index 8707088c4337..4f409d14094b 100644 --- a/chart2/source/controller/dialogs/hidother.src +++ b/chart2/source/controller/dialogs/hidother.src @@ -91,6 +91,8 @@ hidspecial HID_SCH_DATALABEL_PLACEMENT {HelpId= HID_SCH_DATALABEL_PLACEMENT; }; hidspecial HID_SCH_TEXTDIRECTION {HelpId= HID_SCH_TEXTDIRECTION; }; hidspecial HID_SCH_TEXTDIRECTION_TITLE {HelpId= HID_SCH_TEXTDIRECTION_TITLE; }; hidspecial HID_SCH_TEXTDIRECTION_EQUATION {HelpId= HID_SCH_TEXTDIRECTION_EQUATION; }; +hidspecial HID_SCH_DATALABEL_ROTATION_KNOB {HelpId= HID_SCH_DATALABEL_ROTATION_KNOB; }; +hidspecial HID_SCH_DATALABEL_ROTATION_EDIT {HelpId= HID_SCH_DATALABEL_ROTATION_EDIT; }; hidspecial HID_SCH_TITLE_MAIN {HelpId= HID_SCH_TITLE_MAIN; }; hidspecial HID_SCH_TITLE_SUB {HelpId= HID_SCH_TITLE_SUB; }; diff --git a/chart2/source/controller/dialogs/res_DataLabel.cxx b/chart2/source/controller/dialogs/res_DataLabel.cxx index ff92fe45f385..c6129629a51a 100644 --- a/chart2/source/controller/dialogs/res_DataLabel.cxx +++ b/chart2/source/controller/dialogs/res_DataLabel.cxx @@ -112,7 +112,7 @@ void lcl_setBoolItemToCheckBox( const SfxItemSet& rInAttrs, USHORT nWhichId, Che }//end anonymous namespace -DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAttrs, bool bShowTextDirectionListBox ) +DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAttrs ) : m_aCBNumber(pWindow, SchResId(CB_VALUE_AS_NUMBER)), m_aPB_NumberFormatForValue(pWindow, SchResId(PB_NUMBERFORMAT)), m_aCBPercent(pWindow, SchResId(CB_VALUE_AS_PERCENTAGE)), @@ -122,6 +122,10 @@ DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAt m_aSeparatorResources(pWindow), m_aFT_LabelPlacement(pWindow, SchResId(FT_LABEL_PLACEMENT)), m_aLB_LabelPlacement(pWindow, SchResId(LB_LABEL_PLACEMENT)), + m_aFL_Rotate(pWindow, SchResId(FL_LABEL_ROTATE)), + m_aDC_Dial(pWindow, SchResId(CT_LABEL_DIAL)), + m_aFT_Degrees(pWindow, SchResId(FT_LABEL_DEGREES)), + m_aNF_Degrees(pWindow, SchResId(NF_LABEL_DEGREES)), m_aFT_TextDirection(pWindow, SchResId(FT_LABEL_TEXTDIR)), m_aLB_TextDirection(pWindow, SchResId(LB_LABEL_TEXTDIR), &m_aFT_TextDirection), m_pNumberFormatter(0), @@ -136,6 +140,7 @@ DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAt m_pWindow(pWindow), m_pPool(rInAttrs.GetPool()) { + //fill label placement list std::map< sal_Int32, XubString > aPlacementToStringMap; for( sal_Int32 nEnum=0; nEnum<m_aLB_LabelPlacement.GetEntryCount(); ++nEnum ) aPlacementToStringMap[nEnum]=m_aLB_LabelPlacement.GetEntry(static_cast<USHORT>(nEnum)); @@ -146,7 +151,6 @@ DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAt aAvailabelPlacementList =((const SfxIntegerListItem*)pPoolItem)->GetConstSequence(); m_aLB_LabelPlacement.Clear(); - for( sal_Int32 nN=0; nN<aAvailabelPlacementList.getLength(); ++nN ) { USHORT nListBoxPos = static_cast<USHORT>( nN ); @@ -155,55 +159,52 @@ DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAt m_aListBoxToPlacementMap[nListBoxPos]=nPlacement; m_aLB_LabelPlacement.InsertEntry( aPlacementToStringMap[nPlacement] ); } - m_aLB_LabelPlacement.SetDropDownLineCount(m_aLB_LabelPlacement.GetEntryCount()); - Size aPBSize( m_aPB_NumberFormatForPercent.GetSizePixel() ); - long nMinWidth = ::std::max( m_aPB_NumberFormatForPercent.CalcMinimumSize().getWidth(), m_aPB_NumberFormatForValue.CalcMinimumSize().getWidth() ); - aPBSize.setWidth( nMinWidth+20 );//the min with is to small to fit, hm... so add alittle + //replace&resize push buttons and resize checkboxes + Size aControlDistance( pWindow->LogicToPixel( Size(RSC_SP_CTRL_DESC_X,RSC_SP_CTRL_GROUP_Y), MapMode(MAP_APPFONT) ) ); + long nPBWidth = ::std::max( m_aPB_NumberFormatForPercent.CalcMinimumSize().getWidth(), m_aPB_NumberFormatForValue.CalcMinimumSize().getWidth() ) + + 20; //the min with is to small to fit, hm... so add alittle + long nCBXWidth = ::std::max( m_aCBNumber.CalcMinimumSize().getWidth(), m_aCBPercent.CalcMinimumSize().getWidth() ); + long nNewPBXPos = m_aCBNumber.GetPosPixel().X() + nCBXWidth + aControlDistance.Width(); + long nPageWidth = pWindow->LogicToPixel( Size(260,185), MapMode(MAP_APPFONT) ).getWidth(); + if( nNewPBXPos + nPBWidth > nPageWidth ) + { + if( nPBWidth > nPageWidth/2 ) + nPBWidth = nPageWidth/2; + nNewPBXPos = nPageWidth-nPBWidth; + nCBXWidth = nPageWidth-m_aCBNumber.GetPosPixel().X()-nPBWidth-aControlDistance.Width(); + } + m_aPB_NumberFormatForValue.SetPosPixel( Point( nNewPBXPos, m_aPB_NumberFormatForValue.GetPosPixel().Y() ) ); + m_aPB_NumberFormatForPercent.SetPosPixel( Point( nNewPBXPos, m_aPB_NumberFormatForPercent.GetPosPixel().Y() ) ); + Size aPBSize( m_aPB_NumberFormatForPercent.GetSizePixel() ); + aPBSize.setWidth( nPBWidth ); m_aPB_NumberFormatForValue.SetSizePixel( aPBSize ); m_aPB_NumberFormatForPercent.SetSizePixel( aPBSize ); - long nWantedMinRightBorder = m_aPB_NumberFormatForPercent.GetPosPixel().X() + m_aPB_NumberFormatForPercent.GetSizePixel().Width() - 1; + Size aCBSize( m_aCBNumber.GetSizePixel() ); + aCBSize.setWidth(nCBXWidth); + m_aCBNumber.SetSizePixel( aCBSize ); + m_aCBPercent.SetSizePixel( aCBSize ); + //place and align separator and label placement listboxes Size aSize( m_aFT_LabelPlacement.GetSizePixel() ); aSize.setWidth( m_aFT_LabelPlacement.CalcMinimumSize().getWidth() ); m_aFT_LabelPlacement.SetSizePixel(aSize); - Size aControlDistance( pWindow->LogicToPixel( Size(RSC_SP_CTRL_DESC_X,RSC_SP_CTRL_GROUP_Y), MapMode(MAP_APPFONT) ) ); - long nWantedMinLeftBorder = m_aFT_LabelPlacement.GetPosPixel().X() + aSize.getWidth () + aControlDistance.Width();; + long nWantedMinLeftBorder = m_aFT_LabelPlacement.GetPosPixel().X() + aSize.getWidth () + aControlDistance.Width(); m_aSeparatorResources.PositionBelowControl(m_aCBSymbol); - m_aSeparatorResources.AlignListBoxWidthAndXPos( nWantedMinLeftBorder, nWantedMinRightBorder, m_aLB_LabelPlacement.CalcMinimumSize().getWidth() ); + m_aSeparatorResources.AlignListBoxWidthAndXPos( nWantedMinLeftBorder, -1, m_aLB_LabelPlacement.CalcMinimumSize().getWidth() ); m_aSeparatorResources.Show(true); aSize = m_aLB_LabelPlacement.GetSizePixel(); aSize.setWidth( m_aSeparatorResources.GetCurrentListBoxSize().getWidth() ); m_aLB_LabelPlacement.SetSizePixel(aSize); + m_aLB_LabelPlacement.SetPosPixel( Point( m_aSeparatorResources.GetCurrentListBoxPosition().X(), m_aLB_LabelPlacement.GetPosPixel().Y() ) ); - long nYDiff = m_aFT_LabelPlacement.GetPosPixel().Y() - m_aLB_LabelPlacement.GetPosPixel().Y(); - Point aPos( m_aSeparatorResources.GetCurrentListBoxPosition() ); - aPos.Y() = m_aSeparatorResources.GetBottom(); - aPos.Y() += aControlDistance.Height(); - m_aLB_LabelPlacement.SetPosPixel(aPos); - - aPos.X() = m_aFT_LabelPlacement.GetPosPixel().X(); - aPos.Y() += nYDiff; - m_aFT_LabelPlacement.SetPosPixel(aPos); - - // hide "text direction" listbox is specified by caller - if( !bShowTextDirectionListBox ) - { - m_aFT_TextDirection.Hide(); - m_aLB_TextDirection.Hide(); - } - // move "text direction" listbox down below "label placement" listbox - long nNewY = m_aLB_LabelPlacement.GetPosPixel().Y() + m_aLB_LabelPlacement.GetSizePixel().Height() + aControlDistance.Height(); - nYDiff = nNewY - m_aLB_TextDirection.GetPosPixel().Y(); - m_aFT_TextDirection.SetPosPixel( m_aFT_TextDirection.GetPosPixel() + Point( 0, nYDiff ) ); - m_aLB_TextDirection.SetPosPixel( m_aLB_TextDirection.GetPosPixel() + Point( 0, nYDiff ) ); - + //some click handler m_aPB_NumberFormatForValue.SetClickHdl( LINK( this, DataLabelResources, NumberFormatDialogHdl ) ); m_aPB_NumberFormatForPercent.SetClickHdl( LINK( this, DataLabelResources, NumberFormatDialogHdl ) ); m_aCBNumber.SetClickHdl( LINK( this, DataLabelResources, CheckHdl )); @@ -213,6 +214,15 @@ DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAt m_bNumberFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_SOURCE, m_nNumberFormatForValue, m_bSourceFormatForValue, m_bSourceFormatMixedState ); m_bPercentFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SCHATTR_PERCENT_NUMBERFORMAT_VALUE, SCHATTR_PERCENT_NUMBERFORMAT_SOURCE, m_nNumberFormatForPercent, m_bSourceFormatForPercent , m_bPercentSourceMixedState); + + if( rInAttrs.GetItemState(SCHATTR_DATADESCR_NO_PERCENTVALUE, TRUE, &pPoolItem) == SFX_ITEM_SET ) + { + bool bForbidPercentValue = (static_cast< const SfxBoolItem & >( rInAttrs.Get( SCHATTR_DATADESCR_NO_PERCENTVALUE )).GetValue() ); + if( bForbidPercentValue ) + m_aCBPercent.Enable(false); + } + + m_aDC_Dial.SetLinkedField( &m_aNF_Degrees ); } DataLabelResources::~DataLabelResources() @@ -283,14 +293,14 @@ IMPL_LINK( DataLabelResources, CheckHdl, CheckBox*, pBox ) void DataLabelResources::EnableControls() { - m_aCBSymbol.Enable( m_aCBNumber.IsChecked() || m_aCBPercent.IsChecked() || m_aCBCategory.IsChecked() ); + m_aCBSymbol.Enable( m_aCBNumber.IsChecked() || (m_aCBPercent.IsChecked() && m_aCBPercent.IsEnabled()) || m_aCBCategory.IsChecked() ); //enable separator { long nNumberOfCheckedLabelParts = 0; if( m_aCBNumber.IsChecked() ) ++nNumberOfCheckedLabelParts; - if( m_aCBPercent.IsChecked() ) + if( m_aCBPercent.IsChecked() && m_aCBPercent.IsEnabled() ) ++nNumberOfCheckedLabelParts; if( m_aCBCategory.IsChecked() ) ++nNumberOfCheckedLabelParts; @@ -304,7 +314,13 @@ void DataLabelResources::EnableControls() } m_aPB_NumberFormatForValue.Enable( m_pNumberFormatter && m_aCBNumber.IsChecked() ); - m_aPB_NumberFormatForPercent.Enable( m_pNumberFormatter && m_aCBPercent.IsChecked() ); + m_aPB_NumberFormatForPercent.Enable( m_pNumberFormatter && m_aCBPercent.IsChecked() && m_aCBPercent.IsEnabled() ); + + bool bEnableRotation = ( m_aCBNumber.IsChecked() || m_aCBPercent.IsChecked() || m_aCBCategory.IsChecked() ); + m_aFL_Rotate.Enable( bEnableRotation ); + m_aDC_Dial.Enable( bEnableRotation ); + m_aFT_Degrees.Enable( bEnableRotation ); + m_aNF_Degrees.Enable( bEnableRotation ); } BOOL DataLabelResources::FillItemSet( SfxItemSet& rOutAttrs ) const @@ -344,6 +360,12 @@ BOOL DataLabelResources::FillItemSet( SfxItemSet& rOutAttrs ) const if( m_aLB_TextDirection.GetSelectEntryCount() > 0 ) rOutAttrs.Put( SfxInt32Item( EE_PARA_WRITINGDIR, m_aLB_TextDirection.GetSelectEntryValue() ) ); + if( m_aDC_Dial.IsVisible() ) + { + sal_Int32 nDegrees = m_aDC_Dial.GetRotation(); + rOutAttrs.Put(SfxInt32Item( SCHATTR_TEXT_DEGREES, nDegrees ) ); + } + return TRUE; } @@ -384,6 +406,14 @@ void DataLabelResources::Reset(const SfxItemSet& rInAttrs) if( rInAttrs.GetItemState(EE_PARA_WRITINGDIR, TRUE, &pPoolItem ) == SFX_ITEM_SET ) m_aLB_TextDirection.SelectEntryValue( SvxFrameDirection(((const SvxFrameDirectionItem*)pPoolItem)->GetValue()) ); + if( rInAttrs.GetItemState( SCHATTR_TEXT_DEGREES, TRUE, &pPoolItem ) == SFX_ITEM_SET ) + { + sal_Int32 nDegrees = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + m_aDC_Dial.SetRotation( nDegrees ); + } + else + m_aDC_Dial.SetRotation( 0 ); + EnableControls(); } diff --git a/chart2/source/controller/dialogs/res_DataLabel.hxx b/chart2/source/controller/dialogs/res_DataLabel.hxx index cadbf1230c45..e560eed9f573 100644 --- a/chart2/source/controller/dialogs/res_DataLabel.hxx +++ b/chart2/source/controller/dialogs/res_DataLabel.hxx @@ -37,6 +37,8 @@ #include <svtools/itemset.hxx> #include "TextDirectionListBox.hxx" +#include <svx/dialcontrol.hxx> + class SvNumberFormatter; //............................................................................. @@ -47,7 +49,7 @@ namespace chart class DataLabelResources { public: - DataLabelResources( Window* pParent, const SfxItemSet& rInAttrs, bool bShowTextDirectionListBox ); + DataLabelResources( Window* pParent, const SfxItemSet& rInAttrs ); virtual ~DataLabelResources(); BOOL FillItemSet(SfxItemSet& rOutAttrs) const; @@ -68,6 +70,11 @@ private: FixedText m_aFT_LabelPlacement; ListBox m_aLB_LabelPlacement; + FixedLine m_aFL_Rotate; + svx::DialControl m_aDC_Dial; + FixedText m_aFT_Degrees; + NumericField m_aNF_Degrees; + FixedText m_aFT_TextDirection; TextDirectionListBox m_aLB_TextDirection; diff --git a/chart2/source/controller/dialogs/res_DataLabel_IDs.hrc b/chart2/source/controller/dialogs/res_DataLabel_IDs.hrc index 536b355980d0..31112bdc3340 100644 --- a/chart2/source/controller/dialogs/res_DataLabel_IDs.hrc +++ b/chart2/source/controller/dialogs/res_DataLabel_IDs.hrc @@ -42,3 +42,7 @@ #define FT_LABEL_TEXTDIR 31 #define LB_LABEL_TEXTDIR 32 +#define FL_LABEL_ROTATE 40 +#define CT_LABEL_DIAL 40 +#define FT_LABEL_DEGREES 40 +#define NF_LABEL_DEGREES 40 diff --git a/chart2/source/controller/dialogs/res_DataLabel_tmpl.hrc b/chart2/source/controller/dialogs/res_DataLabel_tmpl.hrc index 70d03376b51f..bc21882dd841 100644 --- a/chart2/source/controller/dialogs/res_DataLabel_tmpl.hrc +++ b/chart2/source/controller/dialogs/res_DataLabel_tmpl.hrc @@ -65,14 +65,14 @@ PushButton PB_NUMBERFORMAT \ { \ HelpID = HID_SCH_PB_NUMBERFORMAT; \ TabStop = TRUE ; \ - Pos = MAP_APPFONT ( xpos+8 , ypos+12 ) ; \ + Pos = MAP_APPFONT ( xpos+100 , ypos-3 ) ; \ Size = MAP_APPFONT ( 100 , 14 ) ; \ Text [ en-US ] = "Number ~format..." ; \ }; \ CheckBox CB_VALUE_AS_PERCENTAGE \ { \ HelpID = HID_SCH_DATALABEL_PERCENT; \ - Pos = MAP_APPFONT ( xpos , ypos+30 ) ; \ + Pos = MAP_APPFONT ( xpos , ypos+17 ) ; \ Size = MAP_APPFONT ( 136 , 10 ) ; \ TabStop = TRUE ; \ Text [ en-US ] = "Show value as ~percentage" ; \ @@ -81,29 +81,29 @@ PushButton PB_PERCENT_NUMBERFORMAT \ { \ HelpID = HID_SCH_PB_PERCENT_NUMBERFORMAT; \ TabStop = TRUE ; \ - Pos = MAP_APPFONT ( xpos+8 , ypos+42 ) ; \ + Pos = MAP_APPFONT ( xpos+100 , ypos+17-3 ) ; \ Size = MAP_APPFONT ( 100 , 14 ) ; \ Text [ en-US ] = "Percentage f~ormat..." ; \ }; \ CheckBox CB_CATEGORY \ { \ HelpID = HID_SCH_DATALABEL_TEXT; \ - Pos = MAP_APPFONT ( xpos , ypos+62 ); \ - Size = MAP_APPFONT ( 182 , 10 ); \ + Pos = MAP_APPFONT ( xpos , ypos+33 ); \ + Size = MAP_APPFONT ( 254 , 10 ); \ TabStop = TRUE; \ Text [ en-US ] = "Show ~category"; \ }; \ CheckBox CB_SYMBOL \ { \ HelpID = HID_SCH_DATALABEL_SYMBOL; \ - Pos = MAP_APPFONT ( xpos , ypos+76 ) ; \ - Size = MAP_APPFONT ( 182 , 10 ) ; \ + Pos = MAP_APPFONT ( xpos , ypos+49 ) ; \ + Size = MAP_APPFONT ( 254 , 10 ) ; \ TabStop = TRUE ; \ Text [ en-US ] = "Show ~legend key" ; \ }; \ FixedText FT_LABEL_PLACEMENT \ { \ - Pos = MAP_APPFONT ( xpos , ypos+104 ) ; \ + Pos = MAP_APPFONT ( xpos , ypos+84 ) ; \ Size = MAP_APPFONT ( 182 , 10 ) ; \ TabStop = FALSE ; \ Text [ en-US ] = "Place~ment"; \ @@ -113,7 +113,7 @@ ListBox LB_LABEL_PLACEMENT \ HelpID = HID_SCH_DATALABEL_PLACEMENT; \ Border = TRUE ; \ AutoHScroll = TRUE ; \ - Pos = MAP_APPFONT ( xpos+100 , ypos+102 ) ; \ + Pos = MAP_APPFONT ( xpos+100 , ypos+82 ) ; \ Size = MAP_APPFONT ( 89 , 12 ) ; \ TabStop = TRUE ; \ Group = TRUE ; \ @@ -121,16 +121,48 @@ ListBox LB_LABEL_PLACEMENT \ DDExtraWidth = TRUE ; \ WORKAROUND \ }; \ +FixedLine FL_LABEL_ROTATE \ +{ \ + Pos = MAP_APPFONT ( xpos, ypos+103 ) ; \ + Size = MAP_APPFONT ( 248, 8 ) ; \ + Text [ en-US ] = "Rotate Text" ; \ +}; \ +Control CT_LABEL_DIAL \ +{ \ + HelpId = HID_SCH_DATALABEL_ROTATION_KNOB ; \ + Pos = MAP_APPFONT ( xpos+6 , ypos+116 ) ; \ + Size = MAP_APPFONT ( 43 , 43 ) ; \ + Text = "ABCD" ; \ +}; \ +FixedText FT_LABEL_DEGREES \ +{ \ + Pos = MAP_APPFONT ( xpos+87 , ypos+133 ) ; \ + Size = MAP_APPFONT ( 46, 8 ) ; \ + Text [ en-US ] = "~Degrees" ; \ +}; \ +NumericField NF_LABEL_DEGREES \ +{ \ + HelpId = HID_SCH_DATALABEL_ROTATION_EDIT ; \ + Pos = MAP_APPFONT ( xpos+55 , ypos+131 ) ; \ + Size = MAP_APPFONT ( 28 , 12 ) ; \ + Border = TRUE ; \ + TabStop = TRUE ; \ + Repeat = TRUE ; \ + Spin = TRUE ; \ + Minimum = 0 ; \ + Maximum = 359 ; \ + SpinSize = 5 ; \ +}; \ FixedText FT_LABEL_TEXTDIR \ { \ - Pos = MAP_APPFONT ( xpos , ypos+120 ) ; \ + Pos = MAP_APPFONT ( xpos , ypos+162 ) ; \ Size = MAP_APPFONT ( 64 , 8 ) ; \ Text [ en-US ] = "Te~xt direction" ; \ }; \ ListBox LB_LABEL_TEXTDIR \ { \ HelpID = HID_SCH_TEXTDIRECTION; \ - Pos = MAP_APPFONT ( xpos+66 , ypos+118 ) ; \ + Pos = MAP_APPFONT ( xpos+66 , ypos+160 ) ; \ Size = MAP_APPFONT ( 170 , 100 ) ; \ Border = TRUE; \ TabStop = TRUE; \ diff --git a/chart2/source/controller/dialogs/res_TextSeparator.cxx b/chart2/source/controller/dialogs/res_TextSeparator.cxx index c01bf374f2b7..298499ed39d9 100644 --- a/chart2/source/controller/dialogs/res_TextSeparator.cxx +++ b/chart2/source/controller/dialogs/res_TextSeparator.cxx @@ -91,13 +91,6 @@ void TextSeparatorResources::PositionBelowControl( const Window& rWindow ) m_aLB_Separator.SetPosPixel( Point( aPoint.X()+m_aFT_Separator.GetSizePixel().Width()+aDistanceSize.Width(), aPoint.Y()-aDistanceSize.Height()-1) ); } -long TextSeparatorResources::GetBottom() const -{ - Point aPoint( m_aLB_Separator.GetPosPixel() ); - aPoint.Y() += m_aLB_Separator.GetSizePixel().Height(); - return aPoint.Y(); -} - void TextSeparatorResources::AlignListBoxWidthAndXPos( long nWantedLeftBorder /*use -1 to indicate that this can be automatic*/ , long nWantedRightBorder /*use -1 to indicate that this can be automatic*/ , long nMinimumListBoxWidth /*use -1 to indicate that this can be automatic*/ ) diff --git a/chart2/source/controller/dialogs/res_TextSeparator.hxx b/chart2/source/controller/dialogs/res_TextSeparator.hxx index a93cab0f95fe..fb8365206fb5 100644 --- a/chart2/source/controller/dialogs/res_TextSeparator.hxx +++ b/chart2/source/controller/dialogs/res_TextSeparator.hxx @@ -57,7 +57,6 @@ public: , long nMinimumListBoxWidth /*use -1 to indicate that this can be automatic*/ ); Point GetCurrentListBoxPosition() const; Size GetCurrentListBoxSize() const; - long GetBottom() const; ::rtl::OUString GetValue() const; void SetValue( const ::rtl::OUString& rSeparator ); diff --git a/chart2/source/controller/dialogs/res_Trendline_tmpl.hrc b/chart2/source/controller/dialogs/res_Trendline_tmpl.hrc index 4bd41b4047d6..45fc55435594 100644 --- a/chart2/source/controller/dialogs/res_Trendline_tmpl.hrc +++ b/chart2/source/controller/dialogs/res_Trendline_tmpl.hrc @@ -120,7 +120,7 @@ CheckBox CB_SHOW_CORRELATION_COEFF \ Pos = MAP_APPFONT( 10, 134 + yoffset ); \ Size = MAP_APPFONT( availablewidth - 20, 10 ); \ TabStop = TRUE; \ - Text[ en-US ] = "Show ~correlation coefficient (R²)"; \ + Text[ en-US ] = "Show ~coefficient of determination (R²)"; \ }; #endif diff --git a/chart2/source/controller/dialogs/tp_ChartType.cxx b/chart2/source/controller/dialogs/tp_ChartType.cxx index f60637af4c44..c35f11546d36 100644 --- a/chart2/source/controller/dialogs/tp_ChartType.cxx +++ b/chart2/source/controller/dialogs/tp_ChartType.cxx @@ -862,6 +862,7 @@ ChartTypeTabPage::ChartTypeTabPage( Window* pParent m_aChartTypeDialogControllerList.push_back(new AreaChartDialogController() ); m_aChartTypeDialogControllerList.push_back(new LineChartDialogController() ); m_aChartTypeDialogControllerList.push_back(new XYChartDialogController() ); + m_aChartTypeDialogControllerList.push_back(new BubbleChartDialogController() ); m_aChartTypeDialogControllerList.push_back(new NetChartDialogController() ); m_aChartTypeDialogControllerList.push_back(new StockChartDialogController() ); m_aChartTypeDialogControllerList.push_back(new CombiColumnLineChartDialogController() ); @@ -994,7 +995,8 @@ IMPL_LINK( ChartTypeTabPage, SelectMainTypeHdl, void *, EMPTYARG ) aParameter.bSortByXValues = lcl_getSortByXValues( m_xChartModel ); this->fillAllControls( aParameter ); - m_pCurrentMainType->fillExtraControls(aParameter,m_xChartModel); + uno::Reference< beans::XPropertySet > xTemplateProps( this->getCurrentTemplate(), uno::UNO_QUERY ); + m_pCurrentMainType->fillExtraControls(aParameter,m_xChartModel,xTemplateProps); } return 0; } diff --git a/chart2/source/controller/dialogs/tp_DataLabel.cxx b/chart2/source/controller/dialogs/tp_DataLabel.cxx index 35712ebcc566..2da9778a4db8 100644 --- a/chart2/source/controller/dialogs/tp_DataLabel.cxx +++ b/chart2/source/controller/dialogs/tp_DataLabel.cxx @@ -42,7 +42,7 @@ namespace chart DataLabelsTabPage::DataLabelsTabPage(Window* pWindow, const SfxItemSet& rInAttrs) : SfxTabPage(pWindow, SchResId(TP_DATA_DESCR), rInAttrs), - m_aDataLabelResources(this, rInAttrs, true) + m_aDataLabelResources(this, rInAttrs) { FreeResource(); } diff --git a/chart2/source/controller/dialogs/tp_DataLabel.src b/chart2/source/controller/dialogs/tp_DataLabel.src index de4434759812..32f5835295f7 100644 --- a/chart2/source/controller/dialogs/tp_DataLabel.src +++ b/chart2/source/controller/dialogs/tp_DataLabel.src @@ -41,5 +41,5 @@ TabPage TP_DATA_DESCR HelpID = HID_SCH_DATA_DESCR ; SVLook = TRUE ; Size = MAP_APPFONT ( 260 , 185 ) ; - RESOURCE_DATALABEL( 12, 8 ) + RESOURCE_DATALABEL( 6, 8 ) }; diff --git a/chart2/source/controller/dialogs/tp_DataSource.cxx b/chart2/source/controller/dialogs/tp_DataSource.cxx index 77c861d529e9..ff858c5bfdf5 100644 --- a/chart2/source/controller/dialogs/tp_DataSource.cxx +++ b/chart2/source/controller/dialogs/tp_DataSource.cxx @@ -42,7 +42,7 @@ #include "DataSeriesHelper.hxx" #include "tp_DataSourceControls.hxx" #include "ControllerLockGuard.hxx" -#include "LabeledDataSequence.hxx" +#include "DataSourceHelper.hxx" #include <com/sun/star/sheet/XRangeSelection.hpp> #include <com/sun/star/table/XCellRange.hpp> #include <com/sun/star/chart2/XChartType.hpp> @@ -377,6 +377,29 @@ void DataSourceTabPage::initializePage() { } +void DataSourceTabPage::DeactivatePage() +{ + commitPage(); + svt::OWizardPage::DeactivatePage(); +} + +void DataSourceTabPage::commitPage() +{ + commitPage(eFinish); +} + +sal_Bool DataSourceTabPage::commitPage( CommitPageReason /*eReason*/ ) +{ + //ranges may have been edited in the meanwhile (dirty is true in that case here) + if( isValid() ) + { + updateModelFromControl( 0 /*update all*/ ); + return sal_True;//return false if this page should not be left + } + else + return sal_False; +} + bool DataSourceTabPage::isRangeFieldContentValid( Edit & rEdit ) { OUString aRange( rEdit.GetText()); @@ -890,7 +913,7 @@ bool DataSourceTabPage::updateModelFromControl( Edit * pField ) // create or change categories if( !xLabeledSeq.is()) { - xLabeledSeq.set( new ::chart::LabeledDataSequence( Reference< uno::XComponentContext >(0))); + xLabeledSeq.set( DataSourceHelper::createLabeledDataSequence( Reference< uno::XComponentContext >(0))); m_rDialogModel.setCategories( xLabeledSeq ); } try @@ -945,7 +968,7 @@ bool DataSourceTabPage::updateModelFromControl( Edit * pField ) if( ! xLabeledSeq.is()) { // no corresponding labeled data sequence for label found - xLabeledSeq.set( new ::chart::LabeledDataSequence( Reference< uno::XComponentContext >(0))); + xLabeledSeq.set( DataSourceHelper::createLabeledDataSequence( Reference< uno::XComponentContext >(0))); lcl_addLSequenceToDataSource( xLabeledSeq, xSource ); } } @@ -1009,7 +1032,7 @@ bool DataSourceTabPage::updateModelFromControl( Edit * pField ) xLabeledSeq.set( lcl_findLSequenceWithOnlyLabel( xSource )); if( ! xLabeledSeq.is()) { - xLabeledSeq.set( new ::chart::LabeledDataSequence( Reference< uno::XComponentContext >(0))); + xLabeledSeq.set( DataSourceHelper::createLabeledDataSequence( Reference< uno::XComponentContext >(0))); lcl_addLSequenceToDataSource( xLabeledSeq, xSource ); } } diff --git a/chart2/source/controller/dialogs/tp_DataSource.hxx b/chart2/source/controller/dialogs/tp_DataSource.hxx index 2703836d5d1d..6c42f1cb98e2 100644 --- a/chart2/source/controller/dialogs/tp_DataSource.hxx +++ b/chart2/source/controller/dialogs/tp_DataSource.hxx @@ -87,8 +87,15 @@ public: bool bHideDescription = false ); virtual ~DataSourceTabPage(); + void commitPage(); + +protected: // OWizardPage virtual void ActivatePage(); + virtual sal_Bool commitPage( CommitPageReason eReason ); + + //TabPage + virtual void DeactivatePage(); virtual void initializePage(); diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.cxx b/chart2/source/controller/dialogs/tp_PolarOptions.cxx index 4c626d1dfb37..38d36d032921 100644 --- a/chart2/source/controller/dialogs/tp_PolarOptions.cxx +++ b/chart2/source/controller/dialogs/tp_PolarOptions.cxx @@ -32,7 +32,6 @@ #include "tp_PolarOptions.hxx" #include "tp_PolarOptions.hrc" #include "ResId.hxx" -#include "TabPages.hrc" #include "chartview/ChartSfxItemIds.hxx" #include "NoWarningThisInCTOR.hxx" @@ -51,7 +50,9 @@ PolarOptionsTabPage::PolarOptionsTabPage( Window* pWindow,const SfxItemSet& rInA m_aFL_StartingAngle( this, SchResId( FL_STARTING_ANGLE ) ), m_aAngleDial( this, SchResId( CT_ANGLE_DIAL ) ), m_aFT_Degrees( this, SchResId( FT_ROTATION_DEGREES ) ), - m_aNF_StartingAngle( this, SchResId( NF_STARTING_ANGLE ) ) + m_aNF_StartingAngle( this, SchResId( NF_STARTING_ANGLE ) ), + m_aFL_PlotOptions( this, SchResId( FL_PLOT_OPTIONS_POLAR ) ), + m_aCB_IncludeHiddenCells( this, SchResId( CB_INCLUDE_HIDDEN_CELLS_POLAR ) ) { FreeResource(); @@ -78,6 +79,9 @@ BOOL PolarOptionsTabPage::FillItemSet( SfxItemSet& rOutAttrs ) if( m_aCB_Clockwise.IsVisible() ) rOutAttrs.Put(SfxBoolItem(SCHATTR_CLOCKWISE,m_aCB_Clockwise.IsChecked())); + if (m_aCB_IncludeHiddenCells.IsVisible()) + rOutAttrs.Put(SfxBoolItem(SCHATTR_INCLUDE_HIDDEN_CELLS, m_aCB_IncludeHiddenCells.IsChecked())); + return TRUE; } @@ -108,6 +112,16 @@ void PolarOptionsTabPage::Reset(const SfxItemSet& rInAttrs) { m_aCB_Clockwise.Show(FALSE); } + if (rInAttrs.GetItemState(SCHATTR_INCLUDE_HIDDEN_CELLS, TRUE, &pPoolItem) == SFX_ITEM_SET) + { + bool bVal = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + m_aCB_IncludeHiddenCells.Check(bVal); + } + else + { + m_aCB_IncludeHiddenCells.Show(FALSE); + m_aFL_PlotOptions.Show(FALSE); + } } //............................................................................. diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.hrc b/chart2/source/controller/dialogs/tp_PolarOptions.hrc index a618616e1cfe..680c9d126211 100644 --- a/chart2/source/controller/dialogs/tp_PolarOptions.hrc +++ b/chart2/source/controller/dialogs/tp_PolarOptions.hrc @@ -28,9 +28,13 @@ * ************************************************************************/ +#include "ResourceIds.hrc" + #define CB_CLOCKWISE 1 +#define CB_INCLUDE_HIDDEN_CELLS_POLAR 2 #define FL_STARTING_ANGLE 1 +#define FL_PLOT_OPTIONS_POLAR 2 #define CT_ANGLE_DIAL 1 diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.hxx b/chart2/source/controller/dialogs/tp_PolarOptions.hxx index 5a816ab87385..02a5ec5ba25b 100644 --- a/chart2/source/controller/dialogs/tp_PolarOptions.hxx +++ b/chart2/source/controller/dialogs/tp_PolarOptions.hxx @@ -58,6 +58,9 @@ private: svx::DialControl m_aAngleDial; FixedText m_aFT_Degrees; NumericField m_aNF_StartingAngle; + + FixedLine m_aFL_PlotOptions; + CheckBox m_aCB_IncludeHiddenCells; }; //............................................................................. diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.src b/chart2/source/controller/dialogs/tp_PolarOptions.src index 7c442c3ef12e..273c5f59dd5d 100644 --- a/chart2/source/controller/dialogs/tp_PolarOptions.src +++ b/chart2/source/controller/dialogs/tp_PolarOptions.src @@ -28,7 +28,6 @@ * ************************************************************************/ -#include "TabPages.hrc" #include "tp_PolarOptions.hrc" #include "HelpIds.hrc" @@ -47,8 +46,8 @@ TabPage TP_POLAROPTIONS }; FixedLine FL_STARTING_ANGLE { - Pos = MAP_APPFONT ( 12 , 21 ) ; - Size = MAP_APPFONT ( 242 , 12 ) ; + Pos = MAP_APPFONT ( 6 , 21 ) ; + Size = MAP_APPFONT ( 248 , 12 ) ; Text [ en-US ] = "Starting angle" ; }; Control CT_ANGLE_DIAL @@ -75,4 +74,17 @@ TabPage TP_POLAROPTIONS Maximum = 359 ; SpinSize = 5 ; }; + FixedLine FL_PLOT_OPTIONS_POLAR + { + Pos = MAP_APPFONT ( 6 , 90 ) ; + Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "Plot options"; + }; + CheckBox CB_INCLUDE_HIDDEN_CELLS_POLAR + { + Pos = MAP_APPFONT ( 12 , 104 ) ; + Size = MAP_APPFONT ( 200 , 10 ) ; + TabStop = TRUE ; + Text [ en-US ] = "Include ~values from hidden cells"; + }; }; diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.cxx b/chart2/source/controller/dialogs/tp_RangeChooser.cxx index 2c2bc3fc6892..8ba4d61a8057 100644 --- a/chart2/source/controller/dialogs/tp_RangeChooser.cxx +++ b/chart2/source/controller/dialogs/tp_RangeChooser.cxx @@ -216,6 +216,29 @@ void RangeChooserTabPage::initControlsFromModel() m_nChangingControlCalls--; } +void RangeChooserTabPage::DeactivatePage() +{ + commitPage(); + svt::OWizardPage::DeactivatePage(); +} + +void RangeChooserTabPage::commitPage() +{ + commitPage(eFinish); +} + +sal_Bool RangeChooserTabPage::commitPage( CommitPageReason /*eReason*/ ) +{ + //ranges may have been edited in the meanwhile (dirty is true in that case here) + if( isValid() ) + { + changeDialogModelAccordingToControls(); + return sal_True;//return false if this page should not be left + } + else + return sal_False; +} + void RangeChooserTabPage::changeDialogModelAccordingToControls() { if(m_nChangingControlCalls>0) diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.hxx b/chart2/source/controller/dialogs/tp_RangeChooser.hxx index 01062ba4c0f1..bb508da8d9a1 100644 --- a/chart2/source/controller/dialogs/tp_RangeChooser.hxx +++ b/chart2/source/controller/dialogs/tp_RangeChooser.hxx @@ -70,10 +70,16 @@ virtual ~RangeChooserTabPage(); virtual void listeningFinished( const ::rtl::OUString & rNewRange ); virtual void disposingRangeSelection(); + void commitPage(); + protected: //methods //OWizardPage virtual void ActivatePage(); + virtual sal_Bool commitPage( CommitPageReason eReason ); + + //TabPage + virtual void DeactivatePage(); void initControlsFromModel(); void changeDialogModelAccordingToControls(); diff --git a/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx b/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx index 855665f4fd02..cc8ac2139639 100644 --- a/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx +++ b/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx @@ -31,9 +31,9 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_chart2.hxx" #include "tp_SeriesToAxis.hxx" +#include "tp_SeriesToAxis.hrc" #include "ResId.hxx" -#include "TabPages.hrc" #include "chartview/ChartSfxItemIds.hxx" #include "NoWarningThisInCTOR.hxx" @@ -43,6 +43,8 @@ #include <svtools/intitem.hxx> //SfxIntegerListItem #include <svtools/ilstitem.hxx> +#include <svtools/controldims.hrc> + #include <com/sun/star/chart/MissingValueTreatment.hpp> //............................................................................. @@ -63,10 +65,12 @@ SchOptionTabPage::SchOptionTabPage(Window* pWindow,const SfxItemSet& rInAttrs) : aMTOverlap(this,SchResId(MT_OVERLAP)), aCBConnect(this,SchResId(CB_CONNECTOR)), aCBAxisSideBySide(this,SchResId(CB_BARS_SIDE_BY_SIDE)), - m_aFL_EmptyCells(this,SchResId(FL_PLOT_MISSING_VALUES)), + m_aFL_PlotOptions(this,SchResId(FL_PLOT_OPTIONS)), + m_aFT_MissingValues(this,SchResId(FT_MISSING_VALUES)), m_aRB_DontPaint(this,SchResId(RB_DONT_PAINT)), m_aRB_AssumeZero(this,SchResId(RB_ASSUME_ZERO)), m_aRB_ContinueLine(this,SchResId(RB_CONTINUE_LINE)), + m_aCBIncludeHiddenCells(this,SchResId(CB_INCLUDE_HIDDEN_CELLS)), m_bProvidesSecondaryYAxis(true), m_bProvidesOverlapAndGapWidth(false) { @@ -123,6 +127,9 @@ BOOL SchOptionTabPage::FillItemSet(SfxItemSet& rOutAttrs) else if(m_aRB_ContinueLine.IsChecked()) rOutAttrs.Put(SfxInt32Item(SCHATTR_MISSING_VALUE_TREATMENT,::com::sun::star::chart::MissingValueTreatment::CONTINUE)); + if (m_aCBIncludeHiddenCells.IsVisible()) + rOutAttrs.Put(SfxBoolItem(SCHATTR_INCLUDE_HIDDEN_CELLS, m_aCBIncludeHiddenCells.IsChecked())); + return TRUE; } @@ -212,13 +219,26 @@ void SchOptionTabPage::Reset(const SfxItemSet& rInAttrs) } else { + m_aFT_MissingValues.Show(FALSE); m_aRB_DontPaint.Show(FALSE); m_aRB_AssumeZero.Show(FALSE); m_aRB_ContinueLine.Show(FALSE); - m_aFL_EmptyCells.Show(FALSE); } } + // Include hidden cells + if (rInAttrs.GetItemState(SCHATTR_INCLUDE_HIDDEN_CELLS, TRUE, &pPoolItem) == SFX_ITEM_SET) + { + bool bVal = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + m_aCBIncludeHiddenCells.Check(bVal); + } + else + { + m_aCBIncludeHiddenCells.Show(FALSE); + if(!m_aFT_MissingValues.IsVisible()) + m_aFL_PlotOptions.Show(FALSE); + } + AdaptControlPositionsAndVisibility(); } @@ -231,6 +251,17 @@ void SchOptionTabPage::Init( bool bProvidesSecondaryYAxis, bool bProvidesOverlap AdaptControlPositionsAndVisibility(); } +void lcl_offsetControl(Control& rCtrl, long nXOffset, long nYOffset ) +{ + Point aPos = rCtrl.GetPosPixel(); + rCtrl.SetPosPixel( Point(aPos.getX() + nXOffset, aPos.getY() + nYOffset) ); +} + +void lcl_optimzeRadioButtonSize( RadioButton& rCtrl ) +{ + rCtrl.SetSizePixel( rCtrl.CalcMinimumSize() ); +} + void SchOptionTabPage::AdaptControlPositionsAndVisibility() { aRbtAxis1.Show(m_bProvidesSecondaryYAxis); @@ -254,20 +285,30 @@ void SchOptionTabPage::AdaptControlPositionsAndVisibility() else aPos = aGrpBar.GetPosPixel(); - long nDiffX = aRbtAxis1.GetPosPixel().getX() - aGrpAxis.GetPosPixel().getX(); - long nDiffY = aRbtAxis1.GetPosPixel().getY() - aGrpAxis.GetPosPixel().getY(); - long nDiffY1 = aRbtAxis2.GetPosPixel().getY() - aRbtAxis1.GetPosPixel().getY(); - - m_aFL_EmptyCells.SetPosPixel( aPos ); - m_aRB_DontPaint.SetPosPixel( Point( aPos.getX() + nDiffX, aPos.getY() + nDiffY ) ); - m_aRB_AssumeZero.SetPosPixel( Point( aPos.getX() + nDiffX, aPos.getY() + nDiffY + nDiffY1 ) ); - m_aRB_ContinueLine.SetPosPixel( Point( aPos.getX() + nDiffX, aPos.getY() + nDiffY + nDiffY1 * 2 ) ); + long nYOffset = aPos.getY() - m_aFL_PlotOptions.GetPosPixel().getY(); + lcl_offsetControl(m_aFL_PlotOptions, 0, nYOffset); + lcl_offsetControl(m_aFT_MissingValues, 0, nYOffset); + lcl_offsetControl(m_aRB_DontPaint, 0, nYOffset); + lcl_offsetControl(m_aRB_AssumeZero, 0, nYOffset); + lcl_offsetControl(m_aRB_ContinueLine, 0, nYOffset); + lcl_offsetControl(m_aCBIncludeHiddenCells, 0, nYOffset); } - if( !m_aRB_DontPaint.IsVisible() ) + m_aFT_MissingValues.SetSizePixel( m_aFT_MissingValues.CalcMinimumSize() ); + lcl_optimzeRadioButtonSize( m_aRB_DontPaint ); + lcl_optimzeRadioButtonSize( m_aRB_AssumeZero ); + lcl_optimzeRadioButtonSize( m_aRB_ContinueLine ); + + Size aControlDistance( m_aFT_MissingValues.LogicToPixel( Size(RSC_SP_CTRL_DESC_X,RSC_SP_CTRL_GROUP_Y), MapMode(MAP_APPFONT) ) ); + long nXOffset = m_aFT_MissingValues.GetPosPixel().getX() + m_aFT_MissingValues.GetSizePixel().getWidth() + aControlDistance.getWidth() - m_aRB_DontPaint.GetPosPixel().getX(); + lcl_offsetControl(m_aRB_DontPaint, nXOffset, 0); + lcl_offsetControl(m_aRB_AssumeZero, nXOffset, 0); + lcl_offsetControl(m_aRB_ContinueLine, nXOffset, 0); + + if( !m_aFT_MissingValues.IsVisible() ) { - m_aRB_ContinueLine.SetPosPixel( m_aRB_AssumeZero.GetPosPixel() ); - m_aRB_AssumeZero.SetPosPixel( m_aRB_DontPaint.GetPosPixel() ); + //for example for stock charts + m_aCBIncludeHiddenCells.SetPosPixel( m_aFT_MissingValues.GetPosPixel() ); } } //............................................................................. diff --git a/chart2/source/controller/dialogs/tp_SeriesToAxis.hrc b/chart2/source/controller/dialogs/tp_SeriesToAxis.hrc new file mode 100644 index 000000000000..2a39c313ca3c --- /dev/null +++ b/chart2/source/controller/dialogs/tp_SeriesToAxis.hrc @@ -0,0 +1,48 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: ,v $ + * $Revision: $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "ResourceIds.hrc" + +#define GRP_OPT_AXIS 1 +#define RBT_OPT_AXIS_1 2 +#define RBT_OPT_AXIS_2 3 +#define MT_GAP 4 +#define MT_OVERLAP 5 +#define FT_GAP 6 +#define FT_OVERLAP 7 +#define GB_BAR 8 +#define CB_CONNECTOR 9 +#define CB_BARS_SIDE_BY_SIDE 10 +#define FL_PLOT_OPTIONS 11 +#define FT_MISSING_VALUES 12 +#define RB_DONT_PAINT 13 +#define RB_ASSUME_ZERO 14 +#define RB_CONTINUE_LINE 15 +#define CB_INCLUDE_HIDDEN_CELLS 16 diff --git a/chart2/source/controller/dialogs/tp_SeriesToAxis.hxx b/chart2/source/controller/dialogs/tp_SeriesToAxis.hxx index c066e637fb2e..10fcae66c1e3 100644 --- a/chart2/source/controller/dialogs/tp_SeriesToAxis.hxx +++ b/chart2/source/controller/dialogs/tp_SeriesToAxis.hxx @@ -74,11 +74,14 @@ private: //member CheckBox aCBConnect; CheckBox aCBAxisSideBySide; - FixedLine m_aFL_EmptyCells; + FixedLine m_aFL_PlotOptions; + FixedText m_aFT_MissingValues; RadioButton m_aRB_DontPaint; RadioButton m_aRB_AssumeZero; RadioButton m_aRB_ContinueLine; + CheckBox m_aCBIncludeHiddenCells; + DECL_LINK(EnableHdl, RadioButton * ); sal_Int32 m_nAllSeriesAxisIndex; diff --git a/chart2/source/controller/dialogs/tp_SeriesToAxis.src b/chart2/source/controller/dialogs/tp_SeriesToAxis.src index f79028488230..0686e45f25b3 100644 --- a/chart2/source/controller/dialogs/tp_SeriesToAxis.src +++ b/chart2/source/controller/dialogs/tp_SeriesToAxis.src @@ -28,7 +28,7 @@ * ************************************************************************/ #include "HelpIds.hrc" -#include "TabPages.hrc" +#include "tp_SeriesToAxis.hrc" TabPage TP_OPTIONS { @@ -120,7 +120,7 @@ TabPage TP_OPTIONS Pos = MAP_APPFONT ( 12 , 97 ) ; Size = MAP_APPFONT ( 200 , 10 ) ; TabStop = TRUE ; - Text [ en-US ] = "Connection Lines"; + Text [ en-US ] = "Connection lines"; }; CheckBox CB_BARS_SIDE_BY_SIDE @@ -131,16 +131,23 @@ TabPage TP_OPTIONS Text [ en-US ] = "Show ~bars side by side"; }; - FixedLine FL_PLOT_MISSING_VALUES + FixedLine FL_PLOT_OPTIONS { Pos = MAP_APPFONT ( 6 , 113 ) ; Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "Plot options"; + }; + + FixedText FT_MISSING_VALUES + { + Pos = MAP_APPFONT ( 12 , 127 ) ; + Size = MAP_APPFONT ( 80 , 8 ) ; Text [ en-US ] = "Plot missing values"; }; RadioButton RB_DONT_PAINT { - Pos = MAP_APPFONT ( 12 , 127 ) ; + Pos = MAP_APPFONT ( 82 , 127 ) ; Size = MAP_APPFONT ( 80 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "~Leave gap"; @@ -148,7 +155,7 @@ TabPage TP_OPTIONS RadioButton RB_ASSUME_ZERO { - Pos = MAP_APPFONT ( 12 , 141 ) ; + Pos = MAP_APPFONT ( 82 , 141 ) ; Size = MAP_APPFONT ( 80 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "~Assume zero"; @@ -156,9 +163,17 @@ TabPage TP_OPTIONS RadioButton RB_CONTINUE_LINE { - Pos = MAP_APPFONT ( 12 , 155 ) ; + Pos = MAP_APPFONT ( 82 , 155 ) ; Size = MAP_APPFONT ( 80 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "~Continue line"; }; + + CheckBox CB_INCLUDE_HIDDEN_CELLS + { + Pos = MAP_APPFONT ( 12 , 172 ) ; + Size = MAP_APPFONT ( 200 , 10 ) ; + TabStop = TRUE ; + Text [ en-US ] = "Include ~values from hidden cells"; + }; }; |