[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