Skip to content

Commit f37aa8c

Browse files
authoredAug 16, 2018
Merge pull request #7613 from wonder-sk/mesh-gui-fixes
Mesh layer fixes and improvements
2 parents 0be9de5 + c0f190d commit f37aa8c

39 files changed

+1107
-493
lines changed
 

‎python/core/auto_generated/mesh/qgsmeshdataprovider.sip.in

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,11 @@ Datasets are grouped in the dataset groups. A dataset group represents a measure
317317
Associate dataset with the mesh
318318

319319
emits dataChanged when successful
320+
%End
321+
322+
virtual QStringList extraDatasets() const = 0;
323+
%Docstring
324+
Returns list of additional dataset file URIs added using addDataset() calls.
320325
%End
321326

322327
virtual int datasetGroupCount( ) const = 0;
@@ -387,6 +392,12 @@ Ctor
387392
Returns the extent of the layer
388393

389394
:return: QgsRectangle containing the extent of the layer
395+
%End
396+
397+
signals:
398+
void datasetGroupsAdded( int count );
399+
%Docstring
400+
Emitted when some new dataset groups have been added
390401
%End
391402
};
392403

‎python/core/auto_generated/mesh/qgsmeshlayer.sip.in

Lines changed: 3 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -129,66 +129,13 @@ Returns the provider type for this layer
129129

130130

131131

132-
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const;
132+
QgsMeshRendererSettings rendererSettings() const;
133133
%Docstring
134134
Returns renderer settings
135135
%End
136-
137-
void setRendererNativeMeshSettings( const QgsMeshRendererMeshSettings &settings );
138-
%Docstring
139-
Sets new renderer settings, triggers repaint
140-
%End
141-
142-
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const;
143-
%Docstring
144-
Returns renderer settings
145-
%End
146-
147-
void setRendererTriangularMeshSettings( const QgsMeshRendererMeshSettings &settings );
148-
%Docstring
149-
Sets new renderer settings, triggers repaint
150-
%End
151-
152-
QgsMeshRendererScalarSettings rendererScalarSettings() const;
153-
%Docstring
154-
Returns renderer settings
155-
%End
156-
157-
void setRendererScalarSettings( const QgsMeshRendererScalarSettings &settings );
158-
%Docstring
159-
Sets new renderer settings, triggers repaint
160-
%End
161-
162-
QgsMeshRendererVectorSettings rendererVectorSettings() const;
163-
%Docstring
164-
Returns renderer settings
165-
%End
166-
167-
void setRendererVectorSettings( const QgsMeshRendererVectorSettings &settings );
168-
%Docstring
169-
Sets new renderer settings, triggers repaint
170-
%End
171-
172-
void setActiveScalarDataset( QgsMeshDatasetIndex index = QgsMeshDatasetIndex() );
173-
%Docstring
174-
Sets active scalar dataset for rendering
175-
176-
Triggers repaint
177-
%End
178-
QgsMeshDatasetIndex activeScalarDataset() const;
179-
%Docstring
180-
Returns active scalar dataset
181-
%End
182-
183-
void setActiveVectorDataset( QgsMeshDatasetIndex index = QgsMeshDatasetIndex() );
184-
%Docstring
185-
Sets active vector dataset for rendering.
186-
187-
If dataset is not vector based, do nothing. Triggers repaint
188-
%End
189-
QgsMeshDatasetIndex activeVectorDataset() const;
136+
void setRendererSettings( const QgsMeshRendererSettings &settings );
190137
%Docstring
191-
Returns active vector dataset
138+
Sets new renderer settings
192139
%End
193140

194141
QgsMeshDatasetValue datasetValue( const QgsMeshDatasetIndex &index, const QgsPointXY &point ) const;

‎python/core/auto_generated/mesh/qgsmeshrenderersettings.sip.in

Lines changed: 110 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ Returns color used for rendering
5353
void setColor( const QColor &color );
5454
%Docstring
5555
Sets color used for rendering of the mesh
56+
%End
57+
58+
QDomElement writeXml( QDomDocument &doc ) const;
59+
%Docstring
60+
Writes configuration to a new DOM element
61+
%End
62+
void readXml( const QDomElement &elem );
63+
%Docstring
64+
Reads configuration from the given DOM element
5665
%End
5766

5867
};
@@ -83,10 +92,15 @@ Returns color ramp shader function
8392
Sets color ramp shader function
8493
%End
8594

86-
bool isEnabled() const;
95+
QDomElement writeXml( QDomDocument &doc ) const;
96+
%Docstring
97+
Writes configuration to a new DOM element
98+
%End
99+
void readXml( const QDomElement &elem );
87100
%Docstring
88-
Returns whether color ramp has any items assigned
101+
Reads configuration from the given DOM element
89102
%End
103+
90104
};
91105

92106
class QgsMeshRendererVectorSettings
@@ -106,6 +120,7 @@ Represents a mesh renderer settings for vector datasets
106120
#include "qgsmeshrenderersettings.h"
107121
%End
108122
public:
123+
109124
enum ArrowScalingMethod
110125
{
111126

@@ -245,6 +260,99 @@ Returns ratio of the head length of the arrow (range 0-1)
245260
void setArrowHeadLengthRatio( double arrowHeadLengthRatio );
246261
%Docstring
247262
Sets ratio of the head length of the arrow (range 0-1)
263+
%End
264+
265+
QDomElement writeXml( QDomDocument &doc ) const;
266+
%Docstring
267+
Writes configuration to a new DOM element
268+
%End
269+
void readXml( const QDomElement &elem );
270+
%Docstring
271+
Reads configuration from the given DOM element
272+
%End
273+
274+
};
275+
276+
277+
class QgsMeshRendererSettings
278+
{
279+
%Docstring
280+
281+
Represents all mesh renderer settings
282+
283+
.. note::
284+
285+
The API is considered EXPERIMENTAL and can be changed without a notice
286+
287+
.. versionadded:: 3.4
288+
%End
289+
290+
%TypeHeaderCode
291+
#include "qgsmeshrenderersettings.h"
292+
%End
293+
public:
294+
295+
QgsMeshRendererMeshSettings nativeMeshSettings() const;
296+
%Docstring
297+
Returns renderer settings
298+
%End
299+
void setNativeMeshSettings( const QgsMeshRendererMeshSettings &settings );
300+
%Docstring
301+
Sets new renderer settings, triggers repaint
302+
%End
303+
304+
QgsMeshRendererMeshSettings triangularMeshSettings() const;
305+
%Docstring
306+
Returns renderer settings
307+
%End
308+
void setTriangularMeshSettings( const QgsMeshRendererMeshSettings &settings );
309+
%Docstring
310+
Sets new renderer settings
311+
%End
312+
313+
QgsMeshRendererScalarSettings scalarSettings( int groupIndex ) const;
314+
%Docstring
315+
Returns renderer settings
316+
%End
317+
void setScalarSettings( int groupIndex, const QgsMeshRendererScalarSettings &settings );
318+
%Docstring
319+
Sets new renderer settings
320+
%End
321+
322+
QgsMeshRendererVectorSettings vectorSettings( int groupIndex ) const;
323+
%Docstring
324+
Returns renderer settings
325+
%End
326+
void setVectorSettings( int groupIndex, const QgsMeshRendererVectorSettings &settings );
327+
%Docstring
328+
Sets new renderer settings
329+
%End
330+
331+
QgsMeshDatasetIndex activeScalarDataset() const;
332+
%Docstring
333+
Returns active scalar dataset
334+
%End
335+
void setActiveScalarDataset( QgsMeshDatasetIndex index = QgsMeshDatasetIndex() );
336+
%Docstring
337+
Sets active scalar dataset for rendering
338+
%End
339+
340+
QgsMeshDatasetIndex activeVectorDataset() const;
341+
%Docstring
342+
Returns active vector dataset
343+
%End
344+
void setActiveVectorDataset( QgsMeshDatasetIndex index = QgsMeshDatasetIndex() );
345+
%Docstring
346+
Sets active vector dataset for rendering.
347+
%End
348+
349+
QDomElement writeXml( QDomDocument &doc ) const;
350+
%Docstring
351+
Writes configuration to a new DOM element
352+
%End
353+
void readXml( const QDomElement &elem );
354+
%Docstring
355+
Reads configuration from the given DOM element
248356
%End
249357

250358
};

‎python/core/auto_generated/qgsmaplayerlegend.sip.in

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ Create new legend implementation for vector layer
6161
static QgsMapLayerLegend *defaultRasterLegend( QgsRasterLayer *rl ) /Factory/;
6262
%Docstring
6363
Create new legend implementation for raster layer
64+
%End
65+
66+
static QgsMapLayerLegend *defaultMeshLegend( QgsMeshLayer *ml ) /Factory/;
67+
%Docstring
68+
Create new legend implementation for mesh layer
6469
%End
6570

6671
signals:
@@ -192,6 +197,29 @@ Default legend implementation for raster layers
192197
};
193198

194199

200+
class QgsDefaultMeshLayerLegend : QgsMapLayerLegend
201+
{
202+
%Docstring
203+
Default legend implementation for mesh layers
204+
205+
.. versionadded:: 3.4
206+
%End
207+
208+
%TypeHeaderCode
209+
#include "qgsmaplayerlegend.h"
210+
%End
211+
public:
212+
explicit QgsDefaultMeshLayerLegend( QgsMeshLayer *ml );
213+
%Docstring
214+
Creates an instance for the given mesh layer
215+
%End
216+
217+
virtual QList<QgsLayerTreeModelLegendNode *> createLayerTreeModelLegendNodes( QgsLayerTreeLayer *nodeLayer ) /Factory/;
218+
219+
220+
};
221+
222+
195223
/************************************************************************
196224
* This file has been generated automatically from *
197225
* *

‎python/core/auto_generated/raster/qgscolorrampshader.sip.in

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Returns the custom colormap.
8282
Returns the color ramp type.
8383
%End
8484

85-
QString colorRampTypeAsQString();
85+
QString colorRampTypeAsQString() const;
8686
%Docstring
8787
Returns the color ramp type as a string.
8888
%End
@@ -160,6 +160,20 @@ Generates and new RGB value based on original RGB value
160160
virtual void legendSymbologyItems( QList< QPair< QString, QColor > > &symbolItems /Out/ ) const;
161161

162162

163+
QDomElement writeXml( QDomDocument &doc ) const;
164+
%Docstring
165+
Writes configuration to a new DOM element
166+
167+
.. versionadded:: 3.4
168+
%End
169+
170+
void readXml( const QDomElement &elem );
171+
%Docstring
172+
Reads configuration from the given DOM element
173+
174+
.. versionadded:: 3.4
175+
%End
176+
163177
void setClassificationMode( ClassificationMode classificationMode );
164178
%Docstring
165179
Sets classification mode

‎src/app/mesh/qgsmeshdatasetgrouptreeview.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -272,21 +272,17 @@ int QgsMeshDatasetGroupTreeView::setActiveGroupFromActiveDataset()
272272
QgsMeshDatasetIndex activeDataset;
273273
if ( mMeshLayer )
274274
{
275-
activeDataset = mMeshLayer->activeScalarDataset();
275+
const QgsMeshRendererSettings rendererSettings = mMeshLayer->rendererSettings();
276+
activeDataset = rendererSettings.activeScalarDataset();
276277
if ( !activeDataset.isValid() )
277-
activeDataset = mMeshLayer->activeVectorDataset();
278+
activeDataset = rendererSettings.activeVectorDataset();
278279
}
279280

280281
// find group that contains active dataset
281282
if ( activeDataset.isValid() && activeDataset.group() < mGroups.size() )
282283
{
283284
group = activeDataset.group();
284285
}
285-
else if ( !mGroups.empty() )
286-
{
287-
// not found, select first item
288-
group = 0;
289-
}
290286

291287
if ( mActiveGroup != group )
292288
{

‎src/app/mesh/qgsmeshrendereractivedatasetwidget.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,8 @@ QgsMeshRendererActiveDatasetWidget::QgsMeshRendererActiveDatasetWidget( QWidget
3030

3131
void QgsMeshRendererActiveDatasetWidget::setLayer( QgsMeshLayer *layer )
3232
{
33-
if ( layer != mMeshLayer )
34-
{
35-
mMeshLayer = layer;
36-
}
37-
33+
mMeshLayer = layer;
3834
mDatasetGroupTreeView->setLayer( layer );
39-
setEnabled( mMeshLayer );
40-
syncToLayer();
4135
}
4236

4337
QgsMeshDatasetIndex QgsMeshRendererActiveDatasetWidget::activeScalarDataset() const
@@ -73,6 +67,8 @@ void QgsMeshRendererActiveDatasetWidget::onActiveGroupChanged()
7367

7468
mDatasetSlider->setValue( val );
7569
onActiveDatasetChanged( val );
70+
mActiveDatasetGroup = mDatasetGroupTreeView->activeGroup();
71+
emit activeDatasetGroupChanged( mActiveDatasetGroup );
7672
}
7773

7874
void QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged( int value )
@@ -161,15 +157,20 @@ QgsMeshDatasetIndex QgsMeshRendererActiveDatasetWidget::datasetIndex() const
161157

162158
void QgsMeshRendererActiveDatasetWidget::syncToLayer()
163159
{
160+
setEnabled( mMeshLayer );
161+
164162
whileBlocking( mDatasetGroupTreeView )->syncToLayer();
165163

166164
if ( mMeshLayer )
167165
{
168-
mActiveScalarDataset = mMeshLayer->activeScalarDataset();
169-
mActiveVectorDataset = mMeshLayer->activeVectorDataset();
166+
const QgsMeshRendererSettings rendererSettings = mMeshLayer->rendererSettings();
167+
mActiveDatasetGroup = mDatasetGroupTreeView->activeGroup();
168+
mActiveScalarDataset = rendererSettings.activeScalarDataset();
169+
mActiveVectorDataset = rendererSettings.activeVectorDataset();
170170
}
171171
else
172172
{
173+
mActiveDatasetGroup = -1;
173174
mActiveScalarDataset = QgsMeshDatasetIndex();
174175
mActiveVectorDataset = QgsMeshDatasetIndex();
175176
}

0 commit comments

Comments
 (0)
Please sign in to comment.