1 /***************************************************************************
2 qgsmeshrenderermeshsettingswidget.cpp
3 ---------------------------------------
4 begin : June 2018
5 copyright : (C) 2018 by Peter Petrik
6 email : zilolv at gmail dot 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
16 #include "qgsmeshrenderermeshsettingswidget.h"
17 #include <QtGlobal>
18
19 #include "qgis.h"
20 #include "qgsmapcanvas.h"
21 #include "qgsmeshlayer.h"
22 #include "qgsrasterlayer.h"
23 #include "raster/qgsrasterminmaxwidget.h"
24 #include "qgsrasterminmaxorigin.h"
25 #include "qgsmessagelog.h"
26 #include "qgscolorbutton.h"
27 #include "qgsdoublespinbox.h"
28
QgsMeshRendererMeshSettingsWidget(QWidget * parent)29 QgsMeshRendererMeshSettingsWidget::QgsMeshRendererMeshSettingsWidget( QWidget *parent )
30 : QWidget( parent )
31
32 {
33 setupUi( this );
34
35 mLineUnitsComboBox->setUnits( QgsUnitTypes::RenderUnitList()
36 << QgsUnitTypes::RenderMillimeters
37 << QgsUnitTypes::RenderMetersInMapUnits
38 << QgsUnitTypes::RenderPixels
39 << QgsUnitTypes::RenderPoints );
40
41
42 connect( mColorWidget, &QgsColorButton::colorChanged, this, &QgsMeshRendererMeshSettingsWidget::widgetChanged );
43 connect( mLineWidthSpinBox, qOverload<double>( &QgsDoubleSpinBox::valueChanged ),
44 this, &QgsMeshRendererMeshSettingsWidget::widgetChanged );
45 connect( mLineUnitsComboBox, &QgsUnitSelectionWidget::changed,
46 this, &QgsMeshRendererMeshSettingsWidget::widgetChanged );
47 }
48
setLayer(QgsMeshLayer * layer,MeshType meshType)49 void QgsMeshRendererMeshSettingsWidget::setLayer( QgsMeshLayer *layer, MeshType meshType )
50 {
51 mMeshType = meshType;
52 mMeshLayer = layer;
53 }
54
settings() const55 QgsMeshRendererMeshSettings QgsMeshRendererMeshSettingsWidget::settings() const
56 {
57 QgsMeshRendererMeshSettings settings;
58 settings.setColor( mColorWidget->color() );
59 settings.setLineWidth( mLineWidthSpinBox->value() );
60 settings.setLineWidthUnit( mLineUnitsComboBox->unit() );
61 return settings;
62 }
63
syncToLayer()64 void QgsMeshRendererMeshSettingsWidget::syncToLayer( )
65 {
66 if ( !mMeshLayer )
67 return;
68
69 const QgsMeshRendererSettings rendererSettings = mMeshLayer->rendererSettings();
70
71 QgsMeshRendererMeshSettings settings;
72 switch ( mMeshType )
73 {
74 case Native:
75 settings = rendererSettings.nativeMeshSettings();
76 break;
77 case Triangular:
78 settings = rendererSettings.triangularMeshSettings();
79 break;
80 case Edge:
81 settings = rendererSettings.edgeMeshSettings();
82 break;
83 }
84 mColorWidget->setColor( settings.color() );
85 mLineWidthSpinBox->setValue( settings.lineWidth() );
86 mLineUnitsComboBox->setUnit( settings.lineWidthUnit() );
87 }
88