5806 Commits

Author SHA1 Message Date
Nyall Dawson
4d5fe9a086 [FEATURE][callouts] Add setting to allow callouts to be drawn to all parts
of a multi-part feature

Also data-definable!
2019-07-29 11:18:10 +10:00
Nyall Dawson
bb9267d11b Record whether a callout corresponds to a feature which has all parts labeled in the callout context
This is useful information for dictating how a callout should be rendered
2019-07-29 11:18:10 +10:00
Nyall Dawson
802deddaf9 Sipify 2019-07-29 09:03:40 +10:00
Nyall Dawson
3484a0246d [labeling] Add API to allow curved labels to overrun features 2019-07-26 18:24:20 +10:00
Nyall Dawson
4c7f8a951d Add API to specify WKT format when exporting QgsCoordinateReferenceSystem objects
Like all good things, this is Proj 6 only.
2019-07-26 18:23:56 +10:00
Matthias Kuhn
4e33bc1fcf
Merge pull request #30610 from signedav/fix_valuerelation
Fix multi-selection on value relation widget using string fields
2019-07-25 18:16:25 +02:00
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
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
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
751f15410a Add move operators to QgsEffectStack
Results in a (very slight) performance boost with symbol copies
2019-07-24 06:31:11 +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
Nyall Dawson
e208bc5888 Avoid cloning symbols during label rendering
This is expensive and unnecessary
2019-07-23 17:41:39 +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
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
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
8f6f04885b [FEATURE] Add @scale_value expression variable for use when evaluating
data defined text format properties while rendering scale bar text

Allows for per-label customisation of the text format inside scale bars
2019-07-22 11:34:32 +10:00
Nyall Dawson
19a2b0e5d5 [api] Allow data defined properties to be set in QgsTextFormat, so
that these are automatically respected whenever the format is
rendered using QgsTextRenderer

This is done transparently to the caller - so by porting away
from the raw QPainter text apis to use QgsTextRenderer instead,
then they immediately gain the ability to use data defined
properties in their text formats.
2019-07-22 11:34:32 +10:00
Nyall Dawson
bae321ad28 Prioritize moving unplaced labels in the move label tool
These are most likely the ones which users are trying to move
when there's overlapping labels
2019-07-21 20:29:34 +10:00
Nyall Dawson
87282e5dd7 [needs-docs] Add checkbox to layout map label settings panel to allow
display of unplaced labels

This is independant from the main canvas setting, and can be used
to determine whether labels are missing from a particular layout map
2019-07-21 20:29:34 +10:00
Nyall Dawson
39d4145aae Append additional "QgsCalloutContext" member to callout rendering virtual
methods

While unused for now, this gives us flexibility in future to specify
additional useful contextual information about how a callout should
be rendered without breaking API (e.g. label text alignment, label
font settings, etc)
2019-07-21 20:29:34 +10:00
Matthias Kuhn
6ae23a180e [FEATURE] Allow rendering raster layers outside the reported extent
The extent reported by raster layers may be smaller than the area
which can be rendered.
Notably for WMS with symbology that takes more space than the data.

Fix #30251
2019-07-20 14:25:19 +02:00
Matthias Kuhn
ce8004446a Update the project ellipsoid if CRS is taken from first layer
Fix #30815
2019-07-19 11:08:39 +02:00
Nyall Dawson
d439484c27 Remove disableCache argument from python bindings 2019-07-19 13:39:06 +10:00
Nyall Dawson
9015a177d0 Disable CRS and transform cache permenantly when exiting Qgis
Hopefully this will prevent additional items being added to the cache
after we've gracefully finalised proj operations, which results
in the infamous crash-on-exit fiasco...
2019-07-19 13:39:06 +10:00
Nyall Dawson
dbe7e6156e Append additional "QgsCalloutContext" member to callout rendering virtual
methods

While unused for now, this gives us flexibility in future to specify
additional useful contextual information about how a callout should
be rendered without breaking API (e.g. label text alignment, label
font settings, etc)
2019-07-19 13:38:49 +10:00
David Signer
b4dab2df38 made QgsPostgresStringUtils namespace to class because of private functions we use there and possibly in future there are more coming and renamed the methods
fixed indents and comments
2019-07-18 09:25:34 +02:00
Nyall Dawson
83168d3a02 [FEATURE] Add a separate unit choice for milliradians (SI definition) vs mil (NATO definition)
Allows angular measurements in either of these units
2019-07-18 15:06:52 +10:00
David Signer
890e699c10 remove unused sip.in 2019-07-17 16:53:00 +02:00
David Signer
201dd0850b renamed QgsArrayUtils to QgsPostgresStringUtils 2019-07-17 16:50:58 +02:00
David Signer
447b1076a3 sip in file 2019-07-17 07:04:24 +02:00
David Signer
380d5c7706 sip stuff 2019-07-17 07:03:18 +02:00
Matthias Kuhn
7013539981 Resolve code issues 2019-07-17 04:26:29 +10:00
Sandro Mani
afb698b334 Add missing consts 2019-07-17 04:26:29 +10:00
Sandro Mani
bc4bd9199e Add QgsUnitTypes::AngleUnit::AngleMil 2019-07-17 04:26:29 +10:00
Sandro Mani
68c94dd844 Move QgsReadWriteContext::DefaultTranslator to cpp file
The nested class appears to cause sip to stumble with undefined references to vtable (observed cross-compiling from Fedora to MinGW)
2019-07-17 04:26:29 +10:00
nirvn
dded60611b [callouts] Add symbol-related variables to the expression context 2019-07-16 14:59:06 +07:00
luz.paz
604e66ba75 sipify_all 2019-07-16 11:29:42 +10:00
Nyall Dawson
171f06447a [callouts] Ensure simple callouts are rendered below all map labels
...instead of being rendered on top of some. For this callout style,
we don't want callouts overlapping labels (rather the opposite). But
leave API in place to allow other callout styles to render below
their associated labels only, as this may be wanted for some styles
(e.g. balloon style callouts)
2019-07-16 07:46:58 +10:00
Nyall Dawson
c2ce430116 [processing] Don't append full traceback when a QgsProcessingException is
raised by a Python algorithm

This is too noisy for these expected exceptions -- instead, only
show the traceback for other exceptions (Which are likely a result
of Python coding errors, so they are useful for debugging)
2019-07-16 07:44:09 +10:00
Alexander Bruy
da8b574bf1
Merge pull request #30716 from alexbruy/fix-sip
fix SIP file
2019-07-15 19:11:22 +03:00
Matthias Kuhn
5f0447b397
Fix sip file (#30714) 2019-07-15 15:01:42 +02:00
Alexander Bruy
39124dad04 update SIP file 2019-07-15 15:59:25 +03:00
Alex
248af94ba9 Symbol aware legend expression (#9648) 2019-07-15 07:12:24 +02:00
Nyall Dawson
64ecc06fed Store publish_to field locally 2019-07-15 12:52:20 +10:00
Nyall Dawson
a1d116ebb6 More dox 2019-07-15 12:52:20 +10:00
Nyall Dawson
a0e41f98e8 Spelling and dox 2019-07-15 12:52:20 +10:00