* make QgsMapToolCapture capable of capturing point/line/polygons
This moves part of the code from QgsMapToolDigitizeFeature to QgsMapToolCapture so the tool can actually capture point, line and polygons. It's mainly the 'cadCanvasReleaseEvent` which has been transfered.
* use a current CaptureTechnique in QgsMapToolCapture
QgisApp has been adapted to switch between the different techniques
* add point/line/polygon specific handlers for capture map tool
* convert add part map tool to use QgsMapToolCapture capabilities
* fix use of deprecated methods
* also create a virtual handler for QgsMapToolDigitizeFeature::featureDigitized
* more dox
* use const abstract geom in virtual handlers
* add new class QgsMapToolCaptureLayerGeometry to handle layer specific operation in capture map tool
such as avoiding intersections
* allow to add linear geometries on curved geometry layers
* make actions exclusive
* add settings registry to app
* add a registry for shape map tools
* abstract class for shape map tools
* adapt QgsMapToolCapture to correctly support shape map tools
* clean up of QgisApp
* new class QgsMapToolsDigitizingTechniqueManager to handle actions in app related to capture map tools
* clean up QgisInterface
* sipify
* refactoring of existing shape tools
* refactor add ring to fully support capture map tool
* add missing folder to Doxygen
* fix layout
* fix erasing at iterator pos
* fix unused warning
* fix more dox
* fix cpp check warning
* fix unused warning
* fix annotation map tool does not support shape + set tool name
* correctly handle case when the capture is not done on a vector layer (annotation, mesh, …)
* enable shapes in annotation map tool
* correctly undo and clean
* adapt existing shape tests
the deletion test with circular vertices has been dropped since the capture map tool behaves differently
* fix warning
* refactor fill ring to support shape digitizing
* fix win build
* fix more tests
* avoid detach warnings
* fix app test + clean up
* harmonize new settings with existing ones
* fix categories
* support adding multi lines as a part
* fix adding curve part to multi line
* also handle points
* code a bit clearer
* cast not always valid
* allow adding curved polygon to multipolygon
* add test for QgsGeometry::addPart with curved parts on non-curved geoms (lines and polygons)
* fix with Python < 3.9
* better dox for deprecated interface actions methods
* remove files leftover
* remove leftover circular string curve point tool
* add default Z/M values when calling QgsGeometry::coerceToType
* Apply suggestions from code review
Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>
* fixes from review
* move layer specific part to specific tool
* fix typo
* fix leak
* fix dox
* fix segmentization
* call map tool implementation of addCurve when adding trace curve to avoid point duplication
* call sub-class implementation
* fix since 3.24 -> 3.26
* fix test
* add test to avoid extra curves when using tracing
* fix headers
Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>
This is the start of a map tool for interactive editing of items
in annotation layers. Currently it supports selecting items, and
pre-highlighting their nodes as the cursor is moved over the items.
(Not exposed in QGIS gui yet)