QGIS API Documentation  3.21.0-Master (909859188c)
qgsmodelviewtool.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmodelviewtool.cpp
3  ---------------------
4  Date : March 2020
5  Copyright : (C) 2020 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 "qgsmodelviewtool.h"
17 #include "qgsmodelgraphicsview.h"
18 #include "qgsmodelgraphicsscene.h"
19 #include "qgsmodelviewmouseevent.h"
20 
21 QgsModelViewTool::QgsModelViewTool( QgsModelGraphicsView *view, const QString &name )
22  : QObject( view )
23  , mView( view )
24  , mToolName( name )
25 {
26  connect( mView, &QgsModelGraphicsView::willBeDeleted, this, [ = ]
27  {
28  mView = nullptr;
29  } );
30 }
31 
32 bool QgsModelViewTool::isClickAndDrag( QPoint startViewPoint, QPoint endViewPoint ) const
33 {
34  const int diffX = endViewPoint.x() - startViewPoint.x();
35  const int diffY = endViewPoint.y() - startViewPoint.y();
36  return std::abs( diffX ) >= 2 || std::abs( diffY ) >= 2;
37 }
38 
39 QgsModelGraphicsView *QgsModelViewTool::view() const
40 {
41  return mView;
42 }
43 
44 QgsModelGraphicsScene *QgsModelViewTool::scene() const
45 {
46  return qobject_cast< QgsModelGraphicsScene * >( mView->scene() );
47 }
48 
50 {
51  if ( mView )
52  mView->unsetTool( this );
53 }
54 
55 QgsModelViewTool::Flags QgsModelViewTool::flags() const
56 {
57  return mFlags;
58 }
59 
60 void QgsModelViewTool::setFlags( QgsModelViewTool::Flags flags )
61 {
62  mFlags = flags;
63 }
64 
66 {
67  event->ignore();
68 }
69 
71 {
72  event->ignore();
73 }
74 
76 {
77  event->ignore();
78 }
79 
81 {
82  event->ignore();
83 }
84 
85 void QgsModelViewTool::wheelEvent( QWheelEvent *event )
86 {
87  event->ignore();
88 }
89 
90 void QgsModelViewTool::keyPressEvent( QKeyEvent *event )
91 {
92  event->ignore();
93 }
94 
95 void QgsModelViewTool::keyReleaseEvent( QKeyEvent *event )
96 {
97  event->ignore();
98 }
99 
101 {
102  return false;
103 }
104 
105 void QgsModelViewTool::setAction( QAction *action )
106 {
107  mAction = action;
108 }
109 
111 {
112  return mAction;
113 }
114 
115 void QgsModelViewTool::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 QgsModelViewMouseEvent is the result of a user interaction with the mouse on a QgsModelGraphicsView...
virtual void keyReleaseEvent(QKeyEvent *event)
Key release event for overriding.
QgsModelGraphicsView * view() const
Returns the view associated with the tool.
virtual void modelDoubleClickEvent(QgsModelViewMouseEvent *event)
Mouse double-click event for overriding.
void setAction(QAction *action)
Associates an action with this tool.
~QgsModelViewTool() override
QAction * action()
Returns the action associated with the tool or nullptr if no action is associated.
virtual void wheelEvent(QWheelEvent *event)
Mouse wheel 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...
QgsModelViewTool::Flags flags() const
Returns the current combination of flags set for the tool.
void setCursor(const QCursor &cursor)
Sets a user defined cursor for use when the tool is active.
virtual void modelMoveEvent(QgsModelViewMouseEvent *event)
Mouse move event for overriding.
void activated()
Emitted when the tool is activated.
virtual bool allowItemInteraction()
Returns true if the tool allows interaction with component graphic items.
virtual void deactivate()
Called when tool is deactivated.
QgsModelViewTool(QgsModelGraphicsView *view, const QString &name)
Constructor for QgsModelViewTool, taking a model view and tool name as parameters.
virtual void activate()
Called when tool is set as the currently active model tool.
void deactivated()
Emitted when the tool is deactivated.
virtual void modelPressEvent(QgsModelViewMouseEvent *event)
Mouse press event for overriding.
void setFlags(QgsModelViewTool::Flags flags)
Sets the combination of flags that will be used for the tool.
virtual void keyPressEvent(QKeyEvent *event)
Key press event for overriding.
virtual void modelReleaseEvent(QgsModelViewMouseEvent *event)
Mouse release event for overriding.
QgsModelGraphicsScene * scene() const
Returns the scene associated with the tool.