2525QgsGrassLocationItem::QgsGrassLocationItem ( QgsDataItem* parent, QString path )
2626 : QgsDataCollectionItem( parent, " " , path )
2727{
28- QFileInfo fi ( path );
29- mName = fi.baseName ();
28+ // modify path to distinguish from directory, so that it can be expanded by path in browser
29+ mPath = markPath ( path );
30+ QDir dir ( path );
31+ mName = dir.dirName ();
32+
3033 mIcon = QIcon ( QgsApplication::getThemePixmap ( " grass_location.png" ) );
3134 // set Directory type so that when sorted it gets into dirs (after the dir it represents)
3235 mType = QgsDataItem::Directory;
@@ -43,7 +46,7 @@ QVector<QgsDataItem*>QgsGrassLocationItem::createChildren()
4346{
4447 QVector<QgsDataItem*> mapsets;
4548
46- QDir dir ( mPath );
49+ QDir dir ( clearPath ( mPath ) );
4750
4851 QStringList entries = dir.entryList ( QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name );
4952 foreach ( QString name, entries )
@@ -52,17 +55,30 @@ QVector<QgsDataItem*>QgsGrassLocationItem::createChildren()
5255
5356 if ( QgsGrassMapsetItem::isMapset ( path ) )
5457 {
55- QgsGrassMapsetItem * mapset = new QgsGrassMapsetItem ( this , path );
58+ QgsGrassMapsetItem * mapset = new QgsGrassMapsetItem ( this , mPath + QDir::separator () + name );
5659 mapsets.append ( mapset );
5760 }
5861 }
5962 return mapsets;
6063}
6164
65+ QString QgsGrassLocationItem::markPath ( QString path )
66+ {
67+ QDir dir ( path );
68+ QString name = dir.dirName ();
69+ dir.cdUp ();
70+ return dir.path () + QDir::separator () + " gl:" + name;
71+ }
72+
73+ QString QgsGrassLocationItem::clearPath ( QString path )
74+ {
75+ return path.remove ( " gl:" );
76+ }
77+
6278QgsGrassMapsetItem::QgsGrassMapsetItem ( QgsDataItem* parent, QString path )
6379 : QgsDataCollectionItem( parent, " " , path )
6480{
65- QDir dir ( path );
81+ QDir dir ( QgsGrassLocationItem::clearPath ( path ) );
6682 mName = dir.dirName ();
6783 dir.cdUp ();
6884 mLocation = dir.dirName ();
@@ -83,9 +99,10 @@ QVector<QgsDataItem*> QgsGrassMapsetItem::createChildren()
8399{
84100 QgsDebugMsg ( " Entered" );
85101
102+ QString clearPath = QgsGrassLocationItem::clearPath ( mPath );
86103 QVector<QgsDataItem*> items;
87104
88- QStringList vectorNames = QgsGrass::vectors ( mPath );
105+ QStringList vectorNames = QgsGrass::vectors ( clearPath );
89106
90107 foreach ( QString name, vectorNames )
91108 {
@@ -95,10 +112,10 @@ QVector<QgsDataItem*> QgsGrassMapsetItem::createChildren()
95112
96113 QgsDataCollectionItem *map = 0 ;
97114 if ( layerNames.size () != 1 )
98- map = new QgsDataCollectionItem ( this , name );
115+ map = new QgsDataCollectionItem ( this , name, path );
99116 foreach ( QString layerName, layerNames )
100117 {
101- QString uri = mPath + QDir::separator () + name + QDir::separator () + layerName;
118+ QString uri = clearPath + QDir::separator () + name + QDir::separator () + layerName;
102119 QgsLayerItem::LayerType layerType = QgsLayerItem::Vector;
103120 QString typeName = layerName.split ( " _" )[1 ];
104121 QString baseLayerName = layerName.split ( " _" )[0 ];
@@ -127,14 +144,15 @@ QVector<QgsDataItem*> QgsGrassMapsetItem::createChildren()
127144 items.append ( map );
128145 }
129146
130- QStringList rasterNames = QgsGrass::rasters ( mPath );
147+ QStringList rasterNames = QgsGrass::rasters ( clearPath );
131148
132149 foreach ( QString name, rasterNames )
133150 {
134- QString uri = mPath + QDir::separator () + " cellhd" + QDir::separator () + name;
151+ QString path = mPath + QDir::separator () + " cellhd" + QDir::separator () + name;
152+ QString uri = clearPath + QDir::separator () + " cellhd" + QDir::separator () + name;
135153 QgsDebugMsg ( " uri = " + uri );
136154
137- QgsLayerItem *layer = new QgsLayerItem ( this , name, uri , uri, QgsLayerItem::Raster, " grassraster" );
155+ QgsLayerItem *layer = new QgsLayerItem ( this , name, path , uri, QgsLayerItem::Raster, " grassraster" );
138156 layer->populate (); // does nothing, but sets mPopulated to true to show non expandable in browser
139157
140158 items.append ( layer );
0 commit comments