Nyall Dawson
ef6727518d
[FEATURE] Add a dock widget showing snap guides for current page
...
Allows creation of snap lines at specific locations, and
adjusting position of existing guides to exact coordinates
2017-08-07 19:34:28 +10:00
Nyall Dawson
f5126b0abd
New class QgsLayoutGuideCollection for storing sets of layout snap guides
...
The class is a QAbstractListModel subclass, making it easy
for creation of different views showing the guides in a layout.
Additionally, a QSortFilterProxyModel (QgsLayoutGuideProxyModel)
has been created to filter QgsLayoutGuideCollection to guides
with matching page numbers and orientations.
2017-08-07 19:34:28 +10:00
Nyall Dawson
fa5eb4e5ad
Refine QgsLayoutGuide API
2017-08-07 19:34:28 +10:00
Nyall Dawson
db36440cfc
Start on classes for snapping guide items
2017-08-07 19:34:28 +10:00
Nyall Dawson
3dbc1a0c2a
Refine z order for some new items
2017-08-07 19:34:28 +10:00
Nyall Dawson
0d0a3c2cdc
Code refactor - split grid appearance settings into their own class
2017-08-07 19:34:28 +10:00
Nyall Dawson
d0dfec72cb
Add actions to switch grid display/snapping on/off
2017-08-07 19:34:28 +10:00
Nyall Dawson
5be237fdd9
Add ability for QgsLayoutSnapper to snap to grid
2017-08-07 19:34:28 +10:00
Nyall Dawson
361dd312bc
Start on layout snapper
2017-08-07 19:34:28 +10:00
Nyall Dawson
b42c055e97
Restore drawing of page grids
2017-08-07 19:34:28 +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
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
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
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
Nyall Dawson
7a0851c2ce
Shell class for QgsLayoutItemMap
2017-07-18 12:42:06 +10:00
Nyall Dawson
00405fd6b5
Start porting item rotation
2017-07-18 12:42:06 +10:00
Nyall Dawson
c3456133dc
Add QgsLayoutUtils
2017-07-18 12:42:06 +10:00
Nyall Dawson
6fd06983a6
Port data defined item position and size
2017-07-18 12:42:06 +10:00
Nyall Dawson
3f0a0cb063
Ensure that moving/resizing items respects reference point
2017-07-18 12:42:06 +10:00
Nyall Dawson
d0c844ed67
Implement item size and positioning using layout units
2017-07-18 12:42:06 +10:00
Nyall Dawson
dd370373be
Port a bunch of low-level methods to layouts
...
Relating to expression contexts and variables
2017-07-18 12:42:06 +10:00
Nyall Dawson
15b65fa6d4
Port some basic functionality from QgsComposerObject
2017-07-18 12:42:06 +10:00
Nyall Dawson
a6156d9221
Layouts have a name
2017-07-18 12:42:05 +10:00
Nyall Dawson
ab79b1560c
[layout] Add measurement unit handling to QgsLayout
...
Allows layouts to convert from various units to their
own native units
Also added a QgsLayoutContext to QgsLayout.
2017-07-18 12:42:05 +10:00
Nyall Dawson
cd380f616c
Add measurement converter and dpi to layout context
2017-07-18 12:42:05 +10:00
Nyall Dawson
b2b35dd084
Add a context class for layouts
...
Stores information relating to the current context (such as
associated feature and layer) and rendering settings for a layout.
2017-07-18 12:42:05 +10:00
Nyall Dawson
cf488d34a4
Split layout item registry into two separate registries
...
Instead of relying on forward declared c++ classes from
gui in QgsLayoutItemRegistry, instead create a
QgsLayoutItemGuiRegistry which handles registration
of all the GUI specific behavior relating to layout items.
Remove all GUI related code from QgsLayoutItemRegistry.
This creates a cleaner split between core/gui code, and
given that there'll be a lot of gui specific behavior
which needs to be handled by a registry it makes sense
to keep this isolated in gui.
It also plays nicer with the sip bindings, which can't
handle forward declared gui classes in core.
2017-07-11 11:06:36 +10:00
Nyall Dawson
179c51c953
Don't auto populate QgsLayoutItemRegistry
...
Initially create an empty registry, allow it to be populated
at a later stage.
2017-07-11 11:06:36 +10:00
Nyall Dawson
db62a745eb
Add a temporary layout item type for testing
2017-07-11 11:06:36 +10:00
Nyall Dawson
3843b5ef37
Create rubber band classes for layout views
...
c++ QgsLayoutItem metadata classes can directly register
a function which creates a QgsLayoutViewRubberBand for the item
subclass.
Python code cannot utilise this shortcut (due to inaccessibility
of forward declared gui classes from core Python classes), so
there's a separate gui registry utility class added for registering
prototypes for rubber bands for already registered item types.
2017-07-11 11:06:36 +10:00
Nyall Dawson
4ebea75e6a
Subclass QMouseEvent to QgsLayoutViewMouseEvent
...
For easy access to mouse event coordinates in layout coordinate
space (and future use with snapped item coordinates)
2017-07-11 11:06:35 +10:00
Nyall Dawson
ada01d8671
Fix build warnings
2017-07-03 15:00:00 +10:00