This change makes it easier to subclass `Grass7AlgorithProvider` which
allows e.g. to expose GRASS Addons as QGIS plugins.
Disclaimer: `Grass7AlgorithProvider` is a private API and it may change
without warning. 3rd parties that rely on this should expect
that their code will break in future releases.
For more info please check the comments at #30252
Nevertheless, it currently is possible to subclass with something like this:
class CustomGrassBasedProvider(Grass7AlgorithmProvider):
# Set descriptionFolder to our own description directory
descriptionFolder = os.path.join(os.path.dirname(__file__), 'description')
# 3rd party plugins don't need an activation/deactivation setting
activateSetting = None
# define the rest of the methods that are needed (e.g. name(), id() etc)
# ...
Fixes#30241
Continues #9202
we don't want/need them
This prevents a bunch of unwanted redraws being triggered mid-way
through operations like loading projects, which sometimes can
result in crashes.
Fixes#29506, #30169, possibly other crash reports
Returns a map containing all attributes from a feature, with field
names as map keys. We've got featureful, robust support for working
with maps in expressions now, so this allows rapid conversion
of all feature attributes to a map to use with these handy
functions.
symbols to the left OR symbols to the right of legend text), and
alignment for group/subgroup/item text
Allows creation of right-to-left locale friendly legends. Additionally,
we default to this right-to-left style alignment when creating new
legends under a RTL based locale.
Allows for rendering a marker symbol in the background of labels
(complementing the existing shapes/SVG choices). This allows use
of QGIS marker symbology as a background symbol behind labels (e.g.
for highway shield labels)
Refs #29391 : Added new 'else if' branch that handles OGC HTTP URL srsName style, so that epsgNr can be extracted from srsName. This doesn't fix the core issue mentionend in the Bug report #29391 though
Added branch to handle OGC HTTP URI srsName Style. Also adjusted exisiting variable names to account for the extra branch
item is selected (i.e. HTML items, attribute tables) are saved
on a multiframe level, instead of an individual frame level.
In this case we prefer to make the multiframe's scope the main, editable
one. That's because most expressions are evaluated on the multiframe
subclass level, not on a frame-by-frame basis.
Ideally both would be editable, but for now let's go with the most
useful one.