KiCad PCB EDA Suite
Loading...
Searching...
No Matches
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 The 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, see <https://www.gnu.org/licenses/>.
19
*/
20
21
#ifndef PICKER_TOOL_H
22
#define PICKER_TOOL_H
23
24
#include <optional>
25
#include <
gal/cursors.h
>
26
#include <
math/vector2d.h
>
27
#include <
tool/tool_interactive.h
>
28
29
class
EDA_DRAW_FRAME
;
30
31
32
class
PICKER_TOOL_BASE
33
{
34
public
:
36
typedef
std::function<bool(
const
VECTOR2D
&)>
CLICK_HANDLER
;
37
typedef
std::function<void(
const
VECTOR2D
&)>
MOTION_HANDLER
;
38
typedef
std::function<void(
void
)>
CANCEL_HANDLER
;
39
typedef
std::function<void(
const
int
&)>
FINALIZE_HANDLER
;
40
41
enum
pickerEndState
42
{
43
WAIT_CANCEL
,
44
CLICK_CANCEL
,
45
END_ACTIVATE
,
46
EVT_CANCEL
,
47
EXCEPTION_CANCEL
48
};
49
50
PICKER_TOOL_BASE
() :
51
m_frame
( nullptr ),
52
m_snap
( false ),
53
m_modifiers
( 0 )
54
{
55
reset
();
56
}
57
58
virtual
~PICKER_TOOL_BASE
() =
default
;
59
60
inline
void
SetCursor
(
KICURSOR
aCursor ) {
m_cursor
= aCursor; }
61
62
inline
void
SetSnapping
(
bool
aSnap ) {
m_snap
= aSnap; }
63
64
void
ClearHandlers
()
65
{
66
m_clickHandler
.reset();
67
m_motionHandler
.reset();
68
m_cancelHandler
.reset();
69
m_finalizeHandler
.reset();
70
}
71
77
inline
void
SetClickHandler
(
CLICK_HANDLER
aHandler )
78
{
79
wxASSERT( !
m_clickHandler
);
80
m_clickHandler
= aHandler;
81
}
82
88
inline
void
SetMotionHandler
(
MOTION_HANDLER
aHandler )
89
{
90
wxASSERT( !
m_motionHandler
);
91
m_motionHandler
= aHandler;
92
}
93
97
inline
void
SetCancelHandler
(
CANCEL_HANDLER
aHandler )
98
{
99
wxASSERT( !
m_cancelHandler
);
100
m_cancelHandler
= aHandler;
101
}
102
108
inline
void
SetFinalizeHandler
(
FINALIZE_HANDLER
aHandler )
109
{
110
wxASSERT( !
m_finalizeHandler
);
111
m_finalizeHandler
= aHandler;
112
}
113
114
int
CurrentModifiers
()
const
{
return
m_modifiers
; }
115
116
protected
:
118
virtual
void
reset
();
119
120
EDA_DRAW_FRAME
*
m_frame
;
121
KICURSOR
m_cursor
;
122
bool
m_snap
;
123
int
m_modifiers
;
124
125
std::optional<CLICK_HANDLER>
m_clickHandler
;
126
std::optional<MOTION_HANDLER>
m_motionHandler
;
127
std::optional<CANCEL_HANDLER>
m_cancelHandler
;
128
std::optional<FINALIZE_HANDLER>
m_finalizeHandler
;
129
130
std::optional<VECTOR2D>
m_picked
;
131
};
132
133
134
class
PICKER_TOOL
:
public
TOOL_INTERACTIVE
,
public
PICKER_TOOL_BASE
135
{
136
public
:
137
PICKER_TOOL
();
138
139
PICKER_TOOL
(
const
std::string& aName );
140
141
virtual
~PICKER_TOOL
() =
default
;
142
144
bool
Init
()
override
;
145
147
void
Reset
(
RESET_REASON
aReason )
override
{ }
148
150
int
Main
(
const
TOOL_EVENT
& aEvent );
151
152
protected
:
154
void
setControls
();
155
157
void
setTransitions
()
override
;
158
};
159
160
#endif
/* PICKER_TOOL_H */
EDA_DRAW_FRAME
The base class for create windows for drawing purpose.
Definition
eda_draw_frame.h:83
PICKER_TOOL_BASE::SetMotionHandler
void SetMotionHandler(MOTION_HANDLER aHandler)
Set a handler for mouse motion.
Definition
picker_tool.h:88
PICKER_TOOL_BASE::m_modifiers
int m_modifiers
Definition
picker_tool.h:123
PICKER_TOOL_BASE::SetClickHandler
void SetClickHandler(CLICK_HANDLER aHandler)
Set a handler for mouse click event.
Definition
picker_tool.h:77
PICKER_TOOL_BASE::SetSnapping
void SetSnapping(bool aSnap)
Definition
picker_tool.h:62
PICKER_TOOL_BASE::~PICKER_TOOL_BASE
virtual ~PICKER_TOOL_BASE()=default
PICKER_TOOL_BASE::CurrentModifiers
int CurrentModifiers() const
Definition
picker_tool.h:114
PICKER_TOOL_BASE::ClearHandlers
void ClearHandlers()
Definition
picker_tool.h:64
PICKER_TOOL_BASE::m_picked
std::optional< VECTOR2D > m_picked
Definition
picker_tool.h:130
PICKER_TOOL_BASE::CANCEL_HANDLER
std::function< void(void)> CANCEL_HANDLER
Definition
picker_tool.h:38
PICKER_TOOL_BASE::m_snap
bool m_snap
Definition
picker_tool.h:122
PICKER_TOOL_BASE::m_finalizeHandler
std::optional< FINALIZE_HANDLER > m_finalizeHandler
Definition
picker_tool.h:128
PICKER_TOOL_BASE::SetCursor
void SetCursor(KICURSOR aCursor)
Definition
picker_tool.h:60
PICKER_TOOL_BASE::m_frame
EDA_DRAW_FRAME * m_frame
Definition
picker_tool.h:120
PICKER_TOOL_BASE::CLICK_HANDLER
std::function< bool(const VECTOR2D &)> CLICK_HANDLER
Event handler types.
Definition
picker_tool.h:36
PICKER_TOOL_BASE::m_motionHandler
std::optional< MOTION_HANDLER > m_motionHandler
Definition
picker_tool.h:126
PICKER_TOOL_BASE::m_clickHandler
std::optional< CLICK_HANDLER > m_clickHandler
Definition
picker_tool.h:125
PICKER_TOOL_BASE::SetCancelHandler
void SetCancelHandler(CANCEL_HANDLER aHandler)
Set a handler for cancel events (ESC or context-menu Cancel).
Definition
picker_tool.h:97
PICKER_TOOL_BASE::PICKER_TOOL_BASE
PICKER_TOOL_BASE()
Definition
picker_tool.h:50
PICKER_TOOL_BASE::SetFinalizeHandler
void SetFinalizeHandler(FINALIZE_HANDLER aHandler)
Set a handler for the finalize event.
Definition
picker_tool.h:108
PICKER_TOOL_BASE::m_cancelHandler
std::optional< CANCEL_HANDLER > m_cancelHandler
Definition
picker_tool.h:127
PICKER_TOOL_BASE::MOTION_HANDLER
std::function< void(const VECTOR2D &)> MOTION_HANDLER
Definition
picker_tool.h:37
PICKER_TOOL_BASE::m_cursor
KICURSOR m_cursor
Definition
picker_tool.h:121
PICKER_TOOL_BASE::reset
virtual void reset()
Reinitializes tool to its initial state.
Definition
picker_tool.cpp:28
PICKER_TOOL_BASE::pickerEndState
pickerEndState
Definition
picker_tool.h:42
PICKER_TOOL_BASE::EXCEPTION_CANCEL
@ EXCEPTION_CANCEL
Definition
picker_tool.h:47
PICKER_TOOL_BASE::WAIT_CANCEL
@ WAIT_CANCEL
Definition
picker_tool.h:43
PICKER_TOOL_BASE::CLICK_CANCEL
@ CLICK_CANCEL
Definition
picker_tool.h:44
PICKER_TOOL_BASE::END_ACTIVATE
@ END_ACTIVATE
Definition
picker_tool.h:45
PICKER_TOOL_BASE::EVT_CANCEL
@ EVT_CANCEL
Definition
picker_tool.h:46
PICKER_TOOL_BASE::FINALIZE_HANDLER
std::function< void(const int &)> FINALIZE_HANDLER
Definition
picker_tool.h:39
PICKER_TOOL::PICKER_TOOL
PICKER_TOOL()
Definition
picker_tool.cpp:48
PICKER_TOOL::setControls
void setControls()
Applies the requested VIEW_CONTROLS settings.
Definition
picker_tool.cpp:209
PICKER_TOOL::~PICKER_TOOL
virtual ~PICKER_TOOL()=default
PICKER_TOOL::Init
bool Init() override
Init() is called once upon a registration of the tool.
Definition
picker_tool.cpp:55
PICKER_TOOL::Main
int Main(const TOOL_EVENT &aEvent)
Main event loop.
Definition
picker_tool.cpp:72
PICKER_TOOL::setTransitions
void setTransitions() override
This method is meant to be overridden in order to specify handlers for events.
Definition
picker_tool.cpp:203
PICKER_TOOL::Reset
void Reset(RESET_REASON aReason) override
Bring the tool to a known, initial state.
Definition
picker_tool.h:147
TOOL_BASE::RESET_REASON
RESET_REASON
Determine the reason of reset for a tool.
Definition
tool_base.h:74
TOOL_EVENT
Generic, UI-independent tool event.
Definition
tool_event.h:167
TOOL_INTERACTIVE::TOOL_INTERACTIVE
TOOL_INTERACTIVE(TOOL_ID aId, const std::string &aName)
Create a tool with given id & name.
Definition
tool_interactive.cpp:35
cursors.h
KICURSOR
KICURSOR
Definition
cursors.h:40
tool_interactive.h
vector2d.h
VECTOR2D
VECTOR2< double > VECTOR2D
Definition
vector2d.h:682
src
include
tool
picker_tool.h
Generated on Fri Jun 26 2026 00:05:37 for KiCad PCB EDA Suite by
1.13.2