[QGIS Commit] r12746 - trunk/qgis/src/plugins/grass
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Jan 12 13:02:07 EST 2010
Author: rblazek
Date: 2010-01-12 13:02:07 -0500 (Tue, 12 Jan 2010)
New Revision: 12746
Modified:
trunk/qgis/src/plugins/grass/qgsgrassmodel.cpp
Log:
catch GRASS exceptions
Modified: trunk/qgis/src/plugins/grass/qgsgrassmodel.cpp
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassmodel.cpp 2010-01-12 18:01:31 UTC (rev 12745)
+++ trunk/qgis/src/plugins/grass/qgsgrassmodel.cpp 2010-01-12 18:02:07 UTC (rev 12746)
@@ -242,82 +242,91 @@
QgsGrass::setLocation( mGisbase, mLocation );
- struct Map_info Map;
- int level = Vect_open_old_head( &Map, mMap.toLocal8Bit().data(),
- mMapset.toLocal8Bit().data() );
-
- if ( level >= 2 )
+ try
{
- int is3d = Vect_is_3d( &Map );
+ struct Map_info Map;
+ int level = Vect_open_old_head( &Map, mMap.toLocal8Bit().data(),
+ mMapset.toLocal8Bit().data() );
- // Number of elements
- str += htmlTableRow( QObject::tr( "Points" ), QString::number( Vect_get_num_primitives( &Map, GV_POINT ) ) );
- str += htmlTableRow( QObject::tr( "Lines" ), QString::number( Vect_get_num_primitives( &Map, GV_LINE ) ) );
- str += htmlTableRow( QObject::tr( "Boundaries" ), QString::number( Vect_get_num_primitives( &Map, GV_BOUNDARY ) ) );
- str += htmlTableRow( QObject::tr( "Centroids" ), QString::number( Vect_get_num_primitives( &Map, GV_CENTROID ) ) );
- if ( is3d )
+ if ( level >= 2 )
{
- str += htmlTableRow( QObject::tr( "Faces" ), QString::number( Vect_get_num_primitives( &Map, GV_FACE ) ) );
- str += htmlTableRow( QObject::tr( "Kernels" ), QString::number( Vect_get_num_primitives( &Map, GV_KERNEL ) ) );
- }
+ int is3d = Vect_is_3d( &Map );
- str += htmlTableRow( QObject::tr( "Areas" ), QString::number( Vect_get_num_areas( &Map ) ) );
- str += htmlTableRow( QObject::tr( "Islands" ), QString::number( Vect_get_num_islands( &Map ) ) );
+ // Number of elements
+ str += htmlTableRow( QObject::tr( "Points" ), QString::number( Vect_get_num_primitives( &Map, GV_POINT ) ) );
+ str += htmlTableRow( QObject::tr( "Lines" ), QString::number( Vect_get_num_primitives( &Map, GV_LINE ) ) );
+ str += htmlTableRow( QObject::tr( "Boundaries" ), QString::number( Vect_get_num_primitives( &Map, GV_BOUNDARY ) ) );
+ str += htmlTableRow( QObject::tr( "Centroids" ), QString::number( Vect_get_num_primitives( &Map, GV_CENTROID ) ) );
+ if ( is3d )
+ {
+ str += htmlTableRow( QObject::tr( "Faces" ), QString::number( Vect_get_num_primitives( &Map, GV_FACE ) ) );
+ str += htmlTableRow( QObject::tr( "Kernels" ), QString::number( Vect_get_num_primitives( &Map, GV_KERNEL ) ) );
+ }
+ str += htmlTableRow( QObject::tr( "Areas" ), QString::number( Vect_get_num_areas( &Map ) ) );
+ str += htmlTableRow( QObject::tr( "Islands" ), QString::number( Vect_get_num_islands( &Map ) ) );
- // Box and dimension
- BOUND_BOX box;
- char buffer[100];
- Vect_get_map_box( &Map, &box );
+ // Box and dimension
+ BOUND_BOX box;
+ char buffer[100];
- QgsGrass::setMapset( mGisbase, mLocation, mMapset );
- struct Cell_head window;
- G_get_window( &window );
- int proj = window.proj;
+ Vect_get_map_box( &Map, &box );
- G_format_northing( box.N, buffer, proj );
- str += htmlTableRow( QObject::tr( "North" ), QString( buffer ) );
- G_format_northing( box.S, buffer, proj );
- str += htmlTableRow( QObject::tr( "South" ), QString( buffer ) );
- G_format_easting( box.E, buffer, proj );
- str += htmlTableRow( QObject::tr( "East" ), QString( buffer ) );
- G_format_easting( box.W, buffer, proj );
- str += htmlTableRow( QObject::tr( "West" ), QString( buffer ) );
- if ( is3d )
- {
- str += htmlTableRow( QObject::tr( "Top" ), QString::number( box.T ) );
- str += htmlTableRow( QObject::tr( "Bottom" ), QString::number( box.B ) );
- }
+ QgsGrass::setMapset( mGisbase, mLocation, mMapset );
+ struct Cell_head window;
+ G_get_window( &window );
+ int proj = window.proj;
- str += htmlTableRow( "3D", is3d ? QObject::tr( "yes" ) : QObject::tr( "no" ) );
+ G_format_northing( box.N, buffer, proj );
+ str += htmlTableRow( QObject::tr( "North" ), QString( buffer ) );
+ G_format_northing( box.S, buffer, proj );
+ str += htmlTableRow( QObject::tr( "South" ), QString( buffer ) );
+ G_format_easting( box.E, buffer, proj );
+ str += htmlTableRow( QObject::tr( "East" ), QString( buffer ) );
+ G_format_easting( box.W, buffer, proj );
+ str += htmlTableRow( QObject::tr( "West" ), QString( buffer ) );
+ if ( is3d )
+ {
+ str += htmlTableRow( QObject::tr( "Top" ), QString::number( box.T ) );
+ str += htmlTableRow( QObject::tr( "Bottom" ), QString::number( box.B ) );
+ }
- str += "</table>";
+ str += htmlTableRow( "3D", is3d ? QObject::tr( "yes" ) : QObject::tr( "no" ) );
- // History
- Vect_hist_rewind( &Map );
- char hbuffer[1001];
- str += "<p>" + QObject::tr( "History<br>" );
- QRegExp rx( "^-+$" );
- while ( Vect_hist_read( hbuffer, 1000, &Map ) != NULL )
- {
- QString row = QString( hbuffer );
- if ( rx.indexIn( row ) != -1 )
+ str += "</table>";
+
+ // History
+ Vect_hist_rewind( &Map );
+ char hbuffer[1001];
+ str += "<p>" + QObject::tr( "History<br>" );
+ QRegExp rx( "^-+$" );
+ while ( Vect_hist_read( hbuffer, 1000, &Map ) != NULL )
{
- str += "<hr>";
+ QString row = QString( hbuffer );
+ if ( rx.indexIn( row ) != -1 )
+ {
+ str += "<hr>";
+ }
+ else
+ {
+ str += row + "<br>";
+ }
}
- else
- {
- str += row + "<br>";
- }
}
- }
- else
+ else
+ {
+ str += "</table>";
+ }
+ Vect_close( &Map );
+ }
+ catch ( QgsGrass::Exception &e )
{
+ QgsDebugMsg( QString( "Cannot open GRASS vector: %1" ).arg( e.what() ) );
str += "</table>";
+ str += QString( "%1 <br>").arg( e.what() );
}
- Vect_close( &Map );
return str;
}
break;
@@ -330,40 +339,49 @@
QgsGrass::setLocation( mGisbase, mLocation );
- struct Map_info Map;
- int level = Vect_open_old_head( &Map, mMap.toLocal8Bit().data(),
- mMapset.toLocal8Bit().data() );
-
- if ( level >= 2 )
+ try
{
- struct field_info *fi;
+ struct Map_info Map;
+ int level = Vect_open_old_head( &Map, mMap.toLocal8Bit().data(),
+ mMapset.toLocal8Bit().data() );
- int field = QgsGrassProvider::grassLayer( mLayer );
- if ( field != -1 )
+ if ( level >= 2 )
{
- // Number of features
- int type = QgsGrassProvider::grassLayerType( mLayer );
- if ( type != -1 )
+ struct field_info *fi;
+
+ int field = QgsGrassProvider::grassLayer( mLayer );
+ if ( field != -1 )
{
- str += htmlTableRow( QObject::tr( "Features" ),
- QString::number( Vect_cidx_get_type_count( &Map, field, type ) ) );
- }
+ // Number of features
+ int type = QgsGrassProvider::grassLayerType( mLayer );
+ if ( type != -1 )
+ {
+ str += htmlTableRow( QObject::tr( "Features" ),
+ QString::number( Vect_cidx_get_type_count( &Map, field, type ) ) );
+ }
- fi = Vect_get_field( &Map, field );
+ fi = Vect_get_field( &Map, field );
- // Database link
- if ( fi )
- {
- str += htmlTableRow( QObject::tr( "Driver" ), QString( fi->driver ) );
- str += htmlTableRow( QObject::tr( "Database" ), QString( fi->database ) );
- str += htmlTableRow( QObject::tr( "Table" ), QString( fi->table ) );
- str += htmlTableRow( QObject::tr( "Key column" ), QString( fi->key ) );
+ // Database link
+ if ( fi )
+ {
+ str += htmlTableRow( QObject::tr( "Driver" ), QString( fi->driver ) );
+ str += htmlTableRow( QObject::tr( "Database" ), QString( fi->database ) );
+ str += htmlTableRow( QObject::tr( "Table" ), QString( fi->table ) );
+ str += htmlTableRow( QObject::tr( "Key column" ), QString( fi->key ) );
+ }
}
}
+ str += "</table>";
+
+ Vect_close( &Map );
}
- str += "</table>";
-
- Vect_close( &Map );
+ catch ( QgsGrass::Exception &e )
+ {
+ QgsDebugMsg( QString( "Cannot open GRASS vector: %1" ).arg( e.what() ) );
+ str += "</table>";
+ str += QString( "%1 <br>").arg( e.what() );
+ }
return str;
}
break;
More information about the QGIS-commit
mailing list