KiCad PCB EDA Suite
picker_tool.h
Go to the documentation of this file.
1
/*
2
* This program source code file is part of KiCad, a free EDA CAD application.
3
*
4
* Copyright (C) 2019 CERN
5
* Copyright (C) 2019-2020 KiCad Developers, see AUTHORS.txt for contributors.
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License
9
* as published by the Free Software Foundation; either version 2
10
* of the License, or (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, you may find one here:
19
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20
* or you may search the http://www.gnu.org website for the version 2 license,
21
* or you may write to the Free Software Foundation, Inc.,
22
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23
*/
24
25
#ifndef PICKER_TOOL_H
26
#define PICKER_TOOL_H
27
28
#include <boost/optional/optional.hpp>
29
#include <
math/vector2d.h
>
30
#include <
tool/tool_interactive.h
>
31
#include <
cursors.h
>
32
33
class
EDA_DRAW_FRAME
;
34
35
36
class
PICKER_TOOL_BASE
37
{
38
public
:
40
typedef
std::function<bool(
const
VECTOR2D
&)>
CLICK_HANDLER
;
41
typedef
std::function<void(
const
VECTOR2D
&)>
MOTION_HANDLER
;
42
typedef
std::function<void(
void
)>
CANCEL_HANDLER
;
43
typedef
std::function<void(
const
int
&)>
FINALIZE_HANDLER
;
44
45
enum
pickerEndState
46
{
47
WAIT_CANCEL
,
48
CLICK_CANCEL
,
49
END_ACTIVATE
,
50
EVT_CANCEL
,
51
EXCEPTION_CANCEL
52
};
53
54
PICKER_TOOL_BASE
() :
55
m_frame
( nullptr )
56
{
57
reset
();
58
}
59
60
inline
void
SetCursor
(
KICURSOR
aCursor ) {
m_cursor
= aCursor; }
61
62
inline
void
SetSnapping
(
bool
aSnap ) {
m_snap
= aSnap; }
63
69
inline
void
SetClickHandler
(
CLICK_HANDLER
aHandler )
70
{
71
wxASSERT( !
m_clickHandler
);
72
m_clickHandler
= aHandler;
73
}
74
80
inline
void
SetMotionHandler
(
MOTION_HANDLER
aHandler )
81
{
82
wxASSERT( !
m_motionHandler
);
83
m_motionHandler
= aHandler;
84
}
85
89
inline
void
SetCancelHandler
(
CANCEL_HANDLER
aHandler )
90
{
91
wxASSERT( !
m_cancelHandler
);
92
m_cancelHandler
= aHandler;
93
}
94
100
inline
void
SetFinalizeHandler
(
FINALIZE_HANDLER
aHandler )
101
{
102
wxASSERT( !
m_finalizeHandler
);
103
m_finalizeHandler
= aHandler;
104
}
105
106
protected
:
108
virtual
void
reset
();
109
110
EDA_DRAW_FRAME
*
m_frame
;
111
KICURSOR
m_cursor
;
112
bool
m_snap
;
113
114
OPT<CLICK_HANDLER>
m_clickHandler
;
115
OPT<MOTION_HANDLER>
m_motionHandler
;
116
OPT<CANCEL_HANDLER>
m_cancelHandler
;
117
OPT<FINALIZE_HANDLER>
m_finalizeHandler
;
118
119
OPT<VECTOR2D>
m_picked
;
120
};
121
122
123
class
PICKER_TOOL
:
public
TOOL_INTERACTIVE
,
public
PICKER_TOOL_BASE
124
{
125
public
:
126
PICKER_TOOL
();
127
128
PICKER_TOOL
(
const
std::string& aName );
129
130
virtual
~PICKER_TOOL
() =
default
;
131
133
bool
Init
()
override
;
134
136
void
Reset
(
RESET_REASON
aReason )
override
{ }
137
139
int
Main
(
const
TOOL_EVENT
& aEvent );
140
141
protected
:
143
void
setControls
();
144
146
void
setTransitions
()
override
;
147
};
148
149
#endif
/* PICKER_TOOL_H */
PICKER_TOOL_BASE
Definition:
picker_tool.h:36
PICKER_TOOL_BASE::CANCEL_HANDLER
std::function< void(void)> CANCEL_HANDLER
Definition:
picker_tool.h:42
cursors.h
PICKER_TOOL_BASE::PICKER_TOOL_BASE
PICKER_TOOL_BASE()
Definition:
picker_tool.h:54
PICKER_TOOL::Init
bool Init() override
Init() is called once upon a registration of the tool.
Definition:
picker_tool.cpp:58
PICKER_TOOL_BASE::END_ACTIVATE
Definition:
picker_tool.h:49
PICKER_TOOL_BASE::m_cursor
KICURSOR m_cursor
Definition:
picker_tool.h:111
PICKER_TOOL_BASE::pickerEndState
pickerEndState
Definition:
picker_tool.h:45
PICKER_TOOL::Main
int Main(const TOOL_EVENT &aEvent)
Definition:
picker_tool.cpp:75
PICKER_TOOL_BASE::m_picked
OPT< VECTOR2D > m_picked
Definition:
picker_tool.h:119
tool_interactive.h
VECTOR2< double >
PICKER_TOOL::Reset
void Reset(RESET_REASON aReason) override
Bring the tool to a known, initial state.
Definition:
picker_tool.h:136
PICKER_TOOL_BASE::CLICK_CANCEL
Definition:
picker_tool.h:48
PICKER_TOOL_BASE::MOTION_HANDLER
std::function< void(const VECTOR2D &)> MOTION_HANDLER
Definition:
picker_tool.h:41
KICURSOR
KICURSOR
Definition:
cursors.h:33
PICKER_TOOL_BASE::m_cancelHandler
OPT< CANCEL_HANDLER > m_cancelHandler
Definition:
picker_tool.h:116
PICKER_TOOL_BASE::SetFinalizeHandler
void SetFinalizeHandler(FINALIZE_HANDLER aHandler)
Set a handler for the finalize event.
Definition:
picker_tool.h:100
EDA_DRAW_FRAME
The base class for create windows for drawing purpose.
Definition:
eda_draw_frame.h:69
PICKER_TOOL::PICKER_TOOL
PICKER_TOOL()
Definition:
picker_tool.cpp:51
PICKER_TOOL_BASE::m_finalizeHandler
OPT< FINALIZE_HANDLER > m_finalizeHandler
Definition:
picker_tool.h:117
PICKER_TOOL
Definition:
picker_tool.h:123
PICKER_TOOL::setTransitions
void setTransitions() override
This method is meant to be overridden in order to specify handlers for events.
Definition:
picker_tool.cpp:202
PICKER_TOOL_BASE::reset
virtual void reset()
< Reinitializes tool to its initial state.
Definition:
picker_tool.cpp:31
TOOL_EVENT
Generic, UI-independent tool event.
Definition:
tool_event.h:173
PICKER_TOOL_BASE::SetMotionHandler
void SetMotionHandler(MOTION_HANDLER aHandler)
Set a handler for mouse motion.
Definition:
picker_tool.h:80
PICKER_TOOL_BASE::WAIT_CANCEL
Definition:
picker_tool.h:47
PICKER_TOOL::setControls
void setControls()
< Applies the requested VIEW_CONTROLS settings.
Definition:
picker_tool.cpp:208
PICKER_TOOL_BASE::EXCEPTION_CANCEL
Definition:
picker_tool.h:51
PICKER_TOOL_BASE::CLICK_HANDLER
std::function< bool(const VECTOR2D &)> CLICK_HANDLER
< Event handler types.
Definition:
picker_tool.h:40
TOOL_INTERACTIVE
Definition:
tool_interactive.h:37
PICKER_TOOL_BASE::m_clickHandler
OPT< CLICK_HANDLER > m_clickHandler
Definition:
picker_tool.h:114
PICKER_TOOL::~PICKER_TOOL
virtual ~PICKER_TOOL()=default
PICKER_TOOL_BASE::SetCursor
void SetCursor(KICURSOR aCursor)
Definition:
picker_tool.h:60
PICKER_TOOL_BASE::SetClickHandler
void SetClickHandler(CLICK_HANDLER aHandler)
Set a handler for mouse click event.
Definition:
picker_tool.h:69
PICKER_TOOL_BASE::m_frame
EDA_DRAW_FRAME * m_frame
Definition:
picker_tool.h:110
vector2d.h
PICKER_TOOL_BASE::m_motionHandler
OPT< MOTION_HANDLER > m_motionHandler
Definition:
picker_tool.h:115
TOOL_BASE::RESET_REASON
RESET_REASON
Determine the reason of reset for a tool.
Definition:
tool_base.h:78
OPT
boost::optional< T > OPT
Definition:
optional.h:7
PICKER_TOOL_BASE::SetSnapping
void SetSnapping(bool aSnap)
Definition:
picker_tool.h:62
PICKER_TOOL_BASE::FINALIZE_HANDLER
std::function< void(const int &)> FINALIZE_HANDLER
Definition:
picker_tool.h:43
PICKER_TOOL_BASE::m_snap
bool m_snap
Definition:
picker_tool.h:112
PICKER_TOOL_BASE::SetCancelHandler
void SetCancelHandler(CANCEL_HANDLER aHandler)
Set a handler for cancel events (ESC or context-menu Cancel).
Definition:
picker_tool.h:89
PICKER_TOOL_BASE::EVT_CANCEL
Definition:
picker_tool.h:50
include
tool
picker_tool.h
Generated on Wed Mar 3 2021 04:22:26 for KiCad PCB EDA Suite by
1.8.15