21
21
#include " qgscomposerview.h"
22
22
#include " qgscomposition.h"
23
23
#include " qgscompositionwidget.h"
24
+ #include " qgscomposerarrow.h"
25
+ #include " qgscomposerarrowwidget.h"
24
26
#include " qgscomposerlabel.h"
25
27
#include " qgscomposerlabelwidget.h"
26
28
#include " qgscomposerlegend.h"
@@ -109,6 +111,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
109
111
toggleActionGroup->addAction ( mActionAddImage );
110
112
toggleActionGroup->addAction ( mActionSelectMoveItem );
111
113
toggleActionGroup->addAction ( mActionAddBasicShape );
114
+ toggleActionGroup->addAction ( mActionAddArrow );
112
115
toggleActionGroup->setExclusive ( true );
113
116
114
117
mActionAddNewMap ->setCheckable ( true );
@@ -119,6 +122,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
119
122
mActionAddImage ->setCheckable ( true );
120
123
mActionMoveItemContent ->setCheckable ( true );
121
124
mActionAddBasicShape ->setCheckable ( true );
125
+ mActionAddArrow ->setCheckable ( true );
122
126
123
127
#ifdef Q_WS_MAC
124
128
QMenu *appMenu = menuBar ()->addMenu ( tr ( " QGIS" ) );
@@ -155,6 +159,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
155
159
layoutMenu->addAction ( mActionSelectMoveItem );
156
160
layoutMenu->addAction ( mActionMoveItemContent );
157
161
layoutMenu->addAction ( mActionAddBasicShape );
162
+ layoutMenu->addAction ( mActionAddArrow );
158
163
layoutMenu->addSeparator ();
159
164
layoutMenu->addAction ( mActionGroupItems );
160
165
layoutMenu->addAction ( mActionUngroupItems );
@@ -249,6 +254,7 @@ void QgsComposer::setupTheme()
249
254
mActionAddNewLegend ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddLegend.png" ) );
250
255
mActionAddNewScalebar ->setIcon ( QgisApp::getThemeIcon ( " /mActionScaleBar.png" ) );
251
256
mActionAddBasicShape ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddBasicShape.png" ) );
257
+ mActionAddArrow ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddArrow.png" ) );
252
258
mActionSelectMoveItem ->setIcon ( QgisApp::getThemeIcon ( " /mActionSelectPan.png" ) );
253
259
mActionMoveItemContent ->setIcon ( QgisApp::getThemeIcon ( " /mActionMoveItemContent.png" ) );
254
260
mActionGroupItems ->setIcon ( QgisApp::getThemeIcon ( " /mActionGroupItems.png" ) );
@@ -275,6 +281,7 @@ void QgsComposer::connectSlots()
275
281
connect ( mView , SIGNAL ( composerLegendAdded ( QgsComposerLegend* ) ), this , SLOT ( addComposerLegend ( QgsComposerLegend* ) ) );
276
282
connect ( mView , SIGNAL ( composerPictureAdded ( QgsComposerPicture* ) ), this , SLOT ( addComposerPicture ( QgsComposerPicture* ) ) );
277
283
connect ( mView , SIGNAL ( composerShapeAdded ( QgsComposerShape* ) ), this , SLOT ( addComposerShape ( QgsComposerShape* ) ) );
284
+ connect ( mView , SIGNAL ( composerArrowAdded ( QgsComposerArrow* ) ), this , SLOT ( addComposerArrow ( QgsComposerArrow* ) ) );
278
285
connect ( mView , SIGNAL ( actionFinished () ), this , SLOT ( setSelectionTool () ) );
279
286
}
280
287
@@ -805,6 +812,14 @@ void QgsComposer::on_mActionAddBasicShape_triggered()
805
812
}
806
813
}
807
814
815
+ void QgsComposer::on_mActionAddArrow_triggered ()
816
+ {
817
+ if ( mView )
818
+ {
819
+ mView ->setCurrentTool ( QgsComposerView::AddArrow );
820
+ }
821
+ }
822
+
808
823
void QgsComposer::on_mActionSaveAsTemplate_triggered ()
809
824
{
810
825
// show file dialog
@@ -1217,6 +1232,21 @@ void QgsComposer::readXML( const QDomElement& composerElem, const QDomDocument&
1217
1232
showItemOptions ( newShape );
1218
1233
}
1219
1234
1235
+ // composer arrows
1236
+ QDomNodeList composerArrowList = composerElem.elementsByTagName ( " ComposerArrow" );
1237
+ for ( int i = 0 ; i < composerArrowList.size (); ++i )
1238
+ {
1239
+ QDomElement currentArrowElem = composerArrowList.at ( i ).toElement ();
1240
+ QgsComposerArrow* newArrow = new QgsComposerArrow ( mComposition );
1241
+ newArrow->readXML ( currentArrowElem, doc );
1242
+ addComposerArrow ( newArrow );
1243
+ mComposition ->addItem ( newArrow );
1244
+ mComposition ->update ();
1245
+ mComposition ->clearSelection ();
1246
+ newArrow->setSelected ( true );
1247
+ showItemOptions ( newArrow );
1248
+ }
1249
+
1220
1250
mComposition ->sortZList ();
1221
1251
mView ->setComposition ( mComposition );
1222
1252
@@ -1235,6 +1265,17 @@ void QgsComposer::deleteItems()
1235
1265
mItemWidgetMap .clear ();
1236
1266
}
1237
1267
1268
+ void QgsComposer::addComposerArrow ( QgsComposerArrow* arrow )
1269
+ {
1270
+ if ( !arrow )
1271
+ {
1272
+ return ;
1273
+ }
1274
+
1275
+ QgsComposerArrowWidget* arrowWidget = new QgsComposerArrowWidget ( arrow );
1276
+ mItemWidgetMap .insert ( arrow, arrowWidget );
1277
+ }
1278
+
1238
1279
void QgsComposer::addComposerMap ( QgsComposerMap* map )
1239
1280
{
1240
1281
if ( !map )
0 commit comments