[QGIS Commit] r13660 - in trunk/qgis/src/core: . composer
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Jun 5 10:06:52 EDT 2010
Author: mhugent
Date: 2010-06-05 10:06:51 -0400 (Sat, 05 Jun 2010)
New Revision: 13660
Modified:
trunk/qgis/src/core/CMakeLists.txt
trunk/qgis/src/core/composer/qgslegendmodel.cpp
trunk/qgis/src/core/composer/qgslegendmodel.h
Log:
Some changes to use qgslegendmodel without a running x-server
Modified: trunk/qgis/src/core/CMakeLists.txt
===================================================================
--- trunk/qgis/src/core/CMakeLists.txt 2010-06-05 13:21:40 UTC (rev 13659)
+++ trunk/qgis/src/core/CMakeLists.txt 2010-06-05 14:06:51 UTC (rev 13660)
@@ -428,6 +428,9 @@
qgsvectoroverlay.h
qgstolerance.h
+ composer/qgslegendmodel.h
+ composer/qgscomposerlegenditem.h
+
raster/qgscliptominmaxenhancement.h
raster/qgscolorrampshader.h
raster/qgscolorrampshader.h
Modified: trunk/qgis/src/core/composer/qgslegendmodel.cpp
===================================================================
--- trunk/qgis/src/core/composer/qgslegendmodel.cpp 2010-06-05 13:21:40 UTC (rev 13659)
+++ trunk/qgis/src/core/composer/qgslegendmodel.cpp 2010-06-05 14:06:51 UTC (rev 13660)
@@ -27,6 +27,7 @@
#include "qgssymbol.h"
#include "qgsvectordataprovider.h"
#include "qgsvectorlayer.h"
+#include <QApplication>
#include <QDomDocument>
#include <QDomElement>
#include <QMimeData>
@@ -40,6 +41,9 @@
connect( QgsMapLayerRegistry::instance(), SIGNAL( layerWasAdded( QgsMapLayer* ) ), this, SLOT( addLayer( QgsMapLayer* ) ) );
}
setItemPrototype( new QgsComposerSymbolItem() );
+
+ QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
+ mHasTopLevelWindow = ( topLevelWidgets.size() > 0 );
}
QgsLegendModel::~QgsLegendModel()
@@ -147,7 +151,10 @@
currentSymbolItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
if ( symbolIt->second )
{
- currentSymbolItem->setIcon( QgsSymbolLayerV2Utils::symbolPreviewIcon( symbolIt->second, QSize( 30, 30 ) ) );
+ if ( mHasTopLevelWindow ) //only use QIcon / QPixmap if we have a running x-server
+ {
+ currentSymbolItem->setIcon( QgsSymbolLayerV2Utils::symbolPreviewIcon( symbolIt->second, QSize( 30, 30 ) ) );
+ }
currentSymbolItem->setSymbolV2( symbolIt->second->clone() );
}
layerItem->setChild( layerItem->rowCount(), 0, currentSymbolItem );
@@ -228,8 +235,12 @@
return 2;
}
+ QgsComposerRasterSymbolItem* currentSymbolItem = new QgsComposerRasterSymbolItem();
//use a vector symbol item without symbol
- QgsComposerRasterSymbolItem* currentSymbolItem = new QgsComposerRasterSymbolItem( QIcon( rasterLayer->legendAsPixmap( true ) ), "" );
+ if ( mHasTopLevelWindow ) //only use QIcon / QPixmap if we have a running x-server
+ {
+ currentSymbolItem->setIcon( QIcon( rasterLayer->legendAsPixmap( true ) ) );
+ }
currentSymbolItem->setLayerID( rasterLayer->getLayerID() );
int currentRowCount = layerItem->rowCount();
layerItem->setChild( currentRowCount, 0, currentSymbolItem );
@@ -421,7 +432,11 @@
}
}
- currentSymbolItem = new QgsComposerSymbolItem( QIcon( QPixmap::fromImage( symbolImage ) ), itemText );
+ currentSymbolItem = new QgsComposerSymbolItem( itemText );
+ if ( mHasTopLevelWindow )//only use QIcon / QPixmap if we have a running x-server
+ {
+ currentSymbolItem->setIcon( QIcon( QPixmap::fromImage( symbolImage ) ) );
+ }
if ( !currentSymbolItem )
{
Modified: trunk/qgis/src/core/composer/qgslegendmodel.h
===================================================================
--- trunk/qgis/src/core/composer/qgslegendmodel.h 2010-06-05 13:21:40 UTC (rev 13659)
+++ trunk/qgis/src/core/composer/qgslegendmodel.h 2010-06-05 14:06:51 UTC (rev 13660)
@@ -109,6 +109,9 @@
protected:
QStringList mLayerIds;
+ /**True if this application has toplevel windows (normally true). If this is false, this means that the application
+ might not have a running x-server on unix systems and so QPixmap and QIcon cannot be used*/
+ bool mHasTopLevelWindow;
};
#endif
More information about the QGIS-commit
mailing list