diff --git a/python/gui/qgscomposerview.sip b/python/gui/qgscomposerview.sip index bf1a2d32810..6cd97d3b86a 100644 --- a/python/gui/qgscomposerview.sip +++ b/python/gui/qgscomposerview.sip @@ -70,23 +70,9 @@ class QgsComposerView: QGraphicsView void wheelEvent( QWheelEvent* event ); - public slots: - /**Casts object to the proper subclass type and calls corresponding itemAdded signal*/ - void sendItemAddedSignal( QgsComposerItem* item ); - signals: /**Is emitted when selected item changed. If 0, no item is selected*/ void selectedItemChanged( QgsComposerItem* selected ); - /**Ist emittted when new composer label has been added to the view*/ - void composerLabelAdded( QgsComposerLabel* label ); - /**Is emitted when new composer map has been added to the view*/ - void composerMapAdded( QgsComposerMap* map ); - /**Is emitted when new composer scale bar has been added*/ - void composerScaleBarAdded( QgsComposerScaleBar* scalebar ); - /**Is emitted when a new composer legend has been added*/ - void composerLegendAdded( QgsComposerLegend* legend ); - /**Is emitted when a new composer picture has been added*/ - void composerPictureAdded( QgsComposerPicture* picture ); /**Is emitted when a composer item has been removed from the scene*/ void itemRemoved( QgsComposerItem* ); /**Current action (e.g. adding composer map) has been finished. The purpose of this signal is that diff --git a/src/app/composer/qgscomposer.cpp b/src/app/composer/qgscomposer.cpp index 99fc8b52ae4..db01b783078 100644 --- a/src/app/composer/qgscomposer.cpp +++ b/src/app/composer/qgscomposer.cpp @@ -316,15 +316,7 @@ void QgsComposer::setIconSizes( int size ) void QgsComposer::connectSlots() { connect( mView, SIGNAL( selectedItemChanged( QgsComposerItem* ) ), this, SLOT( showItemOptions( QgsComposerItem* ) ) ); - connect( mView, SIGNAL( composerLabelAdded( QgsComposerLabel* ) ), this, SLOT( addComposerLabel( QgsComposerLabel* ) ) ); - connect( mView, SIGNAL( composerMapAdded( QgsComposerMap* ) ), this, SLOT( addComposerMap( QgsComposerMap* ) ) ); connect( mView, SIGNAL( itemRemoved( QgsComposerItem* ) ), this, SLOT( deleteItem( QgsComposerItem* ) ) ); - connect( mView, SIGNAL( composerScaleBarAdded( QgsComposerScaleBar* ) ), this, SLOT( addComposerScaleBar( QgsComposerScaleBar* ) ) ); - connect( mView, SIGNAL( composerLegendAdded( QgsComposerLegend* ) ), this, SLOT( addComposerLegend( QgsComposerLegend* ) ) ); - connect( mView, SIGNAL( composerPictureAdded( QgsComposerPicture* ) ), this, SLOT( addComposerPicture( QgsComposerPicture* ) ) ); - connect( mView, SIGNAL( composerShapeAdded( QgsComposerShape* ) ), this, SLOT( addComposerShape( QgsComposerShape* ) ) ); - connect( mView, SIGNAL( composerArrowAdded( QgsComposerArrow* ) ), this, SLOT( addComposerArrow( QgsComposerArrow* ) ) ); - connect( mView, SIGNAL( composerTableAdded( QgsComposerAttributeTable* ) ), this, SLOT( addComposerTable( QgsComposerAttributeTable* ) ) ); connect( mView, SIGNAL( actionFinished() ), this, SLOT( setSelectionTool() ) ); connect( mComposition, SIGNAL( selectedItemChanged( QgsComposerItem* ) ), this, SLOT( showItemOptions( QgsComposerItem* ) ) ); @@ -336,6 +328,7 @@ void QgsComposer::connectSlots() connect( mComposition, SIGNAL( composerPictureAdded( QgsComposerPicture* ) ), this, SLOT( addComposerPicture( QgsComposerPicture* ) ) ); connect( mComposition, SIGNAL( composerShapeAdded( QgsComposerShape* ) ), this, SLOT( addComposerShape( QgsComposerShape* ) ) ); connect( mComposition, SIGNAL( composerTableAdded( QgsComposerAttributeTable* ) ), this, SLOT( addComposerTable( QgsComposerAttributeTable* ) ) ); + connect( mComposition, SIGNAL( itemRemoved( QgsComposerItem* ) ), this, SLOT( deleteItem( QgsComposerItem* ) ) ); } void QgsComposer::open( void ) diff --git a/src/core/composer/qgscomposition.cpp b/src/core/composer/qgscomposition.cpp index 21589edd559..fb7ad8f4db6 100644 --- a/src/core/composer/qgscomposition.cpp +++ b/src/core/composer/qgscomposition.cpp @@ -1045,3 +1045,65 @@ void QgsComposition::addComposerTable( QgsComposerAttributeTable* table ) emit selectedItemChanged( table ); //pushAddRemoveCommand( table, tr( "Table added" ) ); } + +void QgsComposition::sendItemAddedSignal( QgsComposerItem* item ) +{ + //cast and send proper signal + item->setSelected( true ); + QgsComposerArrow* arrow = dynamic_cast( item ); + if ( arrow ) + { + emit composerArrowAdded( arrow ); + emit selectedItemChanged( arrow ); + return; + } + QgsComposerLabel* label = dynamic_cast( item ); + if ( label ) + { + emit composerLabelAdded( label ); + emit selectedItemChanged( label ); + return; + } + QgsComposerMap* map = dynamic_cast( item ); + if ( map ) + { + emit composerMapAdded( map ); + emit selectedItemChanged( map ); + return; + } + QgsComposerScaleBar* scalebar = dynamic_cast( item ); + if ( scalebar ) + { + emit composerScaleBarAdded( scalebar ); + emit selectedItemChanged( scalebar ); + return; + } + QgsComposerLegend* legend = dynamic_cast( item ); + if ( legend ) + { + emit composerLegendAdded( legend ); + emit selectedItemChanged( legend ); + return; + } + QgsComposerPicture* picture = dynamic_cast( item ); + if ( picture ) + { + emit composerPictureAdded( picture ); + emit selectedItemChanged( picture ); + return; + } + QgsComposerShape* shape = dynamic_cast( item ); + if ( shape ) + { + emit composerShapeAdded( shape ); + emit selectedItemChanged( shape ); + return; + } + QgsComposerAttributeTable* table = dynamic_cast( item ); + if ( table ) + { + emit composerTableAdded( table ); + emit selectedItemChanged( table ); + return; + } +} diff --git a/src/core/composer/qgscomposition.h b/src/core/composer/qgscomposition.h index e9fe18b97ed..f55d273bbdd 100644 --- a/src/core/composer/qgscomposition.h +++ b/src/core/composer/qgscomposition.h @@ -204,6 +204,10 @@ class CORE_EXPORT QgsComposition: public QGraphicsScene /**Adds a composer table to the graphics scene and advices composer to create a widget for it (through signal)*/ void addComposerTable( QgsComposerAttributeTable* table ); + public slots: + /**Casts object to the proper subclass type and calls corresponding itemAdded signal*/ + void sendItemAddedSignal( QgsComposerItem* item ); + private: /**Pointer to map renderer of QGIS main map*/ QgsMapRenderer* mMapRenderer; @@ -267,6 +271,8 @@ class CORE_EXPORT QgsComposition: public QGraphicsScene void composerShapeAdded( QgsComposerShape* shape ); /**Is emitted when a new composer table has been added*/ void composerTableAdded( QgsComposerAttributeTable* table ); + /**Is emitted when a composer item has been removed from the scene*/ + void itemRemoved( QgsComposerItem* ); }; #endif diff --git a/src/gui/qgscomposerview.cpp b/src/gui/qgscomposerview.cpp index 1512dd44741..8e834198962 100644 --- a/src/gui/qgscomposerview.cpp +++ b/src/gui/qgscomposerview.cpp @@ -655,68 +655,6 @@ void QgsComposerView::ungroupItems() } } -void QgsComposerView::sendItemAddedSignal( QgsComposerItem* item ) -{ - //cast and send proper signal - item->setSelected( true ); - QgsComposerArrow* arrow = dynamic_cast( item ); - if ( arrow ) - { - emit composerArrowAdded( arrow ); - emit selectedItemChanged( arrow ); - return; - } - QgsComposerLabel* label = dynamic_cast( item ); - if ( label ) - { - emit composerLabelAdded( label ); - emit selectedItemChanged( label ); - return; - } - QgsComposerMap* map = dynamic_cast( item ); - if ( map ) - { - emit composerMapAdded( map ); - emit selectedItemChanged( map ); - return; - } - QgsComposerScaleBar* scalebar = dynamic_cast( item ); - if ( scalebar ) - { - emit composerScaleBarAdded( scalebar ); - emit selectedItemChanged( scalebar ); - return; - } - QgsComposerLegend* legend = dynamic_cast( item ); - if ( legend ) - { - emit composerLegendAdded( legend ); - emit selectedItemChanged( legend ); - return; - } - QgsComposerPicture* picture = dynamic_cast( item ); - if ( picture ) - { - emit composerPictureAdded( picture ); - emit selectedItemChanged( picture ); - return; - } - QgsComposerShape* shape = dynamic_cast( item ); - if ( shape ) - { - emit composerShapeAdded( shape ); - emit selectedItemChanged( shape ); - return; - } - QgsComposerAttributeTable* table = dynamic_cast( item ); - if ( table ) - { - emit composerTableAdded( table ); - emit selectedItemChanged( table ); - return; - } -} - QMainWindow* QgsComposerView::composerWindow() { QMainWindow* composerObject = 0; @@ -745,8 +683,12 @@ void QgsComposerView::connectAddRemoveCommandSignals( QgsAddRemoveItemCommand* c { return; } - QObject::connect( c, SIGNAL( itemRemoved( QgsComposerItem* ) ), this, SIGNAL( itemRemoved( QgsComposerItem* ) ) ); - QObject::connect( c, SIGNAL( itemAdded( QgsComposerItem* ) ), this, SLOT( sendItemAddedSignal( QgsComposerItem* ) ) ); + + if ( composition() ) + { + QObject::connect( c, SIGNAL( itemRemoved( QgsComposerItem* ) ), composition(), SIGNAL( itemRemoved( QgsComposerItem* ) ) ); + QObject::connect( c, SIGNAL( itemAdded( QgsComposerItem* ) ), composition(), SLOT( sendItemAddedSignal( QgsComposerItem* ) ) ); + } } void QgsComposerView::pushAddRemoveCommand( QgsComposerItem* item, const QString& text, QgsAddRemoveItemCommand::State state ) diff --git a/src/gui/qgscomposerview.h b/src/gui/qgscomposerview.h index 4449ab74e27..e2b09bf3d1f 100644 --- a/src/gui/qgscomposerview.h +++ b/src/gui/qgscomposerview.h @@ -128,31 +128,9 @@ class GUI_EXPORT QgsComposerView: public QGraphicsView void connectAddRemoveCommandSignals( QgsAddRemoveItemCommand* c ); - - public slots: - /**Casts object to the proper subclass type and calls corresponding itemAdded signal*/ - void sendItemAddedSignal( QgsComposerItem* item ); - signals: /**Is emitted when selected item changed. If 0, no item is selected*/ void selectedItemChanged( QgsComposerItem* selected ); - /**Is emitted when new composer arrow has been added to the view*/ - void composerArrowAdded( QgsComposerArrow* arrow ); - /**Is emitted when new composer label has been added to the view*/ - void composerLabelAdded( QgsComposerLabel* label ); - /**Is emitted when new composer map has been added to the view*/ - void composerMapAdded( QgsComposerMap* map ); - /**Is emitted when new composer scale bar has been added*/ - void composerScaleBarAdded( QgsComposerScaleBar* scalebar ); - /**Is emitted when a new composer legend has been added*/ - void composerLegendAdded( QgsComposerLegend* legend ); - /**Is emitted when a new composer picture has been added*/ - void composerPictureAdded( QgsComposerPicture* picture ); - /**Is emitted when a new composer shape has been added*/ - void composerShapeAdded( QgsComposerShape* shape ); - /**Is emitted when a new composer table has been added*/ - void composerTableAdded( QgsComposerAttributeTable* table ); - /**Is emitted when a composer item has been removed from the scene*/ void itemRemoved( QgsComposerItem* ); /**Current action (e.g. adding composer map) has been finished. The purpose of this signal is that QgsComposer may set the selection tool again*/