40
40
41
41
#include " qgis.h"
42
42
#include " qgsapplication.h"
43
+ #include " qgsrasterlayer.h"
43
44
44
45
extern " C" {
45
46
#include < grass/gis.h>
@@ -50,6 +51,7 @@ extern "C" {
50
51
#include " qgsgrassmodel.h"
51
52
#include " qgsgrassbrowser.h"
52
53
#include " qgsgrassselect.h"
54
+ #include " qgsgrassutils.h"
53
55
54
56
QgsGrassBrowser::QgsGrassBrowser ( QgisIface *iface,
55
57
QWidget * parent, Qt::WFlags f )
@@ -141,16 +143,24 @@ void QgsGrassBrowser::addMap()
141
143
{
142
144
int type = mModel ->itemType (*it);
143
145
QString uri = mModel ->uri (*it);
146
+ QString mapset = mModel ->itemMapset (*it);
147
+ QString map = mModel ->itemMap (*it);
144
148
if ( type == QgsGrassModel::Raster )
145
149
{
146
150
std::cerr << " add raster: " << uri.ascii () << std::endl;
147
- mIface ->addRasterLayer ( uri );
151
+ QgsRasterLayer *layer = new QgsRasterLayer ( uri, map );
152
+ mIface ->addRasterLayer (layer);
148
153
mapSelected = true ;
149
154
}
155
+ else if ( type == QgsGrassModel::Vector )
156
+ {
157
+ QgsGrassUtils::addVectorLayers ( mIface ,
158
+ QgsGrass::getDefaultGisdbase (),
159
+ QgsGrass::getDefaultLocation (),
160
+ mapset, map );
161
+ }
150
162
else if ( type == QgsGrassModel::VectorLayer )
151
163
{
152
- QString map = mModel ->itemMap (*it);
153
- QString name = map;
154
164
155
165
QStringList list = QgsGrassSelect::vectorLayers (
156
166
QgsGrass::getDefaultGisdbase (),
@@ -161,10 +171,8 @@ void QgsGrassBrowser::addMap()
161
171
QStringList split = QStringList::split ( ' /' , uri );
162
172
QString layer = split.last ();
163
173
164
- if ( list.size () > 1 )
165
- {
166
- name += " " + layer;
167
- }
174
+ QString name = QgsGrassUtils::vectorLayerName (
175
+ map, layer, list.size () );
168
176
169
177
mIface ->addVectorLayer ( uri, name, " grass" );
170
178
mapSelected = true ;
@@ -250,7 +258,9 @@ void QgsGrassBrowser::selectionChanged(const QItemSelection & selected, const QI
250
258
mTextBrowser ->verticalScrollBar ()->setValue (0 );
251
259
252
260
int type = mModel ->itemType (*it);
253
- if ( type == QgsGrassModel::Raster || type == QgsGrassModel::VectorLayer )
261
+ if ( type == QgsGrassModel::Raster ||
262
+ type == QgsGrassModel::Vector ||
263
+ type == QgsGrassModel::VectorLayer )
254
264
{
255
265
mActionAddMap ->setEnabled (true );
256
266
}
0 commit comments