Skip to content

Commit dd23dde

Browse files
author
jef
committedFeb 12, 2011
allow setting mapserver service properties in project properties
git-svn-id: http://svn.osgeo.org/qgis/trunk@15159 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 6dd4610 commit dd23dde

File tree

3 files changed

+443
-24
lines changed

3 files changed

+443
-24
lines changed
 

‎src/app/qgsprojectproperties.cpp

Lines changed: 166 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@
3131
#include "qgsrenderer.h"
3232
#include "qgssnappingdialog.h"
3333
#include "qgsrasterlayer.h"
34+
#include "qgsgenericprojectionselector.h"
35+
#include "qgslogger.h"
3436

3537
//qt includes
3638
#include <QColorDialog>
3739
#include <QHeaderView> // Qt 4.4
38-
#include "qgslogger.h"
40+
#include <QMessageBox>
3941

4042
//stdc++ includes
4143

@@ -54,16 +56,16 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
5456
// Properties stored in map canvas's QgsMapRenderer
5557
// these ones are propagated to QgsProject by a signal
5658

57-
QgsMapRenderer* myRender = mMapCanvas->mapRenderer();
58-
QGis::UnitType myUnit = myRender->mapUnits();
59+
QgsMapRenderer* myRenderer = mMapCanvas->mapRenderer();
60+
QGis::UnitType myUnit = myRenderer->mapUnits();
5961
setMapUnits( myUnit );
6062

6163
//see if the user wants on the fly projection enabled
62-
bool myProjectionEnabled = myRender->hasCrsTransformEnabled();
64+
bool myProjectionEnabled = myRenderer->hasCrsTransformEnabled();
6365
cbxProjectionEnabled->setChecked( myProjectionEnabled );
6466
btnGrpMapUnits->setEnabled( !myProjectionEnabled );
6567

66-
long myCRSID = myRender->destinationSrs().srsid();
68+
long myCRSID = myRenderer->destinationSrs().srsid();
6769
QgsDebugMsg( "Read project CRSID: " + QString::number( myCRSID ) );
6870
projectionSelector->setSelectedCrsId( myCRSID );
6971

@@ -161,6 +163,39 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
161163
twIdentifyLayers->setCellWidget( i, 2, cb );
162164
}
163165

166+
grpWMSServiceCapabilities->setChecked( QgsProject::instance()->readBoolEntry( "WMSServiceCapabilities", "/", false ) );
167+
mWMSTitle->setText( QgsProject::instance()->readEntry( "WMSServiceTitle", "/" ) );
168+
mWMSContactOrganization->setText( QgsProject::instance()->readEntry( "WMSContactOrganization", "/", "" ) );
169+
mWMSContactPerson->setText( QgsProject::instance()->readEntry( "WMSContactPerson", "/", "" ) );
170+
mWMSContactMail->setText( QgsProject::instance()->readEntry( "WMSContactMail", "/", "" ) );
171+
mWMSContactPhone->setText( QgsProject::instance()->readEntry( "WMSContactPhone", "/", "" ) );
172+
mWMSAbstract->setPlainText( QgsProject::instance()->readEntry( "WMSServiceAbstract", "/", "" ) );
173+
174+
bool ok;
175+
QStringList values;
176+
177+
mWMSExtMinX->setValidator( new QDoubleValidator( mWMSExtMinX ) );
178+
mWMSExtMinY->setValidator( new QDoubleValidator( mWMSExtMinY ) );
179+
mWMSExtMaxX->setValidator( new QDoubleValidator( mWMSExtMaxX ) );
180+
mWMSExtMaxY->setValidator( new QDoubleValidator( mWMSExtMaxY ) );
181+
182+
values = QgsProject::instance()->readListEntry( "WMSExtent", "/", &ok );
183+
grpWMSExt->setChecked( ok && values.size() == 4 );
184+
if ( grpWMSExt->isChecked() )
185+
{
186+
mWMSExtMinX->setText( values[0] );
187+
mWMSExtMinY->setText( values[1] );
188+
mWMSExtMaxX->setText( values[2] );
189+
mWMSExtMaxY->setText( values[3] );
190+
}
191+
192+
values = QgsProject::instance()->readListEntry( "WMSEpsgList", "/", &ok );
193+
grpWMSList->setChecked( ok && values.size() > 0 );
194+
if ( grpWMSList->isChecked() )
195+
{
196+
mWMSList->addItems( values );
197+
}
198+
164199
restoreState();
165200
}
166201

@@ -243,11 +278,9 @@ void QgsProjectProperties::apply()
243278
mapUnit = QGis::Degrees;
244279
}
245280

246-
QgsMapRenderer* myRender = mMapCanvas->mapRenderer();
247-
248-
myRender->setMapUnits( mapUnit );
249-
250-
myRender->setProjectionsEnabled( cbxProjectionEnabled->isChecked() );
281+
QgsMapRenderer* myRenderer = mMapCanvas->mapRenderer();
282+
myRenderer->setMapUnits( mapUnit );
283+
myRenderer->setProjectionsEnabled( cbxProjectionEnabled->isChecked() );
251284

252285
// Only change the projection if there is a node in the tree
253286
// selected that has an srid. This prevents error if the user
@@ -257,7 +290,7 @@ void QgsProjectProperties::apply()
257290
if ( myCRSID )
258291
{
259292
QgsCoordinateReferenceSystem srs( myCRSID, QgsCoordinateReferenceSystem::InternalCrsId );
260-
myRender->setDestinationSrs( srs );
293+
myRenderer->setDestinationSrs( srs );
261294
QgsDebugMsg( QString( "Selected CRS " ) + srs.description() );
262295
// write the currently selected projections _proj string_ to project settings
263296
QgsDebugMsg( QString( "SpatialRefSys/ProjectCRSProj4String: %1" ).arg( projectionSelector->selectedProj4String() ) );
@@ -269,7 +302,7 @@ void QgsProjectProperties::apply()
269302
// If we couldn't get the map units, default to the value in the
270303
// projectproperties dialog box (set above)
271304
if ( srs.mapUnits() != QGis::UnknownUnit )
272-
myRender->setMapUnits( srs.mapUnits() );
305+
myRenderer->setMapUnits( srs.mapUnits() );
273306
}
274307
}
275308

@@ -314,6 +347,49 @@ void QgsProjectProperties::apply()
314347

315348
QgsProject::instance()->writeEntry( "Identify", "/disabledLayers", noIdentifyLayerList );
316349

350+
QgsProject::instance()->writeEntry( "WMSServiceCapabilities", "/", grpWMSServiceCapabilities->isChecked() );
351+
QgsProject::instance()->writeEntry( "WMSServiceTitle", "/", mWMSTitle->text() );
352+
QgsProject::instance()->writeEntry( "WMSContactOrganization", "/", mWMSContactOrganization->text() );
353+
QgsProject::instance()->writeEntry( "WMSContactPerson", "/", mWMSContactPerson->text() );
354+
QgsProject::instance()->writeEntry( "WMSContactMail", "/", mWMSContactMail->text() );
355+
QgsProject::instance()->writeEntry( "WMSContactPhone", "/", mWMSContactPhone->text() );
356+
QgsProject::instance()->writeEntry( "WMSServiceAbstract", "/", mWMSAbstract->toPlainText() );
357+
358+
if ( grpWMSExt->isChecked() )
359+
{
360+
QgsProject::instance()->writeEntry( "WMSExtent", "/",
361+
QStringList()
362+
<< mWMSExtMinX->text()
363+
<< mWMSExtMinY->text()
364+
<< mWMSExtMaxX->text()
365+
<< mWMSExtMaxY->text() );
366+
}
367+
else
368+
{
369+
QgsProject::instance()->removeEntry( "WMSExtent", "/" );
370+
}
371+
372+
if ( grpWMSList->isChecked() && mWMSList->count() == 0 )
373+
{
374+
QMessageBox::information( this, tr( "Coordinate System Restriction" ), tr( "No coordinate systems selected. Disabling restriction." ) );
375+
grpWMSList->setChecked( false );
376+
}
377+
378+
if ( grpWMSList->isChecked() )
379+
{
380+
QStringList crslist;
381+
for ( int i = 0; i < mWMSList->count(); i++ )
382+
{
383+
crslist << mWMSList->item( i )->text();
384+
}
385+
386+
QgsProject::instance()->writeEntry( "WMSEpsgList", "/", crslist );
387+
}
388+
else
389+
{
390+
QgsProject::instance()->removeEntry( "WMSEpsgList", "/" );
391+
}
392+
317393
//todo XXX set canvas color
318394
emit refresh();
319395
}
@@ -403,3 +479,81 @@ void QgsProjectProperties::restoreState()
403479
restoreGeometry( settings.value( "/Windows/ProjectProperties/geometry" ).toByteArray() );
404480
tabWidget->setCurrentIndex( settings.value( "/Windows/ProjectProperties/tab" ).toInt() );
405481
}
482+
483+
/*!
484+
* Set WMS default extent to current canvas extent
485+
*/
486+
void QgsProjectProperties::on_pbnWMSExtCanvas_clicked()
487+
{
488+
QgsRectangle ext = mMapCanvas->extent();
489+
mWMSExtMinX->setText( QString::number( ext.xMinimum() ) );
490+
mWMSExtMinY->setText( QString::number( ext.yMinimum() ) );
491+
mWMSExtMaxX->setText( QString::number( ext.xMaximum() ) );
492+
mWMSExtMaxY->setText( QString::number( ext.yMaximum() ) );
493+
}
494+
495+
void QgsProjectProperties::on_pbnWMSAddSRS_clicked()
496+
{
497+
QgsGenericProjectionSelector *mySelector = new QgsGenericProjectionSelector( this );
498+
mySelector->setMessage();
499+
if ( mySelector->exec() )
500+
{
501+
long crs = mySelector->selectedEpsg();
502+
503+
if ( crs > 0 )
504+
{
505+
QList<QListWidgetItem *> items = mWMSList->findItems( QString::number( crs ), Qt::MatchFixedString );
506+
if ( items.size() == 0 )
507+
{
508+
mWMSList->addItem( QString::number( crs ) );
509+
}
510+
else
511+
{
512+
QMessageBox::information( this, tr( "Coordinate System Restriction" ), tr( "CRS %1 was already selected" ).arg( crs ) );
513+
}
514+
}
515+
else
516+
{
517+
QMessageBox::information( this, tr( "Coordinate System Restriction" ), tr( "Selected CRS is not a EPSG coordinate system." ) );
518+
}
519+
}
520+
521+
delete mySelector;
522+
}
523+
524+
void QgsProjectProperties::on_pbnWMSRemoveSRS_clicked()
525+
{
526+
foreach( QListWidgetItem *item, mWMSList->selectedItems() )
527+
delete item;
528+
}
529+
530+
void QgsProjectProperties::on_pbnWMSSetUsedSRS_clicked()
531+
{
532+
if ( mWMSList->count() > 1 )
533+
{
534+
if ( QMessageBox::question( this,
535+
tr( "Coordinate System Restrictions" ),
536+
tr( "The current selection of coordinate systems will be lost.\nProceed?" ) ) == QMessageBox::No )
537+
return;
538+
}
539+
540+
QSet<QString> crsList;
541+
542+
if ( cbxProjectionEnabled->isChecked() )
543+
{
544+
QgsCoordinateReferenceSystem srs( projectionSelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId );
545+
if ( srs.epsg() > 0 )
546+
crsList << QString::number( srs.epsg() );
547+
}
548+
549+
const QMap<QString, QgsMapLayer*> &mapLayers = QgsMapLayerRegistry::instance()->mapLayers();
550+
for ( QMap<QString, QgsMapLayer*>::const_iterator it = mapLayers.constBegin(); it != mapLayers.constEnd(); it++ )
551+
{
552+
long crs = it.value()->crs().epsg();
553+
if ( crs > 0 )
554+
crsList << QString::number( crs );
555+
}
556+
557+
mWMSList->clear();
558+
mWMSList->addItems( crsList.values() );
559+
}

‎src/app/qgsprojectproperties.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ class QgsProjectProperties : public QDialog, private Ui::QgsProjectPropertiesBas
8484
*/
8585
void on_pbnCanvasColor_clicked();
8686

87+
/*!
88+
* Slots for WMS project settings
89+
*/
90+
void on_pbnWMSExtCanvas_clicked();
91+
void on_pbnWMSAddSRS_clicked();
92+
void on_pbnWMSRemoveSRS_clicked();
93+
void on_pbnWMSSetUsedSRS_clicked();
94+
8795
/*!
8896
* Slot to show the context help for this dialog
8997
*/

‎src/ui/qgsprojectpropertiesbase.ui

Lines changed: 269 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>651</width>
10-
<height>538</height>
9+
<width>678</width>
10+
<height>690</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -20,6 +20,16 @@
2020
<bool>true</bool>
2121
</property>
2222
<layout class="QGridLayout" name="gridLayout_2">
23+
<item row="1" column="0">
24+
<widget class="QDialogButtonBox" name="buttonBox">
25+
<property name="orientation">
26+
<enum>Qt::Horizontal</enum>
27+
</property>
28+
<property name="standardButtons">
29+
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
30+
</property>
31+
</widget>
32+
</item>
2333
<item row="0" column="0">
2434
<widget class="QTabWidget" name="tabWidget">
2535
<property name="currentIndex">
@@ -353,16 +363,245 @@
353363
</item>
354364
</layout>
355365
</widget>
356-
</widget>
357-
</item>
358-
<item row="1" column="0">
359-
<widget class="QDialogButtonBox" name="buttonBox">
360-
<property name="orientation">
361-
<enum>Qt::Horizontal</enum>
362-
</property>
363-
<property name="standardButtons">
364-
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
365-
</property>
366+
<widget class="QWidget" name="tab">
367+
<attribute name="title">
368+
<string>WMS</string>
369+
</attribute>
370+
<layout class="QGridLayout" name="gridLayout_3">
371+
<item row="0" column="0" colspan="2">
372+
<widget class="QGroupBox" name="grpWMSServiceCapabilities">
373+
<property name="title">
374+
<string>Service Capabilitities</string>
375+
</property>
376+
<property name="checkable">
377+
<bool>true</bool>
378+
</property>
379+
<property name="checked">
380+
<bool>false</bool>
381+
</property>
382+
<layout class="QGridLayout" name="gridLayout">
383+
<item row="0" column="0">
384+
<widget class="QLabel" name="label_6">
385+
<property name="text">
386+
<string>Title</string>
387+
</property>
388+
<property name="buddy">
389+
<cstring>mWMSTitle</cstring>
390+
</property>
391+
</widget>
392+
</item>
393+
<item row="0" column="2">
394+
<widget class="QLineEdit" name="mWMSTitle"/>
395+
</item>
396+
<item row="2" column="0">
397+
<widget class="QLabel" name="label_7">
398+
<property name="text">
399+
<string>Person</string>
400+
</property>
401+
<property name="buddy">
402+
<cstring>mWMSContactPerson</cstring>
403+
</property>
404+
</widget>
405+
</item>
406+
<item row="2" column="2">
407+
<widget class="QLineEdit" name="mWMSContactPerson"/>
408+
</item>
409+
<item row="5" column="0">
410+
<widget class="QLabel" name="label_8">
411+
<property name="text">
412+
<string>Phone</string>
413+
</property>
414+
<property name="buddy">
415+
<cstring>mWMSContactPhone</cstring>
416+
</property>
417+
</widget>
418+
</item>
419+
<item row="5" column="2">
420+
<widget class="QLineEdit" name="mWMSContactPhone"/>
421+
</item>
422+
<item row="7" column="2">
423+
<widget class="QTextEdit" name="mWMSAbstract"/>
424+
</item>
425+
<item row="7" column="0">
426+
<widget class="QLabel" name="label_5">
427+
<property name="text">
428+
<string>Abstract</string>
429+
</property>
430+
<property name="buddy">
431+
<cstring>mWMSAbstract</cstring>
432+
</property>
433+
</widget>
434+
</item>
435+
<item row="4" column="0">
436+
<widget class="QLabel" name="label_13">
437+
<property name="text">
438+
<string>E-Mail</string>
439+
</property>
440+
</widget>
441+
</item>
442+
<item row="4" column="2">
443+
<widget class="QLineEdit" name="mWMSContactMail"/>
444+
</item>
445+
<item row="1" column="0">
446+
<widget class="QLabel" name="label_4">
447+
<property name="text">
448+
<string>Organization</string>
449+
</property>
450+
<property name="buddy">
451+
<cstring>mWMSContactOrganization</cstring>
452+
</property>
453+
</widget>
454+
</item>
455+
<item row="1" column="2">
456+
<widget class="QLineEdit" name="mWMSContactOrganization"/>
457+
</item>
458+
</layout>
459+
</widget>
460+
</item>
461+
<item row="3" column="0">
462+
<widget class="QGroupBox" name="grpWMSExt">
463+
<property name="title">
464+
<string>Advertised Extent</string>
465+
</property>
466+
<property name="checkable">
467+
<bool>true</bool>
468+
</property>
469+
<property name="checked">
470+
<bool>false</bool>
471+
</property>
472+
<layout class="QGridLayout" name="gridLayout_4">
473+
<item row="0" column="0">
474+
<widget class="QLabel" name="label_11">
475+
<property name="text">
476+
<string>Min. X</string>
477+
</property>
478+
<property name="buddy">
479+
<cstring>mWMSExtMinX</cstring>
480+
</property>
481+
</widget>
482+
</item>
483+
<item row="0" column="1">
484+
<widget class="QLineEdit" name="mWMSExtMinX">
485+
<property name="text">
486+
<string/>
487+
</property>
488+
</widget>
489+
</item>
490+
<item row="1" column="0">
491+
<widget class="QLabel" name="label_12">
492+
<property name="text">
493+
<string>Min. Y</string>
494+
</property>
495+
<property name="buddy">
496+
<cstring>mWMSExtMinY</cstring>
497+
</property>
498+
</widget>
499+
</item>
500+
<item row="1" column="1">
501+
<widget class="QLineEdit" name="mWMSExtMinY">
502+
<property name="text">
503+
<string/>
504+
</property>
505+
</widget>
506+
</item>
507+
<item row="2" column="0">
508+
<widget class="QLabel" name="label_9">
509+
<property name="text">
510+
<string>Max. X</string>
511+
</property>
512+
<property name="buddy">
513+
<cstring>mWMSExtMaxX</cstring>
514+
</property>
515+
</widget>
516+
</item>
517+
<item row="2" column="1">
518+
<widget class="QLineEdit" name="mWMSExtMaxX">
519+
<property name="text">
520+
<string/>
521+
</property>
522+
</widget>
523+
</item>
524+
<item row="3" column="0">
525+
<widget class="QLabel" name="label_10">
526+
<property name="text">
527+
<string>Max. Y</string>
528+
</property>
529+
<property name="buddy">
530+
<cstring>mWMSExtMaxY</cstring>
531+
</property>
532+
</widget>
533+
</item>
534+
<item row="3" column="1">
535+
<widget class="QLineEdit" name="mWMSExtMaxY">
536+
<property name="text">
537+
<string/>
538+
</property>
539+
</widget>
540+
</item>
541+
<item row="4" column="0" colspan="2">
542+
<widget class="QPushButton" name="pbnWMSExtCanvas">
543+
<property name="text">
544+
<string>Use Current Canvas Extent</string>
545+
</property>
546+
</widget>
547+
</item>
548+
<item row="5" column="0" colspan="2">
549+
<spacer name="verticalSpacer">
550+
<property name="orientation">
551+
<enum>Qt::Vertical</enum>
552+
</property>
553+
<property name="sizeHint" stdset="0">
554+
<size>
555+
<width>20</width>
556+
<height>40</height>
557+
</size>
558+
</property>
559+
</spacer>
560+
</item>
561+
</layout>
562+
</widget>
563+
</item>
564+
<item row="3" column="1">
565+
<widget class="QGroupBox" name="grpWMSList">
566+
<property name="title">
567+
<string>Coordinate Systems Restrictions</string>
568+
</property>
569+
<property name="checkable">
570+
<bool>true</bool>
571+
</property>
572+
<property name="checked">
573+
<bool>false</bool>
574+
</property>
575+
<layout class="QGridLayout" name="gridLayout_5">
576+
<item row="0" column="0" colspan="3">
577+
<widget class="QListWidget" name="mWMSList"/>
578+
</item>
579+
<item row="1" column="0">
580+
<widget class="QPushButton" name="pbnWMSAddSRS">
581+
<property name="text">
582+
<string>Add</string>
583+
</property>
584+
</widget>
585+
</item>
586+
<item row="1" column="2">
587+
<widget class="QPushButton" name="pbnWMSRemoveSRS">
588+
<property name="text">
589+
<string>Remove</string>
590+
</property>
591+
</widget>
592+
</item>
593+
<item row="1" column="1">
594+
<widget class="QPushButton" name="pbnWMSSetUsedSRS">
595+
<property name="text">
596+
<string>Used</string>
597+
</property>
598+
</widget>
599+
</item>
600+
</layout>
601+
</widget>
602+
</item>
603+
</layout>
604+
</widget>
366605
</widget>
367606
</item>
368607
</layout>
@@ -397,6 +636,24 @@
397636
<tabstop>twIdentifyLayers</tabstop>
398637
<tabstop>tabWidget</tabstop>
399638
<tabstop>buttonBox</tabstop>
639+
<tabstop>grpWMSServiceCapabilities</tabstop>
640+
<tabstop>mWMSTitle</tabstop>
641+
<tabstop>mWMSContactOrganization</tabstop>
642+
<tabstop>mWMSContactPerson</tabstop>
643+
<tabstop>mWMSContactMail</tabstop>
644+
<tabstop>mWMSContactPhone</tabstop>
645+
<tabstop>mWMSAbstract</tabstop>
646+
<tabstop>grpWMSExt</tabstop>
647+
<tabstop>mWMSExtMinX</tabstop>
648+
<tabstop>mWMSExtMinY</tabstop>
649+
<tabstop>mWMSExtMaxX</tabstop>
650+
<tabstop>mWMSExtMaxY</tabstop>
651+
<tabstop>pbnWMSExtCanvas</tabstop>
652+
<tabstop>grpWMSList</tabstop>
653+
<tabstop>mWMSList</tabstop>
654+
<tabstop>pbnWMSAddSRS</tabstop>
655+
<tabstop>pbnWMSSetUsedSRS</tabstop>
656+
<tabstop>pbnWMSRemoveSRS</tabstop>
400657
</tabstops>
401658
<resources>
402659
<include location="../../images/images.qrc"/>

0 commit comments

Comments
 (0)
Please sign in to comment.