diff --git a/src/providers/grass/qgis.v.in.cpp b/src/providers/grass/qgis.v.in.cpp index 886d000d23cc..c84a92ce22d3 100644 --- a/src/providers/grass/qgis.v.in.cpp +++ b/src/providers/grass/qgis.v.in.cpp @@ -165,6 +165,7 @@ int main( int argc, char **argv ) if ( isPolygon ) { tmpMap = QgsGrass::vectNewMapStruct(); + // TODO: use Vect_open_tmp_new with GRASS 7 Vect_open_new( tmpMap, tmpName.toUtf8().data(), 0 ); map = tmpMap; } diff --git a/src/providers/grass/qgsgrass.cpp b/src/providers/grass/qgsgrass.cpp index 40ef09ed6648..63a4c5f07459 100644 --- a/src/providers/grass/qgsgrass.cpp +++ b/src/providers/grass/qgsgrass.cpp @@ -21,6 +21,13 @@ #include +// for Sleep / usleep for debugging +#ifdef Q_OS_WIN +#include +#else +#include +#endif + #include "qgsgrass.h" #include "qgslogger.h" @@ -2258,3 +2265,14 @@ void GRASS_LIB_EXPORT QgsGrass::vectDestroyMapStruct( struct Map_info *map ) qgsFree( map ); map = 0; } + +void GRASS_LIB_EXPORT QgsGrass::sleep( int ms ) +{ +// Stolen from QTest::qSleep +#ifdef Q_OS_WIN + Sleep( uint( ms ) ); +#else + struct timespec ts = { ms / 1000, ( ms % 1000 ) * 1000 * 1000 }; + nanosleep( &ts, NULL ); +#endif +} diff --git a/src/providers/grass/qgsgrass.h b/src/providers/grass/qgsgrass.h index 5607e75e16a0..d43df1cf2ac4 100644 --- a/src/providers/grass/qgsgrass.h +++ b/src/providers/grass/qgsgrass.h @@ -421,6 +421,9 @@ class QgsGrass // Free struct Map_info static GRASS_LIB_EXPORT void vectDestroyMapStruct( struct Map_info *map ); + // Sleep miliseconds (for debugging) + static GRASS_LIB_EXPORT void sleep( int ms ); + private: static int initialized; // Set to 1 after initialization static bool active; // is active mode diff --git a/src/providers/grass/qgsgrassprovidermodule.cpp b/src/providers/grass/qgsgrassprovidermodule.cpp index d49c580e27fd..7f5da9a6e08e 100644 --- a/src/providers/grass/qgsgrassprovidermodule.cpp +++ b/src/providers/grass/qgsgrassprovidermodule.cpp @@ -833,7 +833,7 @@ QgsGrassImportItem::QgsGrassImportItem( QgsDataItem* parent, const QString& name , mImport( import ) { setCapabilities( QgsDataItem::NoCapabilities ); // disable fertility - setState( Populating ); + setState( Populated ); QgsGrassImportIcon::instance()->connectFrameChanged( this, SLOT( emitDataChanged() ) ); } @@ -862,12 +862,27 @@ void QgsGrassImportItem::cancel() QgsDebugMsg( "mImport is null" ); return; } + if ( mImport->isCanceled() ) + { + return; + } mImport->cancel(); + QgsGrassImportIcon::instance()->disconnectFrameChanged( this, SLOT( emitDataChanged() ) ); + setName( name() + " : " + tr( "cancelling" ) ); + emitDataChanged(); } QIcon QgsGrassImportItem::icon() { - return QgsGrassImportIcon::instance()->icon(); + if ( mImport && mImport->isCanceled() ) + { + setIconName( "/mIconDelete.png" ); + return QgsDataItem::icon(); + } + else + { + return QgsGrassImportIcon::instance()->icon(); + } } //-------------------------------------------------------------------------