31
31
#include " qgscomposerpicturewidget.h"
32
32
#include " qgscomposerscalebar.h"
33
33
#include " qgscomposerscalebarwidget.h"
34
+ #include " qgscomposershape.h"
35
+ #include " qgscomposershapewidget.h"
34
36
#include " qgsexception.h"
35
37
#include " qgsproject.h"
36
38
#include " qgsmapcanvas.h"
@@ -106,6 +108,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
106
108
toggleActionGroup->addAction ( mActionAddNewScalebar );
107
109
toggleActionGroup->addAction ( mActionAddImage );
108
110
toggleActionGroup->addAction ( mActionSelectMoveItem );
111
+ toggleActionGroup->addAction ( mActionAddBasicShape );
109
112
toggleActionGroup->setExclusive ( true );
110
113
111
114
mActionAddNewMap ->setCheckable ( true );
@@ -115,6 +118,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
115
118
mActionAddNewScalebar ->setCheckable ( true );
116
119
mActionAddImage ->setCheckable ( true );
117
120
mActionMoveItemContent ->setCheckable ( true );
121
+ mActionAddBasicShape ->setCheckable ( true );
118
122
119
123
#ifdef Q_WS_MAC
120
124
QMenu *appMenu = menuBar ()->addMenu ( tr ( " QGIS" ) );
@@ -150,6 +154,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
150
154
layoutMenu->addAction ( mActionAddImage );
151
155
layoutMenu->addAction ( mActionSelectMoveItem );
152
156
layoutMenu->addAction ( mActionMoveItemContent );
157
+ layoutMenu->addAction ( mActionAddBasicShape );
153
158
layoutMenu->addSeparator ();
154
159
layoutMenu->addAction ( mActionGroupItems );
155
160
layoutMenu->addAction ( mActionUngroupItems );
@@ -243,6 +248,7 @@ void QgsComposer::setupTheme()
243
248
mActionAddNewLabel ->setIcon ( QgisApp::getThemeIcon ( " /mActionLabel.png" ) );
244
249
mActionAddNewLegend ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddLegend.png" ) );
245
250
mActionAddNewScalebar ->setIcon ( QgisApp::getThemeIcon ( " /mActionScaleBar.png" ) );
251
+ mActionAddBasicShape ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddBasicShape.png" ) );
246
252
mActionSelectMoveItem ->setIcon ( QgisApp::getThemeIcon ( " /mActionSelectPan.png" ) );
247
253
mActionMoveItemContent ->setIcon ( QgisApp::getThemeIcon ( " /mActionMoveItemContent.png" ) );
248
254
mActionGroupItems ->setIcon ( QgisApp::getThemeIcon ( " /mActionGroupItems.png" ) );
@@ -268,6 +274,7 @@ void QgsComposer::connectSlots()
268
274
connect ( mView , SIGNAL ( composerScaleBarAdded ( QgsComposerScaleBar* ) ), this , SLOT ( addComposerScaleBar ( QgsComposerScaleBar* ) ) );
269
275
connect ( mView , SIGNAL ( composerLegendAdded ( QgsComposerLegend* ) ), this , SLOT ( addComposerLegend ( QgsComposerLegend* ) ) );
270
276
connect ( mView , SIGNAL ( composerPictureAdded ( QgsComposerPicture* ) ), this , SLOT ( addComposerPicture ( QgsComposerPicture* ) ) );
277
+ connect ( mView , SIGNAL ( composerShapeAdded ( QgsComposerShape* ) ), this , SLOT ( addComposerShape ( QgsComposerShape* ) ) );
271
278
connect ( mView , SIGNAL ( actionFinished () ), this , SLOT ( setSelectionTool () ) );
272
279
}
273
280
@@ -330,6 +337,10 @@ void QgsComposer::setTitle( const QString& title )
330
337
{
331
338
mTitle = title;
332
339
setWindowTitle ( mTitle );
340
+ if ( mWindowAction )
341
+ {
342
+ mWindowAction ->setText ( title );
343
+ }
333
344
}
334
345
335
346
void QgsComposer::showCompositionOptions ( QWidget *w )
@@ -786,6 +797,14 @@ void QgsComposer::on_mActionAddImage_triggered()
786
797
}
787
798
}
788
799
800
+ void QgsComposer::on_mActionAddBasicShape_triggered ()
801
+ {
802
+ if ( mView )
803
+ {
804
+ mView ->setCurrentTool ( QgsComposerView::AddShape );
805
+ }
806
+ }
807
+
789
808
void QgsComposer::on_mActionSaveAsTemplate_triggered ()
790
809
{
791
810
// show file dialog
@@ -1015,6 +1034,16 @@ void QgsComposer::writeXML( QDomNode& parentNode, QDomDocument& doc )
1015
1034
{
1016
1035
QDomElement composerElem = doc.createElement ( " Composer" );
1017
1036
composerElem.setAttribute ( " title" , mTitle );
1037
+
1038
+ // store if composer is open or closed
1039
+ if ( isVisible () )
1040
+ {
1041
+ composerElem.setAttribute ( " visible" , 1 );
1042
+ }
1043
+ else
1044
+ {
1045
+ composerElem.setAttribute ( " visible" , 0 );
1046
+ }
1018
1047
parentNode.appendChild ( composerElem );
1019
1048
1020
1049
// store composer items:
@@ -1173,6 +1202,21 @@ void QgsComposer::readXML( const QDomElement& composerElem, const QDomDocument&
1173
1202
showItemOptions ( newPicture );
1174
1203
}
1175
1204
1205
+ // composer shapes
1206
+ QDomNodeList composerShapeList = composerElem.elementsByTagName ( " ComposerShape" );
1207
+ for ( int i = 0 ; i < composerShapeList.size (); ++i )
1208
+ {
1209
+ QDomElement currentShapeElem = composerShapeList.at ( i ).toElement ();
1210
+ QgsComposerShape* newShape = new QgsComposerShape ( mComposition );
1211
+ newShape->readXML ( currentShapeElem, doc );
1212
+ addComposerShape ( newShape );
1213
+ mComposition ->addItem ( newShape );
1214
+ mComposition ->update ();
1215
+ mComposition ->clearSelection ();
1216
+ newShape->setSelected ( true );
1217
+ showItemOptions ( newShape );
1218
+ }
1219
+
1176
1220
mComposition ->sortZList ();
1177
1221
mView ->setComposition ( mComposition );
1178
1222
@@ -1247,6 +1291,16 @@ void QgsComposer::addComposerPicture( QgsComposerPicture* picture )
1247
1291
mItemWidgetMap .insert ( picture, pWidget );
1248
1292
}
1249
1293
1294
+ void QgsComposer::addComposerShape ( QgsComposerShape* shape )
1295
+ {
1296
+ if ( !shape )
1297
+ {
1298
+ return ;
1299
+ }
1300
+ QgsComposerShapeWidget* sWidget = new QgsComposerShapeWidget ( shape );
1301
+ mItemWidgetMap .insert ( shape, sWidget );
1302
+ }
1303
+
1250
1304
void QgsComposer::deleteItem ( QgsComposerItem* item )
1251
1305
{
1252
1306
QMap<QgsComposerItem*, QWidget*>::iterator it = mItemWidgetMap .find ( item );
0 commit comments