30
30
#include < QDialogButtonBox>
31
31
#include < QProgressBar>
32
32
#include < QToolBar>
33
+ #include < QUrl>
33
34
34
35
Qgs3DMapCanvasDockWidget::Qgs3DMapCanvasDockWidget ( QWidget *parent )
35
36
: QgsDockWidget( parent )
@@ -42,13 +43,20 @@ Qgs3DMapCanvasDockWidget::Qgs3DMapCanvasDockWidget( QWidget *parent )
42
43
toolBar->setIconSize ( QgisApp::instance ()->iconSize ( true ) );
43
44
toolBar->addAction ( QgsApplication::getThemeIcon ( QStringLiteral ( " mActionZoomFullExtent.svg" ) ),
44
45
tr ( " Zoom Full" ), this , &Qgs3DMapCanvasDockWidget::resetView );
46
+ toolBar->addAction ( QgsApplication::getThemeIcon ( QStringLiteral ( " mActionSaveMapAsImage.svg" ) ),
47
+ tr ( " Save as image..." ), this , &Qgs3DMapCanvasDockWidget::saveAsImage );
45
48
toolBar->addAction ( QgsApplication::getThemeIcon ( QStringLiteral ( " mIconProperties.svg" ) ),
46
49
tr ( " Configure" ), this , &Qgs3DMapCanvasDockWidget::configure );
47
50
48
51
mCanvas = new Qgs3DMapCanvas ( contentsWidget );
49
52
mCanvas ->setMinimumSize ( QSize ( 200 , 200 ) );
50
53
mCanvas ->setSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Expanding );
51
54
55
+ connect ( mCanvas , &Qgs3DMapCanvas::savedAsImage, this , [ = ]( const QString fileName )
56
+ {
57
+ QgisApp::instance ()->messageBar ()->pushSuccess ( tr ( " Save as Image" ), tr ( " Successfully saved the 3D map to <a href=\" %1\" >%2</a>" ).arg ( QUrl::fromLocalFile ( QFileInfo ( fileName ).path () ).toString (), fileName ) );
58
+ } );
59
+
52
60
mLabelPendingJobs = new QLabel ( this );
53
61
mProgressPendingJobs = new QProgressBar ( this );
54
62
mProgressPendingJobs ->setRange ( 0 , 0 );
@@ -74,6 +82,15 @@ Qgs3DMapCanvasDockWidget::Qgs3DMapCanvasDockWidget( QWidget *parent )
74
82
onTerrainPendingJobsCountChanged ();
75
83
}
76
84
85
+ void Qgs3DMapCanvasDockWidget::saveAsImage ()
86
+ {
87
+ QPair< QString, QString> fileNameAndFilter = QgsGuiUtils::getSaveAsImageName ( this , tr ( " Choose a file name to save the 3D map canvas to an image" ) );
88
+ if ( !fileNameAndFilter.first .isEmpty () )
89
+ {
90
+ mCanvas ->saveAsImage ( fileNameAndFilter.first , fileNameAndFilter.second );
91
+ }
92
+ }
93
+
77
94
void Qgs3DMapCanvasDockWidget::setMapSettings ( Qgs3DMapSettings *map )
78
95
{
79
96
mCanvas ->setMap ( map );
0 commit comments