summaryrefslogtreecommitdiffstats
path: root/kchart/kchartConfigDialog.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kchart/kchartConfigDialog.cc')
-rw-r--r--kchart/kchartConfigDialog.cc438
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