Skip to content

Commit e132f37

Browse files
author
morb_au
committed
For WMS layers, clean-up the raster Properties dialog so that it better reflects the relatively implemented capabilities of the WMS provider. The Pyramids and Histogram tabs have been disabled (not necessarily removed since a future QGIS version may wish to extend this raster functionality into WMS layers).
The symbology tab still needs to be cleaned-up in operation but at least it's set to "Color Image" by default now. git-svn-id: http://svn.osgeo.org/qgis/trunk@5678 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 12fff4c commit e132f37

File tree

4 files changed

+69
-20
lines changed

4 files changed

+69
-20
lines changed

src/gui/qgsrasterlayerproperties.cpp

+38-5
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ QgsRasterLayerProperties::QgsRasterLayerProperties(QgsMapLayer *lyr, QWidget *pa
3535
: QDialog(parent, fl),
3636
rasterLayer( dynamic_cast<QgsRasterLayer*>(lyr) )
3737
{
38+
39+
if (rasterLayer->getDataProvider() == 0)
40+
{
41+
// This is a GDAL-based layer
42+
rasterLayerIsGdal = TRUE;
43+
rasterLayerIsWms = FALSE;
44+
}
45+
else if (rasterLayer->getDataProvider()->name() == "wms")
46+
{
47+
// This is a WMS-based layer
48+
rasterLayerIsWms = TRUE;
49+
rasterLayerIsGdal = FALSE;
50+
}
51+
3852
setupUi(this);
3953
connect(buttonApply, SIGNAL(clicked()), this, SLOT(apply()));
4054
connect(buttonOk, SIGNAL(clicked()), this, SLOT(accept()));
@@ -201,7 +215,7 @@ QgsRasterLayerProperties::QgsRasterLayerProperties(QgsMapLayer *lyr, QWidget *pa
201215
QPixmap myNoPyramidPixmap(myThemePath + "/mIconNoPyramid.png");
202216

203217
// Only do pyramids if dealing directly with GDAL.
204-
if (!(rasterLayer->usesProvider()))
218+
if (rasterLayerIsGdal)
205219
{
206220
QgsRasterLayer::RasterPyramidList myPyramidList = rasterLayer->buildRasterPyramidList();
207221
QgsRasterLayer::RasterPyramidList::iterator myRasterPyramidIterator;
@@ -224,6 +238,14 @@ QgsRasterLayerProperties::QgsRasterLayerProperties(QgsMapLayer *lyr, QWidget *pa
224238
}
225239
}
226240
}
241+
else if (rasterLayerIsWms)
242+
{
243+
// disable Pyramids tab completely
244+
tabBar->setTabEnabled(tabBar->indexOf(tabPagePyramids), FALSE);
245+
246+
// disable Histogram tab completely
247+
tabBar->setTabEnabled(tabBar->indexOf(tabPageHistogram), FALSE);
248+
}
227249

228250
if ( rasterLayer->coordinateTransform() )
229251
{
@@ -233,7 +255,7 @@ QgsRasterLayerProperties::QgsRasterLayerProperties(QgsMapLayer *lyr, QWidget *pa
233255
//on_pbnHistRefresh_clicked();
234256

235257
// update based on lyr's current state
236-
sync();
258+
sync();
237259
} // QgsRasterLayerProperties ctor
238260

239261

@@ -510,10 +532,21 @@ void QgsRasterLayerProperties::sync()
510532
//populate the metadata tab's text browser widget with gdal metadata info
511533
txtbMetadata->setText(rasterLayer->getMetadata());
512534
//tabSymbology->removePage(tabMetadata);
535+
513536
//display the raster dimensions and no data value
514-
lblColumns->setText(tr("Columns:") + QString::number(rasterLayer->getRasterXDim()));
515-
lblRows->setText(tr("Rows:") + QString::number(rasterLayer->getRasterYDim()));
516-
lblNoData->setText(tr("No Data:") + QString::number(rasterLayer->getNoDataValue()));
537+
if (rasterLayerIsGdal)
538+
{
539+
lblColumns->setText(tr("Columns: ") + QString::number(rasterLayer->getRasterXDim()));
540+
lblRows->setText(tr("Rows: ") + QString::number(rasterLayer->getRasterYDim()));
541+
lblNoData->setText(tr("No-Data Value: ") + QString::number(rasterLayer->getNoDataValue()));
542+
}
543+
else if (rasterLayerIsWms)
544+
{
545+
// TODO: Account for fixedWidth and fixedHeight WMS layers
546+
lblColumns->setText(tr("Columns: ") + tr("n/a"));
547+
lblRows->setText(tr("Rows: ") + tr("n/a"));
548+
lblNoData->setText(tr("No-Data Value: ") + tr("n/a"));
549+
}
517550

518551
//these properties (layername and label) are provided by the qgsmaplayer superclass
519552
leLayerSource->setText(rasterLayer->source());

src/gui/qgsrasterlayerproperties.h

+14
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,20 @@ class QgsRasterLayerProperties : public QDialog, private Ui::QgsRasterLayerPrope
6464
private:
6565
/** \brief Pointer to the raster layer that this property dilog changes the behaviour of. */
6666
QgsRasterLayer * rasterLayer;
67+
68+
/** \brief If the underlying raster layer is of GDAL type (i.e. non-provider)
69+
70+
This variable is used to determine if various parts of the Properties UI are
71+
included or not
72+
*/
73+
bool rasterLayerIsGdal;
74+
75+
/** \brief If the underlying raster layer is of WMS type (i.e. WMS data provider)
76+
77+
This variable is used to determine if various parts of the Properties UI are
78+
included or not
79+
*/
80+
bool rasterLayerIsWms;
6781
};
6882

6983
#endif

src/raster/qgsrasterlayer.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -5049,6 +5049,8 @@ void QgsRasterLayer::setDataProvider( QString const & provider,
50495049

50505050
QgsDebugMsg("QgsRasterLayer::setDataProvider: layerName: " + name());
50515051

5052+
// set up the raster drawing style
5053+
drawingStyle = MULTI_BAND_COLOR; //sensible default
50525054

50535055
//
50545056
// Get the layers project info and set up the QgsCoordinateTransform for this layer

src/ui/qgsrasterlayerpropertiesbase.ui

+15-15
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
<number>6</number>
3030
</property>
3131
<item row="0" column="0" >
32-
<widget class="QTabWidget" name="tabSymbology" >
33-
<widget class="QWidget" name="tab" >
32+
<widget class="QTabWidget" name="tabBar" >
33+
<widget class="QWidget" name="tabPageSymbology" >
3434
<attribute name="title" >
3535
<string>Symbology</string>
3636
</attribute>
@@ -361,7 +361,7 @@
361361
</item>
362362
</layout>
363363
</widget>
364-
<widget class="QWidget" name="tab" >
364+
<widget class="QWidget" name="tabPageGeneral" >
365365
<attribute name="title" >
366366
<string>General</string>
367367
</attribute>
@@ -710,7 +710,7 @@
710710
</item>
711711
</layout>
712712
</widget>
713-
<widget class="QWidget" name="tabMetadata" >
713+
<widget class="QWidget" name="tabPageMetadata" >
714714
<attribute name="title" >
715715
<string>Metadata</string>
716716
</attribute>
@@ -726,7 +726,7 @@
726726
</item>
727727
</layout>
728728
</widget>
729-
<widget class="QWidget" name="TabPage" >
729+
<widget class="QWidget" name="tabPagePyramids" >
730730
<attribute name="title" >
731731
<string>Pyramids</string>
732732
</attribute>
@@ -853,7 +853,7 @@
853853
</item>
854854
</layout>
855855
</widget>
856-
<widget class="QWidget" name="TabPage" >
856+
<widget class="QWidget" name="tabPageHistogram" >
857857
<attribute name="title" >
858858
<string>Histogram</string>
859859
</attribute>
@@ -1095,10 +1095,10 @@
10951095
<pixmapfunction></pixmapfunction>
10961096
<customwidgets>
10971097
<customwidget>
1098-
<class>Q3GroupBox</class>
1098+
<class>Q3TextEdit</class>
10991099
<extends></extends>
1100-
<header>Qt3Support/Q3GroupBox</header>
1101-
<container>1</container>
1100+
<header>q3textedit.h</header>
1101+
<container>0</container>
11021102
<pixmap></pixmap>
11031103
</customwidget>
11041104
<customwidget>
@@ -1109,22 +1109,22 @@
11091109
<pixmap></pixmap>
11101110
</customwidget>
11111111
<customwidget>
1112-
<class>Q3TextEdit</class>
1112+
<class>Q3ListBox</class>
11131113
<extends></extends>
1114-
<header>q3textedit.h</header>
1114+
<header>q3listbox.h</header>
11151115
<container>0</container>
11161116
<pixmap></pixmap>
11171117
</customwidget>
11181118
<customwidget>
1119-
<class>Q3ListBox</class>
1119+
<class>Q3GroupBox</class>
11201120
<extends></extends>
1121-
<header>q3listbox.h</header>
1122-
<container>0</container>
1121+
<header>Qt3Support/Q3GroupBox</header>
1122+
<container>1</container>
11231123
<pixmap></pixmap>
11241124
</customwidget>
11251125
</customwidgets>
11261126
<tabstops>
1127-
<tabstop>tabSymbology</tabstop>
1127+
<tabstop>tabBar</tabstop>
11281128
<tabstop>rbtnThreeBand</tabstop>
11291129
<tabstop>rbtnSingleBand</tabstop>
11301130
<tabstop>cboxInvertColorMap</tabstop>

0 commit comments

Comments
 (0)