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