35
35
#include < QAction>
36
36
#include < QTextBrowser>
37
37
#include < QSplitter>
38
+ #include < QProcess>
38
39
39
40
#include " qgis.h"
40
41
#include " qgsapplication.h"
@@ -68,6 +69,14 @@ QgsGrassBrowser::QgsGrassBrowser ( QgisIface *iface,
68
69
tb->addAction ( mActionAddMap );
69
70
connect ( mActionAddMap , SIGNAL (triggered ()), this , SLOT (addMap ()) );
70
71
72
+ mActionDeleteMap = new QAction (
73
+ QIcon (myIconPath+" grass_delete_map.png" ),
74
+ tr (" Delete selected map" ), this );
75
+ mActionDeleteMap ->setEnabled (false );
76
+ ag->addAction ( mActionDeleteMap );
77
+ tb->addAction ( mActionDeleteMap );
78
+ connect ( mActionDeleteMap , SIGNAL (triggered ()), this , SLOT (deleteMap ()) );
79
+
71
80
mActionRefresh = new QAction (
72
81
QIcon (myIconPath+" grass_refresh.png" ),
73
82
tr (" Refresh" ), this );
@@ -147,13 +156,63 @@ void QgsGrassBrowser::addMap()
147
156
}
148
157
}
149
158
159
+ void QgsGrassBrowser::deleteMap ()
160
+ {
161
+ #ifdef QGISDEBUG
162
+ std::cerr << " QgsGrassBrowser::deleteMap()" << std::endl;
163
+ #endif
164
+
165
+ QModelIndexList indexes = mTree ->selectionModel ()->selectedIndexes ();
166
+ bool mapSelected = false ;
167
+
168
+ QList<QModelIndex>::const_iterator it = indexes.begin ();
169
+ for (; it != indexes.end (); ++it)
170
+ {
171
+ int type = mModel ->itemType (*it);
172
+ QString mapset = mModel ->itemMapset (*it);
173
+ QString map = mModel ->itemMap (*it);
174
+
175
+ QString typeName;
176
+ if ( type == QgsGrassModel::Raster ) typeName = " rast" ;
177
+ else if ( type == QgsGrassModel::Vector ) typeName = " vect" ;
178
+
179
+ if ( mapset != QgsGrass::getDefaultMapset () )
180
+ {
181
+ continue ; // should not happen
182
+ }
183
+
184
+ int ret = QMessageBox::question ( 0 , " Warning" ,
185
+ " Delete map <b>" + map + " </b>" ,
186
+ QMessageBox::Yes, QMessageBox::No );
187
+
188
+ if ( ret == QMessageBox::No ) continue ;
189
+
190
+ QString module = " g.remove" ;
191
+ #ifdef WIN32
192
+ module.append (" .exe" );
193
+ #endif
194
+ QProcess process (this );
195
+ process.start (module, QStringList ( typeName + " =" + map ) );
196
+ if ( !process.waitForFinished () )
197
+ {
198
+ QMessageBox::warning ( 0 , " Warning" , " Cannot delete map "
199
+ + map );
200
+ }
201
+ else
202
+ {
203
+ refresh ();
204
+ }
205
+ }
206
+ }
207
+
150
208
void QgsGrassBrowser::selectionChanged (const QItemSelection & selected, const QItemSelection & deselected)
151
209
{
152
210
#ifdef QGISDEBUG
153
211
std::cerr << " QgsGrassBrowser::selectionChanged()" << std::endl;
154
212
#endif
155
213
156
214
mActionAddMap ->setEnabled (false );
215
+ mActionDeleteMap ->setEnabled (false );
157
216
158
217
QModelIndexList indexes = mTree ->selectionModel ()->selectedIndexes ();
159
218
@@ -169,8 +228,15 @@ void QgsGrassBrowser::selectionChanged(const QItemSelection & selected, const QI
169
228
{
170
229
mActionAddMap ->setEnabled (true );
171
230
}
231
+ if ( type == QgsGrassModel::Raster || type == QgsGrassModel::Vector )
232
+ {
233
+ QString mapset = mModel ->itemMapset (*it);
234
+ if ( mapset == QgsGrass::getDefaultMapset () )
235
+ {
236
+ mActionDeleteMap ->setEnabled (true );
237
+ }
238
+ }
172
239
}
173
-
174
240
}
175
241
176
242
void QgsGrassBrowser::currentChanged (const QModelIndex & current, const QModelIndex & previous)
0 commit comments