[qgis] 01/06: Imported Upstream version 2.14.14+dfsg
Bas Couwenberg
sebastic at debian.org
Sat Apr 22 13:55:06 UTC 2017
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository qgis.
commit 5c53d306d3dabc4b0a86fd41704cc6163ce901ef
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Sat Apr 22 12:18:45 2017 +0200
Imported Upstream version 2.14.14+dfsg
---
CMakeLists.txt | 2 +-
ChangeLog | 46 +++++++++++++++++++
debian/changelog | 10 +++-
.../MetaSearch/resources/connections-default.xml | 2 +-
.../plugins/processing/algs/grass7/Grass7Utils.py | 53 ++++++++++++++++++----
.../plugins/processing/algs/qgis/FieldsMapper.py | 51 +++++++++++----------
.../processing/algs/qgis/spatialite_utils.py | 6 +--
.../processing/algs/saga/SagaAlgorithmProvider.py | 2 +-
python/plugins/processing/algs/saga/SagaUtils.py | 27 +++++++----
src/app/pluginmanager/qgspluginmanager.cpp | 2 +-
src/core/geometry/qgscurvepolygonv2.cpp | 7 ++-
11 files changed, 156 insertions(+), 52 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0e079ba..5d530b4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
SET(CPACK_PACKAGE_VERSION_MAJOR "2")
SET(CPACK_PACKAGE_VERSION_MINOR "14")
-SET(CPACK_PACKAGE_VERSION_PATCH "13")
+SET(CPACK_PACKAGE_VERSION_PATCH "14")
SET(COMPLETE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
SET(RELEASE_NAME "Essen")
IF (POLICY CMP0048) # in CMake 3.0.0+
diff --git a/ChangeLog b/ChangeLog
index 2e35f3c..806ff27 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,49 @@
+rldhont <rldhont at gmail.com> 2017-04-20
+
+ [BUGFIX][Processing] Fix spatialite version comparison
+
+Mathieu Pellerin <nirvn.asia at gmail.com> 2017-04-19
+
+ fix qgis startup crash with plugin manager (#4372)
+
+Borys Jurgiel <info at borysjurgiel.pl> 2017-04-06
+
+ Fix Refactor Fields error if layer has no features
+
+Tom Kralidis <tomkralidis at gmail.com> 2017-04-05
+
+ backport a30cf2923c75e786f085593a1c69463310aae66d
+
+Juergen E. Fischer <jef at norbit.de> 2017-01-25
+
+ [processing] find grass >=7.0
+
+ (backport of 099e7a7)
+
+rldhont <rldhont at gmail.com> 2017-03-27
+
+ [BUGFIX][Processing] SAGA not loaded on QGIS 2.18.5
+
+ Fixed #16378
+
+Marco Hugentobler <marco.hugentobler at sourcepole.ch> 2017-03-26
+
+ Fix wkt import for QgsCurvePolygonV2. Backport to 2.14
+
+Juergen E. Fischer <jef at norbit.de> 2017-03-24
+
+ make travis even happier
+
+Juergen E. Fischer <jef at norbit.de> 2017-02-19
+
+ processing: improve saga detection on windows
+
+ (cherry picked from commit 0d1ab702fc7112afabf5319ad947a445bb219acd)
+
+Juergen E. Fischer <jef at norbit.de> 2017-03-24
+
+ Release of 2.14.13
+
Merge: 58bd0e14bd b1ae883d08
rldhont <rldhont at gmail.com> 2017-03-23
diff --git a/debian/changelog b/debian/changelog
index 113a451..9bb89ee 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,14 @@
-qgis (2.14.13) UNRELEASED; urgency=medium
+qgis (2.14.14) UNRELEASED; urgency=medium
+
+ * Release of 2.14.14
+
+ -- Jürgen E. Fischer <jef at norbit.de> Fri, 21 Apr 2017 14:36:44 +0200
+
+qgis (2.14.13) unstable; urgency=medium
* Release of 2.14.13
- -- Jürgen E. Fischer <jef at norbit.de> Fri, 24 Mar 2017 13:21:50 +0100
+ -- Jürgen E. Fischer <jef at norbit.de> Fri, 21 Apr 2017 14:36:44 +0200
qgis (2.14.12) unstable; urgency=medium
diff --git a/python/plugins/MetaSearch/resources/connections-default.xml b/python/plugins/MetaSearch/resources/connections-default.xml
index 49a8dbf..7068fc3 100644
--- a/python/plugins/MetaSearch/resources/connections-default.xml
+++ b/python/plugins/MetaSearch/resources/connections-default.xml
@@ -9,7 +9,7 @@
<csw name="Italy: National CSW (Geoportale Nazionale - Servizio di ricerca Italiano)" url="http://www.pcn.minambiente.it/geoportal/csw"/>
<csw name="Italy: RNDT - Repertorio Nazionale dei Dati Territoriali - Servizio di ricerca" url="http://www.rndt.gov.it/RNDT/CSW"/>
<csw name="New Zealand: LINZ Data Service" url="http://data.linz.govt.nz/feeds/csw"/>
- <csw name="Netherlands: National CSW (Nationaal Georegister)" url="http://www.nationaalgeoregister.nl/geonetwork/srv/eng/csw"/>
+ <csw name="Netherlands: National CSW (Nationaal Georegister)" url="http://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw"/>
<csw name="Norway: National CSW (Geonorge)" url="http://www.geonorge.no/geonetwork/srv/no/csw"/>
<csw name="Sweden: National CSW" url="http://www.geodata.se/InspireCswProxy/csw"/>
<csw name="UK Location Catalogue Publishing Service" url="http://csw.data.gov.uk/geonetwork/srv/en/csw"/>
diff --git a/python/plugins/processing/algs/grass7/Grass7Utils.py b/python/plugins/processing/algs/grass7/Grass7Utils.py
index dd7dcb4..377ef6e 100644
--- a/python/plugins/processing/algs/grass7/Grass7Utils.py
+++ b/python/plugins/processing/algs/grass7/Grass7Utils.py
@@ -55,6 +55,9 @@ class Grass7Utils:
isGrass7Installed = False
+ version = None
+ command = None
+
@staticmethod
def grassBatchJobFilename():
'''This is used in Linux. This is the batch job that we assign to
@@ -74,10 +77,33 @@ class Grass7Utils:
return filename
@staticmethod
- def getGrassVersion():
- # FIXME: I do not know if this should be removed or let the user enter it
- # or something like that... This is just a temporary thing
- return '7.0.0'
+ def installedVersion(run=False):
+ if Grass7Utils.isGrass7Installed and not run:
+ return Grass7Utils.version
+
+ if Grass7Utils.grassPath() is None:
+ return None
+
+ for command in ["grass73", "grass72", "grass71", "grass70", "grass"]:
+ proc = subprocess.Popen(
+ ["{} -v".format(command)],
+ shell=True,
+ stdout=subprocess.PIPE,
+ stdin=open(os.devnull),
+ stderr=subprocess.STDOUT,
+ universal_newlines=True,
+ )
+ if proc:
+ lines = proc.stdout.readlines()
+ for line in lines:
+ if "GRASS GIS " in line:
+ line = line.split(" ")[-1].strip()
+ if line.startswith("7."):
+ Grass7Utils.version = line
+ Grass7Utils.command = command
+ return Grass7Utils.version
+
+ return Grass7Utils.version
@staticmethod
def grassPath():
@@ -98,6 +124,16 @@ class Grass7Utils:
for subfolder in os.listdir(testfolder):
if subfolder.startswith('grass-7'):
folder = os.path.join(testfolder, subfolder)
+ fn = os.path.join(folder, "etc", "VERSIONNUMBER")
+ if not os.path.isfile(fn):
+ continue
+
+ f = open(fn, "r")
+ Grass7Utils.version = f.read().split(' ')[0]
+ f.close()
+
+ major, minor, patch = Grass7Utils.version.split('.')
+ Grass7Utils.command = "grass{}{}".format(major, minor)
break
else:
folder = os.path.join(unicode(QgsApplication.prefixPath()), 'grass7')
@@ -141,7 +177,7 @@ class Grass7Utils:
output.write('if "%GRASS_ADDON_PATH%"=="" set PATH=%WINGISBASE%\\bin;%WINGISBASE%\\lib;%PATH%\n')
output.write('if not "%GRASS_ADDON_PATH%"=="" set PATH=%WINGISBASE%\\bin;%WINGISBASE%\\lib;%GRASS_ADDON_PATH%;%PATH%\n')
output.write('\n')
- output.write('set GRASS_VERSION=' + Grass7Utils.getGrassVersion() + '\n')
+ output.write('set GRASS_VERSION=' + Grass7Utils.installedVersion() + '\n')
output.write('if not "%LANG%"=="" goto langset\n')
output.write('FOR /F "usebackq delims==" %%i IN (`"%WINGISBASE%\\etc\\winlocale"`) DO @set LANG=%%i\n')
output.write(':langset\n')
@@ -251,8 +287,9 @@ class Grass7Utils:
command = Grass7Utils.grassPath() + os.sep + 'grass.sh ' \
+ Grass7Utils.grassMapsetFolder() + '/PERMANENT'
else:
- command = 'grass70 ' + Grass7Utils.grassMapsetFolder() \
- + '/PERMANENT'
+ if Grass7Utils.command is None:
+ Grass7Utils.installedVersion()
+ command = Grass7Utils.command + ' ' + os.path.join(Grass7Utils.grassMapsetFolder(), 'PERMANENT')
return command, env
@@ -417,4 +454,4 @@ class Grass7Utils:
helpPath = os.path.abspath(path)
break
- return helpPath if helpPath is not None else 'http://grass.osgeo.org/grass70/manuals/'
+ return helpPath if helpPath is not None else 'http://grass.osgeo.org/{}/manuals/'.format(Grass7Utils.command)
diff --git a/python/plugins/processing/algs/qgis/FieldsMapper.py b/python/plugins/processing/algs/qgis/FieldsMapper.py
index 4b50e98..267fa64 100644
--- a/python/plugins/processing/algs/qgis/FieldsMapper.py
+++ b/python/plugins/processing/algs/qgis/FieldsMapper.py
@@ -115,30 +115,33 @@ class FieldsMapper(GeoAlgorithm):
inFeat = QgsFeature()
outFeat = QgsFeature()
features = vector.features(layer)
- total = 100.0 / len(features)
- for current, inFeat in enumerate(features):
- rownum = current + 1
-
- outFeat.setGeometry(inFeat.geometry())
-
- attrs = []
- for i in xrange(0, len(mapping)):
- field_def = mapping[i]
- expression = expressions[i]
- exp_context.setFeature(inFeat)
- exp_context.lastScope().setVariable("row_number", rownum)
- value = expression.evaluate(exp_context)
- if expression.hasEvalError():
- calculationSuccess = False
- error = expression.evalErrorString()
- break
-
- attrs.append(value)
- outFeat.setAttributes(attrs)
-
- writer.addFeature(outFeat)
-
- progress.setPercentage(int(current * total))
+ if len(features):
+ total = 100.0 / len(features)
+ for current, inFeat in enumerate(features):
+ rownum = current + 1
+
+ outFeat.setGeometry(inFeat.geometry())
+
+ attrs = []
+ for i in xrange(0, len(mapping)):
+ field_def = mapping[i]
+ expression = expressions[i]
+ exp_context.setFeature(inFeat)
+ exp_context.lastScope().setVariable("row_number", rownum)
+ value = expression.evaluate(exp_context)
+ if expression.hasEvalError():
+ calculationSuccess = False
+ error = expression.evalErrorString()
+ break
+
+ attrs.append(value)
+ outFeat.setAttributes(attrs)
+
+ writer.addFeature(outFeat)
+
+ progress.setPercentage(int(current * total))
+ else:
+ progress.setPercentage(100)
del writer
diff --git a/python/plugins/processing/algs/qgis/spatialite_utils.py b/python/plugins/processing/algs/qgis/spatialite_utils.py
index 3c5f314..8cd0e09 100644
--- a/python/plugins/processing/algs/qgis/spatialite_utils.py
+++ b/python/plugins/processing/algs/qgis/spatialite_utils.py
@@ -26,6 +26,7 @@ __copyright__ = '(C) 2015, René-Luc Dhont'
__revision__ = '$Format:%H$'
from pyspatialite import dbapi2 as sqlite
+import re
class DbError(Exception):
@@ -64,11 +65,10 @@ class GeoDB:
try:
self._exec_sql(c, u'SELECT spatialite_version()')
rep = c.fetchall()
- v = [int(a) for a in rep[0][0].split('.')]
- vv = v[0] * 100000 + v[1] * 1000 + v[2] * 10
+ v = [int(x) if x.isdigit() else x for x in re.findall("\d+|[a-zA-Z]+", rep[0][0])]
# Add spatialite support
- if vv >= 401000:
+ if v >= [4, 1, 0]:
# 4.1 and above
sql = "SELECT initspatialmetadata(1)"
else:
diff --git a/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py b/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py
index be49232..47472ea 100644
--- a/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py
+++ b/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py
@@ -53,7 +53,7 @@ class SagaAlgorithmProvider(AlgorithmProvider):
"2.2.2": ("2.2.2", SagaAlgorithm214),
"2.2.3": ("2.2.3", SagaAlgorithm214),
"2.3.0": ("2.3.0", SagaAlgorithm230),
- "2.3.1": ("2.3.1", SagaAlgorithm230)}
+ "2.3.1": ("2.3.0", SagaAlgorithm230)}
def __init__(self):
AlgorithmProvider.__init__(self)
diff --git a/python/plugins/processing/algs/saga/SagaUtils.py b/python/plugins/processing/algs/saga/SagaUtils.py
index 819a9d0..2155294 100644
--- a/python/plugins/processing/algs/saga/SagaUtils.py
+++ b/python/plugins/processing/algs/saga/SagaUtils.py
@@ -63,9 +63,17 @@ def findSagaFolder():
if os.path.exists(os.path.join(testfolder, 'saga_cmd')):
folder = testfolder
elif isWindows():
- testfolder = os.path.join(os.path.dirname(QgsApplication.prefixPath()), 'saga')
- if os.path.exists(os.path.join(testfolder, 'saga_cmd.exe')):
- folder = testfolder
+ folders = []
+ folders.append(os.path.join(os.path.dirname(QgsApplication.prefixPath()), 'saga'))
+ if "OSGEO4W_ROOT" in os.environ:
+ folders.append(os.path.join(str(os.environ['OSGEO4W_ROOT']), "apps", "saga-ltr"))
+ folders.append(os.path.join(str(os.environ['OSGEO4W_ROOT']), "apps", "saga"))
+
+ for testfolder in folders:
+ if os.path.exists(os.path.join(testfolder, 'saga_cmd.exe')):
+ folder = testfolder
+ break
+
return folder
@@ -87,12 +95,12 @@ def createSagaBatchJobFileFromSagaCommands(commands):
fout = open(sagaBatchJobFilename(), 'w')
if isWindows():
fout.write('set SAGA=' + sagaPath() + '\n')
- fout.write('set SAGA_MLB=' + sagaPath() + os.sep
- + 'modules' + '\n')
+ fout.write('set SAGA_MLB=' + sagaPath() + os.sep +
+ 'modules' + '\n')
fout.write('PATH=%PATH%;%SAGA%;%SAGA_MLB%\n')
elif isMac():
- fout.write('export SAGA_MLB=' + sagaPath()
- + '/../lib/saga\n')
+ fout.write('export SAGA_MLB=' + sagaPath() +
+ '/../lib/saga\n')
fout.write('export PATH=' + sagaPath() + ':$PATH\n')
else:
pass
@@ -102,6 +110,7 @@ def createSagaBatchJobFileFromSagaCommands(commands):
fout.write('exit')
fout.close()
+
_installedVersion = None
_installedVersionFound = False
@@ -153,8 +162,8 @@ def executeSaga(progress):
if isWindows():
command = ['cmd.exe', '/C ', sagaBatchJobFilename()]
else:
- os.chmod(sagaBatchJobFilename(), stat.S_IEXEC
- | stat.S_IREAD | stat.S_IWRITE)
+ os.chmod(sagaBatchJobFilename(), stat.S_IEXEC |
+ stat.S_IREAD | stat.S_IWRITE)
command = [sagaBatchJobFilename()]
loglines = []
loglines.append(QCoreApplication.translate('SagaUtils', 'SAGA execution console output'))
diff --git a/src/app/pluginmanager/qgspluginmanager.cpp b/src/app/pluginmanager/qgspluginmanager.cpp
index c42c162..905fd47 100644
--- a/src/app/pluginmanager/qgspluginmanager.cpp
+++ b/src/app/pluginmanager/qgspluginmanager.cpp
@@ -1461,7 +1461,7 @@ void QgsPluginManager::updateWindowTitle()
if ( curitem )
{
QString title = QString( "%1 | %2" ).arg( tr( "Plugins" ), curitem->text() );
- if ( mOptionsListWidget->currentRow() < mOptionsListWidget->count() - 1 )
+ if ( mOptionsListWidget->currentRow() < mOptionsListWidget->count() - 1 && mModelPlugins )
{
// if it's not the Settings tab, add the plugin count
title += QString( " (%3)" ).arg( mModelProxy->countWithCurrentStatus() );
diff --git a/src/core/geometry/qgscurvepolygonv2.cpp b/src/core/geometry/qgscurvepolygonv2.cpp
index d30cc36..c751aab 100644
--- a/src/core/geometry/qgscurvepolygonv2.cpp
+++ b/src/core/geometry/qgscurvepolygonv2.cpp
@@ -158,10 +158,13 @@ bool QgsCurvePolygonV2::fromWkt( const QString& wkt )
{
QPair<QgsWKBTypes::Type, QString> childParts = QgsGeometryUtils::wktReadBlock( childWkt );
- if ( QgsWKBTypes::flatType( childParts.first ) == QgsWKBTypes::LineString )
+ QgsWKBTypes::Type flatCurveType = QgsWKBTypes::flatType( childParts.first );
+ if ( flatCurveType == QgsWKBTypes::LineString )
mInteriorRings.append( new QgsLineStringV2() );
- else if ( QgsWKBTypes::flatType( childParts.first ) == QgsWKBTypes::CircularString )
+ else if ( flatCurveType == QgsWKBTypes::CircularString )
mInteriorRings.append( new QgsCircularStringV2() );
+ else if ( flatCurveType == QgsWKBTypes::CompoundCurve )
+ mInteriorRings.append( new QgsCompoundCurveV2() );
else
{
clear();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/qgis.git
More information about the Pkg-grass-devel
mailing list