@@ -1557,8 +1557,7 @@ QDomNode QgsGrassModule::nodeByKey( QDomElement elem, QString key )
1557
1557
QgsGrassModuleOption::QgsGrassModuleOption ( QgsGrassModule *module , QString key,
1558
1558
QDomElement &qdesc, QDomElement &gdesc, QDomNode &gnode,
1559
1559
QWidget * parent )
1560
- : QGroupBox( parent ),
1561
- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
1560
+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
1562
1561
mControlType( NoControl ), mValueType( String ), mOutputType( None ), mHaveLimits( false ), mIsOutput( false )
1563
1562
{
1564
1563
QgsDebugMsg ( " called." );
@@ -1568,18 +1567,6 @@ QgsGrassModuleOption::QgsGrassModuleOption( QgsGrassModule *module, QString key,
1568
1567
1569
1568
mLayout = new QVBoxLayout ();
1570
1569
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
-
1583
1570
// Is it output?
1584
1571
QDomNode promptNode = gnode.namedItem ( " gisprompt" );
1585
1572
if ( !promptNode.isNull () )
@@ -1925,8 +1912,11 @@ QStringList QgsGrassModuleOption::options()
1925
1912
list.push_back ( mKey + " =" + mAnswer );
1926
1913
}
1927
1914
else
1928
- {
1929
- list.push_back ( mKey + " =" + value () );
1915
+ {
1916
+ QString val = value ();
1917
+ if ( !val.isEmpty () ) {
1918
+ list.push_back ( mKey + " =" + val );
1919
+ }
1930
1920
}
1931
1921
return list;
1932
1922
}
@@ -1939,7 +1929,7 @@ QString QgsGrassModuleOption::ready()
1939
1929
1940
1930
if ( mControlType == LineEdit )
1941
1931
{
1942
- if ( mLineEdits .at ( 0 )->text ().trimmed ().length () == 0 )
1932
+ if ( mLineEdits .at ( 0 )->text ().trimmed ().length () == 0 && mRequired )
1943
1933
{
1944
1934
error.append ( tr ( " %1: missing value" ).arg ( title () ) );
1945
1935
}
@@ -1965,7 +1955,7 @@ QgsGrassModuleFlag::QgsGrassModuleFlag( QgsGrassModule *module, QString key,
1965
1955
else
1966
1956
setChecked ( false );
1967
1957
1968
- setText ( mDescription );
1958
+ setText ( mTitle );
1969
1959
}
1970
1960
1971
1961
QStringList QgsGrassModuleFlag::options ()
@@ -1982,39 +1972,37 @@ QgsGrassModuleFlag::~QgsGrassModuleFlag()
1982
1972
{
1983
1973
}
1984
1974
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
+
1985
1987
/* ************************* QgsGrassModuleInput ***************************/
1986
1988
1987
1989
QgsGrassModuleInput::QgsGrassModuleInput ( QgsGrassModule *module ,
1988
1990
QgsGrassModuleStandardOptions *options, QString key,
1989
1991
QDomElement &qdesc, QDomElement &gdesc, QDomNode &gnode,
1990
1992
QWidget * parent )
1991
- : QGroupBox( parent ),
1992
- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
1993
+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
1993
1994
mModuleStandardOptions( options ),
1994
1995
mGeometryTypeOption( 0 ), mVectorLayerOption( 0 ),
1995
1996
mRegionButton( 0 ), mUpdate( false )
1996
1997
{
1997
1998
QgsDebugMsg ( " called." );
1998
1999
mGeometryTypeMask = GV_POINT | GV_LINE | GV_AREA;
1999
2000
2000
- QString tit;
2001
- if ( mDescription .isEmpty () )
2001
+ if ( mTitle .isEmpty () )
2002
2002
{
2003
- tit = " Input" ;
2003
+ mTitle = tr ( " Input" ) ;
2004
2004
}
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 ();
2018
2006
2019
2007
QDomNode promptNode = gnode.namedItem ( " gisprompt" );
2020
2008
QDomElement promptElem = promptNode.toElement ();
@@ -2517,7 +2505,8 @@ QgsGrassModuleItem::QgsGrassModuleItem( QgsGrassModule *module, QString key,
2517
2505
QDomElement &qdesc, QDomElement &gdesc, QDomNode &gnode )
2518
2506
: mModule( module ),
2519
2507
mKey( key ),
2520
- mHidden( false )
2508
+ mHidden( false ),
2509
+ mRequired (false )
2521
2510
{
2522
2511
// mAnswer = qdesc.attribute("answer", "");
2523
2512
@@ -2540,20 +2529,40 @@ QgsGrassModuleItem::QgsGrassModuleItem( QgsGrassModule *module, QString key,
2540
2529
mHidden = true ;
2541
2530
}
2542
2531
2532
+ QString label, description;
2543
2533
if ( !qdesc.attribute ( " label" ).isEmpty () )
2544
2534
{
2545
- mDescription = qdesc.attribute ( " label" );
2535
+ label = qdesc.attribute ( " label" );
2546
2536
}
2547
- else
2537
+ if ( label. isEmpty () )
2548
2538
{
2549
- QDomNode n = gnode.namedItem ( " description " );
2539
+ QDomNode n = gnode.namedItem ( " label " );
2550
2540
if ( !n.isNull () )
2551
2541
{
2552
2542
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 () );
2555
2545
}
2556
2546
}
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
+ }
2557
2566
2558
2567
mId = qdesc.attribute ( " id" );
2559
2568
}
@@ -2564,33 +2573,47 @@ QStringList QgsGrassModuleItem::options() { return QStringList(); }
2564
2573
2565
2574
QgsGrassModuleItem::~QgsGrassModuleItem () {}
2566
2575
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
+
2567
2604
/* **************** QgsGrassModuleGdalInput *********************/
2568
2605
2569
2606
QgsGrassModuleGdalInput::QgsGrassModuleGdalInput (
2570
2607
QgsGrassModule *module , int type, QString key, QDomElement &qdesc,
2571
2608
QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
2572
- : QGroupBox( parent ),
2573
- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
2609
+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
2574
2610
mType( type ), mOgrLayerOption( 0 ), mOgrWhereOption( 0 )
2575
2611
{
2576
- QString tit;
2577
- if ( mDescription .isEmpty () )
2612
+ if ( mTitle .isEmpty () )
2578
2613
{
2579
- tit = " OGR/PostGIS/GDAL Input" ;
2614
+ mTitle = " OGR/PostGIS/GDAL Input" ;
2580
2615
}
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 ();
2594
2617
2595
2618
QDomNode promptNode = gnode.namedItem ( " gisprompt" );
2596
2619
QDomElement promptElem = promptNode.toElement ();
@@ -2614,7 +2637,7 @@ QgsGrassModuleGdalInput::QgsGrassModuleGdalInput(
2614
2637
}
2615
2638
2616
2639
// Read "whereoption" if defined
2617
- opt = qdesc.attribute ( " whereoption " );
2640
+ opt = qdesc.attribute ( " where " );
2618
2641
if ( !opt.isNull () )
2619
2642
{
2620
2643
QDomNode optNode = QgsGrassModule::nodeByKey ( gdesc, opt );
@@ -2797,28 +2820,14 @@ QgsGrassModuleField::QgsGrassModuleField(
2797
2820
QgsGrassModule *module , QgsGrassModuleStandardOptions *options,
2798
2821
QString key, QDomElement &qdesc,
2799
2822
QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
2800
- : QGroupBox( parent ),
2801
- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
2823
+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
2802
2824
mModuleStandardOptions( options ), mLayerInput( 0 )
2803
2825
{
2804
- QString tit;
2805
- if ( mDescription .isEmpty () )
2826
+ if ( mTitle .isEmpty () )
2806
2827
{
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" );
2819
2829
}
2820
-
2821
- setTitle ( " " + tit + " " );
2830
+ adjustTitle ();
2822
2831
2823
2832
QDomNode promptNode = gnode.namedItem ( " gisprompt" );
2824
2833
QDomElement promptElem = promptNode.toElement ();
@@ -2836,7 +2845,9 @@ QgsGrassModuleField::QgsGrassModuleField(
2836
2845
connect ( mLayerInput , SIGNAL ( valueChanged () ), this , SLOT ( updateFields () ) );
2837
2846
}
2838
2847
2839
- mFieldComboBox = new QComboBox ( this );
2848
+ QHBoxLayout *l = new QHBoxLayout ( this );
2849
+ mFieldComboBox = new QComboBox ( );
2850
+ l->addWidget ( mFieldComboBox );
2840
2851
2841
2852
// Fill in layer current fields
2842
2853
updateFields ();
@@ -2888,29 +2899,15 @@ QgsGrassModuleSelection::QgsGrassModuleSelection(
2888
2899
QgsGrassModule *module , QgsGrassModuleStandardOptions *options,
2889
2900
QString key, QDomElement &qdesc,
2890
2901
QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
2891
- : QGroupBox( parent ),
2892
- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
2902
+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
2893
2903
mModuleStandardOptions( options ), mLayerInput( 0 ),
2894
2904
mVectorLayer( 0 )
2895
2905
{
2896
- QString tit;
2897
- if ( mDescription .isEmpty () )
2898
- {
2899
- tit = tr ( " Attribute field" );
2900
- }
2901
- else
2906
+ if ( mTitle .isEmpty () )
2902
2907
{
2903
- if ( mDescription .length () > 40 )
2904
- {
2905
- tit = mDescription .left ( 40 ) + " ..." ;
2906
- }
2907
- else
2908
- {
2909
- tit = mDescription ;
2910
- }
2908
+ mTitle = tr ( " Selected categories" );
2911
2909
}
2912
-
2913
- setTitle ( " " + tit + " " );
2910
+ adjustTitle ();
2914
2911
2915
2912
QDomNode promptNode = gnode.namedItem ( " gisprompt" );
2916
2913
QDomElement promptElem = promptNode.toElement ();
@@ -3005,28 +3002,14 @@ QgsGrassModuleFile::QgsGrassModuleFile(
3005
3002
QgsGrassModule *module ,
3006
3003
QString key, QDomElement &qdesc,
3007
3004
QDomElement &gdesc, QDomNode &gnode, QWidget * parent )
3008
- : QGroupBox( parent ),
3009
- QgsGrassModuleItem( module , key, qdesc, gdesc, gnode ),
3005
+ : QgsGrassModuleGroupBoxItem( module , key, qdesc, gdesc, gnode, parent ),
3010
3006
mType( Old )
3011
3007
{
3012
- QString tit;
3013
- if ( mDescription .isEmpty () )
3008
+ if ( mTitle .isEmpty () )
3014
3009
{
3015
- tit = tr ( " File" );
3010
+ mTitle = tr ( " File" );
3016
3011
}
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 ();
3030
3013
3031
3014
QDomNode promptNode = gnode.namedItem ( " gisprompt" );
3032
3015
QDomElement promptElem = promptNode.toElement ();
@@ -3126,7 +3109,7 @@ QString QgsGrassModuleFile::ready()
3126
3109
QString path = mLineEdit ->text ().trimmed ();
3127
3110
3128
3111
3129
- if ( path.length () == 0 )
3112
+ if ( path.length () == 0 && mRequired )
3130
3113
{
3131
3114
error.append ( tr ( " %1: missing value" ).arg ( title () ) );
3132
3115
return error;
0 commit comments