18018 Commits

Author SHA1 Message Date
Nyall Dawson
beece1635d Start generalizing material widget handling 2020-07-28 20:45:50 +10:00
Nyall Dawson
e541fe68d7 Correctly restore materials using registry 2020-07-28 20:45:50 +10:00
Nyall Dawson
d579d67a4a [3d] Add a registry for 3d material settings 2020-07-28 20:45:50 +10:00
Nyall Dawson
a533268edf Ensure map frame and background also follow clip path 2020-07-28 15:12:04 +10:00
Nyall Dawson
c5b3443cb3 Don't draw items which are a clip source for a map 2020-07-28 15:12:04 +10:00
Nyall Dawson
264bd51594 [layouts] Add API to set item based clipping region on maps
Allows using shape or polygon layout items to set the overall shape
of a layout map item's contents
2020-07-28 15:12:04 +10:00
Nyall Dawson
915615aec4 [layouts][api] Add API to allow map items to be clipped (take their shape from)
other layout items which provide clipping paths

Opens the door for non-rectangular layout maps
2020-07-28 15:12:04 +10:00
Nyall Dawson
77badc0097 QgsLayoutItemShape can provide clip paths 2020-07-28 15:12:04 +10:00
Nyall Dawson
aa0b36b27d QgsLayoutItemPolygon can provide a clip path 2020-07-28 15:12:04 +10:00
Nyall Dawson
2b283951be Add api for layout items to create a clipping path 2020-07-28 15:12:04 +10:00
Nyall Dawson
19504adf55 Allow running "Add x/y fields" in place 2020-07-28 14:18:20 +10:00
Nyall Dawson
2104ae613a [processing] Add mechanism for algorithms to alter their core behavior
(e.g. parameters) when they are run in the "edit in-place" mode

This allows algorithms to dynamically adapt their behavior to make them compatible
with in-place mode. Previously, some useful algorithms could not be
run in-place because they alter a layer's structure (e.g. adding new
fields).

Now, these algorithms have a means to detect that they are being
run in-place and change their input parameters accordingly. E.g.
an algorithm which usually adds new fields to store calculated
values (such as "add xy fields to layer") could instead expose
field parameter choices to ask the user to pick from existing
fields in which to store the calculated values, thereby avoiding
the need to change the table structure and making them eligable
for running in-place mode.

Note that this needs to be handled algorithm-by-algorithm, it's
not automatic! It's just the raw api to allow this...
2020-07-28 14:18:20 +10:00
NEDJIMAbelgacem
a656da3b75 Moved finding geometries from parseVectorLayerEntity to each symbol class 2020-07-28 01:45:11 +01:00
Alessandro Pasotti
fb02ab9fa4 Virtual layers store subset string
Fixes #26189
2020-07-27 16:33:07 +02:00
Nyall Dawson
0bb9174c2a
Merge pull request #37973 from nyalldawson/table_editor_fixes
Misc layout table editor fixes and related text formatting widget fixes
2020-07-27 14:49:37 +10:00
Nyall Dawson
6e2d1023f2 [processing] Fix loading batch settings with date/time values
Fixes #37838
2020-07-27 14:19:49 +10:00
Nyall Dawson
466a01ca6d When setting a new text format for a QgsFontButton, automatically
update any open configuration panel to reflect the new format
(or dismiss it automatically if the new format is invalid)

Avoids UI going out of sync with text formats when a panel is already
open
2020-07-27 11:26:56 +10:00
Nyall Dawson
7cfa476a2d [layouts] Save table editor panel state to avoid having to constantly
resize formatting panel on reopen
2020-07-27 11:12:58 +10:00
Nyall Dawson
51d8ad75c5 Don't modify text format paint effects in place
Avoids race conditions when multiple threads are rendering the same
text format which contains paint effects

Fixes #37938
2020-07-27 07:36:50 +10:00
Nyall Dawson
95bd7b296b [feature][processing] New algorithm "Align points to features"
This algorithm calculates the rotation required to align point features
with their nearest feature from another reference layer. A new field is
added to the output layer which is filled with the angle (in degrees,
clockwise) to the nearest reference feature.

Optionally, the output layer's symbology can be set to automatically
use the calculated rotation field to rotate marker symbols.

If desired, a maximum distance to use when aligning points can be set,
to avoid aligning isolated points to distant features.

Designed for use cases like aligning building point symbols to follow
the nearest road direction!
2020-07-26 09:56:46 +10:00
Nyall Dawson
9b19e069b3 Allow symbol and color ramp visitors the ability to edit symbols/color ramps they visit 2020-07-26 09:56:46 +10:00
NEDJIMAbelgacem
860be14c32 add SIP_FACTO to QgsAbstractMaterialSettings::toExportParameters 2020-07-25 21:51:59 +01:00
nirvn
aa05f7641a [processing] Fix python error when attempting to re-open generate XYZ tiles algorithm from the history dialog 2020-07-24 13:33:11 +07:00
Nyall Dawson
f2e4ac606e [3d] Abstract out material settings
Opens the possibilities for non-phong based materials for 3d symbols
2020-07-24 16:28:18 +10:00
Nyall Dawson
a345ae94a5
Merge pull request #37929 from nyalldawson/fix_37912_refactor_fields
Fix expression previews in Refactor Fields and Aggregate algorithms
2020-07-24 16:26:20 +10:00
Nyall Dawson
ea3eb7220c Dox 2020-07-24 12:58:55 +10:00
Nyall Dawson
e2a370fe3e Avoid repeating points when appending lines 2020-07-24 12:58:55 +10:00
Nyall Dawson
75635dbf0b [FEATURE][symbology] Add options to dynamically tweak dash pattern
in simple line symbol layers

New options are:

- Align dash pattern to line length: If checked, the dash pattern lengths
will be subtely adjusted in order to ensure that when a line is rendered
it will end with a complete dash element, instead of a gap element or
partial dash element

- Tweak dash pattern at sharp corners: If checked, this option dynamically
adjusts the dash pattern placement so that sharp corners are represented
by a full dash element coming into and out of the sharp corner. It's designed
to better represent the underlying geometry while rendering dashed lines,
especially for jagged lines
2020-07-24 12:58:55 +10:00
Nyall Dawson
0641f3f8b8 Add utility function to detect sharp corners 2020-07-24 12:58:55 +10:00
Nyall Dawson
ca5901b336 Add utility function to slice a QPolygonF linestring 2020-07-24 12:58:55 +10:00
Nyall Dawson
cc0cfbe02b [processing] Also fix expression preview results in Aggregate algorithm 2020-07-24 10:26:17 +10:00
Nyall Dawson
69f73e3a74 [processing] When running in toolbox mode, set the source layer for
the field expression widgets in the refactor fields widget so that
the expression editor can generate feature based previews

Fixes #37912
2020-07-24 10:26:17 +10:00
Vincent Cloarec
de68f83cc3
Virtual dataset groups for mesh layer (#37605)
[FEATURE] Introduces mesh virtual datasets

With the mesh calculator the user can choose to create those "virtual" dataset groups that will be added to the layer. Then, for these dataset groups, values are not stored in memory but each dataset is calculated when needed whit the formula entered in the mesh calculator.

Those virtual dataset groups are saved with the project.

If needed, the user can remove them or can persist them on files to make them persistent.

Co-authored-by: Étienne Trimaille <gustrimaille@yahoo.fr>
2020-07-23 07:39:28 +02:00
Nyall Dawson
ddb67fd46a Fix dox 2020-07-23 07:53:20 +10:00
Nyall Dawson
368a58bf5e Base class for 3d symbol widgets 2020-07-23 07:53:20 +10:00
Nyall Dawson
c3837359d6 Move feature handler creation responsibility to 3d symbol registry 2020-07-23 07:53:20 +10:00
Nyall Dawson
80e5d16511 Move method to create default 3d symbol for a geometry type to 3d symbol registry 2020-07-23 07:53:20 +10:00
Nyall Dawson
0528fe284c Populate 3D symbol registry, and use to create symbols 2020-07-23 07:53:20 +10:00
Nyall Dawson
c7b6a115df Better initialization of 3d framework, usable outside of app 2020-07-23 07:53:20 +10:00
Nyall Dawson
a34eabd1fb [api] Add a proper registry for 3D symbol types 2020-07-23 07:53:20 +10:00
Nyall Dawson
f60b79fcea Move QgsAbstract3DSymbol to core 2020-07-23 07:53:20 +10:00
Nyall Dawson
aa93872f0d Provide more descriptive error messages when converting a field value
fails

And fix Python exception handling in QgsField::convertCompatible to
avoid Python "returned an object with the error set" error message
and instead just use the proper ValueError exception with a descriptive
exception message
2020-07-23 07:52:28 +10:00
Nyall Dawson
3eec9a47f0 Add a lastError() getter to QgsFeatureSink for retrieving the last error
encountered by the sink (e.g. after adding a feature fails)
2020-07-23 07:51:58 +10:00
nirvn
8c61a803fc [FEATURE][processing] Add a save features to file algorithm 2020-07-22 19:11:50 +07:00
Dmitry Shachnev
d0c4e0de9d Use SIP_INCLUDE_DIR and SIP_MODULE_DIR only with SIP v4 2020-07-21 21:21:21 +03:00
Peter Petrik
d9f18ccb9c
Fix spelling (#37849)
fix the spelling errors
2020-07-21 12:51:48 +02:00
Dmitry Shachnev
7e93859dfd Replace deprecated sipTransferBreak with sipTransferTo 2020-07-21 13:18:40 +10:00
Dmitry Shachnev
d9db0d5159 Remove use of deprecated sipCanConvertToEnum
sipConvertToEnum will raise an exception itself if the type is wrong.
2020-07-21 13:18:40 +10:00
Dmitry Shachnev
ae8b427fe9 Replace deprecated sipMappedType with sipTypeDef 2020-07-21 13:18:40 +10:00
Harrissou Sant-anna
d4e60173bc Fix after review 2020-07-21 10:13:45 +10:00