159 changes: 159 additions & 0 deletions python/plugins/GdalTools/tools/widgetFillNodata.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GdalToolsWidget</class>
<widget class="QWidget" name="GdalToolsWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>368</width>
<height>300</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Fill Nodata</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="batchCheck">
<property name="text">
<string>Batch mode (for processing whole directory)</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>&amp;Input Layer</string>
</property>
<property name="buddy">
<cstring>inSelector</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="GdalToolsInOutSelector" name="inSelector" native="true"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_1">
<property name="text">
<string>&amp;Output file</string>
</property>
<property name="buddy">
<cstring>outSelector</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="GdalToolsInOutSelector" name="outSelector" native="true"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="formatLabel">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string>Output format</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="formatCombo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="distanceCheck">
<property name="text">
<string>Search distance</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="distanceSpin">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>1000000</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="smoothCheck">
<property name="text">
<string>Smooth iterations</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="smoothSpin">
<property name="minimum">
<number>0</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="bandCheck">
<property name="text">
<string>Band to operate on</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="bandSpin">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="maskCheck">
<property name="text">
<string>Validity mask</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="GdalToolsInOutSelector" name="maskSelector" native="true"/>
</item>
<item row="8" column="0" colspan="2">
<widget class="QCheckBox" name="nomaskCheck">
<property name="text">
<string>Do not use the default validity mask</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2">
<widget class="QProgressBar" name="progressBar"/>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>GdalToolsInOutSelector</class>
<extends>QWidget</extends>
<header>inOutSelector</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>
33 changes: 26 additions & 7 deletions src/mapserver/qgsprojectparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "qgsprojectparser.h"
#include "qgsconfigcache.h"
#include "qgscrscache.h"
#include "qgsdatasourceuri.h"
#include "qgsmslayercache.h"
#include "qgslogger.h"
#include "qgsmapserviceexception.h"
Expand Down Expand Up @@ -773,18 +774,36 @@ QgsMapLayer* QgsProjectParser::createLayerFromElement( const QDomElement& elem,
return 0;
}

QString uri;
QString absoluteUri;
QDomElement dataSourceElem = elem.firstChildElement( "datasource" );
QString uri = dataSourceElem.text();
QString absoluteUri;
if ( !dataSourceElem.isNull() )
{
//convert relative pathes to absolute ones if necessary
uri = dataSourceElem.text();
absoluteUri = convertToAbsolutePath( uri );
if ( uri != absoluteUri )
if ( uri.startsWith( "dbname" ) ) //database
{
QgsDataSourceURI dsUri( uri );
if ( dsUri.host().isEmpty() ) //only convert path for file based databases
{
QString dbnameUri = dsUri.database();
QString dbNameUriAbsolute = convertToAbsolutePath( dbnameUri );
if ( dbnameUri != dbNameUriAbsolute )
{
dsUri.setDatabase( dbNameUriAbsolute );
absoluteUri = dsUri.uri();
QDomText absoluteTextNode = mXMLDoc->createTextNode( absoluteUri );
dataSourceElem.replaceChild( absoluteTextNode, dataSourceElem.firstChild() );
}
}
}
else //file based data source
{
QDomText absoluteTextNode = mXMLDoc->createTextNode( absoluteUri );
dataSourceElem.replaceChild( absoluteTextNode, dataSourceElem.firstChild() );
absoluteUri = convertToAbsolutePath( uri );
if ( uri != absoluteUri )
{
QDomText absoluteTextNode = mXMLDoc->createTextNode( absoluteUri );
dataSourceElem.replaceChild( absoluteTextNode, dataSourceElem.firstChild() );
}
}
}

Expand Down