[QGIS Commit] r11357 - in trunk/qgis/src: app app/composer gui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Wed Aug 12 07:18:27 EDT 2009


Author: mhugent
Date: 2009-08-12 07:18:27 -0400 (Wed, 12 Aug 2009)
New Revision: 11357

Modified:
   trunk/qgis/src/app/composer/qgscomposer.cpp
   trunk/qgis/src/app/qgisapp.cpp
   trunk/qgis/src/gui/qgscomposerview.cpp
Log:
Delete composer before removing all the layers when leaving the application or the project. Fix for a memory bug in composer

Modified: trunk/qgis/src/app/composer/qgscomposer.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgscomposer.cpp	2009-08-12 10:54:38 UTC (rev 11356)
+++ trunk/qgis/src/app/composer/qgscomposer.cpp	2009-08-12 11:18:27 UTC (rev 11357)
@@ -206,9 +206,6 @@
 
   mCompositionNameComboBox->insertItem( 0, tr( "Map 1" ) );
 
-  //mComposition  = new QgsComposition( this, 1 );
-  //mComposition->setActive ( true );
-
   // Create size grip (needed by Mac OS X for QMainWindow if QStatusBar is not visible)
   mSizeGrip = new QSizeGrip( this );
   mSizeGrip->resize( mSizeGrip->sizeHint() );
@@ -229,6 +226,13 @@
 
 QgsComposer::~QgsComposer()
 {
+  //delete all the items
+  QMap<QgsComposerItem*, QWidget*>::iterator it = mItemWidgetMap.begin();
+  for ( ; it != mItemWidgetMap.end(); ++it )
+  {
+    delete it.key();
+    delete it.value();
+  }
 }
 
 void QgsComposer::setupTheme()
@@ -1252,6 +1256,7 @@
     return;
   }
 
+  delete( it.key() );
   delete( it.value() );
   mItemWidgetMap.remove( it.key() );
 }

Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp	2009-08-12 10:54:38 UTC (rev 11356)
+++ trunk/qgis/src/app/qgisapp.cpp	2009-08-12 11:18:27 UTC (rev 11357)
@@ -3026,6 +3026,9 @@
 
   if ( saveDirty() )
   {
+    delete mComposer;
+    mComposer = 0;
+
     mMapCanvas->freeze( true );
     removeAllLayers();
     qApp->exit( 0 );
@@ -3048,6 +3051,9 @@
     return;
   }
 
+  delete mComposer;
+  mComposer = new QgsComposer( this );
+
   if ( thePromptToSaveFlag )
   {
     if ( !saveDirty() )
@@ -3065,9 +3071,6 @@
   removeAllLayers();
   mMapCanvas->clear();
 
-  delete mComposer;
-  mComposer = new QgsComposer( this );
-
   QgsProject* prj = QgsProject::instance();
   prj->title( QString::null );
   prj->setFileName( QString::null );
@@ -3283,13 +3286,13 @@
 
     delete openFileDialog;
 
+    delete mComposer;
+    mComposer = new QgsComposer( this );
+
     // clear out any stuff from previous project
     mMapCanvas->freeze( true );
     removeAllLayers();
 
-    delete mComposer;
-    mComposer = new QgsComposer( this );
-
     QgsProject::instance()->setFileName( fullPath );
 
     try
@@ -3341,13 +3344,13 @@
 
   QApplication::setOverrideCursor( Qt::WaitCursor );
 
-  // clear the map canvas
-  removeAllLayers();
-
   //clear the composer
   delete mComposer;
   mComposer = new QgsComposer( this );
 
+  // clear the map canvas
+  removeAllLayers();
+
   try
   {
     if ( QgsProject::instance()->read( projectFile ) )
@@ -3669,45 +3672,8 @@
   return ok;
 }
 
-
-#if 0
 void QgisApp::filePrint()
 {
-//
-//  Warn the user first that priting is experimental still
-//
-  QString myHeading = "QGIS Printing Support is Experimental";
-  QString myMessage = "Please note that printing only works on A4 landscape at the moment.\n";
-  myMessage += "For other page sizes your mileage may vary.\n";
-  QMessageBox::information( this, tr( myHeading ), tr( myMessage ) );
-
-  QPrinter myQPrinter;
-  if ( myQPrinter.setup( this ) )
-  {
-    QgsDebugMsg( ".............................." );
-    QgsDebugMsg( "...........Printing..........." );
-    QgsDebugMsg( ".............................." );
-// Ithought we could just do this:
-//mMapCanvas->render(&myQPrinter);
-//but it doesnt work so now we try this....
-    QPaintDeviceMetrics myMetrics( &myQPrinter ); // need width/height of printer surface
-    QgsDebugMsg( QString( "Print device width: %1" ).arg( myMetrics.width() ) );
-    QgsDebugMsg( QString( "Print device height: %1" ).arg( myMetrics.height() ) );
-    QPainter myQPainter;
-    myQPainter.begin( &myQPrinter );
-    QPixmap myQPixmap( myMetrics.width(), myMetrics.height() );
-    myQPixmap.fill();
-    mMapCanvas->freeze( false );
-    mMapCanvas->setDirty( true );
-    mMapCanvas->render( &myQPixmap );
-    myQPainter.drawPixmap( 0, 0, myQPixmap );
-    myQPainter.end();
-  }
-}
-#endif
-
-void QgisApp::filePrint()
-{
   if ( mMapCanvas && mMapCanvas->isDrawing() )
   {
     return;

Modified: trunk/qgis/src/gui/qgscomposerview.cpp
===================================================================
--- trunk/qgis/src/gui/qgscomposerview.cpp	2009-08-12 10:54:38 UTC (rev 11356)
+++ trunk/qgis/src/gui/qgscomposerview.cpp	2009-08-12 11:18:27 UTC (rev 11357)
@@ -311,7 +311,6 @@
     for ( ; itemIt != composerItemList.end(); ++itemIt )
     {
       composition()->removeItem( *itemIt );
-      delete( *itemIt );
       emit itemRemoved( *itemIt );
     }
   }



More information about the QGIS-commit mailing list