[QGIS Commit] r9117 - branches/advanced_printing_branch/src/app/composer

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Aug 22 03:24:35 EDT 2008


Author: mhugent
Date: 2008-08-22 03:24:34 -0400 (Fri, 22 Aug 2008)
New Revision: 9117

Modified:
   branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposermap.h
Log:
Update composer map in case layers have been added or removed

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp	2008-08-22 07:00:58 UTC (rev 9116)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp	2008-08-22 07:24:34 UTC (rev 9117)
@@ -21,6 +21,7 @@
 #include "qgslogger.h"
 #include "qgsmaprenderer.h"
 #include "qgsmaplayer.h"
+#include "qgsmaplayerregistry.h"
 #include "qgsmaptopixel.h"
 #include "qgsproject.h"
 #include "qgsmaprenderer.h"
@@ -54,6 +55,8 @@
     mXOffset = 0.0;
     mYOffset = 0.0;
 
+    connectUpdateSlot();
+
     //calculate mExtent based on width/height ratio and map canvas extent
     if(mMapRenderer)
       {
@@ -62,9 +65,7 @@
     setSceneRect(QRectF(x, y, width, height));
 
     QGraphicsRectItem::setZValue(20);
-
     
-
     setToolTip(tr("Map") + " " + QString::number(mId));
 
     QGraphicsRectItem::show();
@@ -76,6 +77,8 @@
   //Offset
   mXOffset = 0.0;
   mYOffset = 0.0;
+
+  connectUpdateSlot();
   
   mComposition = composition;
   mMapRenderer = mComposition->mapRenderer();
@@ -226,6 +229,7 @@
 void QgsComposerMap::mapCanvasChanged ( void ) 
 {
     mCacheUpdated = false;
+    cache();
     QGraphicsRectItem::update();
 }
 
@@ -347,6 +351,17 @@
   return result;
 }
 
+void QgsComposerMap::connectUpdateSlot()
+{
+  //connect signal from layer registry to update in case of new or deleted layers
+    QgsMapLayerRegistry* layerRegistry = QgsMapLayerRegistry::instance();
+    if(layerRegistry)
+      {
+	connect(layerRegistry, SIGNAL(layerWillBeRemoved(QString)), this, SLOT(mapCanvasChanged()));
+	connect(layerRegistry, SIGNAL(layerWasAdded(QgsMapLayer*)), this, SLOT(mapCanvasChanged()));
+      }
+}
+
 bool QgsComposerMap::writeXML(QDomElement& elem, QDomDocument & doc)
 {
   if(elem.isNull())

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposermap.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposermap.h	2008-08-22 07:00:58 UTC (rev 9116)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposermap.h	2008-08-22 07:24:34 UTC (rev 9117)
@@ -111,14 +111,14 @@
     /**Sets offset values to shift image (useful for live updates when moving item content)*/
     void setOffset(double xOffset, double yOffset);
 
-    /** stores state in Dom node
-     * @param elem is Dom element corresponding to 'Composer' tag
+    /** stores state in DOM node
+     * @param elem is DOM element corresponding to 'Composer' tag
      * @param temp write template file
      */
     bool writeXML(QDomElement& elem, QDomDocument & doc);
 
-    /** sets state from Dom document
-     * @param itemElem is Dom node corresponding to 'ComposerMap' tag
+    /** sets state from DOM document
+     * @param itemElem is DOM node corresponding to 'ComposerMap' tag
      */
     bool readXML(const QDomElement& itemElem, const QDomDocument& doc);
 
@@ -176,6 +176,9 @@
     /**For the generation of new unique ids*/
     static int mCurrentComposerId;
 
+    /**Etablishes signal/slot connection for update in case of layer change*/
+    void connectUpdateSlot();
+
     /**Returns the zoom factor of the graphics view. If no 
      graphics view exists, the default 1 is returned*/
     double horizontalViewScaleFactor() const;



More information about the QGIS-commit mailing list