- Adds an abstract base class for profile generators,
QgsAbstractProfileGenerator. This is modeled off the approach
used by map layer renderers, where a QgsAbstractProfileGenerator
subclass object is created in the main thread and does all
required (hopefully inexpensive!) preparation steps necessary
to do on the main thread. Then a separate background thread can
later call the virtual generateProfile method, which does
the heavy lifting of calculating the associated profile. Later
the results of the profile generation can be retrieved back
on the main thread.
- Adds an interface "QgsAbstractProfileSource" for objects which
can create a profile generator given a QgsProfileRequest. Map layer
classes will implement this interface, but potentially 3rd party
(plugin based) objects can also implement the interface if they
also want to add custom results to the profile charts (e.g.
borehole trace lines).
windows and docks between sessions"
If checked for a project, then any opened attribute tables will be
saved into the project and immediately restored when loading that
project.
Designed to improve workflows when a user has constructed a project
with a particular set of attribute table configurations for their
requirements, and re-setting up these attribute tables is a hassle.
"Remember editable layer status between sessions"
If checked, then any layers which are editable will be remembered
when saving that project and immediately made editable whenever
the project is restored.
This is an opt-in, per-project setting. The intended use case
is for users who are making complex, data-editing focused projects.
means when the line anchor is < 25% then it will be matched to the
start of the text, when the line anchor is > 75% it will be matched
to the end of the text, otherwise match to center of text
middle or end) of line labels corresponds to the anchor position
Previously labels would always be centered over the anchor position
of lines (unless it was a curved label, in which case it was the
start of the lable!) This is limiting (and inconsistent) for some
placements, where it is preferable to e.g. line up the end
of the label text with a specific point on the line
Instead of forcing all steps in the batch processing dialog to execute
in the main thread, we now run each step as a separate task whenever
possible. This keeps the UI nice and responsive, and permits
responsive cancelation and progress reporting.
Individual steps are still run sequentially, not in parallel (yet!)