diff --git a/src/plugins/grass/qgsgrassmodule.cpp b/src/plugins/grass/qgsgrassmodule.cpp index e2c48b23dcab..026422719e49 100644 --- a/src/plugins/grass/qgsgrassmodule.cpp +++ b/src/plugins/grass/qgsgrassmodule.cpp @@ -2633,6 +2633,13 @@ QgsGrassModuleGdalInput::QgsGrassModuleGdalInput( } adjustTitle(); + // Check if this parameter is required + if (gnode.toElement().attribute("required") == "yes") { + mRequired = true; + } else { + mRequired = false; + } + QDomNode promptNode = gnode.namedItem( "gisprompt" ); QDomElement promptElem = promptNode.toElement(); QString element = promptElem.attribute( "element" ); @@ -2700,6 +2707,14 @@ void QgsGrassModuleGdalInput::updateQgisLayers() mUri.resize( 0 ); mOgrLayers.resize( 0 ); + // If not required, add an empty item to combobox and a padding item into + // layer containers. + if (!mRequired){ + mUri.push_back(QString()); + mOgrLayers.push_back(QString()); + mLayerComboBox->addItem(tr("Select a layer"), QVariant()); + } + QgsMapCanvas *canvas = mModule->qgisIface()->mapCanvas(); int nlayers = canvas->layerCount(); diff --git a/src/plugins/grass/qgsgrassmodule.h b/src/plugins/grass/qgsgrassmodule.h index 68de1567efd2..12c744f84c25 100644 --- a/src/plugins/grass/qgsgrassmodule.h +++ b/src/plugins/grass/qgsgrassmodule.h @@ -695,6 +695,9 @@ class QgsGrassModuleGdalInput: public QgsGrassModuleGroupBoxItem //! Ogr where clauses std::vector mOgrWheres; + + //! Required field + bool mRequired; }; /*********************** QgsGrassModuleField **********************/