KiCad PCB EDA Suite
Loading...
Searching...
No Matches
tools_holder.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) 2020 KiCad Developers, see AUTHORS.txt for contributors.
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, you may find one here:
18
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19
* or you may search the http://www.gnu.org website for the version 2 license,
20
* or you may write to the Free Software Foundation, Inc.,
21
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22
*/
23
24
#ifndef TOOL_HOLDER_H
25
#define TOOL_HOLDER_H
26
27
#include <vector>
28
#include <
view/view_controls.h
>
29
#include <
tool/selection.h
>
30
31
struct
ACTION_CONDITIONS
;
32
33
class
ACTIONS
;
34
class
TOOL_ACTION
;
35
class
TOOL_DISPATCHER
;
36
class
TOOL_EVENT
;
37
class
TOOL_MANAGER
;
38
39
/*
40
* A mix-in class which allows its owner to hold a set of tools from the tool framework.
41
*
42
* This is just the framework; the owner is responsible for registering individual tools,
43
* creating the dispatcher, etc.
44
*/
45
class
TOOLS_HOLDER
46
{
47
public
:
48
TOOLS_HOLDER
();
49
50
virtual
~TOOLS_HOLDER
() { }
51
55
TOOL_MANAGER
*
GetToolManager
()
const
{
return
m_toolManager
; }
56
64
virtual
void
RegisterUIUpdateHandler
(
const
TOOL_ACTION
& aAction,
65
const
ACTION_CONDITIONS
& aConditions );
66
73
virtual
void
RegisterUIUpdateHandler
(
int
aID,
const
ACTION_CONDITIONS
& aConditions )
74
{}
75
81
virtual
void
UnregisterUIUpdateHandler
(
const
TOOL_ACTION
& aAction );
82
88
virtual
void
UnregisterUIUpdateHandler
(
int
aID )
89
{}
90
96
virtual
SELECTION
&
GetCurrentSelection
()
97
{
98
return
m_dummySelection
;
99
}
100
114
virtual
void
PushTool
(
const
TOOL_EVENT
& aEvent );
115
121
virtual
void
PopTool
(
const
TOOL_EVENT
& aEvent );
122
123
bool
ToolStackIsEmpty
() {
return
m_toolStack
.empty(); }
124
125
std::string
CurrentToolName
()
const
;
126
bool
IsCurrentTool
(
const
TOOL_ACTION
& aAction )
const
;
127
128
virtual
void
DisplayToolMsg
(
const
wxString& msg ) {};
129
130
virtual
void
ShowChangedLanguage
();
131
136
bool
GetDoImmediateActions
()
const
{
return
m_immediateActions
; }
137
142
MOUSE_DRAG_ACTION
GetDragAction
()
const
{
return
m_dragAction
; }
143
148
bool
GetMoveWarpsCursor
()
const
{
return
m_moveWarpsCursor
; }
149
154
virtual
void
CommonSettingsChanged
(
bool
aEnvVarsChanged,
bool
aTextVarsChanged );
155
159
virtual
wxWindow*
GetToolCanvas
()
const
= 0;
160
virtual
void
RefreshCanvas
() { }
161
162
virtual
wxString
ConfigBaseName
() {
return
wxEmptyString; }
163
164
protected
:
165
TOOL_MANAGER
*
m_toolManager
;
166
ACTIONS
*
m_actions
;
167
TOOL_DISPATCHER
*
m_toolDispatcher
;
168
169
SELECTION
m_dummySelection
;
// Empty dummy selection
170
171
std::vector<std::string>
m_toolStack
;
// Stack of user-level "tools". This is NOT a
172
// stack of TOOL instances, because somewhat
173
// confusingly most TOOLs implement more than one
174
// user-level tool. A user-level tool actually
175
// equates to an ACTION handler, so this stack
176
// stores ACTION names.
177
178
bool
m_immediateActions
;
// Preference for immediate actions. If false,
179
// the first invocation of a hotkey will just
180
// select the relevant tool rather than executing
181
// the tool's action.
182
MOUSE_DRAG_ACTION
m_dragAction
;
// DRAG_ANY/DRAG_SELECTED/SELECT.
183
184
bool
m_moveWarpsCursor
;
// cursor is warped to move/drag origin
185
};
186
187
#endif
// TOOL_HOLDER_H
ACTIONS
Gather all the actions that are shared by tools.
Definition:
actions.h:41
SELECTION
Definition:
selection.h:38
TOOLS_HOLDER
Definition:
tools_holder.h:46
TOOLS_HOLDER::GetToolCanvas
virtual wxWindow * GetToolCanvas() const =0
Canvas access.
TOOLS_HOLDER::m_toolManager
TOOL_MANAGER * m_toolManager
Definition:
tools_holder.h:165
TOOLS_HOLDER::m_immediateActions
bool m_immediateActions
Definition:
tools_holder.h:178
TOOLS_HOLDER::RegisterUIUpdateHandler
virtual void RegisterUIUpdateHandler(int aID, const ACTION_CONDITIONS &aConditions)
Register a UI update handler for the control with ID aID.
Definition:
tools_holder.h:73
TOOLS_HOLDER::UnregisterUIUpdateHandler
virtual void UnregisterUIUpdateHandler(int aID)
Unregister a UI handler for a given ID that was registered using RegisterUIUpdateHandler.
Definition:
tools_holder.h:88
TOOLS_HOLDER::CurrentToolName
std::string CurrentToolName() const
Definition:
tools_holder.cpp:122
TOOLS_HOLDER::TOOLS_HOLDER
TOOLS_HOLDER()
Definition:
tools_holder.cpp:33
TOOLS_HOLDER::m_moveWarpsCursor
bool m_moveWarpsCursor
Definition:
tools_holder.h:184
TOOLS_HOLDER::ShowChangedLanguage
virtual void ShowChangedLanguage()
Definition:
tools_holder.cpp:140
TOOLS_HOLDER::GetDragAction
MOUSE_DRAG_ACTION GetDragAction() const
Indicates whether a drag should draw a selection rectangle or drag selected (or unselected) objects.
Definition:
tools_holder.h:142
TOOLS_HOLDER::m_dummySelection
SELECTION m_dummySelection
Definition:
tools_holder.h:169
TOOLS_HOLDER::PopTool
virtual void PopTool(const TOOL_EVENT &aEvent)
Pops a tool from the stack.
Definition:
tools_holder.cpp:77
TOOLS_HOLDER::m_toolDispatcher
TOOL_DISPATCHER * m_toolDispatcher
Definition:
tools_holder.h:167
TOOLS_HOLDER::~TOOLS_HOLDER
virtual ~TOOLS_HOLDER()
Definition:
tools_holder.h:50
TOOLS_HOLDER::m_dragAction
MOUSE_DRAG_ACTION m_dragAction
Definition:
tools_holder.h:182
TOOLS_HOLDER::GetMoveWarpsCursor
bool GetMoveWarpsCursor() const
Indicate that a move operation should warp the mouse pointer to the origin of the move object.
Definition:
tools_holder.h:148
TOOLS_HOLDER::PushTool
virtual void PushTool(const TOOL_EVENT &aEvent)
NB: the definition of "tool" is different at the user level.
Definition:
tools_holder.cpp:56
TOOLS_HOLDER::ConfigBaseName
virtual wxString ConfigBaseName()
Definition:
tools_holder.h:162
TOOLS_HOLDER::ToolStackIsEmpty
bool ToolStackIsEmpty()
Definition:
tools_holder.h:123
TOOLS_HOLDER::RegisterUIUpdateHandler
virtual void RegisterUIUpdateHandler(const TOOL_ACTION &aAction, const ACTION_CONDITIONS &aConditions)
Register an action's update conditions with the UI layer to allow the UI to appropriately display the...
Definition:
tools_holder.cpp:42
TOOLS_HOLDER::GetDoImmediateActions
bool GetDoImmediateActions() const
Indicate that hotkeys should perform an immediate action even if another tool is currently active.
Definition:
tools_holder.h:136
TOOLS_HOLDER::GetToolManager
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition:
tools_holder.h:55
TOOLS_HOLDER::m_toolStack
std::vector< std::string > m_toolStack
Definition:
tools_holder.h:171
TOOLS_HOLDER::GetCurrentSelection
virtual SELECTION & GetCurrentSelection()
Get the current selection from the canvas area.
Definition:
tools_holder.h:96
TOOLS_HOLDER::UnregisterUIUpdateHandler
virtual void UnregisterUIUpdateHandler(const TOOL_ACTION &aAction)
Unregister a UI handler for an action that was registered using RegisterUIUpdateHandler.
Definition:
tools_holder.cpp:49
TOOLS_HOLDER::CommonSettingsChanged
virtual void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged)
Notification event that some of the common (suite-wide) settings have changed.
Definition:
tools_holder.cpp:153
TOOLS_HOLDER::RefreshCanvas
virtual void RefreshCanvas()
Definition:
tools_holder.h:160
TOOLS_HOLDER::m_actions
ACTIONS * m_actions
Definition:
tools_holder.h:166
TOOLS_HOLDER::IsCurrentTool
bool IsCurrentTool(const TOOL_ACTION &aAction) const
Definition:
tools_holder.cpp:131
TOOLS_HOLDER::DisplayToolMsg
virtual void DisplayToolMsg(const wxString &msg)
Definition:
tools_holder.h:128
TOOL_ACTION
Represent a single user action.
Definition:
tool_action.h:219
TOOL_DISPATCHER
Definition:
tool_dispatcher.h:52
TOOL_EVENT
Generic, UI-independent tool event.
Definition:
tool_event.h:167
TOOL_MANAGER
Master controller class:
Definition:
tool_manager.h:57
MOUSE_DRAG_ACTION
MOUSE_DRAG_ACTION
Definition:
common_settings.h:29
selection.h
ACTION_CONDITIONS
Functors that can be used to figure out how the action controls should be displayed in the UI and if ...
Definition:
action_manager.h:49
view_controls.h
src
include
tool
tools_holder.h
Generated on Mon Sep 25 2023 00:04:22 for KiCad PCB EDA Suite by
1.9.5