3695 Commits

Author SHA1 Message Date
Andrea Aime
5cfed129b5 Ading all other labelling options supported by SLD. fixes #8925 2017-07-26 11:38:29 +02:00
Nyall Dawson
f0a6376adb Merge pull request #4910 from nyalldawson/layout_next
Layouts, chapter III
2017-07-26 17:03:36 +10:00
Nyall Dawson
11dd4170de Try to balance UI element sizes on windows builds 2017-07-26 14:46:30 +10:00
Nyall Dawson
383422f069 Fix "wrapped object has been deleted" errors in Processing
Ownership of Python subclass algorithm instances was getting
mangled due to passing through multiple functions with /Factory/
annotations.

As per Phil Thomson's advice on
https://www.riverbankcomputing.com/pipermail/pyqt/2017-July/039450.html:
"
/Factory/ is used when the instance returned is guaranteed to be
new to Python. In this case it isn't because it has already been
seen when being returned by createInstance(). (However for a different
sub-class implemented in C++ then it would be the first time it was seen
by Python so the /Factory/ on create() would be correct.)

You might try using /TransferBack/ on create() instead - that might be
the best compromise.
"

Changing to /TransferBack/ indeed fixes the error for me.
2017-07-26 07:03:16 +10:00
Nyall Dawson
213064a8af Fix layout context flags not being respected when rendering items 2017-07-25 12:54:58 +10:00
Nyall Dawson
cdb0ace28e Try to fix sip item casting clashing between composer items and layout items
Add a temporary hack to QgsComposerItem subclassing to handle this
for now.
2017-07-25 12:54:58 +10:00
Nyall Dawson
fabfd77c2b Show known page size when opening page properties if current page size matches 2017-07-25 12:54:58 +10:00
Nyall Dawson
a3e26785f8 [needs-docs] Start on right click menu for layouts
Currently only contains option for removing the current
page and (non-functional) option for setting current page
properties
2017-07-25 12:54:58 +10:00
Nyall Dawson
e885966cb6 Add method to retrieve page at a specified layout position 2017-07-25 12:54:58 +10:00
Nyall Dawson
1e4c95431c Don't use constant space between pages - doesn't work well for non mm units 2017-07-25 12:54:58 +10:00
Nyall Dawson
8044353aa7 Show correct unit type in status bar 2017-07-25 12:54:57 +10:00
Nyall Dawson
0ab3b8e0ad Fix cursor position display for multipage layouts 2017-07-25 12:54:57 +10:00
Nyall Dawson
416e1e4bbf Fix drawing of rulers with multipage layouts 2017-07-25 12:54:57 +10:00
Nyall Dawson
4cf9827ca2 Draw page shadow in layout units
Simplifies code a lot, pixel based size proved to complex for
small result
2017-07-25 12:54:57 +10:00
Nyall Dawson
5cfc9cc655 Add a dialog for inserting new pages into a layout 2017-07-25 12:54:57 +10:00
Nyall Dawson
39bf23a5d5 Start on reflow support for page collections (needs tests) 2017-07-25 12:54:57 +10:00
Nyall Dawson
79a4694177 Add support for adding/removing pages to a collection 2017-07-25 12:54:57 +10:00
Nyall Dawson
ea32391280 Add methods for handling page size to QgsLayoutItemPage 2017-07-25 12:54:57 +10:00
Nyall Dawson
9df4a67d6d Add a page collection to layouts, and start porting composer page items 2017-07-25 12:54:57 +10:00
Nyall Dawson
3cf06db467 Port item id and uuid code 2017-07-25 12:54:57 +10:00
Nyall Dawson
a515e953b8 Add support for reading/writing item properties to XML 2017-07-25 12:54:57 +10:00
Nyall Dawson
09dd6db97b Add API to save/restore QgsLayoutObject properties to XML 2017-07-25 12:54:57 +10:00
Mathieu Pellerin
778e84ba7b [FEATURE] Add copy to clipboard function to save as image (#4914)
Sponsored by Andreas Neumann.
2017-07-25 08:50:03 +07:00
Denis Rouzaud
33071f4720 fix doxymentation 2017-07-24 13:44:25 +02:00
Nyall Dawson
d055def2d1 Merge pull request #4907 from nyalldawson/symbol_button
New QgsSymbolButton widget
2017-07-24 20:29:14 +10:00
Nyall Dawson
78b05c1a7f Allow copying and pasting symbols between QgsSymbolButtons 2017-07-24 16:57:30 +10:00
Nathan Woodrow
12c634cef3 Load default profile name from global
Also adds overrideLocalProfile to ignore local profiles.ini file
2017-07-24 14:52:10 +10:00
Nathan Woodrow
e37f682cca Also load profiles-path from global settings 2017-07-24 14:20:09 +10:00
Nathan Woodrow
7b92f1f1e4 [FEATURE] Add user profiles.
All user settings/plugins, etc are now loaded from APPDATA for each
platform and no longer .qgis3 and are isolated from each other.
 This allows for different profiles depending on what the user of QGIS
needs, e.g test, prod, demo, etc

Profile menu allows for switching between profiles, or creating new
ones.
2017-07-24 13:20:01 +10:00
Nyall Dawson
15f3bbf9c8 Add some missing /Factory/ annotations 2017-07-24 13:02:20 +10:00
Nyall Dawson
e304662a4f Use standard QgsUnitTypes::RenderUnit throughout labeling
Instead of duplicate labeling specific unit enum, reuse
the QgsUnitTypes::RenderUnit enum in labeling.

This brings several improvements, including:
- label offset/distance/repeat units now works correctly
in all available unit types (inc pixels, map unit meters,
points, inches, etc)
- less duplicate code
- labeling can use the robust QgsRenderContext methods for
converting between different units and painter coordinates

Also change comments for members to doxygen comments, so
that these get included in the API docs.
2017-07-24 11:18:30 +10:00
Nyall Dawson
faa4a09ed0 Merge pull request #4877 from nyalldawson/layout_next
Layouts, chapter II
2017-07-24 08:42:51 +10:00
Nyall Dawson
99bf32bafb Fix crash in displacement/distance renderers
Individual symbol instances were being rendered multiple times
concurrently
2017-07-23 17:21:52 +10:00
Juergen E. Fischer
4f9a9e0360 s/( )/()/; s/== /== /; s/!= /!= /; 2017-07-19 09:19:37 +02:00
Nyall Dawson
857f8437d1 Merge pull request #4873 from nyalldawson/processing_feature_alg
Add QgsProcessingFeatureBasedAlgorithm subclass
2017-07-19 05:31:30 +10:00
Nyall Dawson
11cfc78a24 Skip invalid returned features 2017-07-18 22:13:50 +10:00
Nyall Dawson
29855b3942 Change signature of processFeature so that features are no longer modified in place 2017-07-18 19:56:42 +10:00
Nyall Dawson
c2cad99d6b Add note about throwing QgsProcessingException to cancel algorithm execution 2017-07-18 19:44:33 +10:00
Alessandro Pasotti
f6c8ef3ad1 Complete documentation for connectionsChanged signals 2017-07-18 11:42:02 +02:00
Nyall Dawson
d926789d3b Improve dox 2017-07-18 19:41:33 +10:00
Nyall Dawson
7e3c435dd6 Port some existing algorithms to QgsProcessingFeatureBasedAlgorithm 2017-07-18 19:41:33 +10:00
Nyall Dawson
1a41624370 Add QgsProcessingFeatureBasedAlgorithm subclass
An abstract QgsProcessingAlgorithm base class for processing algorithms
which operate "feature-by-feature".

Feature based algorithms are algorithms which operate on individual
features in isolation. These are algorithms where one feature is
output for each input feature, and the output feature result
for each input feature is not dependent on any other features
present in the source.

For instance, algorithms like "centroids" and "buffers" are feature
based algorithms since the centroid or buffer of a feature is
calculated for each feature in isolation. An algorithm like "dissolve"
is NOT suitable for a feature based algorithm as the dissolved output
depends on multiple input features and these features cannot be
processed in isolation.

Using QgsProcessingFeatureBasedAlgorithm as the base class for feature
based algorithms allows shortcutting much of the common algorithm code
for handling iterating over sources and pushing features to output sinks.
It also allows the algorithm execution to be optimised in future
(for instance allowing automatic multi-thread processing of the
algorithm, or use of the algorithm in "chains", avoiding the need
for temporary outputs in multi-step models).
2017-07-18 19:41:33 +10:00
Alessandro Pasotti
e57399bae0 [bugfix] Sync the dialogs connections when changed from the browser
For now it's only for WMS but you get the idea.

There is a new abstract base class for the source select
dialogs, that will grow with common behavior for all
the select dialogs.

Signals are forwarded from the (root) data items to the
app and then delivered to the various browser instances
and to the unified layer dialog.

A change in one of the browser items should trigger a
refresh in all the other browsers and dialogs.
2017-07-18 11:38:53 +02:00
Mathieu Pellerin
3037f22482 Non-blocking save as image/PDF dialogs (#4874) 2017-07-18 10:47:06 +07:00
Nyall Dawson
4e0e038aab Dox updates 2017-07-18 13:04:03 +10:00
Nyall Dawson
19a7863ea4 Add methods to construct layout size/point from QSizeF/QPointF 2017-07-18 12:42:06 +10:00
Nyall Dawson
b4f5025d4f Port shape items to layouts 2017-07-18 12:42:06 +10:00
Nyall Dawson
436710a177 Ensure that item painter is correctly scaled so that painter units are pixels 2017-07-18 12:42:06 +10:00
Nyall Dawson
56bb65709d Change QgsLayoutItem::draw to use a renderContext instead of
direct QPainter argument

This will make use of other rendering code within layout items
much easier - since symbology/text renderer/diagrams/etc all
require QgsRenderContexts for use, it makes sense for
layout item rendering to also use this approach.

This also avoids lots of duplicate code which was scattered
throughout different composer item types to manually handle
creation of QgsRenderContexts when required.
2017-07-18 12:42:06 +10:00
Nyall Dawson
c282024748 Partially port some layout utils for render context creation 2017-07-18 12:42:06 +10:00