14487 Commits

Author SHA1 Message Date
Nyall Dawson
a0e91f3798 Add API to read/write QgsExpressionContextScope from/to XML 2019-01-18 12:56:05 +11:00
Ivan Ivanov
2488f71ddb Added test for 'gdal_rasterize -init 0' 2019-01-18 09:50:08 +11:00
Ivan Ivanov
36c821da34 Allow gdal_rasterize to accept -init with value of 0; changed default value to not introduce a breaking change 2019-01-18 09:50:08 +11:00
Denis Rouzaud
5fa5631bbd
add enum value to key and reverse helpers (#8879)
* add enum value to key and reverse helpers

* cast cont char* to QString

* use QStringLiteral
2019-01-17 09:40:13 -05:00
Nyall Dawson
3d283c1b05 [needs-docs] Show actual linked color in color buttons when color
has been linked to a project color

Instead of only showing linked color status in the accompanying
data defined button, we now also show it inside the color button
itself. So now the button color is a live reflection of the
project color it is linked to.

Additionally, when the color is linked, the button only allows
users the choice of "unlinking" the color from the linked
project color. The usual color button options allowing users
to directly change the color are not present. (As linked
colors must be edited in the project colors section from
the project properties dialog)
2019-01-17 16:14:32 +11:00
Nyall Dawson
f89d061ba0 [FEATURE][processing] Add geodesic mode for "Join by Lines (Hub lines)" algorithm
This allows optional creation of geodesic lines, which represent the
shortest distance between the points based on the ellipsoid.

When geodesic mode is used, it is possible to split the created lines
at the antimeridian (±180 degrees longitude), which can improve
rendering of the lines. Additionally, the distance between vertices
can be specified. A smaller distance results in a denser, more accurate
line.
2019-01-17 03:39:20 +11:00
Nyall Dawson
2aab28380c [browser] Don't show gdal/ogr layer items for QGIS style xml files
These aren't layers, so the extra entries are just distracting noise.
2019-01-16 12:10:25 +11:00
Nyall Dawson
878cec9977 Allow additional tags to be set when copying items to default style 2019-01-16 12:04:34 +11:00
Nyall Dawson
42a7804323 Add method to hide favorites and smart groups from style manager dialog 2019-01-16 12:04:34 +11:00
Nyall Dawson
ec8b299b9b Add a read only mode to QgsStyleManagerDialog
Allows the dialog to browse an existing style, but prevents users
from making any edits to the style.
2019-01-16 12:04:34 +11:00
lbartoletti
c885cd7267 add toString and repr for qgsvector 2019-01-16 01:10:33 +11:00
Mathieu Pellerin
6957009f8b [themes] Fix the processing modeler's rendering on dark backgrounds 2019-01-15 12:24:50 +07:00
Alex
004d6bae5f Add QgsRenderContext to QgsLayerTreeModelLegendNode::ItemContext 2019-01-15 13:37:36 +11:00
lbartoletti
edadcb773f Refactoring of rectangle maptools
Adds a new geometry class QgsQuadrilateral, for 4 sided geometries.
2019-01-15 10:24:16 +11:00
Peter Petrik
cd9a84e11c [feature] [mesh] Mesh Calculator
Similarly to raster calculator, mesh calculator can take dataset groups from current mesh layer and
combine them with various aritmentic/logical operators to new dataset group.
2019-01-14 12:32:36 +01:00
Nyall Dawson
f8af098fc2 Correctly handle selection of mixed item types 2019-01-14 18:10:54 +10:00
Nyall Dawson
d5cedfe9f5 Dox++, deprecate method 2019-01-14 18:10:54 +10:00
Nyall Dawson
b72e01f0c7 Use QgsStyleModel in Style Manager dialog
Fixes MANY symbol filtering issues in the dialog, and brings many
improvements (e.g. hidpi fixes, nicer tooltips, etc)
2019-01-14 18:10:54 +10:00
Nyall Dawson
ef250c4563 Fix main panel ownership in QgsPanelWidgetStack bindings 2019-01-14 16:41:08 +10:00
Raymond Nijssen
0ba9a326ec Add API to calculate innerTangents for 2 circles 2019-01-14 05:27:19 +10:00
Nyall Dawson
ac10769809 Move method for detecting project colors to QgsProperty 2019-01-12 18:11:44 +10:00
Nyall Dawson
f7745c94d9 Add a signal to QgsProject for when project color scheme changes 2019-01-12 18:11:44 +10:00
Nyall Dawson
7b664ea9a8 Fix see also link 2019-01-12 05:31:00 +10:00
Nyall Dawson
629de0c651 Fix some corner cases 2019-01-12 05:31:00 +10:00
Nyall Dawson
2a774d6dac [FEATURE][processing] New algorithm "Geodesic line split at antimeridian"
Ports the similar algorithm from the shape tools plugin to c++, and utilises
built in QgsDistanceArea ellipsoidal calculations to split the lines.

This algorithm splits a line into multiple geodesic segments, whenever the
line crosses the antimeridian (±180 degrees longitude)

Splitting at the antimeridian helps the visual display of the lines in some
projections. The returned geometry will always be a multi-part geometry.

Whenever line segments in the input geometry cross the antimeridian,
they will be split into two segments, with the latitude of the breakpoint
being determined using a geodesic line connecting the points either side
of this segment. The current project ellipsoid setting will be used when
calculating this breakpoint.

If the input geometry contains M or Z values, these will be linearly
interpolated for the new vertices created at the antimeridian.

Supports in-place edit mode also.
2019-01-12 05:31:00 +10:00
Nyall Dawson
021f5ea366 [needs-docs][api] Rename QgsDistanceArea methods to change "date line"
to "antimeridian"

Because the date line =/= +/-180 degree longitude, which is what
we were incorrectly using it to mean.
2019-01-12 05:31:00 +10:00
Nyall Dawson
a8bd12c4e3 [FEATURE][API] Add method to QgsDistanceArea to split a (multi)line geometry
at the antimeridian

Whenever line segments in the input geometry cross the antimeridian, they
will be split into two segments, with the latitude of the breakpoint being
determined using a geodesic line connecting the points either side of this
segment.

If the geometry contains M or Z values, these will be linearly interpolated
for the new vertices created at the antimeridian.
2019-01-12 05:31:00 +10:00
Alessandro Pasotti
4d609ff46f
Merge pull request #8830 from elpaso/bugfix-server-fcgi-rewritten-uri
[server] Use REQUEST_URI as default URL for FCGI requests
2019-01-11 15:58:26 +01:00
Nyall Dawson
e569331abb Disable linked color buttons when a project color is set for a property 2019-01-11 22:34:34 +10:00
Nyall Dawson
eecfe50dc5 [FEATURE] Show Project Colors in color bound data defined buttons
This adds a new "Project Colors" section in data defined buttons
which are linked to a color value. The color menu contains all
colors defined as part of the current project's Project Color
Scheme (which is defined through project properties).

When a project color is selected from the button, the property
becomes linked to that color. It will automatically follow any
future changes to the color when made through project properties.

This allows users to define common colors for a project once,
and then "bind" symbol, label, layout, etc colors to these
preset colors. The link is live, so you change it once, and
the change is reflected EVERYWHERE. Sure beats updating a color
100 times when it's use has been scattered throughout a project's
symbols, labels, etc...

(Basically, this is just adding a shortcut to setting a data
defined expression "project_color(...)" for the property. The
project_color function has been around a LOOONG time, but it's
only really been usable by power users before this change)
2019-01-11 22:34:34 +10:00
Nyall Dawson
79d01a9b94 Move QgsColorButton::createMenuIcon to public API, make static 2019-01-11 22:34:34 +10:00
Nyall Dawson
938adb8c17 [api] Add PyQGIS helpers to QgsGeometry.asMultiPoint(), asMultiPolyline()
and asMultiPolygon()

- raise ValueError when these methods are called with null geometries
- raise TypeError when these methods are called with incompatible
geometry types, instead of silently returning empty lists
2019-01-11 21:31:14 +10:00
Nyall Dawson
9d4b80e2f1 Refine multiline selection behaviour in editors 2019-01-11 10:15:51 +10:00
Nyall Dawson
fdfe0cee23 [api][needs-docs] Allow registering PyQGIS using a nice decorator syntax
This allows nice and simple, elegant construction of checks for
Python.

To use, Python based checks should use the decorator syntax:

  from qgis.core import check

  @check.register(type=QgsAbstractValidityCheck.TypeLayoutCheck)
  def my_layout_check(context, feedback):
    results = ...
    return results

Or, a more complete example. This one throws a warning when attempting
to export a layout with a map item set to the Web Mercator projection:

  @check.register(type=QgsAbstractValidityCheck.TypeLayoutCheck)
  def layout_map_crs_choice_check(context, feedback):
    layout = context.layout
    results = []
    for i in layout.items():
      if isinstance(i, QgsLayoutItemMap) and i.crs().authid() == 'EPSG:3857':
        res = QgsValidityCheckResult()
        res.type = QgsValidityCheckResult.Warning
        res.title='Map projection is misleading'
        res.detailedDescription='The projection for the map item {} is set to <i>Web Mercator (EPSG:3857)</i> which misrepresents areas and shapes. Consider using an appropriate local projection instead.'.format(i.displayName())
        results.append(res)

    return results
2019-01-11 09:51:04 +10:00
Nyall Dawson
b80829ce59 Remove leftover QObject inheritance 2019-01-11 09:51:04 +10:00
Matthias Kuhn
fd00cd54fe
Merge pull request #8705 from arnaud-morvan/server_diagrams_filter
Apply featureFilterProvider in QgsVectorLayerDiagramProvider
2019-01-10 18:02:36 +01:00
Alessandro Pasotti
cd763bccf2 Update override comment with a full explanation of what it does
Also checks for original url emptiness before returning it.
2019-01-10 10:58:27 +01:00
Nyall Dawson
32126ca2b8 Add missing since annotation 2019-01-10 19:54:26 +10:00
Nyall Dawson
5c2b39438b Dox++ 2019-01-10 19:54:26 +10:00
Nyall Dawson
c7d09a3261 Fix typo 2019-01-10 19:54:26 +10:00
Nyall Dawson
2a2995aad4 Sipify 2019-01-10 19:54:26 +10:00
Alex
f0ffbeb7be change bindings again 2019-01-10 19:54:26 +10:00
Alex
12273fa83a Change bindings
Manually inserting the proper binding
2019-01-10 19:54:26 +10:00
Matthias Kuhn
c263750930
Merge pull request #8820 from m-kuhn/map_layer_template
QgsProject::mapLayer<Qgs[Type]Layer *>( layerId ); template
2019-01-10 08:06:52 +01:00
Blottiere Paul
fcc3996ddf Remove unnecessary #include in server 2019-01-10 07:50:02 +10:00
Alessandro Pasotti
00ec08a8aa Rewritten function comment 2019-01-09 18:46:32 +01:00
Alessandro Pasotti
bb9ec39fa6 [server] Fix URL rewrite from fcgi servers
The URL exposed in the XML documents generated
by the server was wrong because instead of
using the original URL (from REQUEST_URI)
the rewritten query string (from QUERY_STRING)
was applied to the internal mUrl variable.

This patch also adds some tests for the
FCGI request, that handle most common
scenarios with bot rewritten and not
rewritten URLs.

QgsFcgiServerRequest is now exposed to
Python mainly for testability purposes.
2019-01-09 18:46:32 +01:00
Matthias Kuhn
e32c739b47
Make use of QgsProject::mapLayer<QgsVectorLayer *> template 2019-01-09 16:25:45 +01:00
arnaud.morvan@camptocamp.com
948048cd4d Do not overwrite renderContext in QgsMapRendererJob::drawLabeling
Dedicated QgsRenderContext is already created and configured in prepareLabelingJob.
2019-01-09 15:08:37 +01:00
Nyall Dawson
eaad71e0c9 Tweak API
Better to use QVector here, because the QgsLineString/QgsGeometry
methods all use QVector too, and we want to avoid unnecessary
list->vector conversions.
2019-01-08 19:48:15 +10:00