QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgslayoutviewtool.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgslayoutviewtool.cpp
3 ---------------------
4 Date : July 2017
5 Copyright : (C) 2017 Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#include "qgslayoutviewtool.h"
17#include "qgslayoutview.h"
19
21 : QObject( view )
22 , mView( view )
23 , mToolName( name )
24{
25 connect( mView, &QgsLayoutView::willBeDeleted, this, [ = ]
26 {
27 mView = nullptr;
28 } );
29}
30
31bool QgsLayoutViewTool::isClickAndDrag( QPoint startViewPoint, QPoint endViewPoint ) const
32{
33 const int diffX = endViewPoint.x() - startViewPoint.x();
34 const int diffY = endViewPoint.y() - startViewPoint.y();
35 return std::abs( diffX ) >= 2 || std::abs( diffY ) >= 2;
36}
37
39{
40 return mView;
41}
42
44{
45 return mView->currentLayout();
46}
47
48QList<QgsLayoutItem *> QgsLayoutViewTool::ignoredSnapItems() const
49{
50 return QList<QgsLayoutItem *>();
51}
52
54{
55 if ( mView )
56 mView->unsetTool( this );
57}
58
60{
61 return mFlags;
62}
63
65{
66 mFlags = flags;
67}
68
70{
71 event->ignore();
72}
73
75{
76 event->ignore();
77}
78
80{
81 event->ignore();
82}
83
85{
86 event->ignore();
87}
88
89void QgsLayoutViewTool::wheelEvent( QWheelEvent *event )
90{
91 event->ignore();
92}
93
94void QgsLayoutViewTool::keyPressEvent( QKeyEvent *event )
95{
96 event->ignore();
97}
98
99void QgsLayoutViewTool::keyReleaseEvent( QKeyEvent *event )
100{
101 event->ignore();
102}
103
104void QgsLayoutViewTool::setAction( QAction *action )
105{
106 mAction = action;
107}
108
110{
111 return mAction;
112
113}
114
115void QgsLayoutViewTool::setCursor( const QCursor &cursor )
116{
117 mCursor = cursor;
118}
119
121{
122 // make action and/or button active
123 if ( mAction )
124 mAction->setChecked( true );
125
126 mView->viewport()->setCursor( mCursor );
127 emit activated();
128}
129
131{
132 if ( mAction )
133 mAction->setChecked( false );
134
135 emit deactivated();
136}
A QgsLayoutViewMouseEvent is the result of a user interaction with the mouse on a QgsLayoutView.
~QgsLayoutViewTool() override
void setCursor(const QCursor &cursor)
Sets a user defined cursor for use when the tool is active.
QgsLayoutView * view() const
Returns the view associated with the tool.
virtual QList< QgsLayoutItem * > ignoredSnapItems() const
Returns a list of items which should be ignored while snapping events for this tool.
virtual void deactivate()
Called when tool is deactivated.
virtual void layoutDoubleClickEvent(QgsLayoutViewMouseEvent *event)
Mouse double-click event for overriding.
QgsLayoutViewTool::Flags flags() const
Returns the current combination of flags set for the tool.
virtual void wheelEvent(QWheelEvent *event)
Mouse wheel event for overriding.
QAction * action()
Returns the action associated with the tool or nullptr if no action is associated.
virtual void keyReleaseEvent(QKeyEvent *event)
Key release event for overriding.
bool isClickAndDrag(QPoint startViewPoint, QPoint endViewPoint) const
Returns true if a mouse press/release operation which started at startViewPoint and ended at endViewP...
void setFlags(QgsLayoutViewTool::Flags flags)
Sets the combination of flags that will be used for the tool.
void setAction(QAction *action)
Associates an action with this tool.
virtual void activate()
Called when tool is set as the currently active layout tool.
QgsLayout * layout() const
Returns the layout associated with the tool.
virtual void layoutMoveEvent(QgsLayoutViewMouseEvent *event)
Mouse move event for overriding.
void activated()
Emitted when the tool is activated.
virtual void layoutPressEvent(QgsLayoutViewMouseEvent *event)
Mouse press event for overriding.
QgsLayoutViewTool(QgsLayoutView *view, const QString &name)
Constructor for QgsLayoutViewTool, taking a layout view and tool name as parameters.
virtual void layoutReleaseEvent(QgsLayoutViewMouseEvent *event)
Mouse release event for overriding.
virtual void keyPressEvent(QKeyEvent *event)
Key press event for overriding.
QFlags< Flag > Flags
void deactivated()
Emitted when the tool is deactivated.
A graphical widget to display and interact with QgsLayouts.
Definition: qgslayoutview.h:50
QgsLayout * currentLayout
Definition: qgslayoutview.h:63
void willBeDeleted()
Emitted in the destructor when the view is about to be deleted, but is still in a perfectly valid sta...
void unsetTool(QgsLayoutViewTool *tool)
Unsets the current view tool, if it matches the specified tool.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:49