@@ -1557,8 +1557,7 @@ QDomNode QgsGrassModule::nodeByKey( QDomElement elem, QString key )
15571557QgsGrassModuleOption::QgsGrassModuleOption ( QgsGrassModule *module , QString key,
15581558 QDomElement &qdesc, QDomElement &gdesc, QDomNode &gnode,
15591559 QWidget * parent )
1560- : QGroupBox( parent ),
1561- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
1560+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
15621561 mControlType( NoControl ), mValueType( String ), mOutputType( None ), mHaveLimits( false ), mIsOutput( false )
15631562{
15641563 QgsDebugMsg ( " called." );
@@ -1568,18 +1567,6 @@ QgsGrassModuleOption::QgsGrassModuleOption( QgsGrassModule *module, QString key,
15681567
15691568 mLayout = new QVBoxLayout ();
15701569
1571- QString tit;
1572- if ( mDescription .length () > 40 )
1573- {
1574- tit = mDescription .left ( 40 ) + " ..." ;
1575- }
1576- else
1577- {
1578- tit = mDescription ;
1579- }
1580-
1581- setTitle ( " " + tit + " " );
1582-
15831570 // Is it output?
15841571 QDomNode promptNode = gnode.namedItem ( " gisprompt" );
15851572 if ( !promptNode.isNull () )
@@ -1925,8 +1912,11 @@ QStringList QgsGrassModuleOption::options()
19251912 list.push_back ( mKey + " =" + mAnswer );
19261913 }
19271914 else
1928- {
1929- list.push_back ( mKey + " =" + value () );
1915+ {
1916+ QString val = value ();
1917+ if ( !val.isEmpty () ) {
1918+ list.push_back ( mKey + " =" + val );
1919+ }
19301920 }
19311921 return list;
19321922}
@@ -1939,7 +1929,7 @@ QString QgsGrassModuleOption::ready()
19391929
19401930 if ( mControlType == LineEdit )
19411931 {
1942- if ( mLineEdits .at ( 0 )->text ().trimmed ().length () == 0 )
1932+ if ( mLineEdits .at ( 0 )->text ().trimmed ().length () == 0 && mRequired )
19431933 {
19441934 error.append ( tr ( " %1: missing value" ).arg ( title () ) );
19451935 }
@@ -1965,7 +1955,7 @@ QgsGrassModuleFlag::QgsGrassModuleFlag( QgsGrassModule *module, QString key,
19651955 else
19661956 setChecked ( false );
19671957
1968- setText ( mDescription );
1958+ setText ( mTitle );
19691959}
19701960
19711961QStringList QgsGrassModuleFlag::options ()
@@ -1982,39 +1972,37 @@ QgsGrassModuleFlag::~QgsGrassModuleFlag()
19821972{
19831973}
19841974
1975+ void QgsGrassModuleFlag::resizeEvent ( QResizeEvent * event )
1976+ {
1977+ adjustText ();
1978+ }
1979+
1980+ void QgsGrassModuleFlag::adjustText ()
1981+ {
1982+ QString t = fontMetrics ().elidedText ( mTitle , Qt::ElideRight, width () - iconSize ().width () - 20 );
1983+
1984+ setText ( t );
1985+ }
1986+
19851987/* ************************* QgsGrassModuleInput ***************************/
19861988
19871989QgsGrassModuleInput::QgsGrassModuleInput ( QgsGrassModule *module ,
19881990 QgsGrassModuleStandardOptions *options, QString key,
19891991 QDomElement &qdesc, QDomElement &gdesc, QDomNode &gnode,
19901992 QWidget * parent )
1991- : QGroupBox( parent ),
1992- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
1993+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
19931994 mModuleStandardOptions( options ),
19941995 mGeometryTypeOption( 0 ), mVectorLayerOption( 0 ),
19951996 mRegionButton( 0 ), mUpdate( false )
19961997{
19971998 QgsDebugMsg ( " called." );
19981999 mGeometryTypeMask = GV_POINT | GV_LINE | GV_AREA;
19992000
2000- QString tit;
2001- if ( mDescription .isEmpty () )
2001+ if ( mTitle .isEmpty () )
20022002 {
2003- tit = " Input" ;
2003+ mTitle = tr ( " Input" ) ;
20042004 }
2005- else
2006- {
2007- if ( mDescription .length () > 40 )
2008- {
2009- tit = mDescription .left ( 40 ) + " ..." ;
2010- }
2011- else
2012- {
2013- tit = mDescription ;
2014- }
2015- }
2016-
2017- setTitle ( " " + tit + " " );
2005+ adjustTitle ();
20182006
20192007 QDomNode promptNode = gnode.namedItem ( " gisprompt" );
20202008 QDomElement promptElem = promptNode.toElement ();
@@ -2517,7 +2505,8 @@ QgsGrassModuleItem::QgsGrassModuleItem( QgsGrassModule *module, QString key,
25172505 QDomElement &qdesc, QDomElement &gdesc, QDomNode &gnode )
25182506 : mModule( module ),
25192507 mKey( key ),
2520- mHidden( false )
2508+ mHidden( false ),
2509+ mRequired (false )
25212510{
25222511 // mAnswer = qdesc.attribute("answer", "");
25232512
@@ -2540,20 +2529,40 @@ QgsGrassModuleItem::QgsGrassModuleItem( QgsGrassModule *module, QString key,
25402529 mHidden = true ;
25412530 }
25422531
2532+ QString label, description;
25432533 if ( !qdesc.attribute ( " label" ).isEmpty () )
25442534 {
2545- mDescription = qdesc.attribute ( " label" );
2535+ label = qdesc.attribute ( " label" );
25462536 }
2547- else
2537+ if ( label. isEmpty () )
25482538 {
2549- QDomNode n = gnode.namedItem ( " description " );
2539+ QDomNode n = gnode.namedItem ( " label " );
25502540 if ( !n.isNull () )
25512541 {
25522542 QDomElement e = n.toElement ();
2553- mDescription = e.text ().trimmed ();
2554- mDescription .replace ( 0 , 1 , mDescription .left ( 1 ).toUpper () );
2543+ label = e.text ().trimmed ();
2544+ label .replace ( 0 , 1 , label .left ( 1 ).toUpper () );
25552545 }
25562546 }
2547+ QDomNode n = gnode.namedItem ( " description" );
2548+ if ( !n.isNull () )
2549+ {
2550+ QDomElement e = n.toElement ();
2551+ description = e.text ().trimmed ();
2552+ description.replace ( 0 , 1 , description.left ( 1 ).toUpper () );
2553+ }
2554+
2555+ if ( !label.isEmpty () ) {
2556+ mTitle = label;
2557+ mToolTip = description;
2558+ } else {
2559+ mTitle = description;
2560+ }
2561+
2562+ if ( gnode.toElement ().attribute ( " required" ) == " yes" )
2563+ {
2564+ mRequired = true ;
2565+ }
25572566
25582567 mId = qdesc.attribute ( " id" );
25592568}
@@ -2564,33 +2573,47 @@ QStringList QgsGrassModuleItem::options() { return QStringList(); }
25642573
25652574QgsGrassModuleItem::~QgsGrassModuleItem () {}
25662575
2576+ /* **************** QgsGrassModuleGroupBoxItem *********************/
2577+
2578+ QgsGrassModuleGroupBoxItem::QgsGrassModuleGroupBoxItem ( QgsGrassModule *module , QString key,
2579+ QDomElement &qdesc, QDomElement &gdesc, QDomNode &gnode,
2580+ QWidget * parent )
2581+ : QGroupBox( parent ),
2582+ QgsGrassModuleItem( module , key, qdesc, gdesc, gnode )
2583+ {
2584+ adjustTitle ();
2585+
2586+ setToolTip ( mToolTip );
2587+ }
2588+
2589+ QgsGrassModuleGroupBoxItem::~QgsGrassModuleGroupBoxItem () {}
2590+
2591+ void QgsGrassModuleGroupBoxItem::resizeEvent ( QResizeEvent * event )
2592+ {
2593+ adjustTitle ();
2594+ setToolTip ( mToolTip );
2595+ }
2596+
2597+ void QgsGrassModuleGroupBoxItem::adjustTitle ()
2598+ {
2599+ QString tit = fontMetrics ().elidedText ( mTitle , Qt::ElideRight, width () - 20 );
2600+
2601+ setTitle ( tit );
2602+ }
2603+
25672604/* **************** QgsGrassModuleGdalInput *********************/
25682605
25692606QgsGrassModuleGdalInput::QgsGrassModuleGdalInput (
25702607 QgsGrassModule *module , int type, QString key, QDomElement &qdesc,
25712608 QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
2572- : QGroupBox( parent ),
2573- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
2609+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
25742610 mType( type ), mOgrLayerOption( 0 ), mOgrWhereOption( 0 )
25752611{
2576- QString tit;
2577- if ( mDescription .isEmpty () )
2612+ if ( mTitle .isEmpty () )
25782613 {
2579- tit = " OGR/PostGIS/GDAL Input" ;
2614+ mTitle = " OGR/PostGIS/GDAL Input" ;
25802615 }
2581- else
2582- {
2583- if ( mDescription .length () > 40 )
2584- {
2585- tit = mDescription .left ( 40 ) + " ..." ;
2586- }
2587- else
2588- {
2589- tit = mDescription ;
2590- }
2591- }
2592-
2593- setTitle ( " " + tit + " " );
2616+ adjustTitle ();
25942617
25952618 QDomNode promptNode = gnode.namedItem ( " gisprompt" );
25962619 QDomElement promptElem = promptNode.toElement ();
@@ -2614,7 +2637,7 @@ QgsGrassModuleGdalInput::QgsGrassModuleGdalInput(
26142637 }
26152638
26162639 // Read "whereoption" if defined
2617- opt = qdesc.attribute ( " whereoption " );
2640+ opt = qdesc.attribute ( " where " );
26182641 if ( !opt.isNull () )
26192642 {
26202643 QDomNode optNode = QgsGrassModule::nodeByKey ( gdesc, opt );
@@ -2797,28 +2820,14 @@ QgsGrassModuleField::QgsGrassModuleField(
27972820 QgsGrassModule *module , QgsGrassModuleStandardOptions *options,
27982821 QString key, QDomElement &qdesc,
27992822 QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
2800- : QGroupBox( parent ),
2801- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
2823+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
28022824 mModuleStandardOptions( options ), mLayerInput( 0 )
28032825{
2804- QString tit;
2805- if ( mDescription .isEmpty () )
2826+ if ( mTitle .isEmpty () )
28062827 {
2807- tit = tr ( " Attribute field" );
2808- }
2809- else
2810- {
2811- if ( mDescription .length () > 40 )
2812- {
2813- tit = mDescription .left ( 40 ) + " ..." ;
2814- }
2815- else
2816- {
2817- tit = mDescription ;
2818- }
2828+ mTitle = tr ( " Attribute field" );
28192829 }
2820-
2821- setTitle ( " " + tit + " " );
2830+ adjustTitle ();
28222831
28232832 QDomNode promptNode = gnode.namedItem ( " gisprompt" );
28242833 QDomElement promptElem = promptNode.toElement ();
@@ -2836,7 +2845,9 @@ QgsGrassModuleField::QgsGrassModuleField(
28362845 connect ( mLayerInput , SIGNAL ( valueChanged () ), this , SLOT ( updateFields () ) );
28372846 }
28382847
2839- mFieldComboBox = new QComboBox ( this );
2848+ QHBoxLayout *l = new QHBoxLayout ( this );
2849+ mFieldComboBox = new QComboBox ( );
2850+ l->addWidget ( mFieldComboBox );
28402851
28412852 // Fill in layer current fields
28422853 updateFields ();
@@ -2888,29 +2899,15 @@ QgsGrassModuleSelection::QgsGrassModuleSelection(
28882899 QgsGrassModule *module , QgsGrassModuleStandardOptions *options,
28892900 QString key, QDomElement &qdesc,
28902901 QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
2891- : QGroupBox( parent ),
2892- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
2902+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
28932903 mModuleStandardOptions( options ), mLayerInput( 0 ),
28942904 mVectorLayer( 0 )
28952905{
2896- QString tit;
2897- if ( mDescription .isEmpty () )
2898- {
2899- tit = tr ( " Attribute field" );
2900- }
2901- else
2906+ if ( mTitle .isEmpty () )
29022907 {
2903- if ( mDescription .length () > 40 )
2904- {
2905- tit = mDescription .left ( 40 ) + " ..." ;
2906- }
2907- else
2908- {
2909- tit = mDescription ;
2910- }
2908+ mTitle = tr ( " Selected categories" );
29112909 }
2912-
2913- setTitle ( " " + tit + " " );
2910+ adjustTitle ();
29142911
29152912 QDomNode promptNode = gnode.namedItem ( " gisprompt" );
29162913 QDomElement promptElem = promptNode.toElement ();
@@ -3005,28 +3002,14 @@ QgsGrassModuleFile::QgsGrassModuleFile(
30053002 QgsGrassModule *module ,
30063003 QString key, QDomElement &qdesc,
30073004 QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
3008- : QGroupBox( parent ),
3009- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
3005+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
30103006 mType( Old )
30113007{
3012- QString tit;
3013- if ( mDescription .isEmpty () )
3008+ if ( mTitle .isEmpty () )
30143009 {
3015- tit = tr ( " File" );
3010+ mTitle = tr ( " File" );
30163011 }
3017- else
3018- {
3019- if ( mDescription .length () > 40 )
3020- {
3021- tit = mDescription .left ( 40 ) + " ..." ;
3022- }
3023- else
3024- {
3025- tit = mDescription ;
3026- }
3027- }
3028-
3029- setTitle ( " " + tit + " " );
3012+ adjustTitle ();
30303013
30313014 QDomNode promptNode = gnode.namedItem ( " gisprompt" );
30323015 QDomElement promptElem = promptNode.toElement ();
@@ -3126,7 +3109,7 @@ QString QgsGrassModuleFile::ready()
31263109 QString path = mLineEdit ->text ().trimmed ();
31273110
31283111
3129- if ( path.length () == 0 )
3112+ if ( path.length () == 0 && mRequired )
31303113 {
31313114 error.append ( tr ( " %1: missing value" ).arg ( title () ) );
31323115 return error;
0 commit comments