[QGIS Commit] r11185 - trunk/qgis/src/plugins/grass
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Jul 27 12:22:14 EDT 2009
Author: rugginoso
Date: 2009-07-27 12:22:13 -0400 (Mon, 27 Jul 2009)
New Revision: 11185
Modified:
trunk/qgis/src/plugins/grass/qgsgrassplugin.cpp
trunk/qgis/src/plugins/grass/qgsgrassplugin.h
Log:
Fix for #1712.
Modified: trunk/qgis/src/plugins/grass/qgsgrassplugin.cpp
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassplugin.cpp 2009-07-27 15:40:08 UTC (rev 11184)
+++ trunk/qgis/src/plugins/grass/qgsgrassplugin.cpp 2009-07-27 16:22:13 UTC (rev 11185)
@@ -35,6 +35,7 @@
#include "qgsrubberband.h"
#include "qgsproject.h"
#include "qgsvectorlayer.h"
+#include "qgsmaplayerregistry.h"
#include <QAction>
#include <QFileInfo>
@@ -57,7 +58,7 @@
* @param theQgisInterFace Pointer to the QGIS interface object
*/
QgsGrassPlugin::QgsGrassPlugin( QgisInterface * theQgisInterFace ):
- qGisInterface( theQgisInterFace )
+ qGisInterface( theQgisInterFace ), mEdit(NULL), mTools(NULL)
{
/** Initialize the plugin and set the required attributes */
pluginNameQString = tr( "GrassVector" );
@@ -68,6 +69,7 @@
QgsGrassPlugin::~QgsGrassPlugin()
{
if ( mTools ) mTools->closeTools();
+ if ( mEdit ) mEdit->closeEdit();
QString err = QgsGrass::closeMapset();
}
@@ -411,18 +413,21 @@
}
mEditAction->setEnabled( false );
- QgsGrassEdit *ed = new QgsGrassEdit( qGisInterface, qGisInterface->activeLayer(), false,
+ mEdit = new QgsGrassEdit( qGisInterface, qGisInterface->activeLayer(), false,
qGisInterface->mainWindow(), Qt::Dialog );
- if ( ed->isValid() )
+ if ( mEdit->isValid() )
{
- ed->show();
+ mEdit->show();
mCanvas->refresh();
- connect( ed, SIGNAL( finished() ), this, SLOT( setEditAction() ) );
- }
+ connect( mEdit, SIGNAL( finished() ), this, SLOT( setEditAction() ) );
+ connect( mEdit, SIGNAL(finished()), this, SLOT(cleanUp()));
+ connect( QgsMapLayerRegistry::instance(), SIGNAL(layerWillBeRemoved(QString)), this, SLOT(closeEdit(QString)));
+ }
else
{
- delete ed;
+ delete mEdit;
+ mEdit = NULL;
mEditAction->setEnabled( true );
}
}
@@ -443,6 +448,18 @@
}
}
+void QgsGrassPlugin::closeEdit(QString layerId)
+{
+ if(mEdit->layer()->getLayerID() == layerId){
+ mEdit->closeEdit();
+ }
+}
+
+void QgsGrassPlugin::cleanUp()
+{
+ disconnect( QgsMapLayerRegistry::instance(), SIGNAL(layerWillBeRemoved(QString)), this, SLOT(closeEdit(QString)));
+}
+
void QgsGrassPlugin::newVector()
{
// QgsDebugMsg("entered.");
Modified: trunk/qgis/src/plugins/grass/qgsgrassplugin.h
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassplugin.h 2009-07-27 15:40:08 UTC (rev 11184)
+++ trunk/qgis/src/plugins/grass/qgsgrassplugin.h 2009-07-27 16:22:13 UTC (rev 11185)
@@ -23,6 +23,7 @@
class QgsGrassTools;
class QgsGrassNewMapset;
class QgsGrassRegion;
+class QgsGrassEdit;
class QgsMapCanvas;
class QgsRubberBand;
@@ -118,6 +119,10 @@
void saveMapset();
//! Set edit action
void setEditAction();
+ //! Close the edit if layer is removed
+ void closeEdit(QString layerId);
+ //! Cleanup the Grass Edit
+ void cleanUp();
//! update plugin icons when the app tells us its theme is changed
void setCurrentTheme( QString theThemeName );
private:
@@ -148,6 +153,7 @@
QgsGrassTools *mTools;
//! Pointer to QgsGrassNewMapset
QgsGrassNewMapset *mNewMapset;
+ QgsGrassEdit *mEdit;
// Actions
QAction *mOpenMapsetAction;
More information about the QGIS-commit
mailing list