diff options
Diffstat (limited to 'kchart/kchartConfigDialog.cc')
-rw-r--r-- | kchart/kchartConfigDialog.cc | 438 |
1 files changed, 438 insertions, 0 deletions
diff --git a/kchart/kchartConfigDialog.cc b/kchart/kchartConfigDialog.cc new file mode 100644 index 00000000..9724a92c --- /dev/null +++ b/kchart/kchartConfigDialog.cc @@ -0,0 +1,438 @@ +/* This file is part of the KDE project + Copyright (C) 1999,2000 Matthias Kalle Dalheimer <kalle@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + + +#include "kchartConfigDialog.h" +#include "kchartConfigDialog.moc" + + +#include "kchartBackgroundPixmapConfigPage.h" +#include "kchartSubTypeChartPage.h" +#include "kchartHeaderFooterConfigPage.h" +#include "kchartColorConfigPage.h" +#include "kchartParameterPieConfigPage.h" +#include "kchartFontConfigPage.h" +#include "kchartDataConfigPage.h" +#include "kchartComboConfigPage.h" +#include "kchartParameterConfigPage.h" +#include "kchartPieConfigPage.h" +#include "kchartParameter3dConfigPage.h" +#include "kchartLegendConfigPage.h" +#include "kchartLine3dConfigPage.h" +#include "kchartParameterPolarConfigPage.h" + +#include <kapplication.h> +#include <klocale.h> +#include <kdebug.h> + +#include <qradiobutton.h> + +#include "kchart_params.h" + +namespace KChart +{ + +KChartConfigDialog::KChartConfigDialog( KChartParams* params, + QWidget* parent, int flags, + KDChartTableData *dat ) : + QTabDialog( parent, "Chart config dialog", true ), + m_params( params ), + + m_dataPage(0), + m_subTypePage(0), + + _parameter3dpage(0), + _linepage3d(0), + _parameterpiepage(0), + _polarpage(0), + + m_headerfooterpage(0), + m_legendPage(0), + m_axespage(0), + + _colorpage(0), + _parameterfontpage(0), + _backgroundpixpage(0) + //_piepage(0), +{ + // Geometry page + //_geompage = new KChartGeometryConfigPage( this ); + //addTab( _geompage, i18n( "&Geometry" ) ); + setCaption( i18n( "Chart Setup" ) ); + + if (flags & KC_DATAFORMAT) { + m_dataPage = new KChartDataConfigPage(m_params, this, dat); + addTab( m_dataPage, i18n( "&Data" ) ); + } + else if (flags & KC_SUBTYPE) { + subtypePage(); + } + else if (flags & KC_HEADERFOOTER) { + m_headerfooterpage=new KChartHeaderFooterConfigPage(m_params,this); + addTab( m_headerfooterpage,i18n("Header/Footer")); + } + else if (flags & KC_COLORS ) { + _colorpage = new KChartColorConfigPage( m_params, this, dat ); + addTab( _colorpage, i18n( "&Colors" ) ); + } + else if ( flags & KC_FONT ) { + _parameterfontpage = new KChartFontConfigPage(m_params,this, dat ); + addTab( _parameterfontpage, i18n( "&Font" ) ); + } + else if ( flags & KC_BACK ) { + _backgroundpixpage = new KChartBackgroundPixmapConfigPage( m_params, this ); + addTab( _backgroundpixpage, i18n( "&Background" ) ); + } + else if ( flags & KC_LEGEND ) { + m_legendPage = new KChartLegendConfigPage(m_params,this ); + addTab( m_legendPage,i18n("Legend")); + } + else if ( flags & KC_ALL ) { + // The data page + m_dataPage = new KChartDataConfigPage(m_params, this, dat); + addTab( m_dataPage, i18n( "&Data" ) ); + + // The subtype page + subtypePage(); + + // The subtype configuration page (not for all types). + if ( m_params->chartType() == KChartParams::Bar ) { + _parameter3dpage = new KChartParameter3dConfigPage(m_params,this ); + addTab( _parameter3dpage,i18n("Bar")); + } + else if ( m_params->chartType() == KChartParams::Line) { + _linepage3d= new KChartLine3dConfigPage(m_params,this); + addTab( _linepage3d,i18n("Line")); + } +#if 0 + else if ( m_params->chartType() == KChartParams::BarLines) { + m_barslinesPage = new KChartBarslinesConfigPage(m_params, this); + addTab( _linepage3d,i18n("Line")); + } +#endif + else if ( m_params->chartType() == KChartParams::Pie ) { + + _parameterpiepage = new KChartParameterPieConfigPage(m_params, + this ); + addTab( _parameterpiepage, i18n( "&Pie" ) ); + +#if 0 // Disabled for 1.4. + _piepage = new KChartPieConfigPage(m_params, this, dat ); + addTab( _piepage, i18n( "&Piedata" ) ); +#endif + } + else if ( m_params->chartType() == KChartParams::Polar) { + _polarpage=new KChartParameterPolarConfigPage(m_params,this); + addTab( _polarpage,i18n("&Polar")); + } + + + // The Header/Footer page + m_headerfooterpage=new KChartHeaderFooterConfigPage(m_params, this); + addTab( m_headerfooterpage, i18n("Header/Footer")); + + // The legend page + m_legendPage = new KChartLegendConfigPage(m_params,this ); + addTab( m_legendPage,i18n("Legend")); + + // Add axes page if applicable (all except Pie, Ring). + if ( m_params->chartType() != KChartParams::Pie + && m_params->chartType() != KChartParams::Ring ) { + + m_axespage = new KChartParameterConfigPage(m_params,this ); + addTab( m_axespage, i18n( "&Axes" ) ); + } + + _colorpage = new KChartColorConfigPage( m_params, this, dat ); + addTab( _colorpage, i18n( "&Colors" ) ); + + _parameterfontpage = new KChartFontConfigPage(m_params,this, dat ); + addTab( _parameterfontpage, i18n( "&Font" ) ); + + _backgroundpixpage = new KChartBackgroundPixmapConfigPage( m_params, + this ); + addTab( _backgroundpixpage, i18n( "&Background" ) ); + + if ( m_params->chartType() == KChartParams::HiLo && + ( m_params->hiLoChartSubType() == KChartParams::HiLoClose || + m_params->hiLoChartSubType() == KChartParams::HiLoOpenClose ) ) { + // PENDING(kalle) Combo page needs to be redone completely. + // _hlcChart=new KChartComboPage(m_params,this); +// addTab( _hlcChart, i18n( "HLC Chart" ) ); + } + } + + // Get data into the tabs. + init(); + + // Setup main buttons. + setOKButton( i18n( "&OK" ) ); + setApplyButton( i18n( "&Apply" ) ); +#if 0 + setDefaultButton( i18n( "&Defaults" ) ); +#else + setDefaultButton( QString::null ); +#endif + setCancelButton( i18n( "&Cancel" ) ); + + connect( this, SIGNAL( applyButtonPressed() ), this, SLOT( apply() ) ); + connect( this, SIGNAL( defaultButtonPressed() ), this, SLOT( defaults() ) ); +} + + +void KChartConfigDialog::init() +{ + // Data page + if (m_dataPage) + m_dataPage->init(); + + // Color page + if (_colorpage) { + _colorpage->setLineColor( m_params->outlineDataColor() ); + KDChartAxisParams leftparams; + leftparams = m_params->axisParams( KDChartAxisParams::AxisPosLeft ); + KDChartAxisParams rightparams; + rightparams = m_params->axisParams( KDChartAxisParams::AxisPosRight ); + KDChartAxisParams bottomparams; + bottomparams = m_params->axisParams( KDChartAxisParams::AxisPosBottom ); + _colorpage->setGridColor( leftparams.axisGridColor() ); + _colorpage->setXTitleColor( m_params->axisTitleColor( KDChartAxisParams::AxisPosLeft ) ); + _colorpage->setYTitleColor( m_params->axisTitleColor( KDChartAxisParams::AxisPosBottom ) ); +#if 0 + _colorpage->setYTitle2Color( rightparams.axisLineColor() ); +#endif + _colorpage->setXLabelColor( bottomparams.axisLabelsColor() ); + _colorpage->setYLabelColor( leftparams.axisLabelsColor() ); +#if 0 + _colorpage->setYLabel2Color( rightparams.axisLabelsColor() ); +#endif + _colorpage->setXLineColor( bottomparams.axisLineColor() ); + _colorpage->setYLineColor( leftparams.axisLineColor() ); +#if 0 + _colorpage->setYLine2Color( rightparams.axisLineColor() ); +#endif + _colorpage->setXZeroLineColor( bottomparams.axisZeroLineColor() ); + _colorpage->setYZeroLineColor( leftparams.axisZeroLineColor() ); +#if 0 + _colorpage->setYZeroLine2Color( rightparams.axisZeroLineColor() ); +#endif + // PENDING(kalle) Replace with KDChart equivalents + // _colorpage->setBackgroundColor( m_params->BGColor ); + // _colorpage->setPlotColor( m_params->PlotColor ); + // _colorpage->setVolColor( m_params->VolColor ); + //_colorpage->setEdgeColor( m_params->EdgeColor ); + } + + if (m_axespage ) + m_axespage->init(); + +#if 0 + if (_piepage) + _piepage->init(); +#endif + if (_parameterpiepage) + _parameterpiepage->init(); + + if (_parameter3dpage) + _parameter3dpage->init(); + + if ( _linepage3d && m_params->chartType() == KChartParams::Line) + _linepage3d->init(); + + if (_parameterfontpage) + _parameterfontpage->init(); + + if ( m_subTypePage ) + m_subTypePage->init(); + +/* if( _hlcChart) + { + if( m_params->chartType() == KDChartParams::HiLo && + ( m_params->hiLoChartSubType() == KDChartParams::HiLoClose || + m_params->hiLoChartSubType() == KDChartParams::HiLoOpenClose ) ) { + _hlcChart->init(); + } + }*/ + if (_backgroundpixpage) + _backgroundpixpage->init(); + + if (m_legendPage) + m_legendPage->init(); +// for( uint i = 0; i < NUMDATACOLORS; i++ ) +// _colorpage->setDataColor( i, m_params->dataColor( i ) ); + + if (m_headerfooterpage) + m_headerfooterpage->init(); + if (_polarpage) + _polarpage->init(); +} + + +void KChartConfigDialog::apply() +{ + kdDebug(35001) << "***KChartConfig::apply()\n"; + // Copy application data from dialog into parameter structure that is also + // being used by the application. + + // Data page + if (m_dataPage) + m_dataPage->apply(); + + // color page + + // PENDING(kalle) Replace with equivalents + // m_params->BGColor = _colorpage->backgroundColor(); + // m_params->PlotColor = _colorpage->plotColor(); + //m_params->EdgeColor = _colorpage->edgeColor(); + // m_params->VolColor = _colorpage->volColor(); + + if (_colorpage) { + + KDChartAxisParams leftparams; + leftparams = m_params->axisParams( KDChartAxisParams::AxisPosLeft ); + leftparams.setAxisGridColor( _colorpage->gridColor() ); + m_params->setOutlineDataColor( _colorpage->lineColor() ); + + KDChartAxisParams rightparams; + rightparams = m_params->axisParams( KDChartAxisParams::AxisPosRight ); + KDChartAxisParams bottomparams; + bottomparams = m_params->axisParams( KDChartAxisParams::AxisPosBottom ); + if( _colorpage->xTitleColor().isValid() ) + m_params->setAxisTitleColor( KDChartAxisParams::AxisPosBottom, _colorpage->xTitleColor() ); + else + m_params->setAxisTitleColor( KDChartAxisParams::AxisPosBottom, QColor() ); + if( _colorpage->yTitleColor().isValid() ) + m_params->setAxisTitleColor( KDChartAxisParams::AxisPosLeft, _colorpage->yTitleColor() ); + else + m_params->setAxisTitleColor( KDChartAxisParams::AxisPosLeft, QColor() ); +#if 0 + if( _colorpage->yTitle2Color().isValid() ) + rightparams.setAxisLineColor( _colorpage->yTitle2Color() ); + else + rightparams.setAxisLineColor( QColor() ); +#endif + + bottomparams.setAxisLabelsColor( _colorpage->xLabelColor() ); + leftparams.setAxisLabelsColor( _colorpage->yLabelColor() ); +#if 0 + rightparams.setAxisLabelsColor( _colorpage->yLabel2Color() ); +#endif + + bottomparams.setAxisLineColor( _colorpage->xLineColor() ); + leftparams.setAxisLineColor( _colorpage->yLineColor() ); +#if 0 + rightparams.setAxisLineColor( _colorpage->yLine2Color() ); +#endif + + bottomparams.setAxisZeroLineColor( _colorpage->xZeroLineColor() ); + leftparams.setAxisZeroLineColor( _colorpage->yZeroLineColor() ); +#if 0 + rightparams.setAxisZeroLineColor( _colorpage->yZeroLine2Color() ); +#endif + m_params->setAxisParams( KDChartAxisParams::AxisPosBottom, bottomparams ); + m_params->setAxisParams( KDChartAxisParams::AxisPosLeft, leftparams ); +#if 0 + m_params->setAxisParams( KDChartAxisParams::AxisPosRight, rightparams ); +#endif + } + + if (m_axespage) + m_axespage->apply(); + + if (_parameterpiepage) + _parameterpiepage->apply(); +#if 0 + if (_piepage) + _piepage->apply(); +#endif + if( _parameter3dpage && m_params->chartType() == KChartParams::Bar ) + _parameter3dpage->apply(); + + if( _linepage3d && m_params->chartType() == KChartParams::Line) + _linepage3d->apply(); + + if(_parameterfontpage) + _parameterfontpage->apply(); + + if(_colorpage) + _colorpage->apply(); + + if( m_subTypePage ) + m_subTypePage->apply(); + + if ( m_params->chartType() == KChartParams::HiLo && + ( m_params->hiLoChartSubType() == KChartParams::HiLoClose || + m_params->hiLoChartSubType() == KChartParams::HiLoOpenClose ) ) + { + /* if( _hlcChart) + _hlcChart->apply();*/ + } + + if (_backgroundpixpage) + _backgroundpixpage->apply(); + + // for( uint i = 0; i < NUMDATACOLORS; i++ ) + // m_params->_datacolors.setColor( i, _colorpage->dataColor( i ) ); + if (m_legendPage) + m_legendPage->apply(); + + if (m_headerfooterpage) + m_headerfooterpage->apply(); + if (_polarpage) + _polarpage->apply(); + + // Data in the params struct has changed; notify the application. + emit dataChanged(); +} + + +void KChartConfigDialog::subtypePage() +{ + switch( m_params->chartType() ) { + case KDChartParams::Bar: + m_subTypePage = new KChartBarSubTypeChartPage( m_params, this ); + break; + case KDChartParams::Area: + m_subTypePage = new KChartAreaSubTypeChartPage( m_params, this ); + break; + case KDChartParams::Line: + m_subTypePage = new KChartLineSubTypeChartPage( m_params, this ); + break; + case KDChartParams::HiLo: + m_subTypePage = new KChartHiloSubTypeChartPage( m_params, this ); + break; + case KDChartParams::Polar: + m_subTypePage = new KChartPolarSubTypeChartPage( m_params, this ); + break; + default: + // Do nothing. In particular, don't add a page. + return; + ; + } + addTab( m_subTypePage, i18n( "Chart &Sub-type" ) ); +} + + +void KChartConfigDialog::defaults() +{ + //FIXME: NYI +} + + +} //KChart namespace |