Skip to content

Commit ff37ae3

Browse files
author
jef
committedMay 16, 2010
[FEATURE] label only selected features (implements #2717)
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@13510 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 3bba708 commit ff37ae3

File tree

7 files changed

+104
-44
lines changed

7 files changed

+104
-44
lines changed
 

‎python/core/qgslabelattributes.sip

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,5 +112,11 @@ public:
112112

113113
bool multilineEnabled() const;
114114
void setMultilineEnabled( bool useMultiline );
115+
116+
/* label only selected features
117+
* added in 1.5
118+
*/
119+
bool selectedOnly() const;
120+
void setSelectedOnly( bool selectedonly );
115121
};
116122

‎src/app/qgslabeldialog.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,8 @@ void QgsLabelDialog::init( )
264264
}
265265
//set the state of the multiline enabled checkbox
266266
chkUseMultiline->setChecked( myLabelAttributes->multilineEnabled() );
267+
//set the state of the selected features only checkbox
268+
chkSelectedOnly->setChecked( myLabelAttributes->selectedOnly() );
267269
//set the state of the buffer enabled checkbox
268270
chkUseBuffer->setChecked( myLabelAttributes->bufferEnabled() );
269271

@@ -373,6 +375,7 @@ void QgsLabelDialog::apply()
373375
if ( radioOver->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignCenter );
374376

375377
myLabelAttributes->setMultilineEnabled( chkUseMultiline->isChecked() );
378+
myLabelAttributes->setSelectedOnly( chkSelectedOnly->isChecked() );
376379
myLabelAttributes->setBufferEnabled( chkUseBuffer->isChecked() );
377380
myLabelAttributes->setBufferColor( mBufferColor );
378381
myTypeInt = cboBufferSizeUnits->currentIndex() == 0 ? QgsLabelAttributes::PointUnits : QgsLabelAttributes::MapUnits;

‎src/core/qgslabel.cpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ void QgsLabel::renderLabel( QgsRenderContext &renderContext,
9090
QgsFeature &feature, bool selected,
9191
QgsLabelAttributes *classAttributes )
9292
{
93+
if ( mLabelAttributes->selectedOnly() && !selected )
94+
return;
95+
9396
QPen pen;
9497
QFont font;
9598
QString value;
@@ -414,7 +417,6 @@ void QgsLabel::renderLabel( QgsRenderContext &renderContext,
414417
x = x + xoffset * cos( rad ) - yoffset * sin( rad );
415418
y = y - xoffset * sin( rad ) - yoffset * cos( rad );
416419

417-
418420
painter->save();
419421
painter->setFont( font );
420422
painter->translate( x, y );
@@ -1017,6 +1019,18 @@ void QgsLabel::readXML( const QDomNode& node )
10171019
readLabelField( el, MultilineEnabled );
10181020
}
10191021

1022+
scratchNode = node.namedItem( "selectedonly" );
1023+
1024+
if ( scratchNode.isNull() )
1025+
{
1026+
QgsDebugMsg( "couldn't find QgsLabel ``selectedonly'' attribute" );
1027+
}
1028+
else
1029+
{
1030+
el = scratchNode.toElement();
1031+
mLabelAttributes->setSelectedOnly(( bool )el.attribute( "on", "0" ).toInt() );
1032+
}
1033+
10201034
} // QgsLabel::readXML()
10211035

10221036

@@ -1357,6 +1371,17 @@ void QgsLabel::writeXML( QDomNode & layer_node, QDomDocument & document ) const
13571371
}
13581372
labelattributes.appendChild( multilineenabled );
13591373

1374+
QDomElement selectedonly = document.createElement( "selectedonly" );
1375+
if ( mLabelAttributes->selectedOnly() )
1376+
{
1377+
selectedonly.setAttribute( "on", mLabelAttributes->selectedOnly() );
1378+
}
1379+
else
1380+
{
1381+
selectedonly.setAttribute( "on", "" );
1382+
}
1383+
labelattributes.appendChild( selectedonly );
1384+
13601385
layer_node.appendChild( labelattributes );
13611386
}
13621387

‎src/core/qgslabel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class CORE_EXPORT QgsLabel
8181
BorderColor,
8282
BorderStyle,
8383
MultilineEnabled,
84-
StrikeOut, // added in 1.5
84+
StrikeOut, // added in 1.5
8585
LabelFieldCount
8686
};
8787

‎src/core/qgslabelattributes.cpp

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,36 @@
2626
#include "qgslogger.h"
2727

2828
QgsLabelAttributes::QgsLabelAttributes( bool def )
29-
: mTextIsSet( false ),
30-
mFamilyIsSet( false ),
31-
mBoldIsSet( false ),
32-
mItalicIsSet( false ),
33-
mUnderlineIsSet( false ),
34-
mStrikeOutIsSet( false ),
35-
mSizeType( 0 ),
36-
mSize( 0.0 ),
37-
mSizeIsSet( false ),
38-
mColorIsSet( false ),
39-
mOffsetType( 0 ),
40-
mXOffset( 0 ),
41-
mYOffset( 0 ),
42-
mOffsetIsSet( false ),
43-
mAngle( 0.0 ),
44-
mAngleIsSet( false ),
45-
mAngleIsAuto( false ),
46-
mAlignment( 0 ),
47-
mAlignmentIsSet( false ),
48-
mBufferEnabledFlag( false ),
49-
mBufferSizeType( 0 ),
50-
mBufferSize( 0.0 ),
51-
mBufferSizeIsSet( false ),
52-
mBufferColorIsSet( false ),
53-
mBufferStyleIsSet( false ),
54-
mBorderColorIsSet( false ),
55-
mBorderWidthIsSet( false ),
56-
mBorderStyleIsSet( false ),
57-
mMultilineEnabledFlag( false )
29+
: mTextIsSet( false )
30+
, mFamilyIsSet( false )
31+
, mBoldIsSet( false )
32+
, mItalicIsSet( false )
33+
, mUnderlineIsSet( false )
34+
, mStrikeOutIsSet( false )
35+
, mSizeType( 0 )
36+
, mSize( 0.0 )
37+
, mSizeIsSet( false )
38+
, mColorIsSet( false )
39+
, mOffsetType( 0 )
40+
, mXOffset( 0 )
41+
, mYOffset( 0 )
42+
, mOffsetIsSet( false )
43+
, mAngle( 0.0 )
44+
, mAngleIsSet( false )
45+
, mAngleIsAuto( false )
46+
, mAlignment( 0 )
47+
, mAlignmentIsSet( false )
48+
, mBufferEnabledFlag( false )
49+
, mBufferSizeType( 0 )
50+
, mBufferSize( 0.0 )
51+
, mBufferSizeIsSet( false )
52+
, mBufferColorIsSet( false )
53+
, mBufferStyleIsSet( false )
54+
, mBorderColorIsSet( false )
55+
, mBorderWidthIsSet( false )
56+
, mBorderStyleIsSet( false )
57+
, mMultilineEnabledFlag( false )
58+
, mSelectedOnly( false )
5859
{
5960

6061
if ( def ) // set defaults
@@ -429,6 +430,16 @@ void QgsLabelAttributes::setMultilineEnabled( bool useMultilineFlag )
429430
mMultilineEnabledFlag = useMultilineFlag;
430431
}
431432

433+
/* selected only */
434+
bool QgsLabelAttributes::selectedOnly() const
435+
{
436+
return mSelectedOnly;
437+
}
438+
void QgsLabelAttributes::setSelectedOnly( bool selectedOnly )
439+
{
440+
mSelectedOnly = selectedOnly;
441+
}
442+
432443
/* units */
433444
QString QgsLabelAttributes::unitsName( int units )
434445
{

‎src/core/qgslabelattributes.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,12 @@ class CORE_EXPORT QgsLabelAttributes
185185
bool multilineEnabled() const;
186186
void setMultilineEnabled( bool useMultiline );
187187

188+
/* label only selected features
189+
* added in 1.5
190+
*/
191+
bool selectedOnly() const;
192+
void setSelectedOnly( bool selectedonly );
193+
188194
protected:
189195
/* Text */
190196
QString mText;
@@ -242,6 +248,9 @@ class CORE_EXPORT QgsLabelAttributes
242248

243249
/** Multiline enablement */
244250
bool mMultilineEnabledFlag;
251+
252+
/** Label only selected */
253+
bool mSelectedOnly;
245254
};
246255

247256
#endif

‎src/ui/qgslabeldialogbase.ui

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<x>0</x>
4545
<y>0</y>
4646
<width>525</width>
47-
<height>512</height>
47+
<height>510</height>
4848
</rect>
4949
</property>
5050
<layout class="QGridLayout" name="gridLayout_2">
@@ -420,16 +420,6 @@
420420
</item>
421421
</widget>
422422
</item>
423-
<item row="6" column="2">
424-
<widget class="QCheckBox" name="chkUseMultiline">
425-
<property name="text">
426-
<string>Multiline labels?</string>
427-
</property>
428-
<property name="checked">
429-
<bool>true</bool>
430-
</property>
431-
</widget>
432-
</item>
433423
<item row="3" column="3">
434424
<widget class="QPushButton" name="btnDefaultFont">
435425
<property name="sizePolicy">
@@ -456,6 +446,23 @@
456446
</property>
457447
</widget>
458448
</item>
449+
<item row="7" column="0" colspan="2">
450+
<widget class="QCheckBox" name="chkUseMultiline">
451+
<property name="text">
452+
<string>Multiline labels?</string>
453+
</property>
454+
<property name="checked">
455+
<bool>true</bool>
456+
</property>
457+
</widget>
458+
</item>
459+
<item row="7" column="2" colspan="2">
460+
<widget class="QCheckBox" name="chkSelectedOnly">
461+
<property name="text">
462+
<string>Label only selected features</string>
463+
</property>
464+
</widget>
465+
</item>
459466
</layout>
460467
</widget>
461468
</item>
@@ -484,7 +491,7 @@
484491
<x>0</x>
485492
<y>0</y>
486493
<width>525</width>
487-
<height>623</height>
494+
<height>592</height>
488495
</rect>
489496
</property>
490497
<layout class="QGridLayout" name="gridLayout_7">
@@ -886,7 +893,6 @@
886893
<tabstop>cboFontSizeUnits</tabstop>
887894
<tabstop>btnDefaultFont</tabstop>
888895
<tabstop>spinAngle</tabstop>
889-
<tabstop>chkUseMultiline</tabstop>
890896
<tabstop>pbnDefaultFontColor</tabstop>
891897
<tabstop>radioOver</tabstop>
892898
<tabstop>radioAboveLeft</tabstop>

0 commit comments

Comments
 (0)
Please sign in to comment.