Skip to content

Commit 5f69737

Browse files

File tree

2 files changed

+22
-24
lines changed

2 files changed

+22
-24
lines changed
 

‎src/plugins/grass/qgsgrassbrowser.cpp

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
#include "qgis.h"
4242
#include "qgsapplication.h"
43+
#include "qgsrasterlayer.h"
4344

4445
extern "C" {
4546
#include <grass/gis.h>
@@ -50,6 +51,7 @@ extern "C" {
5051
#include "qgsgrassmodel.h"
5152
#include "qgsgrassbrowser.h"
5253
#include "qgsgrassselect.h"
54+
#include "qgsgrassutils.h"
5355

5456
QgsGrassBrowser::QgsGrassBrowser ( QgisIface *iface,
5557
QWidget * parent, Qt::WFlags f )
@@ -141,16 +143,24 @@ void QgsGrassBrowser::addMap()
141143
{
142144
int type = mModel->itemType(*it);
143145
QString uri = mModel->uri(*it);
146+
QString mapset = mModel->itemMapset(*it);
147+
QString map = mModel->itemMap(*it);
144148
if ( type == QgsGrassModel::Raster )
145149
{
146150
std::cerr << "add raster: " << uri.ascii() << std::endl;
147-
mIface->addRasterLayer( uri );
151+
QgsRasterLayer *layer = new QgsRasterLayer( uri, map );
152+
mIface->addRasterLayer(layer);
148153
mapSelected = true;
149154
}
155+
else if ( type == QgsGrassModel::Vector )
156+
{
157+
QgsGrassUtils::addVectorLayers ( mIface,
158+
QgsGrass::getDefaultGisdbase(),
159+
QgsGrass::getDefaultLocation(),
160+
mapset, map );
161+
}
150162
else if ( type == QgsGrassModel::VectorLayer )
151163
{
152-
QString map = mModel->itemMap(*it);
153-
QString name = map;
154164

155165
QStringList list = QgsGrassSelect::vectorLayers(
156166
QgsGrass::getDefaultGisdbase(),
@@ -161,10 +171,8 @@ void QgsGrassBrowser::addMap()
161171
QStringList split = QStringList::split ( '/', uri );
162172
QString layer = split.last();
163173

164-
if ( list.size() > 1 )
165-
{
166-
name += " " + layer;
167-
}
174+
QString name = QgsGrassUtils::vectorLayerName (
175+
map, layer, list.size() );
168176

169177
mIface->addVectorLayer( uri, name, "grass");
170178
mapSelected = true;
@@ -250,7 +258,9 @@ void QgsGrassBrowser::selectionChanged(const QItemSelection & selected, const QI
250258
mTextBrowser->verticalScrollBar()->setValue(0);
251259

252260
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 )
254264
{
255265
mActionAddMap->setEnabled(true);
256266
}

‎src/plugins/grass/qgsgrassedit.cpp

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ extern "C" {
6666
#include "../../src/providers/grass/qgsgrassprovider.h"
6767
#include "qgsgrassattributes.h"
6868
#include "qgsgrassedit.h"
69+
#include "qgsgrassutils.h"
6970

7071
#include "qgsmapcanvasitem.h"
7172

@@ -923,22 +924,9 @@ void QgsGrassEdit::closeEdit(void)
923924
split.pop_back(); // map
924925
QString mapset = split.last();
925926

926-
QStringList layers = QgsGrassSelect::vectorLayers (
927-
QgsGrass::getDefaultGisdbase(), QgsGrass::getDefaultLocation(),
928-
mapset, map );
929-
930-
for ( int i = 0; i < layers.count(); i++ )
931-
{
932-
uri = QgsGrass::getDefaultGisdbase() + "/"
933-
+ QgsGrass::getDefaultLocation() + "/"
934-
+ mapset + "/" + map + "/" + layers[i];
935-
936-
#ifdef QGISDEBUG
937-
std::cerr << "layer = " << layers[i].local8Bit().data() << std::endl;
938-
std::cerr << "uri = " << uri.local8Bit().data() << std::endl;
939-
#endif
940-
mIface->addVectorLayer( uri, layers[i], "grass");
941-
}
927+
QgsGrassUtils::addVectorLayers ( mIface, QgsGrass::getDefaultGisdbase(),
928+
QgsGrass::getDefaultLocation(),
929+
mapset, map );
942930
}
943931

944932
delete this;

0 commit comments

Comments
 (0)
Please sign in to comment.