QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
gui
layout
qgslayoutviewtooltemporarykeyzoom.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgslayoutviewtooltemporarykeyzoom.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 "
qgslayoutviewtooltemporarykeyzoom.h
"
17
18
#include "
qgslayoutview.h
"
19
#include "
qgslayoutviewmouseevent.h
"
20
21
#include <QApplication>
22
#include <QScrollBar>
23
24
#include "moc_qgslayoutviewtooltemporarykeyzoom.cpp"
25
26
QgsLayoutViewToolTemporaryKeyZoom::QgsLayoutViewToolTemporaryKeyZoom
(
QgsLayoutView
*
view
)
27
:
QgsLayoutViewToolZoom
(
view
)
28
{}
29
30
void
QgsLayoutViewToolTemporaryKeyZoom::layoutReleaseEvent
(
QgsLayoutViewMouseEvent
*event )
31
{
32
QgsLayoutViewToolZoom::layoutReleaseEvent
( event );
33
if
( !event->isAccepted() )
34
return
;
35
36
//end of temporary zoom tool
37
if
( mDeactivateOnMouseRelease )
38
view
()->
setTool
( mPreviousViewTool );
39
}
40
41
void
QgsLayoutViewToolTemporaryKeyZoom::keyPressEvent
( QKeyEvent *event )
42
{
43
if
( event->isAutoRepeat() )
44
{
45
event
->ignore();
46
return
;
47
}
48
49
//respond to changes in ctrl key status
50
if
( !( event->modifiers() & Qt::ControlModifier ) )
51
{
52
if
( !
mMarqueeZoom
)
53
{
54
//space pressed, but control key was released, end of temporary zoom tool
55
view
()->
setTool
( mPreviousViewTool );
56
}
57
else
58
{
59
mDeactivateOnMouseRelease =
true
;
60
}
61
}
62
else
63
{
64
//both control and space pressed
65
//set cursor to zoom in/out depending on alt key status
66
updateCursor( event->modifiers() );
67
if
( event->key() == Qt::Key_Space )
68
{
69
mDeactivateOnMouseRelease =
false
;
70
}
71
}
72
}
73
74
void
QgsLayoutViewToolTemporaryKeyZoom::keyReleaseEvent
( QKeyEvent *event )
75
{
76
if
( event->isAutoRepeat() )
77
{
78
event
->ignore();
79
return
;
80
}
81
82
if
( event->key() == Qt::Key_Space )
83
{
84
//temporary keyboard-based zoom tool is active and space key has been released
85
if
( !
mMarqueeZoom
)
86
{
87
//not mid-way through an operation, so immediately switch tool back
88
view
()->
setTool
( mPreviousViewTool );
89
}
90
else
91
{
92
mDeactivateOnMouseRelease =
true
;
93
}
94
}
95
else
96
{
97
updateCursor( event->modifiers() );
98
event
->ignore();
99
}
100
}
101
102
void
QgsLayoutViewToolTemporaryKeyZoom::activate
()
103
{
104
mDeactivateOnMouseRelease =
false
;
105
mPreviousViewTool =
view
()->
tool
();
106
QgsLayoutViewToolZoom::activate
();
107
updateCursor( QApplication::keyboardModifiers() );
108
}
109
110
void
QgsLayoutViewToolTemporaryKeyZoom::updateCursor( Qt::KeyboardModifiers modifiers )
111
{
112
view
()->viewport()->setCursor( ( modifiers & Qt::AltModifier ) ?
QgsApplication::getThemeCursor
(
QgsApplication::Cursor::ZoomOut
) :
QgsApplication::getThemeCursor
(
QgsApplication::Cursor::ZoomIn
) );
113
}
QgsApplication::getThemeCursor
static QCursor getThemeCursor(Cursor cursor)
Helper to get a theme cursor.
Definition
qgsapplication.cpp:977
QgsApplication::ZoomOut
@ ZoomOut
Zoom out.
Definition
qgsapplication.h:473
QgsApplication::ZoomIn
@ ZoomIn
Zoom in.
Definition
qgsapplication.h:472
QgsLayoutViewMouseEvent
A mouse event which is the result of a user interaction with a QgsLayoutView.
Definition
qgslayoutviewmouseevent.h:35
QgsLayoutViewToolTemporaryKeyZoom::layoutReleaseEvent
void layoutReleaseEvent(QgsLayoutViewMouseEvent *event) override
Mouse release event for overriding.
Definition
qgslayoutviewtooltemporarykeyzoom.cpp:30
QgsLayoutViewToolTemporaryKeyZoom::keyPressEvent
void keyPressEvent(QKeyEvent *event) override
Key press event for overriding.
Definition
qgslayoutviewtooltemporarykeyzoom.cpp:41
QgsLayoutViewToolTemporaryKeyZoom::keyReleaseEvent
void keyReleaseEvent(QKeyEvent *event) override
Key release event for overriding.
Definition
qgslayoutviewtooltemporarykeyzoom.cpp:74
QgsLayoutViewToolTemporaryKeyZoom::QgsLayoutViewToolTemporaryKeyZoom
QgsLayoutViewToolTemporaryKeyZoom(QgsLayoutView *view)
Constructor for QgsLayoutViewToolTemporaryKeyZoom.
Definition
qgslayoutviewtooltemporarykeyzoom.cpp:26
QgsLayoutViewToolTemporaryKeyZoom::activate
void activate() override
Called when tool is set as the currently active layout tool.
Definition
qgslayoutviewtooltemporarykeyzoom.cpp:102
QgsLayoutViewToolZoom::layoutReleaseEvent
void layoutReleaseEvent(QgsLayoutViewMouseEvent *event) override
Mouse release event for overriding.
Definition
qgslayoutviewtoolzoom.cpp:86
QgsLayoutViewToolZoom::QgsLayoutViewToolZoom
QgsLayoutViewToolZoom(QgsLayoutView *view)
Constructor for QgsLayoutViewToolZoom.
Definition
qgslayoutviewtoolzoom.cpp:29
QgsLayoutViewToolZoom::mMarqueeZoom
bool mMarqueeZoom
Will be true will marquee zoom operation is in progress.
Definition
qgslayoutviewtoolzoom.h:49
QgsLayoutViewTool::view
QgsLayoutView * view() const
Returns the view associated with the tool.
Definition
qgslayoutviewtool.cpp:38
QgsLayoutViewTool::activate
virtual void activate()
Called when tool is set as the currently active layout tool.
Definition
qgslayoutviewtool.cpp:119
QgsLayoutView
A graphical widget to display and interact with QgsLayouts.
Definition
qgslayoutview.h:52
QgsLayoutView::setTool
void setTool(QgsLayoutViewTool *tool)
Sets the tool currently being used in the view.
Definition
qgslayoutview.cpp:140
QgsLayoutView::tool
QgsLayoutViewTool * tool
Definition
qgslayoutview.h:65
qgslayoutview.h
qgslayoutviewmouseevent.h
qgslayoutviewtooltemporarykeyzoom.h
Generated on
for QGIS API Documentation by
1.17.0