1 /***************************************************************************
2 testrenderergui.cpp
3 ---------------------
4 begin : January 2012
5 copyright : (C) 2012 by Martin Dobias
6 email : wonder.sk at gmail.com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15 #include "testrenderergui.h"
16
17 #include <qgsapplication.h>
18 #include <qgsmapcanvas.h>
19 #include <qgsvectorlayer.h>
20 #include <qgsproject.h>
21 #include <qgsrendererpropertiesdialog.h>
22 #include <qgsstyle.h>
23
24 #include <QApplication>
25 #include <QToolBar>
26
TestRendererGUI(QWidget * parent)27 TestRendererGUI::TestRendererGUI( QWidget *parent )
28 : QMainWindow( parent )
29 {
30 resize( 640, 480 );
31
32 QToolBar *toolBar = addToolBar( "Actions" );
33 toolBar->addAction( "set renderer", this, SLOT( setRenderer() ) );
34
35 mMapCanvas = new QgsMapCanvas( this );
36 mMapCanvas->setCanvasColor( Qt::white );
37 setCentralWidget( mMapCanvas );
38
39 connect( QgsProject::instance(), SIGNAL( readProject( QDomDocument ) ), mMapCanvas, SLOT( readProject( QDomDocument ) ) );
40 }
41
loadLayers()42 void TestRendererGUI::loadLayers()
43 {
44 // load just first vector layer
45 QList<QgsMapLayer *> canvasLayers;
46 foreach ( QgsMapLayer *layer, QgsProject::instance()->mapLayers().values() )
47 {
48 if ( layer->type() == QgsMapLayerType::VectorLayer )
49 canvasLayers << layer;
50 }
51
52 mMapCanvas->setLayers( canvasLayers );
53 }
54
setRenderer()55 void TestRendererGUI::setRenderer()
56 {
57 QgsMapLayer *layer = mMapCanvas->layer( 0 );
58 QVERIFY( layer );
59 QVERIFY( layer->type() == QgsMapLayerType::VectorLayer );
60 QgsVectorLayer *vlayer = static_cast<QgsVectorLayer *>( layer );
61
62 QgsRendererPropertiesDialog dlg( vlayer, QgsStyle::defaultStyle() );
63 dlg.exec();
64
65 mMapCanvas->refresh();
66 }
67
main(int argc,char * argv[])68 int main( int argc, char *argv[] )
69 {
70 QApplication app( argc, argv );
71
72 if ( argc < 2 )
73 {
74 qDebug( "Provide a project file name with at least one vector layer!" );
75 return 1;
76 }
77
78 QgsApplication::init();
79 QgsApplication::initQgis();
80
81 TestRendererGUI gui;
82
83 QString projectFileName( argv[1] );
84 QgsProject::instance()->setFileName( projectFileName );
85 bool res = QgsProject::instance()->read();
86 if ( !res )
87 {
88 qDebug( "Failed to open project!" );
89 return 1;
90 }
91
92 // the layers are in the registry - now load them!
93 gui.loadLayers();
94
95 gui.show();
96 return app.exec();
97 }
98