Skip to content

Commit 55ed628

Browse files
committed
[composer] Improved method for setting/checking whether items are in a group
1 parent 6cddd05 commit 55ed628

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

python/core/composer/qgscomposeritem.sip

+14
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,20 @@ class QgsComposerItem : QObject, QGraphicsRectItem
453453
@note this method was added in version 2.0
454454
@note there is not setter since one can't manually set the id*/
455455
QString uuid() const;
456+
457+
/**Returns whether this item is part of a group
458+
* @returns true if item is in a group
459+
* @note added in version 2.5
460+
* @see setIsGroupMember
461+
*/
462+
bool isGroupMember() const;
463+
464+
/**Sets whether this item is part of a group
465+
* @param isGroupMember set to true if item is in a group
466+
* @note added in version 2.5
467+
* @see isGroupMember
468+
*/
469+
void setIsGroupMember( bool isGroupMember );
456470

457471
/**Get the number of layers that this item requires for exporting as layers
458472
* @returns 0 if this item is to be placed on the same layer as the previous item,

src/core/composer/qgscomposeritem.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ QgsComposerItem::QgsComposerItem( QgsComposition* composition, bool manageZValue
6464
, mEffectsEnabled( true )
6565
, mTransparency( 0 )
6666
, mLastUsedPositionMode( UpperLeft )
67+
, mIsGroupMember( false )
6768
, mCurrentExportLayer( -1 )
6869
, mId( "" )
6970
, mUuid( QUuid::createUuid().toString() )
@@ -89,6 +90,7 @@ QgsComposerItem::QgsComposerItem( qreal x, qreal y, qreal width, qreal height, Q
8990
, mEffectsEnabled( true )
9091
, mTransparency( 0 )
9192
, mLastUsedPositionMode( UpperLeft )
93+
, mIsGroupMember( false )
9294
, mCurrentExportLayer( -1 )
9395
, mId( "" )
9496
, mUuid( QUuid::createUuid().toString() )
@@ -1178,3 +1180,9 @@ void QgsComposerItem::setId( const QString& id )
11781180
setToolTip( id );
11791181
mId = id;
11801182
}
1183+
1184+
void QgsComposerItem::setIsGroupMember( bool isGroupMember )
1185+
{
1186+
mIsGroupMember = isGroupMember;
1187+
setFlag( QGraphicsItem::ItemIsSelectable, !isGroupMember ); //item in groups cannot be selected
1188+
}

src/core/composer/qgscomposeritem.h

+17
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,20 @@ class CORE_EXPORT QgsComposerItem: public QObject, public QGraphicsRectItem
409409
@note there is not setter since one can't manually set the id*/
410410
QString uuid() const { return mUuid; }
411411

412+
/**Returns whether this item is part of a group
413+
* @returns true if item is in a group
414+
* @note added in version 2.5
415+
* @see setIsGroupMember
416+
*/
417+
bool isGroupMember() const { return mIsGroupMember; }
418+
419+
/**Sets whether this item is part of a group
420+
* @param isGroupMember set to true if item is in a group
421+
* @note added in version 2.5
422+
* @see isGroupMember
423+
*/
424+
void setIsGroupMember( bool isGroupMember );
425+
412426
/**Get the number of layers that this item requires for exporting as layers
413427
* @returns 0 if this item is to be placed on the same layer as the previous item,
414428
* 1 if it should be placed on its own layer, and >1 if it requires multiple export layers
@@ -484,6 +498,9 @@ class CORE_EXPORT QgsComposerItem: public QObject, public QGraphicsRectItem
484498
@note: this member was added in version 2.0*/
485499
ItemPositionMode mLastUsedPositionMode;
486500

501+
/**Whether or not this item is part of a group*/
502+
bool mIsGroupMember;
503+
487504
/**The layer that needs to be exported
488505
@note: if -1, all layers are to be exported
489506
@note: this member was added in version 2.4*/

src/core/composer/qgscomposeritemgroup.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ QgsComposerItemGroup::~QgsComposerItemGroup()
3737
if ( *itemIt )
3838
{
3939
mComposition->removeItem( *itemIt );
40-
( *itemIt )->setFlag( QGraphicsItem::ItemIsSelectable, true );
40+
( *itemIt )->setIsGroupMember( false );
4141
}
4242
}
4343
}
@@ -58,7 +58,7 @@ void QgsComposerItemGroup::addItem( QgsComposerItem* item )
5858

5959
mItems.insert( item );
6060
item->setSelected( false );
61-
item->setFlag( QGraphicsItem::ItemIsSelectable, false ); //item in groups cannot be selected
61+
item->setIsGroupMember( true );
6262

6363
//update extent
6464
if ( mBoundingRectangle.isEmpty() ) //we add the first item
@@ -100,7 +100,7 @@ void QgsComposerItemGroup::removeItems()
100100
QSet<QgsComposerItem*>::iterator item_it = mItems.begin();
101101
for ( ; item_it != mItems.end(); ++item_it )
102102
{
103-
( *item_it )->setFlag( QGraphicsItem::ItemIsSelectable, true ); //enable item selection again
103+
( *item_it )->setIsGroupMember( false );
104104
( *item_it )->setSelected( true );
105105
}
106106
mItems.clear();

0 commit comments

Comments
 (0)