[QGIS Commit] r12937 - trunk/qgis/src/plugins/grass

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Feb 12 07:02:27 EST 2010


Author: rblazek
Date: 2010-02-12 07:02:26 -0500 (Fri, 12 Feb 2010)
New Revision: 12937

Modified:
   trunk/qgis/src/plugins/grass/qgsgrassmapcalc.h
   trunk/qgis/src/plugins/grass/qgsgrassmodule.cpp
   trunk/qgis/src/plugins/grass/qgsgrassmodule.h
Log:
handle better mumltiple empty output

Modified: trunk/qgis/src/plugins/grass/qgsgrassmapcalc.h
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassmapcalc.h	2010-02-12 09:55:42 UTC (rev 12936)
+++ trunk/qgis/src/plugins/grass/qgsgrassmapcalc.h	2010-02-12 12:02:26 UTC (rev 12937)
@@ -66,6 +66,7 @@
     QStringList checkRegion();
     bool inputRegion( struct Cell_head *window, bool all );
     QStringList output( int type );
+    bool hasOutput ( int type ) { return true; }
 
     /** \brief recieves contentsMousePressEvent from view */
     void mousePressEvent( QMouseEvent* );

Modified: trunk/qgis/src/plugins/grass/qgsgrassmodule.cpp
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassmodule.cpp	2010-02-12 09:55:42 UTC (rev 12936)
+++ trunk/qgis/src/plugins/grass/qgsgrassmodule.cpp	2010-02-12 12:02:26 UTC (rev 12937)
@@ -229,8 +229,8 @@
   }
 
   // Hide display if there is no output
-  if ( mOptions->output( QgsGrassModuleOption::Vector ).size() == 0
-       && mOptions->output( QgsGrassModuleOption::Raster ).size() == 0 )
+  if ( !mOptions->hasOutput( QgsGrassModuleOption::Vector )
+       && !mOptions->hasOutput( QgsGrassModuleOption::Raster ) )
   {
     mViewButton->hide();
   }
@@ -766,7 +766,6 @@
 #endif
 }
 
-
 QStringList QgsGrassModuleStandardOptions::output( int type )
 {
   QgsDebugMsg( "called." );
@@ -785,7 +784,9 @@
       if ( opt->outputType() == type )
       {
         QString out = opt->value();
-        list.append( out );
+        if ( !out.isEmpty() ) {
+          list.append( out );
+        }
       }
     }
   }
@@ -793,6 +794,28 @@
   return list;
 }
 
+bool QgsGrassModuleStandardOptions::hasOutput( int type )
+{
+  QgsDebugMsg( "called." );
+  QStringList list;
+
+  for ( unsigned int i = 0; i < mItems.size(); i++ )
+  {
+    QgsGrassModuleOption *opt = dynamic_cast<QgsGrassModuleOption *>( mItems[i] );
+    if ( !opt )
+      continue;
+
+    QgsDebugMsg( "opt->key() = " + opt->key() );
+
+    if ( opt->isOutput() )
+    {
+      if ( opt->outputType() == type ) return true;
+    }
+  }
+
+  return false;
+}
+
 QStringList QgsGrassModuleStandardOptions::ready()
 {
   QgsDebugMsg( "entered." );

Modified: trunk/qgis/src/plugins/grass/qgsgrassmodule.h
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassmodule.h	2010-02-12 09:55:42 UTC (rev 12936)
+++ trunk/qgis/src/plugins/grass/qgsgrassmodule.h	2010-02-12 12:02:26 UTC (rev 12937)
@@ -192,6 +192,9 @@
     //! Get list of current output maps
     virtual QStringList output( int type ) { return QStringList() ; }
 
+    //! Has any output
+    virtual bool hasOutput ( int type ) { return true; }
+
     //! Has raster input or output
     virtual bool usesRegion() { return false; }
 
@@ -265,6 +268,7 @@
     void thawOutput();
     QStringList ready() ;
     QStringList output( int type );
+    bool hasOutput ( int type );
     QStringList checkRegion();
     bool usesRegion();
     bool requestsRegion();



More information about the QGIS-commit mailing list