Instead of copyign a pre-existing .db shipped with QGIS, create
a new .db and import an .xml file containing our default symbols.
On the UX front, the main benefit is being able to ship with
pre-defined tags and favorite flags for the default symbols.
On the developer side, it means we get rid of the requirement
to maintain both an .xml and a binary .db in the source tree.
We also say aurevoir to the symbol_xml2db.py script and the
need to update the (obsolete) script every time we add a new
feature to QgsStyle.
These variables take a lot of time to calculate and cause lots of
lengthy hangs in processing. (Eg add some moderately large rasters
to a project, then try to run any processing algorithm and QGIS
will freeze).
The layer extent can already be used in expressions via the
layer_property function, which only evalutes the extent if required
and only for layers it is used for.
The band stats for raster layers should be moved to a
band_statistic function in core which behaves the same way.
- create a dedicated set of buttons for addition of tags and smartgroups
to make those actions more visible as well as getting rid of th need to
select a tag/smartgroup to create those (turns out to be quite confusing
for newcomers)
- move UI elements around, regroup {add,remove,edit} symbol buttons to
harmonize with other parts of QGIS; the elements' placement feels much
more natural now
Allows creation of an index on an attribute in a layer for faster
attribute based filtering
Support depends on the underlying data provider for the layer
These may represent additional layers such as layers which
are not included in the map layer registry, or paths to
layers which have not yet been loaded into QGIS.
literal defaults, and qgis expression defaults) and automatically
handle unique value constraints on layers
Add a new method QgsVectorLayerUtils::createFeature which returns
a new feature which includes all relevant defaults. Any fields
with unique value constraints will be guaranteed to have a value
which is unique for the field.
Currently only in use by the split feature tool.
Sponsored by Canton of Zug and the QGEP project
Returns a new unique attribute value for a layer. For numeric
fields this is the max attribute value + 1, for strings we
attempt to create a unique value by append _1, _2, etc to either
a specified 'seed' value, or failing that to the end of the
value of that field from the first feature in the layer.
a substring from a vector data provider
Base implementation iterates through all features, but
providers can override with optimised versions. Native
implementations for postgres, spatialite and OGR included.
Within the attribute table, there is a new button to trigger actions
which are not based on individual features but instead on the whole layer.
Normally they will perform actions based on all features or the selection.
In addition to this, a lot of cleanup has been done.