[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kchart/shape
From:       Johannes Simon <johannes.simon () gmail ! com>
Date:       2009-01-31 20:45:08
Message-ID: 1233434708.369139.29495.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 919366 by jsimon:

Forbid polar/cartesian plot combinations

 M  +62 -13    ChartConfigWidget.cpp  
 M  +3 -0      ChartConfigWidget.h  


--- trunk/koffice/kchart/shape/ChartConfigWidget.cpp #919365:919366
@@ -101,6 +101,10 @@
     Ui::ChartConfigWidget  ui;
     bool sourceIsSpreadSheet;
     
+    QMenu *dataSetBarChartMenu;
+    QMenu *dataSetLineChartMenu;
+    QMenu *dataSetAreaChartMenu;
+    
     // chart type selection actions
     QAction  *normalBarChartAction;
     QAction  *stackedBarChartAction;
@@ -180,6 +184,9 @@
     sourceIsSpreadSheet = false;
     cellRegionStringValidator = 0;
     
+    dataSetBarChartMenu = 0;
+    dataSetLineChartMenu = 0;
+    dataSetAreaChartMenu = 0;
     dataSetNormalBarChartAction = 0;
     dataSetStackedBarChartAction = 0;
     dataSetPercentBarChartAction = 0;
@@ -240,22 +247,24 @@
     
     // Data set chart type button
     QMenu *dataSetChartTypeMenu = new QMenu( this );
-    dataSetChartTypeMenu->setIcon( KIcon( "chart_bar_beside" ) );
+    // Default chart type is a bar chart
+    dataSetChartTypeMenu->setIcon( KIcon( "chart_bar_beside" ) );       
+
     
-    QMenu *dataSetBarChartMenu = dataSetChartTypeMenu->addMenu( KIcon( "chart_bar" \
                ), "Bar Chart" );
-    d->dataSetNormalBarChartAction  = dataSetBarChartMenu->addAction( KIcon( \
                "chart_bar_beside" ), i18n("Normal") );
-    d->dataSetStackedBarChartAction = dataSetBarChartMenu->addAction( KIcon( \
                "chart_bar_layer" ), i18n("Stacked") );
-    d->dataSetPercentBarChartAction = dataSetBarChartMenu->addAction( KIcon( \
"chart_bar_percent" ), i18n("Percent") ); +    d->dataSetBarChartMenu = \
dataSetChartTypeMenu->addMenu( KIcon( "chart_bar" ), "Bar Chart" ); +    \
d->dataSetNormalBarChartAction  = d->dataSetBarChartMenu->addAction( KIcon( \
"chart_bar_beside" ), i18n("Normal") ); +    d->dataSetStackedBarChartAction = \
d->dataSetBarChartMenu->addAction( KIcon( "chart_bar_layer" ), i18n("Stacked") ); +   \
d->dataSetPercentBarChartAction = d->dataSetBarChartMenu->addAction( KIcon( \
"chart_bar_percent" ), i18n("Percent") );  
-    QMenu *dataSetLineChartMenu = dataSetChartTypeMenu->addMenu( KIcon( "chart_line" \
                ), "Line Chart" );
-    d->dataSetNormalLineChartAction  = dataSetLineChartMenu->addAction( KIcon( \
                "chart_line_normal" ), i18n("Normal") );
-    d->dataSetStackedLineChartAction = dataSetLineChartMenu->addAction( KIcon( \
                "chart_line_stacked" ), i18n("Stacked") );
-    d->dataSetPercentLineChartAction = dataSetLineChartMenu->addAction( KIcon( \
"chart_line_percent" ), i18n("Percent") ); +    d->dataSetLineChartMenu = \
dataSetChartTypeMenu->addMenu( KIcon( "chart_line" ), "Line Chart" ); +    \
d->dataSetNormalLineChartAction  = d->dataSetLineChartMenu->addAction( KIcon( \
"chart_line_normal" ), i18n("Normal") ); +    d->dataSetStackedLineChartAction = \
d->dataSetLineChartMenu->addAction( KIcon( "chart_line_stacked" ), i18n("Stacked") ); \
+    d->dataSetPercentLineChartAction = d->dataSetLineChartMenu->addAction( KIcon( \
"chart_line_percent" ), i18n("Percent") );  
-    QMenu *dataSetAreaChartMenu = dataSetChartTypeMenu->addMenu( KIcon( "chart_area" \
                ), "Area Chart" );
-    d->dataSetNormalAreaChartAction  = dataSetAreaChartMenu->addAction( KIcon( \
                "chart_area_normal" ), i18n("Normal") );
-    d->dataSetStackedAreaChartAction = dataSetAreaChartMenu->addAction( KIcon( \
                "chart_area_stacked" ), i18n("Stacked") );
-    d->dataSetPercentAreaChartAction = dataSetAreaChartMenu->addAction( KIcon( \
"chart_area_percent" ), i18n("Percent") ); +    d->dataSetAreaChartMenu = \
dataSetChartTypeMenu->addMenu( KIcon( "chart_area" ), "Area Chart" ); +    \
d->dataSetNormalAreaChartAction  = d->dataSetAreaChartMenu->addAction( KIcon( \
"chart_area_normal" ), i18n("Normal") ); +    d->dataSetStackedAreaChartAction = \
d->dataSetAreaChartMenu->addAction( KIcon( "chart_area_stacked" ), i18n("Stacked") ); \
+    d->dataSetPercentAreaChartAction = d->dataSetAreaChartMenu->addAction( KIcon( \
"chart_area_percent" ), i18n("Percent") );  
     d->dataSetRadarChartAction = dataSetChartTypeMenu->addAction( KIcon( \
                "chart_polar_normal" ), i18n("Polar Chart") );
     d->dataSetCircleChartAction = dataSetChartTypeMenu->addAction( KIcon( \
"chart_pie_normal" ), i18n("Pie Chart") ); @@ -496,12 +505,42 @@
         subtype = NoChartSubtype;
     }
     
+    // Make sure polar and cartesian plots can't conflict and
+    // don't allow the user to mix these two types
+    if ( isPolar( type ) ) {
+        setPolarChartTypesEnabled( true );
+        setCartesianChartTypesEnabled( false );
+    } else {
+        setPolarChartTypesEnabled( false );
+        setCartesianChartTypesEnabled( true );
+    }
+    
     emit chartTypeChanged( type );
     emit chartSubTypeChanged( subtype );
     
     update();
 }
 
+/**
+ * Enabled/Disabled menu actions to set a polar chart type
+ */
+void ChartConfigWidget::setPolarChartTypesEnabled( bool enabled )
+{
+    d->dataSetCircleChartAction->setEnabled( enabled );
+    d->dataSetRadarChartAction->setEnabled( enabled );
+}
+
+/**
+ * Enabled/Disabled menu actions to set a cartesian chart type
+ */
+void ChartConfigWidget::setCartesianChartTypesEnabled( bool enabled )
+{
+    d->dataSetBarChartMenu->setEnabled( enabled );
+    d->dataSetLineChartMenu->setEnabled( enabled );
+    d->dataSetAreaChartMenu->setEnabled( enabled );
+    d->dataSetScatterChartAction->setEnabled( enabled );
+}
+
 void ChartConfigWidget::ui_dataSetPieExplodeFactorChanged( int percent )
 {
     if ( d->selectedDataSet < 0 )
@@ -852,6 +891,16 @@
         default:
             break;
         }
+        
+        // Make sure we only allow legal chart type combinations
+        if ( isPolar( d->shape->chartType() ) ) {
+            setPolarChartTypesEnabled( true );
+            setCartesianChartTypesEnabled( false );
+        } else {
+            setPolarChartTypesEnabled( false );
+            setCartesianChartTypesEnabled( true );
+        }
+        
         d->type    = d->shape->chartType();
         d->subtype = d->shape->chartSubType();
     }
--- trunk/koffice/kchart/shape/ChartConfigWidget.h #919365:919366
@@ -167,6 +167,9 @@
 private:
     void setupDialogs();
     void createActions();
+    
+    void setPolarChartTypesEnabled( bool enabled );
+    void setCartesianChartTypesEnabled( bool enabled );
 
     class Private;
     Private * const d;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic