diff --git a/src/plugins/grass/modules-common/v.what.vect.qgm b/src/plugins/grass/modules-common/v.what.vect.qgm
index 42696904697..f5f1ad733c5 100644
--- a/src/plugins/grass/modules-common/v.what.vect.qgm
+++ b/src/plugins/grass/modules-common/v.what.vect.qgm
@@ -5,5 +5,5 @@
-
+
diff --git a/src/plugins/grass/qgsgrassmodule.cpp b/src/plugins/grass/qgsgrassmodule.cpp
index eff126261cd..13ccb2f6240 100644
--- a/src/plugins/grass/qgsgrassmodule.cpp
+++ b/src/plugins/grass/qgsgrassmodule.cpp
@@ -562,6 +562,23 @@ QStringList QgsGrassModuleStandardOptions::arguments()
return arg;
}
+// id is not used in fact, was intended for field, but key is used instead
+QgsGrassModuleItem *QgsGrassModuleStandardOptions::itemByKey( QString key )
+{
+ QgsDebugMsg( "key = " + key );
+
+ for ( unsigned int i = 0; i < mItems.size(); i++ )
+ {
+ if ( mItems[i]->key() == key )
+ {
+ return mItems[i];
+ }
+ }
+
+ QMessageBox::warning( 0, tr( "Warning" ), tr( "Item with key %1 not found" ).arg( key ) );
+ return 0;
+}
+
QgsGrassModuleItem *QgsGrassModuleStandardOptions::item( QString id )
{
QgsDebugMsg( "id = " + id );
@@ -2908,16 +2925,19 @@ QgsGrassModuleField::QgsGrassModuleField(
QDomElement promptElem = promptNode.toElement();
QString element = promptElem.attribute( "element" );
- mLayerId = qdesc.attribute( "layerid" );
-
mType = qdesc.attribute( "type" );
- QgsGrassModuleItem *item = mModuleStandardOptions->item( mLayerId );
- // TODO check type
- if ( item )
- {
- mLayerInput = dynamic_cast( item );
- connect( mLayerInput, SIGNAL( valueChanged() ), this, SLOT( updateFields() ) );
+ mLayerKey = qdesc.attribute( "layer" );
+ if ( mLayerKey.isNull() || mLayerKey.length() == 0 ) {
+ QMessageBox::warning( 0, tr( "Warning" ), tr( "'layer' attribute in field tag with key= %1 is missing." ).arg( mKey ) );
+ } else {
+ QgsGrassModuleItem *item = mModuleStandardOptions->itemByKey( mLayerKey );
+ // TODO check type
+ if ( item )
+ {
+ mLayerInput = dynamic_cast( item );
+ connect( mLayerInput, SIGNAL( valueChanged() ), this, SLOT( updateFields() ) );
+ }
}
QHBoxLayout *l = new QHBoxLayout( this );
diff --git a/src/plugins/grass/qgsgrassmodule.h b/src/plugins/grass/qgsgrassmodule.h
index 60cab288061..b16693630c8 100644
--- a/src/plugins/grass/qgsgrassmodule.h
+++ b/src/plugins/grass/qgsgrassmodule.h
@@ -256,6 +256,9 @@ class QgsGrassModuleStandardOptions: QWidget, public QgsGrassModuleOptions
// ! Get item by ID
QgsGrassModuleItem *item( QString id );
+ // ! Get item by key
+ QgsGrassModuleItem *itemByKey( QString key );
+
// Reimplemented methods from QgsGrassModuleOptions
QStringList checkOutput();
void freezeOutput();
@@ -749,7 +752,7 @@ class QgsGrassModuleField: public QgsGrassModuleGroupBoxItem
QgsGrassModuleStandardOptions *mModuleStandardOptions;
//! Layer key
- QString mLayerId;
+ QString mLayerKey;
//! Pointer to layer input
QgsGrassModuleInput *mLayerInput;