@@ -446,8 +446,13 @@ bool QgsComposition::loadFromTemplate( const QDomDocument& doc, QMap<QString, QS
446
446
}
447
447
448
448
void QgsComposition::addItemsFromXML ( const QDomElement& elem, const QDomDocument& doc, QMap< QgsComposerMap*, int >* mapsToRestore,
449
- bool addUndoCommands, QPointF* pos )
449
+ bool addUndoCommands, QPointF* pos, bool pasteInPlace )
450
450
{
451
+ QPointF* pasteInPlacePt;
452
+ if ( pasteInPlace )
453
+ {
454
+ pasteInPlacePt = new QPointF (0 , pageNumberAt ( *pos ) * (mPageHeight +mSpaceBetweenPages ) );
455
+ }
451
456
QDomNodeList composerLabelList = elem.elementsByTagName ( " ComposerLabel" );
452
457
for ( int i = 0 ; i < composerLabelList.size (); ++i )
453
458
{
@@ -456,7 +461,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
456
461
newLabel->readXML ( currentComposerLabelElem, doc );
457
462
if ( pos )
458
463
{
459
- newLabel->setItemPosition ( pos->x (), pos->y () );
464
+ if ( pasteInPlace )
465
+ {
466
+ newLabel->setItemPosition ( newLabel->transform ().dx (), fmod (newLabel->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
467
+ newLabel->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
468
+ }
469
+ else
470
+ {
471
+ newLabel->setItemPosition ( pos->x (), pos->y () );
472
+ }
460
473
}
461
474
addComposerLabel ( newLabel );
462
475
if ( addUndoCommands )
@@ -482,7 +495,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
482
495
483
496
if ( pos )
484
497
{
485
- newMap->setItemPosition ( pos->x (), pos->y () );
498
+ if ( pasteInPlace )
499
+ {
500
+ newMap->setItemPosition ( newMap->transform ().dx (), fmod (newMap->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
501
+ newMap->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
502
+ }
503
+ else
504
+ {
505
+ newMap->setItemPosition ( pos->x (), pos->y () );
506
+ }
486
507
}
487
508
488
509
if ( addUndoCommands )
@@ -499,7 +520,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
499
520
newArrow->readXML ( currentComposerArrowElem, doc );
500
521
if ( pos )
501
522
{
502
- newArrow->setItemPosition ( pos->x (), pos->y () );
523
+ if ( pasteInPlace )
524
+ {
525
+ newArrow->setItemPosition ( newArrow->transform ().dx (), fmod (newArrow->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
526
+ newArrow->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
527
+ }
528
+ else
529
+ {
530
+ newArrow->setItemPosition ( pos->x (), pos->y () );
531
+ }
503
532
}
504
533
addComposerArrow ( newArrow );
505
534
if ( addUndoCommands )
@@ -516,7 +545,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
516
545
newScaleBar->readXML ( currentComposerScaleBarElem, doc );
517
546
if ( pos )
518
547
{
519
- newScaleBar->setItemPosition ( pos->x (), pos->y () );
548
+ if ( pasteInPlace )
549
+ {
550
+ newScaleBar->setItemPosition ( newScaleBar->transform ().dx (), fmod (newScaleBar->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
551
+ newScaleBar->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
552
+ }
553
+ else
554
+ {
555
+ newScaleBar->setItemPosition ( pos->x (), pos->y () );
556
+ }
520
557
}
521
558
addComposerScaleBar ( newScaleBar );
522
559
if ( addUndoCommands )
@@ -533,7 +570,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
533
570
newShape->readXML ( currentComposerShapeElem, doc );
534
571
if ( pos )
535
572
{
536
- newShape->setItemPosition ( pos->x (), pos->y () );
573
+ if ( pasteInPlace )
574
+ {
575
+ newShape->setItemPosition ( newShape->transform ().dx (), fmod (newShape->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
576
+ newShape->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
577
+ }
578
+ else
579
+ {
580
+ newShape->setItemPosition ( pos->x (), pos->y () );
581
+ }
537
582
}
538
583
addComposerShape ( newShape );
539
584
if ( addUndoCommands )
@@ -550,7 +595,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
550
595
newPicture->readXML ( currentComposerPictureElem, doc );
551
596
if ( pos )
552
597
{
553
- newPicture->setItemPosition ( pos->x (), pos->y () );
598
+ if ( pasteInPlace )
599
+ {
600
+ newPicture->setItemPosition ( newPicture->transform ().dx (), fmod (newPicture->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
601
+ newPicture->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
602
+ }
603
+ else
604
+ {
605
+ newPicture->setItemPosition ( pos->x (), pos->y () );
606
+ }
554
607
}
555
608
addComposerPicture ( newPicture );
556
609
if ( addUndoCommands )
@@ -567,7 +620,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
567
620
newLegend->readXML ( currentComposerLegendElem, doc );
568
621
if ( pos )
569
622
{
570
- newLegend->setItemPosition ( pos->x (), pos->y () );
623
+ if ( pasteInPlace )
624
+ {
625
+ newLegend->setItemPosition ( newLegend->transform ().dx (), fmod (newLegend->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
626
+ newLegend->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
627
+ }
628
+ else
629
+ {
630
+ newLegend->setItemPosition ( pos->x (), pos->y () );
631
+ }
571
632
}
572
633
addComposerLegend ( newLegend );
573
634
if ( addUndoCommands )
@@ -584,7 +645,15 @@ void QgsComposition::addItemsFromXML( const QDomElement& elem, const QDomDocumen
584
645
newTable->readXML ( currentComposerTableElem, doc );
585
646
if ( pos )
586
647
{
587
- newTable->setItemPosition ( pos->x (), pos->y () );
648
+ if ( pasteInPlace )
649
+ {
650
+ newTable->setItemPosition ( newTable->transform ().dx (), fmod (newTable->transform ().dy (), (paperHeight ()+spaceBetweenPages ()) ) );
651
+ newTable->move ( pasteInPlacePt->x (),pasteInPlacePt->y () );
652
+ }
653
+ else
654
+ {
655
+ newTable->setItemPosition ( pos->x (), pos->y () );
656
+ }
588
657
}
589
658
addComposerTable ( newTable );
590
659
if ( addUndoCommands )
0 commit comments