Skip to content

Commit 3f076f0

Browse files
committedJul 28, 2014
[composer] Add function for getting a friendly display name for items
1 parent 38d458c commit 3f076f0

File tree

9 files changed

+113
-0
lines changed

9 files changed

+113
-0
lines changed
 

‎python/core/composer/qgscomposeritem.sip

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,15 @@ class QgsComposerItem : QgsComposerObject, QGraphicsRectItem
508508
*/
509509
QString uuid() const;
510510

511+
/**Get item display name. This is the item's id if set, and if
512+
* not, a user-friendly string identifying item type.
513+
* @returns display name for item
514+
* @see id
515+
* @see setId
516+
* @note added in version 2.5
517+
*/
518+
virtual QString displayName() const;
519+
511520
/**Returns whether this item is part of a group
512521
* @returns true if item is in a group
513522
* @note added in version 2.5

‎python/core/composer/qgscomposerlabel.sip

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ class QgsComposerLabel : QgsComposerItem
7575
* @param doc document
7676
*/
7777
bool readXML( const QDomElement& itemElem, const QDomDocument& doc );
78+
79+
//Overriden to contain part of label's text
80+
virtual QString displayName() const;
7881

7982
public slots:
8083
/* Sets rotation for the label

‎python/core/composer/qgscomposershape.sip

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ class QgsComposerShape: QgsComposerItem
6464
* QgsComposerItem as it needs to call updateBoundingRect after the shape's size changes
6565
*/
6666
void setSceneRect( const QRectF& rectangle );
67+
68+
//Overriden to return shape type
69+
virtual QString displayName() const;
6770

6871
protected:
6972
/* reimplement drawFrame, since it's not a rect, but a custom shape */

‎src/core/composer/qgscomposeritem.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1288,3 +1288,44 @@ void QgsComposerItem::setIsGroupMember( const bool isGroupMember )
12881288
mIsGroupMember = isGroupMember;
12891289
setFlag( QGraphicsItem::ItemIsSelectable, !isGroupMember ); //item in groups cannot be selected
12901290
}
1291+
1292+
QString QgsComposerItem::displayName() const
1293+
{
1294+
//return id, if it's not empty
1295+
if ( ! id().isEmpty() )
1296+
{
1297+
return id();
1298+
}
1299+
1300+
//for unnamed items, default to item type
1301+
//(note some item types override this method to provide their own defaults)
1302+
switch ( type() )
1303+
{
1304+
case ComposerArrow:
1305+
return tr( "<arrow>" );
1306+
case ComposerItemGroup:
1307+
return tr( "<group>" );
1308+
case ComposerLabel:
1309+
return tr( "<label>" );
1310+
case ComposerLegend:
1311+
return tr( "<legend>" );
1312+
case ComposerMap:
1313+
return tr( "<map>" );
1314+
case ComposerPicture:
1315+
return tr( "<picture>" );
1316+
case ComposerScaleBar:
1317+
return tr( "<scale bar>" );
1318+
case ComposerShape:
1319+
return tr( "<shape>" );
1320+
case ComposerTable:
1321+
return tr( "<table>" );
1322+
case ComposerAttributeTable:
1323+
return tr( "<attribute table>" );
1324+
case ComposerTextTable:
1325+
return tr( "<text table>" );
1326+
case ComposerFrame:
1327+
return tr( "<frame>" );
1328+
}
1329+
1330+
return tr( "<item>" );
1331+
}

‎src/core/composer/qgscomposeritem.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,15 @@ class CORE_EXPORT QgsComposerItem: public QgsComposerObject, public QGraphicsRec
464464
*/
465465
QString uuid() const { return mUuid; }
466466

467+
/**Get item display name. This is the item's id if set, and if
468+
* not, a user-friendly string identifying item type.
469+
* @returns display name for item
470+
* @see id
471+
* @see setId
472+
* @note added in version 2.5
473+
*/
474+
virtual QString displayName() const;
475+
467476
/**Returns whether this item is part of a group
468477
* @returns true if item is in a group
469478
* @note added in version 2.5

‎src/core/composer/qgscomposerlabel.cpp

100755100644
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,25 @@ bool QgsComposerLabel::readXML( const QDomElement& itemElem, const QDomDocument&
382382
return true;
383383
}
384384

385+
QString QgsComposerLabel::displayName() const
386+
{
387+
if ( !id().isEmpty() )
388+
{
389+
return id();
390+
}
391+
392+
//if no id, default to portion of label text
393+
QString text = displayText();
394+
if ( text.length() > 25 )
395+
{
396+
return QString( tr( "%1..." ) ).arg( text.left( 25 ) );
397+
}
398+
else
399+
{
400+
return text;
401+
}
402+
}
403+
385404
void QgsComposerLabel::itemShiftAdjustSize( double newWidth, double newHeight, double& xShift, double& yShift ) const
386405
{
387406
//keep alignment point constant

‎src/core/composer/qgscomposerlabel.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ class CORE_EXPORT QgsComposerLabel: public QgsComposerItem
9999
*/
100100
bool readXML( const QDomElement& itemElem, const QDomDocument& doc );
101101

102+
//Overriden to contain part of label's text
103+
virtual QString displayName() const;
104+
102105
public slots:
103106
void refreshExpressionContext();
104107

‎src/core/composer/qgscomposershape.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,3 +423,26 @@ void QgsComposerShape::setSceneRect( const QRectF& rectangle )
423423
updateBoundingRect();
424424
update();
425425
}
426+
427+
QString QgsComposerShape::displayName() const
428+
{
429+
if ( !id().isEmpty() )
430+
{
431+
return id();
432+
}
433+
434+
switch ( mShape )
435+
{
436+
case Ellipse:
437+
return tr( "<ellipse>" );
438+
break;
439+
case Rectangle:
440+
return tr( "<rectangle>" );
441+
break;
442+
case Triangle:
443+
return tr( "<triangle>" );
444+
break;
445+
}
446+
447+
return tr( "<shape>" );
448+
}

‎src/core/composer/qgscomposershape.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ class CORE_EXPORT QgsComposerShape: public QgsComposerItem
8989
*/
9090
void setSceneRect( const QRectF& rectangle );
9191

92+
//Overriden to return shape type
93+
virtual QString displayName() const;
94+
9295
protected:
9396
/* reimplement drawFrame, since it's not a rect, but a custom shape */
9497
virtual void drawFrame( QPainter* p );

0 commit comments

Comments
 (0)
Please sign in to comment.