56538 Commits

Author SHA1 Message Date
Matthias Kuhn
a681e1ed45
Merge pull request #30836 from m-kuhn/raster_ignore_extent
[FEATURE] Allow rendering raster layers outside the reported extent
2019-07-25 10:24:12 +02:00
Nyall Dawson
6d3b1574b4 Register the app bad layer handler before loading plugins
This gives plugins a chance to replace the handler without their
changes being overwriting immediately afterwards
2019-07-25 16:50:48 +10:00
Nyall Dawson
fe4a82939e [labeling] Fix empty segment sometimes created when using repeated labels 2019-07-25 15:11:16 +10:00
Nyall Dawson
35a35fbbb1 [labeling] Fix repeated line labels gravitate to start of line
Avoids situations like

1. Line length of 3cm
2. Repeat distance of 2cm
3. Label size is 1.5 cm

    2cm    1cm
/--Label--/----/

i.e. the labels are off center and gravitate toward line starts

Instead, we first calculate how many complete repeats we can fit
in, and then divide the line into even sections of this length,
avoiding the situation where some leftover segment of the line
end isn't big enough for the label to fit.
2019-07-25 15:11:16 +10:00
Nyall Dawson
00d3becef9 [labeling] Don't waste time trying to chop lines smaller then the repeat distance 2019-07-25 15:11:16 +10:00
Nyall Dawson
594e52f444 Better memory management 2019-07-25 15:11:16 +10:00
Nyall Dawson
432317f50c [labeling] Don't add duplicate points at the end of the final repeated label segment
This results in an invalid geometry and causes issues with the labeling
of this segment
2019-07-25 15:11:16 +10:00
Nyall Dawson
03d561b199 [labeling] Ensure short lines (wrt font size) still generate sufficient
candidates to ensure centered placement of labels
2019-07-25 12:11:45 +10:00
Nyall Dawson
da1b5637af Fix deprecated gdal import warnings 2019-07-25 11:25:51 +10:00
Nyall Dawson
83a842d44f Ensure ownership of path preprocessor is transferred 2019-07-25 08:41:28 +10:00
Nyall Dawson
2237c6ae99 [API][FEATURE] Allow setting a custom path pre-processor for QgsPathResolver
QgsPathResolver::setPathPreprocessor allows setting a custom path pre-processor
function, which allows for manipulation of paths and data sources prior
to resolving them to file references or layer sources.

The processor function must accept a single string argument (representing the
original file path or data source), and return a processed version of this path.

The path pre-processor function is called before any bad layer handler.

Example - replace an outdated folder path with a new one:

  def my_processor(path):
    return path.replace('c:/Users/ClintBarton/Documents/Projects', 'x:/Projects/')

  QgsPathResolver.setPathPreprocessor(my_processor)

Example - replace a stored database host with a new one:

  def my_processor(path):
    return path.replace('host=10.1.1.115', 'host=10.1.1.116')

  QgsPathResolver.setPathPreprocessor(my_processor)

Example - replace stored database credentials with new ones:

  def my_processor(path):
    path= path.replace("user='gis_team'", "user='team_awesome'")
    path = path.replace("password='cats'", "password='g7as!m*'")
    return path

  QgsPathResolver.setPathPreprocessor(my_processor)
2019-07-25 08:41:28 +10:00
Nyall Dawson
fee239dbcc Avoid storing and cloning paint effects for layers if they are just
the default stack unchanged

Speeds up cloning of symbol layers
2019-07-25 07:00:37 +10:00
Matthias Kuhn
e51a3babb7 Move WMS ignore extents to service level 2019-07-24 12:41:31 +02:00
Matthias Kuhn
5981df7adb
Merge pull request #30901 from m-kuhn/https_osm
Use https for openstreetmap
2019-07-24 11:52:20 +02:00
Matthias Kuhn
103d104303 Use https for openstreetmap
Fix #30855
2019-07-24 10:25:20 +02:00
Nyall Dawson
3174d692b1 Add a reserve method to QgsGeometryCollection
Attempts to allocate memory for at least the specified number of geometries.

If the number of geometries is known in advance, calling this function
prior to adding geometries will prevent reallocations and memory fragmentation.
2019-07-24 16:41:37 +10:00
Nyall Dawson
bbd2f65a6c Direct conversion from ogr multilinestrings to QgsGeometry
Avoid expense of converting to/from wkb
2019-07-24 16:41:37 +10:00
nirvn
8b616b646f Followup 37cd8ce: fix non-area dialog stretching 2019-07-24 12:46:21 +07:00
nirvn
37cd8ced45 [ui] Fix missing spacer in the measure dialog 2019-07-24 11:41:32 +07:00
Nyall Dawson
751f15410a Add move operators to QgsEffectStack
Results in a (very slight) performance boost with symbol copies
2019-07-24 06:31:11 +10:00
Nyall Dawson
2cd5334137 Fix large speed regression in evaluating string equality expressions
QgsExpression::isIntervalSafe is VERY expensive and should not be used
unless we HAVE to
2019-07-24 04:11:16 +10:00
Nyall Dawson
64104d3076 Fix unnecessary calculation of marker symbol bounds when labeling is not
required for a layer and symbols layers are in place

Speeds up rendering of simple marker points matching this situation
by ~3x
2019-07-24 04:10:43 +10:00
Nyall Dawson
4b79efcb19 Optimise reading of multipoints from OGR
Avoid WKB conversion on OGR side, and parsing on QGIS side, and
just handle the direct conversion of OGR geometries instead
2019-07-24 04:10:14 +10:00
Nyall Dawson
93432b2eb7 Fix svg cache file modified timeout only blocks checking the modified datetime once ever
Instead restart the timeout everytime after verifying the file hasn't changed
2019-07-24 04:09:38 +10:00
Nyall Dawson
ec1cdaae2d Fix expensive file modified time check is applied with every check of svg/image cache 2019-07-24 04:09:38 +10:00
Nyall Dawson
2994b20eda Optimise checking for active properties
Avoid copying QgsProperty values and instead use references only
2019-07-24 04:09:03 +10:00
Nyall Dawson
49307fa06b Fix some dialogs never remember geometry when using enableAutoGeometryRestore
If a dialog is created but never shown, we shouldn't save the geometry
or we'll be saving a default state only
2019-07-24 04:08:28 +10:00
Nyall Dawson
d53d267397 Show layer name in datum transform dialog, where available
Fixes #30826
2019-07-24 04:07:45 +10:00
Denis Rouzaud
1dc7b2f6ed
allow to follow redirect for custom plugin repo url (#30869) 2019-07-23 12:53:33 +02:00
Nyall Dawson
7271347b64 Cache painter path for font marker when it doesn't change
Speeds up font marker rendering by around 2x
2019-07-23 19:35:45 +10:00
Julien Cabieces
2f1235a3e3 correct ini file comment
Co-Authored-By: Nyall Dawson <nyall.dawson@gmail.com>
2019-07-23 19:03:51 +10:00
Julien Cabieces
f9a6418eda Add proxyExcludedUrls settings example in qgis_global_settings.ini file 2019-07-23 19:03:51 +10:00
Julien Cabieces
0dfa77ddb3 Add a new settings noProxyUrls and change UI to edit this setting 2019-07-23 19:03:51 +10:00
Julien Cabieces
906c8a1de0 fixes #28034 : Return NoProxy instead of DefaultProxy when url matches
excludes list
2019-07-23 19:03:51 +10:00
Nyall Dawson
e208bc5888 Avoid cloning symbols during label rendering
This is expensive and unnecessary
2019-07-23 17:41:39 +10:00
Nyall Dawson
baf2006b16 Correctly expand single-click search rect for show/hide label tool 2019-07-23 12:17:17 +10:00
Nyall Dawson
d8a3031d65 [needs-docs][labeling] When using the Show/Hide Label tool, a single
click on a label toggles this label

Unlike in marquee mode, where users must hold ctrl while dragging
over labels to hide them, when only a click on an existing label
is made we trigger a toggle of the label. It's a more intuitive
UX.
2019-07-23 12:17:17 +10:00
Nyall Dawson
45b23fd5b2 [callouts] Allow callout types to have icons, and use them in the type combobox
...and pick ugly icons to prompt @nirvn into action ;)
2019-07-23 12:12:18 +10:00
Nyall Dawson
ab4d8c4500 Fix tooltips in labeling widget tabs 2019-07-23 12:12:18 +10:00
Nyall Dawson
109ad22c82 Minor tweaks to labeling widget 2019-07-23 12:12:18 +10:00
Nyall Dawson
b6fb67535d Fix loss of newly created auxilary field connections in labeling widget 2019-07-23 12:12:18 +10:00
Juergen E. Fischer
1cb2562900 dwg import: set angle property for (unexpanded) inserts 2019-07-22 14:17:15 +02:00
nirvn
bc524b0e2e A couple of callouts dox fixes 2019-07-22 18:29:05 +07:00
nirvn
aab8e511bd [FEATURE][callouts] Allow specifying an offset from label area distance 2019-07-22 18:29:05 +07:00
lbartoletti
81c4b81b3b [bugfix] Fix the whole text instead of the selected part in db_manager save SQL file. fixes #30616 2019-07-22 18:41:01 +10:00
Nyall Dawson
2b554d8bab [FEATURE][callouts] Allow specifying an offset from feature distance
which controls a distance from the feature where callout lines end

Makes for visually more appealing callouts vs drawing them right
up against the edges of features
2019-07-22 18:40:08 +10:00
Nyall Dawson
c5f791e437 More consistency in labeling tooltips 2019-07-22 14:24:32 +10:00
Nyall Dawson
83418615f0 Improve tooltips for labeling toolbar 2019-07-22 14:24:32 +10:00
Nyall Dawson
9c02bd70a8 Rework unplaced labels icon for consistency with show pinned icon 2019-07-22 14:24:32 +10:00
Nyall Dawson
13af658134 Add some separators to labeling toolbar 2019-07-22 14:24:32 +10:00