Skip to content

Commit 706300c

Browse files
author
rblazek
committed
fixed ticket #1133: title adjusted on resize, use of option label; description used as tooltip; layout of vector fields combobox; dont use empty not required option
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@10787 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 2791dbd commit 706300c

File tree

2 files changed

+152
-127
lines changed

2 files changed

+152
-127
lines changed

src/plugins/grass/qgsgrassmodule.cpp

Lines changed: 100 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,8 +1557,7 @@ QDomNode QgsGrassModule::nodeByKey( QDomElement elem, QString key )
15571557
QgsGrassModuleOption::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

19711961
QStringList 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

19871989
QgsGrassModuleInput::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

25652574
QgsGrassModuleItem::~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

25692606
QgsGrassModuleGdalInput::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

Comments
 (0)