[QGIS Commit] r13135 - in trunk/qgis/src: core/symbology-ng gui/symbology-ng

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sun Mar 21 17:23:19 EDT 2010


Author: mhugent
Date: 2010-03-21 17:23:18 -0400 (Sun, 21 Mar 2010)
New Revision: 13135

Modified:
   trunk/qgis/src/core/symbology-ng/qgsrendererv2.h
   trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
Log:
Make renderFeature method virtual. More safety checks in the renderer props dialog

Modified: trunk/qgis/src/core/symbology-ng/qgsrendererv2.h
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgsrendererv2.h	2010-03-21 15:30:15 UTC (rev 13134)
+++ trunk/qgis/src/core/symbology-ng/qgsrendererv2.h	2010-03-21 21:23:18 UTC (rev 13135)
@@ -73,7 +73,7 @@
 
     virtual QgsFeatureRendererV2* clone() = 0;
 
-    void renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool drawVertexMarker = false );
+    virtual void renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool drawVertexMarker = false );
 
     //! for debugging
     virtual QString dump();

Modified: trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp	2010-03-21 15:30:15 UTC (rev 13134)
+++ trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp	2010-03-21 21:23:18 UTC (rev 13135)
@@ -18,31 +18,31 @@
 #include <QKeyEvent>
 #include <QMessageBox>
 
-static bool _initRenderer(QString name, QgsRendererV2WidgetFunc f, QString iconName )
+static bool _initRenderer( QString name, QgsRendererV2WidgetFunc f, QString iconName )
 {
   QgsRendererV2Registry* reg = QgsRendererV2Registry::instance();
   QgsRendererV2AbstractMetadata* am = reg->rendererMetadata( name );
-  if (am == NULL)
+  if ( am == NULL )
     return false;
-  QgsRendererV2Metadata* m = dynamic_cast<QgsRendererV2Metadata*>(am);
-  if (m == NULL)
+  QgsRendererV2Metadata* m = dynamic_cast<QgsRendererV2Metadata*>( am );
+  if ( m == NULL )
     return false;
 
-  m->setWidgetFunction(f);
+  m->setWidgetFunction( f );
 
   QString iconPath = QgsApplication::defaultThemePath() + iconName;
   QPixmap pix;
   if ( pix.load( iconPath, "png" ) )
-    m->setIcon(pix);
+    m->setIcon( pix );
 
-  QgsDebugMsg("Set for "+name);
+  QgsDebugMsg( "Set for " + name );
   return true;
 }
 
 static void _initRendererWidgetFunctions()
 {
   static bool initialized = false;
-  if (initialized)
+  if ( initialized )
     return;
 
   _initRenderer( "singleSymbol", QgsSingleSymbolRendererV2Widget::create, "rendererSingleSymbol.png" );
@@ -154,10 +154,16 @@
 
 void QgsRendererV2PropertiesDialog::apply()
 {
-  if ( mActiveWidget != NULL )
+  if ( !mActiveWidget || !mLayer )
   {
-    mLayer->setRendererV2( mActiveWidget->renderer()->clone() );
+    return;
   }
+
+  QgsFeatureRendererV2* renderer = mActiveWidget->renderer();
+  if ( renderer )
+  {
+    mLayer->setRendererV2( renderer->clone() );
+  }
 }
 
 void QgsRendererV2PropertiesDialog::onOK()



More information about the QGIS-commit mailing list