- Change order to "project name - QGIS" to follow standard
convention (also avoids possible truncation of project name which is
more useful then the "QGIS" text)
- Don't show version number in release builds. Only show version
in dev builds instead. Showing the version number violates the
HIG for Windows and OSX (and probably Linux DEs too).
- setEllipsoidalMode() was removed. Ellipsoidal calculations are
now enabled whenever a valid ellipsoid() has been set. Set the
ellipsoid to 'NONE' to disable ellipsoidal calculations.
- ellipsoidalEnabled() was removed. Ellipsoidal calculations
are now enabled whenever a valid ellipsoid() is set. Check
willUseEllipsoid() to determine whether ellipsoidal
calculations will be performed.
- sourceCrs() and setSourceCrs() now always take and return
QgsCoordinateReferenceSystem objects. All string/ID based CRS
methods were removed.
- geographic() was removed. This was only used internally
in one place, so was replaced with sourceCrs().isGeographic() instead.
- some largely overlapping measurement functions were consolidated
This PR adds (optional) synchronization of the master password
with the OS password manager (AKA wallet/keychain).
A set of new menu items has been added in the options ->
authentication -> utilities to manage the new behavior.
Notifications are handled by the message bar unless the
password r/w operation is triggered from a modal dialog,
in this case the notifications will be routed through
the recently exposed QgisApp::showSystemNotification
that uses the OS tray notifications.
This new feature requires libqt5keychain, and was tested
with v. 0.5+
This commit fixes a situation where loading a project results
in incorrect project & canvas CRS. The bug is trigerred whenever
something in the project load calls a processEvents() call, eg
restoring a project with layer count enabled on a layer
or with a composer html item.
When this occurs, the "auto-set CRS to first added layer" code
would kick in early and replace the project's CRS with that
of the first layer loaded.
To avoid this disable the "auto-set CRS" code when loading
layers from a project.
Since composer windows are now only created on demand, and
destroyed when the window is closed, the old interface methods
no longer apply. The new interface methods openComposers(),
openComposer(), closeComposer(), composerOpened(),
composerWillBeClosed() and composerClosed() are similar, but
only apply to composer windows when they are exist (i.e.
are currently open).
To access all compositions from a project, the project's
layoutManager() should be used instead.
Additionally, the new interface methods work with
QgsComposerInterface objects instead of QgsComposerView
objects. This should allow future hooks for plugins to interact
with open composer windows in a more useful way.
This adds a new QgsLayoutManager class which is used for
storage and serializing/deserializing of compositions.
A QgsLayoutManager is attached to QgsProject. This allows
core code to access the compositions attached to a project.
The intention is to move all handling of compositions from
app to core, making it easy for server to access project
compositions without resorting to fragile xml parsing.
Instead of a single sync extent option, the option has been split
into a "sync map center" option, and a "sync scale" option.
Sync center just does that - syncs the center of the map without
changing the scale. This allows you to have an overview style
or magnified map which follows the main canvas center.
Sync scale borrows from the Auxillary Window/Dockable Mirror
Map plugin approach. If sync scale is enabled, a "scale factor"
is utilised to multiply the main canvas scale. This allows
you to have a view which is e.g. always 2x the scale of the
main canvas.
Splitting the sync extent option like this allows us to address
a much wider set of use cases with map views (at the cost of
a bit of UI complexity). It also helps cover more of the
feature set from the Aux Window/Dockable Mirror Map plugins,
hopefully allowing this built-in view approach to make the need
for 3rd party plugins redundant.