59 Commits

Author SHA1 Message Date
Nyall Dawson
bdbb622bac Fix crash when using QgsLayoutItemComboBox when null values
are displayed

Turns out there is NO reliable way to create a proxy model
which adds new rows to a model, so just bite the bullet and
do it in the underlying model (yuck)
2019-03-18 17:32:31 +10:00
Nyall Dawson
f9fb4085b2 Tweaks to layout item combo box 2019-03-12 08:16:52 +10:00
Nyall Dawson
cba22770dc Move layout manager model from app to core and add unit tests 2019-03-12 08:16:52 +10:00
Matteo Nastasi
7c6b66be8a [FEATURE] [needs-docs] add new vertical and horizontal equispaced distributions 2019-03-09 18:18:07 +01:00
Nyall Dawson
107b48a430 Add NULLPTR macro for use in doxygen comments
For the c++ api dox this expands to "\c nullptr" (the
\c directive indicates a code literal value), and for sipify/Python
it expands to ``None`` (`` is sphinx annotation for literal values)

Makes for nicer dox for both c++ and Python!
2019-02-27 09:41:11 +10:00
Nyall Dawson
a7ca08784c Nullptr consistency in dox 2019-02-27 09:41:11 +10:00
Nyall Dawson
b6d66becab Sipify 2019-02-27 09:41:11 +10:00
Nyall Dawson
519a30f10c Standardise dox for signals 2019-02-26 03:24:31 +10:00
Nyall Dawson
e670371fa3 [layouts] Show an explicit warning when exporting a layout which contains a broken image 2019-01-31 10:02:18 +11:00
Nyall Dawson
60b8d05278 [needs-docs][layouts] Add checkbox to disable raster tiling for PDF/SVG exports
This setting, which is disabled by default and placed into an
"advanced" group on PDF/SFG export, disables the built-in
raster layer tiled rendering. While the tiling is good for
memory usage, it can cause visible "seams" in the rasters
for generated PDF/SVG files.

The setting has a tooltip warning users that disabling the
tiling results in high memory usage during exports.

Fixes #19500
2019-01-30 05:09:29 +11:00
Jürnjakob Dugge
1cdff21c85 [layouts] Use polyline shape instead of bounding box for selection, makes polylines selectable via single click
Fixes #20940
2019-01-29 10:59:55 +11:00
mhugent
b5febe5189
Merge pull request #8922 from mhugent/server_datasource_error
Server: catch datasource error
2019-01-24 17:27:13 +01:00
Marco Hugentobler
ffae79b7d0 Consider feedback 2019-01-22 16:11:04 +01:00
Nyall Dawson
eafedeeb8b Sipify 2019-01-21 14:48:19 +11:00
Marco Hugentobler
575d385e57 Use QgsMapRendererJob::Errors instead of QList< QPair > 2019-01-18 15:46:39 +01:00
Alex
b43943a9b0 [FEATURE] New expression variables for legend items
Adds new variables for use in data defined expressions for layout legend items, including

- @legend_title
- @legend_column_count
- @legend_split_layers
- @legend_wrap_string
- @legend_filter_by_map
- @legend_filter_out_atlas

Additionally, if the legend is linked to a map, then expressions used in that legend will also have access to the linked variables, including @map_scale, @map_extent, etc.
2019-01-18 13:38:21 +11:00
Marco Hugentobler
0f3c39deb7 Server: throw exception in GetMap if DB connection is not ok 2019-01-17 08:55:18 +01:00
Nyall Dawson
a441e2b14b [layouts] Add API allowing drawing map overviews under map layers
or under map labels
2019-01-03 04:53:28 +10:00
Nyall Dawson
12da3afa85 [layouts] Add method to alter list of map layers to render to include
overview layers
2019-01-03 04:53:28 +10:00
Nyall Dawson
1b309c6810 [layouts] Add setters/getters for map item stacking positions 2019-01-03 04:53:28 +10:00
Nyall Dawson
6eb49feddc [layouts] Add method to get overview item extent as a vector layer
The layer contains a single feature representing the linked map
extent, and set to render using the overview's symbol
2019-01-03 04:53:28 +10:00
Nyall Dawson
a2b5008b30 [FEATURE][layouts] Allow layout items to "block" map labels
This feature allows other layout items (such as scalebars,
north arrows, inset maps, etc) to be marked as a blockers for
the map labels in a map item. This prevents any map labels from
being placed under those items - causing the labeling engine
to either try alternative placement for these labels (or
discarding them altogether)

This allows for more cartographically pleasing maps -- placing
labels under other items can make them hard to read, yet without
this new setting it's non-trivial to get QGIS to avoid placing
the labels in these obscured areas.

The blocking items are set through a map item's properties, under
the label settings panel. The setting is per-map item, so you can have
a scalebar block the labels for one map in your layout and not others
(if you so desire!)
2018-12-21 04:12:32 +10:00
Nyall Dawson
089a2f1c17 [FEATURE][layouts] Add new setting to control whether map items
should show partial labels

Layout map items no longer respect the default project setting
for "show partial labels", and instead have their own, per map
setting for this option. (Under the map item properties,
labeling settings button).

The map item setting always defaults to off (unlike the canvas
setting, which defaults to true for a new project) as layouts
should always default to the settings which produce the highest
quality cartographic outputs.

In general I suspect that most users would always want to avoid
rendering partial labels in layouts, but this setting was
previously so deeply hidden that most are unaware of how to
change it. (And previous discussion about changing the canvas
setting to hide partial labels deemed this default undesirable
for the canvas, where showing even a small part of a label
on the map border can help identify what sits just on/off
the edges of the map)
2018-12-18 15:32:29 +10:00
Nyall Dawson
ed25a3e2ee [FEATURE][layouts] Add setting for label margin for map items
This setting allows per-map control of how close labels are permitted
to be placed to the map item's edges.

Sizes can be set using mm/inches/pixels/etc, and data defined
label margins are allowed.

Fixes #10314
2018-12-15 11:28:56 +10:00
Nyall Dawson
35855b88e1 [FEATURE][API] Add API to set a margin for labels for layout map items
This controls how close labels are permitted to the edges of the map
item. The labeling engine will then try other candidate positions
in order to avoid placing labels within this margin.
2018-12-15 11:28:56 +10:00
Nyall Dawson
ea069ed60e Push text format rendering setting into QgsLayoutExporter 2018-12-11 12:28:29 +10:00
Nyall Dawson
6755cbd6cf Push text format setting to layout render context 2018-12-11 12:28:29 +10:00
Nyall Dawson
d08ecc2b52 [layouts] Avoid rasterizing the whole layout when only a single item has opacity set
Instead, only rasterize that one item and pre-apply it's opacity
to the rasterized version. This keeps all the rest of the layout
content as vectors/text.
2018-12-11 09:45:37 +10:00
Nyall Dawson
048d526542 Add unit tests, standardise method names 2018-12-07 08:08:52 +10:00
Nyall Dawson
34f6e371a7 [FEATURE][layouts] Add new grid frame style "Zebra (Nautical)",
which shows nautical-style blocks in the grid corners when a
margin is set for the grid.
2018-12-07 08:08:52 +10:00
Nyall Dawson
11258c05b0 [FEATURE][layouts] Don't draw diagonals on line border grid style when a
margin is set

Instead, split this behaviour off into a new "Line border (Nautical)"
grid style. It's a very specific type of effect and won't always
be desirable when using margins with the line border style.
2018-12-07 08:08:52 +10:00
Nyall Dawson
470cd0b619 Code style fixes 2018-12-07 08:08:52 +10:00
konst
d794bdb74c [FEATURE] [needs-docs] Add the grid frame MARGIN In the "Print Layout" map grid 2018-12-07 08:08:52 +10:00
Peter Petrik
7564276994 QPrinter is unavailable on some platforms 2018-11-13 10:48:02 +01:00
rldhont
a9e6950eee [Server] Use Project selection color in GetPrint for 3.4
Because selection was deactivated in layout, selection color was not transmitted from QgsProject to QgsLayoutRenderContext to QgsMapSettings.

forward porting of #7294
2018-10-25 14:31:07 +02:00
rldhont
74f2785532 [Server] Reactivate the capability to print selection with Server 3.4
The capability to print selection has been removed by the commit aaa7003 to
prevent accidental selections showing in exports from composer.

It is reactivated only for QGIS Server.

Fixes #13459 QGIS Server WMS GetPrint request don't respect SELECTION parameter

It's a forward porting of #7185
2018-10-25 11:33:43 +02:00
Nyall Dawson
8cf64c8a51 [layouts] Add option to filter "add layer to legend" dialog to
layers visible within the (linked) map only

Fixes #20186
2018-10-23 16:41:06 +10:00
Nyall Dawson
f00e43d3c2 [layouts] Hack around inconsistent subclassing of layout items by sip
Sometimes, calling some layout methods, results in sip being inable
to downcast the items to their correct type, resulting only
in a QgsLayoutItem object.

This works around the problem, albeit in an incredibly hacky way.
2018-10-20 06:19:34 +10:00
Denis Rouzaud
4b7da692d6 run sipify all 2018-09-10 11:41:57 -04:00
Matthias Kuhn
17279a42e2 Only include qgsvectorlayer.h where required 2018-09-05 08:54:11 +02:00
Martin Dobias
2e56fadcd1 Add 3D map print layout item
So far this is just support in the layout framework, not yet exposed to the GUI.
2018-08-21 12:59:47 +02:00
Nyall Dawson
3a08300112 Sipify 2018-08-13 14:33:53 +10:00
Nyall Dawson
fa68041793 Fix some clazy/clang warnings in layout 2018-08-13 14:33:53 +10:00
Nyall Dawson
2ed144ac59 Apply clang-tidy readability-avoid-const-params-in-decls fixit
Checks whether a function declaration has parameters that are
top level const.

const values in declarations do not affect the signature of a
function, so they should not be put there.
2018-06-05 10:19:13 +10:00
Denis Rouzaud
65bb60e96c run sipify 2018-05-28 10:39:34 -08:00
Nyall Dawson
4c3a9ef7be Ensure that class \brief comes before \since (#7081)
Otherwise it breaks the Python docstrings, which require
the brief to come first
2018-05-28 04:03:46 -08:00
Nyall Dawson
e552ce62be Add warning note to QgsLayoutPageCollection::shouldExportPage 2018-05-28 10:06:23 +10:00
Harrissou Sant-anna
f0b72ae62e Set the dpi default to -1 to use layout dpi 2018-05-28 08:56:32 +10:00
Nyall Dawson
f8bc97030b Remove extra space added before first line of docstring 2018-05-28 08:22:11 +10:00
Nyall Dawson
4b1b752633 Fix bad regex 2018-05-27 18:54:09 +10:00