fixed #1619, and another not yet reported bug for field

git-svn-id: http://svn.osgeo.org/qgis/trunk@12679 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
rblazek 2010-01-06 12:15:53 +00:00
parent 74312693ec
commit 9dd0eff791
3 changed files with 33 additions and 10 deletions

View File

@ -5,5 +5,5 @@
<option key="vector" layeroption="layer" typemask="point"/>
<field key="column" layer="vector" type="integer,double,string"/>
<option key="qvector" layeroption="layer" typemask="area"/>
<option key="qcolumn" layer="qvector" type="string"/>
<field key="qcolumn" layer="qvector" type="string"/>
</qgisgrassmodule>

View File

@ -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<QgsGrassModuleInput *>( 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<QgsGrassModuleInput *>( item );
connect( mLayerInput, SIGNAL( valueChanged() ), this, SLOT( updateFields() ) );
}
}
QHBoxLayout *l = new QHBoxLayout( this );

View File

@ -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;