Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add context menu
  • Loading branch information
YoannQDQ authored and nyalldawson committed May 7, 2023
1 parent 6c6e20a commit d700108
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/app/qgsmaptoolannotation.cpp
Expand Up @@ -16,6 +16,7 @@
***************************************************************************/

#include <QDialog>
#include <QMenu>

#include "qgsmaptoolannotation.h"
#include "qgsannotation.h"
Expand All @@ -41,6 +42,11 @@ QgsMapToolAnnotation::QgsMapToolAnnotation( QgsMapCanvas *canvas )
mCursor = QCursor( Qt::ArrowCursor );
}

QgsMapTool::Flags QgsMapToolAnnotation::flags() const
{
return QgsMapTool::ShowContextMenu;
}

QDialog *QgsMapToolAnnotation::createItemEditor( QgsMapCanvasAnnotationItem *item )
{
if ( !item || !item->annotation() )
Expand Down Expand Up @@ -162,6 +168,31 @@ void QgsMapToolAnnotation::keyPressEvent( QKeyEvent *e )
}
}

bool QgsMapToolAnnotation::populateContextMenuWithEvent( QMenu *menu, QgsMapMouseEvent *event )
{
// Display context menu for right click (with edit and delete actions)
QgsMapCanvasAnnotationItem *existingItem = itemAtPos( event->pos() );
if ( existingItem == nullptr )
{
return true;
}
menu->addSeparator();
menu->addAction( QgsApplication::getThemeIcon( QStringLiteral( "/mActionToggleEditing.svg" ) ), tr( "Edit" ), this, [this, existingItem]()
{
QDialog *dialog = createItemEditor( existingItem );
if ( dialog )
{
dialog->exec();
}
} );
menu->addAction( QgsApplication::getThemeIcon( QStringLiteral( "/mActionDeleteSelected.svg" ) ), tr( "Delete" ), this, [this, existingItem]()
{
QgsProject::instance()->annotationManager()->removeAnnotation( existingItem->annotation() );
} );

return true;
}

void QgsMapToolAnnotation::canvasMoveEvent( QgsMapMouseEvent *e )
{
QgsMapCanvasAnnotationItem *item = selectedItem();
Expand Down
3 changes: 3 additions & 0 deletions src/app/qgsmaptoolannotation.h
Expand Up @@ -31,11 +31,14 @@ class APP_EXPORT QgsMapToolAnnotation: public QgsMapTool
public:
QgsMapToolAnnotation( QgsMapCanvas *canvas );

Flags flags() const override;

void canvasPressEvent( QgsMapMouseEvent *e ) override;
void canvasReleaseEvent( QgsMapMouseEvent *e ) override;
void canvasMoveEvent( QgsMapMouseEvent *e ) override;
void canvasDoubleClickEvent( QgsMapMouseEvent *e ) override;
void keyPressEvent( QKeyEvent *e ) override;
bool populateContextMenuWithEvent( QMenu *menu, QgsMapMouseEvent *event ) override;

protected:

Expand Down

0 comments on commit d700108

Please sign in to comment.