[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