422 Commits

Author SHA1 Message Date
Alessandro Pasotti
f5be54b71e Removed docs for private members 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
c232b4fe9c [layout] connect converted to loader code 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
e477879671 Remove SIP annotation 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
51a460775f [layout] Disable ref images generation and added docs 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
dd0cce23cd Removed some TODOs 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
680b9f8ea0 [layout] Convert scalebar and legent from 2.x 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
cd6e8204ed [layout] Import some more items: map, poly* and arrow 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
4dc5b5698a Renamed some private vars to follow coding guidelines 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
4302910f94 [layout] Converter: fix frame fill in shapes 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
af8a2296dc [layout] Converter: shapes 2018-01-09 08:08:26 +01:00
Alessandro Pasotti
da3636e566 [layout] Converter: initial implementation 2018-01-09 08:08:26 +01:00
Nyall Dawson
3d36653f55 Code shuffle 2018-01-08 13:35:15 +10:00
Nyall Dawson
db906273b5 Drop all composer classes from Python bindings 2018-01-08 13:35:15 +10:00
Nyall Dawson
d372799b87 Remove some more redundant tests, add sip subclassing 2018-01-08 12:09:32 +10:00
Nyall Dawson
f3124f0d82 Fix storing/reading multiframe items (TODO fix undo/redo support) 2018-01-08 05:51:29 +10:00
Nyall Dawson
1b969267fc Fix crash when deleting multiframe item child frames 2018-01-08 05:51:29 +10:00
Nyall Dawson
53b67069cc Standardise some layout api method naming/behavior 2018-01-07 16:07:05 +10:00
Nyall Dawson
b691998c68 Port some more tests to layouts, drop composer tests which
have been ported to layouts
2018-01-06 17:05:21 +10:00
Nyall Dawson
1ef87a401d Tweak section descriptions 2018-01-06 10:32:12 +10:00
Nyall Dawson
bf6c95d575 Add icons for report section types, and show pencil 'editing'
icon in report organizer for section currently being edited in
the designer

This should help indicate to users which section is currently being
edited and give more visual hints as to exactly what's happening
in the ui.
2018-01-05 13:52:22 +10:00
Nyall Dawson
eae4eeb8f5 Use correct layout type (report/print layout) in new title dialog 2018-01-05 11:52:57 +10:00
Nyall Dawson
ce161e0e7d Fix failing unit test 2018-01-05 11:15:04 +10:00
Nyall Dawson
51a7efbe4b Nicer ui widgets for sections, add missing control for
disabling body sections
2018-01-05 11:15:04 +10:00
Nyall Dawson
5d64f3cd22 Fix missing feature contexts for report section header/footers
and expand unit tests
2018-01-05 11:15:04 +10:00
Nyall Dawson
4e45639c45 Restore direct print actions 2018-01-05 11:15:04 +10:00
Nyall Dawson
39ae0eef7d Add method to seek atlas directly to a QgsFeature 2018-01-05 11:15:04 +10:00
Nyall Dawson
ea4f61f024 Dox and spelling 2018-01-05 11:15:04 +10:00
Nyall Dawson
17292c12e9 Fix progress bar with report export 2018-01-05 11:15:04 +10:00
Nyall Dawson
c9ddc9fda0 Start on ui for configuring reports 2018-01-05 11:15:04 +10:00
Nyall Dawson
6db24327f2 Fix project retrieval for QgsReport 2018-01-05 11:15:04 +10:00
Nyall Dawson
f4a99b65bb Add a row method to QgsAbstractReportSection 2018-01-05 11:15:04 +10:00
Nyall Dawson
b862db06f0 Fix clashing inherited methods 2018-01-05 11:15:04 +10:00
Nyall Dawson
19b058103b Add crappy inappropriate icons for layout types 2018-01-05 11:15:04 +10:00
Nyall Dawson
aef0432fdc Implement sort order customisation for field groups 2018-01-05 11:15:04 +10:00
Nyall Dawson
2654454c0b Implement serialization of reports 2018-01-05 11:15:04 +10:00
Nyall Dawson
6f2c63f3e5 Add a common base class for print layouts and reports, and adapt
QgsLayoutManager to suit
2018-01-05 11:15:04 +10:00
Nyall Dawson
d8af098d83 Code shuffle and cleanup 2018-01-05 11:15:04 +10:00
Nyall Dawson
159986fdec Implement QgsReportSectionFieldGroup 2018-01-05 11:15:04 +10:00
Nyall Dawson
6284f5e36f Correct project and parent handling for report sections 2018-01-05 11:15:04 +10:00
Nyall Dawson
767075a3d4 Hookup filename generation for reports 2018-01-05 11:15:04 +10:00
Nyall Dawson
935dfa32d8 Add reprt iteration test 2018-01-05 11:15:04 +10:00
Nyall Dawson
cdf5cf21e1 Add report section subclass with single layout as body 2018-01-05 11:15:04 +10:00
Nyall Dawson
acb44643e3 Add missing factory annotation 2018-01-05 11:15:04 +10:00
Nyall Dawson
1ea5a5fb98 [FEATURE] Reporting framework
Reports are based on the new layouts engine. They consist of multiple
nested sections. Each individual section (and the report itself)
can have an optional header and footer (which are themselves layouts,
and can consist of multiple pages!).

Two different types of sections are implemented so far:
- a standard section, which has a single, static body layout. This
can be used to embed static layouts mid way through a report
- a "field group" section, which repeats its body layout for
every feature in a layer. The features are sorted by the selected
grouping feature (with an option for ascending/descending sort).
If a field group section has child sections (e.g. another field
group section with a different field, then only features
with unique values for the group feature are iterated over.
This allows nested reports, e.g.

Report
- Country: Australia
    - State: NSW
        - Town: Sydney
        - Town: Woolongong
    - State: QLD
        - Town: Beerburrum
        - Town: Brisbane
        - Town: Emerald
- Country: NZ
    - State: ... etc

In this example country, state or town groups can have their
own headers and footers which will be inserted in the report.

Reports are configured through a new panel in the layout designer
dialog, which is shown when editing a report (created through
the Layout Manager Dialog). The organizer allows for adding
(and removing) sections to the report, and for selecting which
layout (e.g. headers, footers, bodies) to edit within the
layout designer.
2018-01-05 11:15:04 +10:00
Nyall Dawson
811145eb96 Remove const from count method 2018-01-05 11:15:04 +10:00
Nyall Dawson
4d2f0deb1a Add a clone method to QgsLayout 2018-01-05 11:15:04 +10:00
Nyall Dawson
5bc543af6a Refactor layout context
Split render context from reporting context
2018-01-05 11:15:04 +10:00
Nyall Dawson
9af7c63884 Ensure that every iteration through a layout iterator only
references the current iteration layout
2018-01-05 11:15:04 +10:00
Nyall Dawson
8de8bb387f Try (and fail) to avoid a qApp->processEvents() call
I just can't find any other reliable way to wait until javascript
execution in a web page has completed.
2018-01-05 11:15:03 +10:00
Nyall Dawson
88a839061d Restore more unit tests 2018-01-05 11:15:03 +10:00