mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
120 lines
3.9 KiB
Plaintext
120 lines
3.9 KiB
Plaintext
/************************************************************************
|
|
* This file has been generated automatically from *
|
|
* *
|
|
* src/gui/qgsabstractmaptoolhandler.h *
|
|
* *
|
|
* Do not edit manually ! Edit header and run scripts/sipify.py again *
|
|
************************************************************************/
|
|
|
|
|
|
|
|
|
|
class QgsAbstractMapToolHandler
|
|
{
|
|
%Docstring(signature="appended")
|
|
An abstract base class for map tool handlers, implementing application
|
|
level UI logic.
|
|
|
|
:py:class:`QgsAbstractMapToolHandler` subclasses automatically handle
|
|
all the necessary logic for toggling the map tool and enabling/disabling
|
|
the associated action when the QGIS application is in a state
|
|
permissible for the tool.
|
|
|
|
Creating these handlers avoids a lot of complex setup code and manual
|
|
connections which are otherwise necessary to ensure that a map tool is
|
|
correctly activated and deactivated when the state of the QGIS
|
|
application changes (e.g. when the active layer is changed, when edit
|
|
modes are toggled, when other map tools are switched to, etc).
|
|
|
|
- ### Example
|
|
|
|
.. code-block:: python
|
|
|
|
class MyMapTool(QgsMapTool):
|
|
...
|
|
|
|
class MyMapToolHandler(QgsAbstractMapToolHandler):
|
|
|
|
def __init__(self, tool, action):
|
|
super().__init__(tool, action)
|
|
|
|
def isCompatibleWithLayer(self, layer, context):
|
|
# this tool can only be activated when an editable vector layer is selected
|
|
return isinstance(layer, QgsVectorLayer) and layer.isEditable()
|
|
|
|
my_tool = MyMapTool()
|
|
my_action = QAction('My Map Tool')
|
|
|
|
my_handler = MyMapToolHandler(my_tool, my_action)
|
|
iface.registerMapToolHandler(my_handler)
|
|
|
|
.. versionadded:: 3.16
|
|
%End
|
|
|
|
%TypeHeaderCode
|
|
#include "qgsabstractmaptoolhandler.h"
|
|
%End
|
|
public:
|
|
struct Context
|
|
{
|
|
bool dummy;
|
|
};
|
|
|
|
QgsAbstractMapToolHandler( QgsMapTool *tool, QAction *action );
|
|
%Docstring
|
|
Constructor for a map tool handler for the specified ``tool``.
|
|
|
|
The ``action`` argument must be set to the action associated with
|
|
switching to the tool.
|
|
|
|
The ownership of neither ``tool`` nor ``action`` is transferred, and the
|
|
caller is responsible for ensuring that these objects exist for the
|
|
lifetime of the handler.
|
|
|
|
.. warning::
|
|
|
|
The handler will be responsible for creating the appropriate
|
|
connections between the ``action`` and the ``tool``. These should NOT be
|
|
manually connected elsewhere!
|
|
%End
|
|
|
|
virtual ~QgsAbstractMapToolHandler();
|
|
|
|
QgsMapTool *mapTool();
|
|
%Docstring
|
|
Returns the tool associated with this handler.
|
|
%End
|
|
|
|
QAction *action();
|
|
%Docstring
|
|
Returns the action associated with toggling the tool.
|
|
%End
|
|
|
|
virtual bool isCompatibleWithLayer( QgsMapLayer *layer, const QgsAbstractMapToolHandler::Context &context ) = 0;
|
|
%Docstring
|
|
Returns ``True`` if the associated map tool is compatible with the
|
|
specified ``layer``.
|
|
|
|
Additional information is available through the ``context`` argument.
|
|
%End
|
|
|
|
virtual void setLayerForTool( QgsMapLayer *layer );
|
|
%Docstring
|
|
Sets the ``layer`` to use for the tool.
|
|
|
|
Called whenever a new layer should be associated with the tool, e.g. as
|
|
a result of the user selecting a different active layer.
|
|
|
|
The default implementation does nothing.
|
|
%End
|
|
|
|
};
|
|
|
|
/************************************************************************
|
|
* This file has been generated automatically from *
|
|
* *
|
|
* src/gui/qgsabstractmaptoolhandler.h *
|
|
* *
|
|
* Do not edit manually ! Edit header and run scripts/sipify.py again *
|
|
************************************************************************/
|