[QGIS Commit] r14549 - in trunk/qgis/src: app/composer core/composer ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Nov 12 04:48:59 EST 2010


Author: mhugent
Date: 2010-11-12 01:48:58 -0800 (Fri, 12 Nov 2010)
New Revision: 14549

Modified:
   trunk/qgis/src/app/composer/qgscomposermapwidget.cpp
   trunk/qgis/src/app/composer/qgscomposermapwidget.h
   trunk/qgis/src/core/composer/qgscomposermap.cpp
   trunk/qgis/src/core/composer/qgscomposermap.h
   trunk/qgis/src/ui/qgscomposermapwidgetbase.ui
Log:
Add option to turn on / off printing of canvas item in composer map (ticket #2734)

Modified: trunk/qgis/src/app/composer/qgscomposermapwidget.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgscomposermapwidget.cpp	2010-11-12 08:14:16 UTC (rev 14548)
+++ trunk/qgis/src/app/composer/qgscomposermapwidget.cpp	2010-11-12 09:48:58 UTC (rev 14549)
@@ -292,6 +292,16 @@
       mKeepLayerListCheckBox->setCheckState( Qt::Unchecked );
     }
 
+    //draw canvas items
+    if ( mComposerMap->drawCanvasItems() )
+    {
+      mDrawCanvasItemsCheckBox->setCheckState( Qt::Checked );
+    }
+    else
+    {
+      mDrawCanvasItemsCheckBox->setCheckState( Qt::Unchecked );
+    }
+
     //grid
     if ( mComposerMap->gridEnabled() )
     {
@@ -418,6 +428,7 @@
   mDistanceToMapFrameSpinBox->blockSignals( b );
   mAnnotationDirectionComboBox->blockSignals( b );
   mCoordinatePrecisionSpinBox->blockSignals( b );
+  mDrawCanvasItemsCheckBox->blockSignals( b );
 }
 
 void QgsComposerMapWidget::on_mUpdatePreviewButton_clicked()
@@ -461,6 +472,21 @@
   }
 }
 
+void QgsComposerMapWidget::on_mDrawCanvasItemsCheckBox_stateChanged( int state )
+{
+  if ( !mComposerMap )
+  {
+    return;
+  }
+
+  mComposerMap->setDrawCanvasItems( state == Qt::Checked );
+  mUpdatePreviewButton->setEnabled( false ); //prevent crashes because of many button clicks
+  mComposerMap->setCacheUpdated( false );
+  mComposerMap->cache();
+  mComposerMap->update();
+  mUpdatePreviewButton->setEnabled( true );
+}
+
 void QgsComposerMapWidget::on_mGridCheckBox_toggled( bool state )
 {
   if ( !mComposerMap )

Modified: trunk/qgis/src/app/composer/qgscomposermapwidget.h
===================================================================
--- trunk/qgis/src/app/composer/qgscomposermapwidget.h	2010-11-12 08:14:16 UTC (rev 14548)
+++ trunk/qgis/src/app/composer/qgscomposermapwidget.h	2010-11-12 09:48:58 UTC (rev 14549)
@@ -43,6 +43,7 @@
     void on_mSetToMapCanvasExtentButton_clicked();
     void on_mUpdatePreviewButton_clicked();
     void on_mKeepLayerListCheckBox_stateChanged( int state );
+    void on_mDrawCanvasItemsCheckBox_stateChanged( int state );
 
     void on_mXMinLineEdit_editingFinished();
     void on_mXMaxLineEdit_editingFinished();

Modified: trunk/qgis/src/core/composer/qgscomposermap.cpp
===================================================================
--- trunk/qgis/src/core/composer/qgscomposermap.cpp	2010-11-12 08:14:16 UTC (rev 14548)
+++ trunk/qgis/src/core/composer/qgscomposermap.cpp	2010-11-12 09:48:58 UTC (rev 14549)
@@ -43,7 +43,8 @@
 QgsComposerMap::QgsComposerMap( QgsComposition *composition, int x, int y, int width, int height )
     : QgsComposerItem( x, y, width, height, composition ), mKeepLayerSet( false ), mGridEnabled( false ), mGridStyle( Solid ), \
     mGridIntervalX( 0.0 ), mGridIntervalY( 0.0 ), mGridOffsetX( 0.0 ), mGridOffsetY( 0.0 ), mGridAnnotationPrecision( 3 ), mShowGridAnnotation( false ), \
-    mGridAnnotationPosition( OutsideMapFrame ), mAnnotationFrameDistance( 1.0 ), mGridAnnotationDirection( Horizontal ), mCrossLength( 3 ), mMapCanvas( 0 )
+    mGridAnnotationPosition( OutsideMapFrame ), mAnnotationFrameDistance( 1.0 ), mGridAnnotationDirection( Horizontal ),
+    mCrossLength( 3 ), mMapCanvas( 0 ), mDrawCanvasItems( true )
 {
   mComposition = composition;
   mId = mComposition->composerMapItems().size();
@@ -74,7 +75,8 @@
 QgsComposerMap::QgsComposerMap( QgsComposition *composition )
     : QgsComposerItem( 0, 0, 10, 10, composition ), mKeepLayerSet( false ), mGridEnabled( false ), mGridStyle( Solid ), \
     mGridIntervalX( 0.0 ), mGridIntervalY( 0.0 ), mGridOffsetX( 0.0 ), mGridOffsetY( 0.0 ), mGridAnnotationPrecision( 3 ), mShowGridAnnotation( false ), \
-    mGridAnnotationPosition( OutsideMapFrame ), mAnnotationFrameDistance( 1.0 ), mGridAnnotationDirection( Horizontal ), mCrossLength( 3 ), mMapCanvas( 0 )
+    mGridAnnotationPosition( OutsideMapFrame ), mAnnotationFrameDistance( 1.0 ), mGridAnnotationDirection( Horizontal ), mCrossLength( 3 ),
+    mMapCanvas( 0 ), mDrawCanvasItems( true )
 {
   //Offset
   mXOffset = 0.0;
@@ -604,6 +606,15 @@
     composerMapElem.setAttribute( "keepLayerSet", "false" );
   }
 
+  if ( mDrawCanvasItems )
+  {
+    composerMapElem.setAttribute( "drawCanvasItems", "true" );
+  }
+  else
+  {
+    composerMapElem.setAttribute( "drawCanvasItems", "false" );
+  }
+
   //extent
   QDomElement extentElem = doc.createElement( "Extent" );
   extentElem.setAttribute( "xmin", mExtent.xMinimum() );
@@ -708,6 +719,16 @@
     mKeepLayerSet = false;
   }
 
+  QString drawCanvasItemsFlag = itemElem.attribute( "drawCanvasItems" );
+  if ( drawCanvasItemsFlag.compare( "true", Qt::CaseInsensitive ) == 0 )
+  {
+    mDrawCanvasItems = true;
+  }
+  else
+  {
+    mDrawCanvasItems = false;
+  }
+
   //mLayerSet
   QDomNodeList layerSetNodeList = itemElem.elementsByTagName( "LayerSet" );
   QStringList layerSet;
@@ -1410,7 +1431,7 @@
 
 void QgsComposerMap::drawCanvasItems( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle )
 {
-  if ( !mMapCanvas )
+  if ( !mMapCanvas || !mDrawCanvasItems )
   {
     return;
   }

Modified: trunk/qgis/src/core/composer/qgscomposermap.h
===================================================================
--- trunk/qgis/src/core/composer/qgscomposermap.h	2010-11-12 08:14:16 UTC (rev 14548)
+++ trunk/qgis/src/core/composer/qgscomposermap.h	2010-11-12 09:48:58 UTC (rev 14549)
@@ -254,6 +254,9 @@
     /**Sets canvas pointer (necessary to query and draw map canvas items)*/
     void setMapCanvas( QGraphicsView* canvas ) { mMapCanvas = canvas; }
 
+    void setDrawCanvasItems( bool b ) { mDrawCanvasItems = b; }
+    bool drawCanvasItems() const { return mDrawCanvasItems; }
+
   public slots:
 
     /**Called if map canvas has changed*/
@@ -351,6 +354,8 @@
     /**The length of the cross sides for mGridStyle Cross*/
     double mCrossLength;
     QGraphicsView* mMapCanvas;
+    /**True if annotation items, rubber band, etc. from the main canvas should be displayed*/
+    bool mDrawCanvasItems;
 
     /**Draws the map grid*/
     void drawGrid( QPainter* p );

Modified: trunk/qgis/src/ui/qgscomposermapwidgetbase.ui
===================================================================
--- trunk/qgis/src/ui/qgscomposermapwidgetbase.ui	2010-11-12 08:14:16 UTC (rev 14548)
+++ trunk/qgis/src/ui/qgscomposermapwidgetbase.ui	2010-11-12 09:48:58 UTC (rev 14549)
@@ -34,7 +34,7 @@
         <x>0</x>
         <y>0</y>
         <width>377</width>
-        <height>455</height>
+        <height>414</height>
        </rect>
       </property>
       <attribute name="label">
@@ -178,7 +178,14 @@
             </item>
            </layout>
           </item>
-          <item row="10" column="0">
+          <item row="10" column="0" colspan="2">
+           <widget class="QCheckBox" name="mDrawCanvasItemsCheckBox">
+            <property name="text">
+             <string>Draw map canvas items</string>
+            </property>
+           </widget>
+          </item>
+          <item row="11" column="0">
            <spacer name="verticalSpacer">
             <property name="orientation">
              <enum>Qt::Vertical</enum>
@@ -202,7 +209,7 @@
         <x>0</x>
         <y>0</y>
         <width>394</width>
-        <height>347</height>
+        <height>356</height>
        </rect>
       </property>
       <attribute name="label">
@@ -319,7 +326,7 @@
         <x>0</x>
         <y>0</y>
         <width>377</width>
-        <height>789</height>
+        <height>720</height>
        </rect>
       </property>
       <attribute name="label">



More information about the QGIS-commit mailing list