- [API] add signal to QgsVectorLayer that is emitted when its labeling font is not found
- Message bar notification on first rendering of layer offers link to open layer's labeling dialog
- Add 'font not found' notification to labeling dialog
- Labeling dialog defaults to 'Text style' section when font is not found, to show notice
- Substituted font is not saved with project, unless user applies changes.
- Change labeling gui font selector dialog to font family combobox (since only family is being chosen)
- Add QgsDataDefined class
- Add QgsDataDefinedButton class
- Add data defined Python support
- Add standalone SVG selector dialog to QgsSvgSelectorWidget class
- Fix for #4607, show only pertinent fields when setting a data defined value
- Fix for #5048 and #5049, data defined settings are literally used
- Fix for #5726, number formatting does not work for expressions
- Fix for #7755, using bufferSize to enable/disable label buffer is confusing
- Fix for #7779, labels do not register in label collision engine; and for #4719, inactive options in labeling dialog
- Prepare label text's expression upfront when preparing layer; makes rendering much faster
- Change name of 'feature obstacles' to appropriate terminology
- Add option to show debug rectangles for shadows to PAL engine properties
- Add small container class, QgsLabelComponent, for temporal values during generation of label components
- Add static image blurring function to QgsSymbolLayerV2Utils
- Fix rotational offset issue with label backgrounds
- Rectangle, square, circle and ellipse generated symbols
- SVG background via new symbology, so uses cache
- Add new gui class QgsSvgSelectorWidget, symbol selector setup culled from symbologyV2
- Does not include any associated data defined mappings, yet
- Does not auto-search for missing SVGs, yet
- Caveat: does not currently account for background size in PAL collision calculations (overlaps occur)
- Allow direct update of QgsColorButton background
- Switch data defined properties from field index- to name-based
- Add routine to migrate properties to new keys: labeling/dataDefined/[enum name]
- Add QHash containing old-style data provider mapping of index to name for use in properties migration
- Update QgsLabelingGui, QgsMapToolLabel, QgsLabelPropertyDialog to work with name-based properties
- Addresses #6763, #6673 and #2113, but does not perform any feature simplification
- Recommend adding some letter [and word] spacing before applying any delta angle adjustment
- Label is skipped during PAL priority calculation, permitting collisions and overlaps
- Overridden by layer and data defined 'scale/pixel size visibility' and data defined 'show label' options
- Add option to Change Label tool
- Allows user to quickly set visibility thresholds based upon text legibility
- By default initially on for map unit labels to skip rendering at sizes < 3 px
- Adv Labeling option to 'Show upside-down labels': never, when rotation defined, or always
- 'Never' (default) option is same as before, labels with 90 <= angle < 270 are turned so their text is always upright
- 'When rotation defined' option shows upside-down labels if their rotation is layer- or data-defined (dynamic labels are turned upright)
- 'Always' option shows upside-down labels at layer- or data-defined rotations and for dynamic labels
- update methods of existing classes
- add comment to methods missing in the sip bindings
- split up collective sip files into single files and use
same directory structure in python/ as in src/
- add a lot of missing classes (some might not make sense because of
missing python methods in those classes)
- remove some non-existing methods from the header files
- add scripts/sipdiff
- replace some usages of std::vector and std::set with QVector/QSet