[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