@@ -137,50 +137,68 @@ void QgsComposerView::mousePressEvent( QMouseEvent* e )
137
137
break ;
138
138
139
139
case AddLabel:
140
- {
141
- QgsComposerLabel* newLabelItem = new QgsComposerLabel ( composition () );
142
- newLabelItem->setText ( tr ( " Quantum GIS" ) );
143
- newLabelItem->adjustSizeToText ();
144
- newLabelItem->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), newLabelItem->rect ().width (), newLabelItem->rect ().height () ) );
145
- addComposerLabel ( newLabelItem );
146
- emit actionFinished ();
147
- }
148
- break ;
140
+ if ( composition () )
141
+ {
142
+ QgsComposerLabel* newLabelItem = new QgsComposerLabel ( composition () );
143
+ newLabelItem->setText ( tr ( " Quantum GIS" ) );
144
+ newLabelItem->adjustSizeToText ();
145
+ newLabelItem->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), newLabelItem->rect ().width (), newLabelItem->rect ().height () ) );
146
+ composition ()->addComposerLabel ( newLabelItem );
147
+ emit actionFinished ();
148
+ pushAddRemoveCommand ( newLabelItem, tr ( " Label added" ) );
149
+ }
150
+ break ;
149
151
150
152
case AddScalebar:
151
- {
152
- QgsComposerScaleBar* newScaleBar = new QgsComposerScaleBar ( composition () );
153
- newScaleBar->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), 20 , 20 ) );
154
- addComposerScaleBar ( newScaleBar );
155
- emit actionFinished ();
156
- }
157
- break ;
153
+ if ( composition () )
154
+ {
155
+ QgsComposerScaleBar* newScaleBar = new QgsComposerScaleBar ( composition () );
156
+ newScaleBar->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), 20 , 20 ) );
157
+ composition ()->addComposerScaleBar ( newScaleBar );
158
+ QList<const QgsComposerMap*> mapItemList = composition ()->composerMapItems ();
159
+ if ( mapItemList.size () > 0 )
160
+ {
161
+ newScaleBar->setComposerMap ( mapItemList.at ( 0 ) );
162
+ }
163
+ newScaleBar->applyDefaultSize (); // 4 segments, 1/5 of composer map width
164
+ emit actionFinished ();
165
+ pushAddRemoveCommand ( newScaleBar, tr ( " Scale bar added" ) );
166
+ }
167
+ break ;
158
168
159
169
case AddLegend:
160
170
{
161
- QgsComposerLegend* newLegend = new QgsComposerLegend ( composition () );
162
- newLegend->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), newLegend->rect ().width (), newLegend->rect ().height () ) );
163
- addComposerLegend ( newLegend );
164
- emit actionFinished ();
171
+ if ( composition () )
172
+ {
173
+ QgsComposerLegend* newLegend = new QgsComposerLegend ( composition () );
174
+ newLegend->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), newLegend->rect ().width (), newLegend->rect ().height () ) );
175
+ composition ()->addComposerLegend ( newLegend );
176
+ newLegend->updateLegend ();
177
+ emit actionFinished ();
178
+ pushAddRemoveCommand ( newLegend, tr ( " Legend added" ) );
179
+ }
165
180
break ;
166
181
}
167
182
case AddPicture:
168
- {
169
- QgsComposerPicture* newPicture = new QgsComposerPicture ( composition () );
170
- newPicture->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), 30 , 30 ) );
171
- addComposerPicture ( newPicture );
172
- emit actionFinished ();
183
+ if ( composition () )
184
+ {
185
+ QgsComposerPicture* newPicture = new QgsComposerPicture ( composition () );
186
+ newPicture->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), 30 , 30 ) );
187
+ composition ()->addComposerPicture ( newPicture );
188
+ emit actionFinished ();
189
+ pushAddRemoveCommand ( newPicture, tr ( " Picture added" ) );
190
+ }
173
191
break ;
174
- }
175
192
case AddTable:
176
- {
177
- QgsComposerAttributeTable* newTable = new QgsComposerAttributeTable ( composition () );
178
- newTable->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), 50 , 50 ) );
179
- addComposerTable ( newTable );
180
- emit actionFinished ();
193
+ if ( composition () )
194
+ {
195
+ QgsComposerAttributeTable* newTable = new QgsComposerAttributeTable ( composition () );
196
+ newTable->setSceneRect ( QRectF ( snappedScenePoint.x (), snappedScenePoint.y (), 50 , 50 ) );
197
+ composition ()->addComposerTable ( newTable );
198
+ emit actionFinished ();
199
+ pushAddRemoveCommand ( newTable, tr ( " Table added" ) );
200
+ }
181
201
break ;
182
- }
183
-
184
202
default :
185
203
break ;
186
204
}
@@ -225,39 +243,41 @@ void QgsComposerView::mouseReleaseEvent( QMouseEvent* e )
225
243
break ;
226
244
}
227
245
case AddArrow:
228
- {
229
- QPointF scenePoint = mapToScene ( e->pos () );
230
- QPointF snappedScenePoint = composition ()->snapPointToGrid ( scenePoint );
231
- QgsComposerArrow* composerArrow = new QgsComposerArrow ( mRubberBandStartPos , QPointF ( snappedScenePoint.x (), snappedScenePoint.y () ), composition () );
232
- addComposerArrow ( composerArrow );
233
- scene ()->removeItem ( mRubberBandLineItem );
234
- delete mRubberBandLineItem ;
235
- mRubberBandLineItem = 0 ;
236
- emit actionFinished ();
246
+ if ( composition () )
247
+ {
248
+ QPointF scenePoint = mapToScene ( e->pos () );
249
+ QPointF snappedScenePoint = composition ()->snapPointToGrid ( scenePoint );
250
+ QgsComposerArrow* composerArrow = new QgsComposerArrow ( mRubberBandStartPos , QPointF ( snappedScenePoint.x (), snappedScenePoint.y () ), composition () );
251
+ composition ()->addComposerArrow ( composerArrow );
252
+ scene ()->removeItem ( mRubberBandLineItem );
253
+ delete mRubberBandLineItem ;
254
+ mRubberBandLineItem = 0 ;
255
+ emit actionFinished ();
256
+ pushAddRemoveCommand ( composerArrow, tr ( " Arrow added" ) );
257
+ }
237
258
break ;
238
- }
239
259
240
260
case AddShape:
241
- {
242
261
if ( !mRubberBandItem || mRubberBandItem ->rect ().width () < 0.1 || mRubberBandItem ->rect ().width () < 0.1 )
243
262
{
244
263
scene ()->removeItem ( mRubberBandItem );
245
264
delete mRubberBandItem ;
246
265
mRubberBandItem = 0 ;
247
266
return ;
248
267
}
249
-
250
- QgsComposerShape* composerShape = new QgsComposerShape ( mRubberBandItem ->transform ().dx (), mRubberBandItem ->transform ().dy (), mRubberBandItem ->rect ().width (), mRubberBandItem ->rect ().height (), composition () );
251
- addComposerShape ( composerShape );
252
- scene ()->removeItem ( mRubberBandItem );
253
- delete mRubberBandItem ;
254
- mRubberBandItem = 0 ;
255
- emit actionFinished ();
268
+ if ( composition () )
269
+ {
270
+ QgsComposerShape* composerShape = new QgsComposerShape ( mRubberBandItem ->transform ().dx (), mRubberBandItem ->transform ().dy (), mRubberBandItem ->rect ().width (), mRubberBandItem ->rect ().height (), composition () );
271
+ composition ()->addComposerShape ( composerShape );
272
+ scene ()->removeItem ( mRubberBandItem );
273
+ delete mRubberBandItem ;
274
+ mRubberBandItem = 0 ;
275
+ emit actionFinished ();
276
+ pushAddRemoveCommand ( composerShape, tr ( " Shape added" ) );
277
+ }
256
278
break ;
257
- }
258
279
259
280
case AddMap:
260
- {
261
281
if ( !mRubberBandItem || mRubberBandItem ->rect ().width () < 0.1 || mRubberBandItem ->rect ().width () < 0.1 )
262
282
{
263
283
if ( mRubberBandItem )
@@ -268,15 +288,17 @@ void QgsComposerView::mouseReleaseEvent( QMouseEvent* e )
268
288
}
269
289
return ;
270
290
}
271
-
272
- QgsComposerMap* composerMap = new QgsComposerMap ( composition (), mRubberBandItem ->transform ().dx (), mRubberBandItem ->transform ().dy (), mRubberBandItem ->rect ().width (), mRubberBandItem ->rect ().height () );
273
- addComposerMap ( composerMap );
274
- scene ()->removeItem ( mRubberBandItem );
275
- delete mRubberBandItem ;
276
- mRubberBandItem = 0 ;
277
- emit actionFinished ();
278
- }
279
- break ;
291
+ if ( composition () )
292
+ {
293
+ QgsComposerMap* composerMap = new QgsComposerMap ( composition (), mRubberBandItem ->transform ().dx (), mRubberBandItem ->transform ().dy (), mRubberBandItem ->rect ().width (), mRubberBandItem ->rect ().height () );
294
+ composition ()->addComposerMap ( composerMap );
295
+ scene ()->removeItem ( mRubberBandItem );
296
+ delete mRubberBandItem ;
297
+ mRubberBandItem = 0 ;
298
+ emit actionFinished ();
299
+ pushAddRemoveCommand ( composerMap, tr ( " Map added" ) );
300
+ }
301
+ break ;
280
302
281
303
default :
282
304
break ;
@@ -553,102 +575,6 @@ QgsComposition* QgsComposerView::composition()
553
575
return 0 ;
554
576
}
555
577
556
- void QgsComposerView::addComposerArrow ( QgsComposerArrow* arrow )
557
- {
558
- composition ()->addItem ( arrow );
559
- emit composerArrowAdded ( arrow );
560
- scene ()->clearSelection ();
561
- arrow->setSelected ( true );
562
- emit selectedItemChanged ( arrow );
563
- pushAddRemoveCommand ( arrow, tr ( " Arrow added" ) );
564
- }
565
-
566
- void QgsComposerView::addComposerLabel ( QgsComposerLabel* label )
567
- {
568
- composition ()->addItem ( label );
569
- emit composerLabelAdded ( label );
570
- scene ()->clearSelection ();
571
- label->setSelected ( true );
572
- emit selectedItemChanged ( label );
573
- pushAddRemoveCommand ( label, tr ( " Label added" ) );
574
- }
575
-
576
- void QgsComposerView::addComposerMap ( QgsComposerMap* map )
577
- {
578
- scene ()->addItem ( map );
579
- // set default preview mode to cache. Must be done here between adding composer map to scene and emiting signal
580
- map->setPreviewMode ( QgsComposerMap::Cache );
581
- map->cache ();
582
- emit composerMapAdded ( map );
583
- scene ()->clearSelection ();
584
- map->setSelected ( true );
585
- emit selectedItemChanged ( map );
586
- pushAddRemoveCommand ( map, tr ( " Map added" ) );
587
- }
588
-
589
- void QgsComposerView::addComposerScaleBar ( QgsComposerScaleBar* scaleBar )
590
- {
591
- // take first available map
592
- QList<const QgsComposerMap*> mapItemList = composition ()->composerMapItems ();
593
- if ( mapItemList.size () > 0 )
594
- {
595
- scaleBar->setComposerMap ( mapItemList.at ( 0 ) );
596
- }
597
- scaleBar->applyDefaultSize (); // 4 segments, 1/5 of composer map width
598
- scene ()->addItem ( scaleBar );
599
- emit composerScaleBarAdded ( scaleBar );
600
- scene ()->clearSelection ();
601
- scaleBar->setSelected ( true );
602
- emit selectedItemChanged ( scaleBar );
603
- pushAddRemoveCommand ( scaleBar, tr ( " Scale bar added" ) );
604
- }
605
-
606
- void QgsComposerView::addComposerLegend ( QgsComposerLegend* legend )
607
- {
608
- // take first available map
609
- QList<const QgsComposerMap*> mapItemList = composition ()->composerMapItems ();
610
- if ( mapItemList.size () > 0 )
611
- {
612
- legend->setComposerMap ( mapItemList.at ( 0 ) );
613
- }
614
- scene ()->addItem ( legend );
615
- emit composerLegendAdded ( legend );
616
- scene ()->clearSelection ();
617
- legend->setSelected ( true );
618
- emit selectedItemChanged ( legend );
619
- pushAddRemoveCommand ( legend, tr ( " Legend added" ) );
620
- }
621
-
622
- void QgsComposerView::addComposerPicture ( QgsComposerPicture* picture )
623
- {
624
- scene ()->addItem ( picture );
625
- emit composerPictureAdded ( picture );
626
- scene ()->clearSelection ();
627
- picture->setSelected ( true );
628
- emit selectedItemChanged ( picture );
629
- pushAddRemoveCommand ( picture, tr ( " Picture added" ) );
630
- }
631
-
632
- void QgsComposerView::addComposerShape ( QgsComposerShape* shape )
633
- {
634
- scene ()->addItem ( shape );
635
- emit composerShapeAdded ( shape );
636
- scene ()->clearSelection ();
637
- shape->setSelected ( true );
638
- emit selectedItemChanged ( shape );
639
- pushAddRemoveCommand ( shape, tr ( " Shape added" ) );
640
- }
641
-
642
- void QgsComposerView::addComposerTable ( QgsComposerAttributeTable* table )
643
- {
644
- scene ()->addItem ( table );
645
- emit composerTableAdded ( table );
646
- scene ()->clearSelection ();
647
- table->setSelected ( true );
648
- emit selectedItemChanged ( table );
649
- pushAddRemoveCommand ( table, tr ( " Table added" ) );
650
- }
651
-
652
578
void QgsComposerView::removeItem ( QgsComposerItem* item )
653
579
{
654
580
QgsComposerMap* map = dynamic_cast <QgsComposerMap *>( item );
0 commit comments