summaryrefslogtreecommitdiffstats
path: root/kchart/kchartWizard.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kchart/kchartWizard.cc')
-rw-r--r--kchart/kchartWizard.cc171
1 files changed, 171 insertions, 0 deletions
diff --git a/kchart/kchartWizard.cc b/kchart/kchartWizard.cc
new file mode 100644
index 00000000..5f4f2393
--- /dev/null
+++ b/kchart/kchartWizard.cc
@@ -0,0 +1,171 @@
+
+#include "kchartWizard.h"
+#include "kchartWizardSelectDataPage.h"
+#include "kchartWizardSelectChartTypePage.h"
+#include "kchartWizardSelectChartSubTypePage.h"
+#include "kchartWizardSetupDataPage.h"
+#include "kchartWizardLabelsLegendPage.h"
+#include "kchartWizardSetupAxesPage.h"
+#include "kchartWizardSelectDataFormatPage.h"
+
+#include <qlineedit.h>
+#include <qwidget.h>
+#include <qpushbutton.h>
+
+#include <kglobal.h>
+#include <kiconloader.h>
+#include <kdebug.h>
+
+#include "kchart_params.h"
+
+namespace KChart
+{
+
+KChartWizard::KChartWizard ( KChartPart* _chart, QWidget *parent, const char* name,
+ bool modal, WFlags f ) :
+ KWizard( parent, name, modal, f ),
+ m_chart( _chart )
+{
+ // First page: select the data range
+ m_dataFormatPage = new KChartWizardSelectDataFormatPage(this, m_chart);
+ addPage( m_dataFormatPage, i18n("Data"));
+ setFinishEnabled(m_dataFormatPage, true);
+ setHelpEnabled(m_dataFormatPage, false);
+
+ // Second page: select the major chart type
+ m_chartTypePage = new KChartWizardSelectChartTypePage( this, m_chart );
+ addPage( m_chartTypePage, i18n( "Select Chart Type" ) );
+ //finishButton()->setEnabled( TRUE );
+ setFinishEnabled(m_chartTypePage, true);
+ setHelpEnabled(m_chartTypePage, false);
+
+ // Third page: select the minor chart type
+ m_chartSubtypePage = new KChartWizardSelectChartSubTypePage( this, m_chart );
+ addPage( m_chartSubtypePage, i18n( "Select Chart Sub-type" ) );
+ setFinishEnabled(m_chartSubtypePage, true);
+ setHelpEnabled(m_chartSubtypePage, false);
+
+ // Fourth page: labels/legends setup
+ m_labelsLegendPage = new KChartWizardLabelsLegendPage( this, m_chart );
+ addPage( m_labelsLegendPage, i18n( "Labels & Legend" ) );
+ setFinishEnabled(m_labelsLegendPage, true);
+ setHelpEnabled(m_labelsLegendPage, false);
+
+ // Fifth page: axes setup
+ m_axespage = new KChartWizardSetupAxesPage( this, m_chart );
+ addPage( m_axespage, i18n( "Setup Axes" ) );
+ setFinishEnabled(m_axespage, true);
+ setNextEnabled(m_axespage, false);
+ setHelpEnabled(m_axespage, false);
+
+ // connect( this, SIGNAL( finished() ), _selectdatapage, SLOT( apply() ) );
+ connect(this, SIGNAL(finished()), m_dataFormatPage, SLOT(apply()));
+ connect(this, SIGNAL(finished()), m_chartTypePage, SLOT(apply()));
+ connect(this ,SIGNAL(finished()), m_chartSubtypePage, SLOT(apply()));
+ connect(this, SIGNAL(finished()), m_labelsLegendPage, SLOT(apply()));
+ connect(this, SIGNAL(finished()), m_axespage, SLOT(apply()));
+
+ connect( m_chartTypePage, SIGNAL( chartChange( int ) ),
+ this, SLOT( subType( int ) ) );
+ adjustSize();
+
+ subType( m_chart->params()->chartType() );
+ kdDebug(35001) << "kchartwizard created" << endl;
+}
+
+
+KChartWizard::~KChartWizard()
+{
+ // delete _selectdatapage;
+ delete m_chartTypePage;
+ delete m_chartSubtypePage;
+ //delete _setupdatapage;
+ delete m_labelsLegendPage;
+ delete m_axespage;
+ delete m_dataFormatPage;
+}
+
+void KChartWizard::subType(int _type)
+{
+ KChartParams::ChartType type = (KChartParams::ChartType) _type;
+ if (type == KChartParams::Bar ||
+ type == KChartParams::Line ||
+ type == KChartParams::Area ||
+ type == KChartParams::HiLo ||
+ type == KChartParams::Polar) {
+ m_chartSubtypePage->chartSubType = true;
+ } else {
+ m_chartSubtypePage->chartSubType = false;
+ }
+ m_chartSubtypePage->changeSubTypeName( type );
+ if( ( type == KChartParams::Bar && m_chart->params()->threeDBars() )
+ || ( type == KChartParams::Pie && m_chart->params()->threeDPies() ) ) {
+ m_axespage->chart3d = true;
+ } else {
+ m_axespage->chart3d = false;
+ }
+
+#if 0 // No second Y axis so far /ingwa
+ if ( m_chart->params()->axisVisible( KDChartAxisParams::AxisPosRight ) ) {
+ m_labelsLegendPage->ytitle2 = true;
+ } else {
+ m_labelsLegendPage->ytitle2 = false;
+ }
+#endif
+}
+
+
+bool KChartWizard::appropriate( QWidget * w ) const
+{
+ // Show the sub-type page only if has anything to show
+ if ( w == m_chartSubtypePage )
+ return m_chartSubtypePage->chartSubType;
+ else
+ return true;
+}
+
+
+void KChartWizard::next()
+{
+ // Some sort of a hack. We want the chart-subtype-page to get
+ // dynamically built when it's going to be shown
+ //if ( currentPage() == _charttypePage )
+ //_chartSubtypePage->createChildren();
+
+ QWizard::next();
+}
+
+void KChartWizard::accept()
+{
+ emit finished();
+ QWizard::accept();
+}
+
+void KChartWizard::reject()
+{
+ emit cancelled();
+ QWizard::reject();
+}
+
+void KChartWizard::setDataArea( const QString &dataArea )
+{
+ m_dataFormatPage->setDataArea( dataArea );
+}
+
+
+QString KChartWizard::dataArea() const
+{
+ return m_dataFormatPage->dataArea();
+}
+
+
+void KChartWizard::emitNeedNewData( const char* area, int rowcol,
+ bool firstRowIsLegend,
+ bool firstColIsLabel )
+{
+ emit needNewData( area, rowcol, firstRowIsLegend, firstColIsLabel );
+}
+
+} //KChart namespace
+
+#include "kchartWizard.moc"