<div dir="ltr">PSC,<br><br>I'm writing to provide an update on the grant for QEP 269 -- Update older annotation items to new framework<div><br></div><div>This work is now complete (with one final PR pending review, see <a href="https://github.com/qgis/QGIS/pull/58405">https://github.com/qgis/QGIS/pull/58405</a>). As part of this grant, the follow changes have been made to QGIS:</div><div><br></div><div>- New annotation item types for "picture" and "text inside rectangle" have been added. See <a href="https://github.com/qgis/QGIS/pull/58126">https://github.com/qgis/QGIS/pull/58126</a>, <a href="https://github.com/qgis/QGIS/pull/58147">https://github.com/qgis/QGIS/pull/58147</a>. These new types have a range of placement modes available, including a "relative to map frame" option which mimics the behaviour of the older annotation types.</div><div>- Support was implemented for adding (optional) callouts to some annotation item types. This option is available for the text at point, rectangular text, and picture annotation items. Users can interactively set the map position for the callout origin and style the callout using the full range of callout options which are already present for map labels. (<a href="https://github.com/qgis/QGIS/pull/58295">https://github.com/qgis/QGIS/pull/58295</a>)</div><div>- Support was added for an optional marker symbol to be drawn as part of the "balloon" callout style. This option is present for both callouts attached to annotations, and callouts drawn as part of traditional map labels. (<a href="https://github.com/qgis/QGIS/pull/58311">https://github.com/qgis/QGIS/pull/58311</a>)</div><div>- Annotation layers can now have an associated "visibility layer", which means that the annotation layer will be hidden if the associated layer is hidden. (<a href="https://github.com/qgis/QGIS/pull/58287">https://github.com/qgis/QGIS/pull/58287</a>)</div><div>- A new rich text editor widget was created for interactive creation of html content for the text at point and rectangular text annotation items (<a href="https://github.com/qgis/QGIS/pull/58310">https://github.com/qgis/QGIS/pull/58310</a>)</div><div>- Several "papercut" bugs encountered while interacting with annotation items have been fixed, eg </div><div><a href="https://github.com/qgis/QGIS/pull/58327">https://github.com/qgis/QGIS/pull/58327</a> and <a href="https://github.com/qgis/QGIS/issues/58427">https://github.com/qgis/QGIS/issues/58427</a><br></div><div><br></div><div>Now, when users load projects containing the old SVG or Text annotation objects, these will be silently and automatically upgraded to the newer annotation items. I've cleaned up the UI as a result, removing the confusing actions for creating the older annotation types.</div><div><br></div><div>While this concludes the work in the current grant, there are some additional changes which would be good to implement in a future release:</div><div><br></div><div>- The old "HTML" annotation needs to be handled by creating an annotation item class for HTML content, just like what was done here for the SVG and text annotations</div><div>- We need to do something with the older "Form" annotation. I would suggest we could deprecate this annotation and just remove it in a future release, without offering an alternative to users. I suspect that this annotation is not in widespread use and developments in QGIS since the form annotation was introduced have made it redundant (eg expression based labels). I will file a QEP suggesting that we remove this form annotation shortly, so that we can gather user feedback prior to doing this.</div><div>- There's still a number of paper cuts and opportunities to streamline the UX of creating and interacting with annotation items. Whether trivial I'll be directly addressing these or fixing as part of the regular bug fixing program, but potentially there's scope for a future grant to streamline these interactions too.</div><div><br></div><div>Thanks again for the opportunity to work on this!</div><div>Nyall</div><div><br></div><div><div><div><br></div></div></div></div>