QGIS API Documentation  3.8.0-Zanzibar (11aff65)
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 
31 bool QgsLayoutViewTool::isClickAndDrag( QPoint startViewPoint, QPoint endViewPoint ) const
32 {
33  int diffX = endViewPoint.x() - startViewPoint.x();
34  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 
48 QList<QgsLayoutItem *> QgsLayoutViewTool::ignoredSnapItems() const
49 {
50  return QList<QgsLayoutItem *>();
51 }
52 
54 {
55  if ( mView )
56  mView->unsetTool( this );
57 }
58 
59 QgsLayoutViewTool::Flags QgsLayoutViewTool::flags() const
60 {
61  return mFlags;
62 }
63 
64 void QgsLayoutViewTool::setFlags( QgsLayoutViewTool::Flags flags )
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 
89 void QgsLayoutViewTool::wheelEvent( QWheelEvent *event )
90 {
91  event->ignore();
92 }
93 
94 void QgsLayoutViewTool::keyPressEvent( QKeyEvent *event )
95 {
96  event->ignore();
97 }
98 
99 void QgsLayoutViewTool::keyReleaseEvent( QKeyEvent *event )
100 {
101  event->ignore();
102 }
103 
105 {
106  mAction = action;
107 }
108 
110 {
111  return mAction;
112 
113 }
114 
115 void 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 }
void setCursor(const QCursor &cursor)
Sets a user defined cursor for use when the tool is active.
void setFlags(QgsLayoutViewTool::Flags flags)
Sets the combination of flags that will be used for the tool.
A graphical widget to display and interact with QgsLayouts.
Definition: qgslayoutview.h:49
virtual void keyPressEvent(QKeyEvent *event)
Key press event for overriding.
~QgsLayoutViewTool() override
virtual void deactivate()
Called when tool is deactivated.
QgsLayoutViewTool::Flags flags() const
Returns the current combination of flags set for the tool.
virtual void activate()
Called when tool is set as the currently active layout tool.
virtual void layoutDoubleClickEvent(QgsLayoutViewMouseEvent *event)
Mouse double-click event for overriding.
virtual void wheelEvent(QWheelEvent *event)
Mouse wheel event for overriding.
QgsLayoutViewTool(QgsLayoutView *view, const QString &name)
Constructor for QgsLayoutViewTool, taking a layout view and tool name as parameters.
void setAction(QAction *action)
Associates an action with this tool.
QgsLayoutView * view() const
Returns the view associated with the tool.
QgsLayout * layout() const
Returns the layout associated with the tool.
bool isClickAndDrag(QPoint startViewPoint, QPoint endViewPoint) const
Returns true if a mouse press/release operation which started at startViewPoint and ended at endViewP...
virtual void layoutReleaseEvent(QgsLayoutViewMouseEvent *event)
Mouse release event for overriding.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:49
QAction * action()
Returns the action associated with the tool or nullptr if no action is associated.
A QgsLayoutViewMouseEvent is the result of a user interaction with the mouse on a QgsLayoutView...
virtual void layoutMoveEvent(QgsLayoutViewMouseEvent *event)
Mouse move event for overriding.
void unsetTool(QgsLayoutViewTool *tool)
Unsets the current view tool, if it matches the specified tool.
QgsLayout currentLayout
Definition: qgslayoutview.h:63
void deactivated()
Emitted when the tool is deactivated.
virtual QList< QgsLayoutItem *> ignoredSnapItems() const
Returns a list of items which should be ignored while snapping events for this tool.
virtual void layoutPressEvent(QgsLayoutViewMouseEvent *event)
Mouse press event for overriding.
void willBeDeleted()
Emitted in the destructor when the view is about to be deleted, but is still in a perfectly valid sta...
void activated()
Emitted when the tool is activated.
virtual void keyReleaseEvent(QKeyEvent *event)
Key release event for overriding.