mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
Show a message box if there was an error during the merge operation (instead of crashing). Fixes ticket #2342
git-svn-id: http://svn.osgeo.org/qgis/trunk@12673 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
a9ae72243e
commit
a8ce63c20b
@ -3635,8 +3635,9 @@ void QgisApp::deletePart()
|
|||||||
mMapCanvas->setMapTool( mMapTools.mDeletePart );
|
mMapCanvas->setMapTool( mMapTools.mDeletePart );
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsGeometry* QgisApp::unionGeometries( const QgsVectorLayer* vl, QgsFeatureList& featureList )
|
QgsGeometry* QgisApp::unionGeometries( const QgsVectorLayer* vl, QgsFeatureList& featureList, bool& canceled )
|
||||||
{
|
{
|
||||||
|
canceled = false;
|
||||||
if ( !vl || featureList.size() < 2 )
|
if ( !vl || featureList.size() < 2 )
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@ -3660,6 +3661,7 @@ QgsGeometry* QgisApp::unionGeometries( const QgsVectorLayer* vl, QgsFeatureList&
|
|||||||
{
|
{
|
||||||
delete unionGeom;
|
delete unionGeom;
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
|
canceled = true;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
progress.setValue( i );
|
progress.setValue( i );
|
||||||
@ -3668,6 +3670,12 @@ QgsGeometry* QgisApp::unionGeometries( const QgsVectorLayer* vl, QgsFeatureList&
|
|||||||
{
|
{
|
||||||
backupPtr = unionGeom;
|
backupPtr = unionGeom;
|
||||||
unionGeom = unionGeom->combine( currentGeom );
|
unionGeom = unionGeom->combine( currentGeom );
|
||||||
|
if ( !unionGeom )
|
||||||
|
{
|
||||||
|
delete backupPtr;
|
||||||
|
QApplication::restoreOverrideCursor();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if ( i > 1 ) //delete previous intermediate results
|
if ( i > 1 ) //delete previous intermediate results
|
||||||
{
|
{
|
||||||
delete backupPtr;
|
delete backupPtr;
|
||||||
@ -3798,9 +3806,14 @@ void QgisApp::mergeSelectedFeatures()
|
|||||||
|
|
||||||
//get initial selection (may be altered by attribute merge dialog later)
|
//get initial selection (may be altered by attribute merge dialog later)
|
||||||
QgsFeatureList featureList = vl->selectedFeatures(); //get QList<QgsFeature>
|
QgsFeatureList featureList = vl->selectedFeatures(); //get QList<QgsFeature>
|
||||||
QgsGeometry* unionGeom = unionGeometries( vl, featureList );
|
bool canceled;
|
||||||
|
QgsGeometry* unionGeom = unionGeometries( vl, featureList, canceled );
|
||||||
if ( !unionGeom )
|
if ( !unionGeom )
|
||||||
{
|
{
|
||||||
|
if ( !canceled )
|
||||||
|
{
|
||||||
|
QMessageBox::critical( 0, tr( "Merge failed" ), tr( "An error occured during the merge operation" ) );
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3835,9 +3848,14 @@ void QgisApp::mergeSelectedFeatures()
|
|||||||
if ( featureList.size() != featureListAfter.size() )
|
if ( featureList.size() != featureListAfter.size() )
|
||||||
{
|
{
|
||||||
delete unionGeom;
|
delete unionGeom;
|
||||||
unionGeom = unionGeometries( vl, featureListAfter );
|
bool canceled;
|
||||||
|
unionGeom = unionGeometries( vl, featureListAfter, canceled );
|
||||||
if ( !unionGeom )
|
if ( !unionGeom )
|
||||||
{
|
{
|
||||||
|
if ( !canceled )
|
||||||
|
{
|
||||||
|
QMessageBox::critical( 0, tr( "Merge failed" ), tr( "An error occured during the merge operation" ) );
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -710,8 +710,8 @@ class QgisApp : public QMainWindow
|
|||||||
//! check to see if file is dirty and if so, prompt the user th save it
|
//! check to see if file is dirty and if so, prompt the user th save it
|
||||||
bool saveDirty();
|
bool saveDirty();
|
||||||
/** Helper function to union several geometries together (used in function mergeSelectedFeatures)
|
/** Helper function to union several geometries together (used in function mergeSelectedFeatures)
|
||||||
@return 0 in case of error*/
|
@return 0 in case of error or if canceled*/
|
||||||
QgsGeometry* unionGeometries( const QgsVectorLayer* vl, QgsFeatureList& featureList );
|
QgsGeometry* unionGeometries( const QgsVectorLayer* vl, QgsFeatureList& featureList, bool& canceled );
|
||||||
|
|
||||||
/**Deletes all the composer objects and clears mPrintComposers*/
|
/**Deletes all the composer objects and clears mPrintComposers*/
|
||||||
void deletePrintComposers();
|
void deletePrintComposers();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user