KiCad PCB EDA Suite
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
#include <
tool/tool_action.h
>
31
32
struct
ACTION_CONDITIONS
;
33
34
class
ACTIONS
;
35
class
TOOL_DISPATCHER
;
36
class
TOOL_MANAGER
;
37
38
/*
39
* A mix-in class which allows its owner to hold a set of tools from the tool framework.
40
*
41
* This is just the framework; the owner is responsible for registering individual tools,
42
* creating the dispatcher, etc.
43
*/
44
class
TOOLS_HOLDER
45
{
46
public
:
47
TOOLS_HOLDER
();
48
49
virtual
~TOOLS_HOLDER
() { }
50
54
TOOL_MANAGER
*
GetToolManager
()
const
{
return
m_toolManager
; }
55
63
virtual
void
RegisterUIUpdateHandler
(
const
TOOL_ACTION
& aAction,
64
const
ACTION_CONDITIONS
& aConditions )
65
{
66
RegisterUIUpdateHandler
( aAction.
GetUIId
(), aConditions );
67
}
68
75
virtual
void
RegisterUIUpdateHandler
(
int
aID,
const
ACTION_CONDITIONS
& aConditions )
76
{}
77
83
virtual
void
UnregisterUIUpdateHandler
(
const
TOOL_ACTION
& aAction )
84
{
85
UnregisterUIUpdateHandler
( aAction.
GetUIId
() );
86
}
87
93
virtual
void
UnregisterUIUpdateHandler
(
int
aID )
94
{}
95
101
virtual
SELECTION
&
GetCurrentSelection
()
102
{
103
return
m_dummySelection
;
104
}
105
119
virtual
void
PushTool
(
const
TOOL_EVENT
& aEvent );
120
126
virtual
void
PopTool
(
const
TOOL_EVENT
& aEvent );
127
128
bool
ToolStackIsEmpty
() {
return
m_toolStack
.empty(); }
129
130
std::string
CurrentToolName
()
const
;
131
bool
IsCurrentTool
(
const
TOOL_ACTION
& aAction )
const
;
132
133
virtual
void
DisplayToolMsg
(
const
wxString& msg ) {};
134
135
virtual
void
ShowChangedLanguage
();
136
141
bool
GetDoImmediateActions
()
const
{
return
m_immediateActions
; }
142
147
MOUSE_DRAG_ACTION
GetDragAction
()
const
{
return
m_dragAction
; }
148
153
bool
GetMoveWarpsCursor
()
const
{
return
m_moveWarpsCursor
; }
154
159
virtual
void
CommonSettingsChanged
(
bool
aEnvVarsChanged,
bool
aTextVarsChanged );
160
164
virtual
wxWindow*
GetToolCanvas
()
const
= 0;
165
virtual
void
RefreshCanvas
() { }
166
167
virtual
wxString
ConfigBaseName
() {
return
wxEmptyString; }
168
169
protected
:
170
TOOL_MANAGER
*
m_toolManager
;
171
ACTIONS
*
m_actions
;
172
TOOL_DISPATCHER
*
m_toolDispatcher
;
173
174
SELECTION
m_dummySelection
;
// Empty dummy selection
175
176
std::vector<std::string>
m_toolStack
;
// Stack of user-level "tools". This is NOT a
177
// stack of TOOL instances, because somewhat
178
// confusingly most TOOLs implement more than one
179
// user-level tool. A user-level tool actually
180
// equates to an ACTION handler, so this stack
181
// stores ACTION names.
182
183
bool
m_immediateActions
;
// Preference for immediate actions. If false,
184
// the first invocation of a hotkey will just
185
// select the relevant tool rather than executing
186
// the tool's action.
187
MOUSE_DRAG_ACTION
m_dragAction
;
// DRAG_ANY/DRAG_SELECTED/SELECT.
188
189
bool
m_moveWarpsCursor
;
// cursor is warped to move/drag origin
190
};
191
192
#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:45
TOOLS_HOLDER::GetToolCanvas
virtual wxWindow * GetToolCanvas() const =0
Canvas access.
TOOLS_HOLDER::m_toolManager
TOOL_MANAGER * m_toolManager
Definition:
tools_holder.h:170
TOOLS_HOLDER::m_immediateActions
bool m_immediateActions
Definition:
tools_holder.h:183
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:75
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:93
TOOLS_HOLDER::CurrentToolName
std::string CurrentToolName() const
Definition:
tools_holder.cpp:110
TOOLS_HOLDER::TOOLS_HOLDER
TOOLS_HOLDER()
Definition:
tools_holder.cpp:33
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.h:83
TOOLS_HOLDER::m_moveWarpsCursor
bool m_moveWarpsCursor
Definition:
tools_holder.h:189
TOOLS_HOLDER::ShowChangedLanguage
virtual void ShowChangedLanguage()
Definition:
tools_holder.cpp:128
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:147
TOOLS_HOLDER::m_dummySelection
SELECTION m_dummySelection
Definition:
tools_holder.h:174
TOOLS_HOLDER::PopTool
virtual void PopTool(const TOOL_EVENT &aEvent)
Pops a tool from the stack.
Definition:
tools_holder.cpp:65
TOOLS_HOLDER::m_toolDispatcher
TOOL_DISPATCHER * m_toolDispatcher
Definition:
tools_holder.h:172
TOOLS_HOLDER::~TOOLS_HOLDER
virtual ~TOOLS_HOLDER()
Definition:
tools_holder.h:49
TOOLS_HOLDER::m_dragAction
MOUSE_DRAG_ACTION m_dragAction
Definition:
tools_holder.h:187
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:153
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:44
TOOLS_HOLDER::ConfigBaseName
virtual wxString ConfigBaseName()
Definition:
tools_holder.h:167
TOOLS_HOLDER::ToolStackIsEmpty
bool ToolStackIsEmpty()
Definition:
tools_holder.h:128
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:141
TOOLS_HOLDER::GetToolManager
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition:
tools_holder.h:54
TOOLS_HOLDER::m_toolStack
std::vector< std::string > m_toolStack
Definition:
tools_holder.h:176
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.h:63
TOOLS_HOLDER::GetCurrentSelection
virtual SELECTION & GetCurrentSelection()
Get the current selection from the canvas area.
Definition:
tools_holder.h:101
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:141
TOOLS_HOLDER::RefreshCanvas
virtual void RefreshCanvas()
Definition:
tools_holder.h:165
TOOLS_HOLDER::m_actions
ACTIONS * m_actions
Definition:
tools_holder.h:171
TOOLS_HOLDER::IsCurrentTool
bool IsCurrentTool(const TOOL_ACTION &aAction) const
Definition:
tools_holder.cpp:119
TOOLS_HOLDER::DisplayToolMsg
virtual void DisplayToolMsg(const wxString &msg)
Definition:
tools_holder.h:133
TOOL_ACTION
Represent a single user action.
Definition:
tool_action.h:68
TOOL_ACTION::GetUIId
int GetUIId() const
Definition:
tool_action.h:130
TOOL_DISPATCHER
Definition:
tool_dispatcher.h:52
TOOL_EVENT
Generic, UI-independent tool event.
Definition:
tool_event.h:156
TOOL_MANAGER
Master controller class:
Definition:
tool_manager.h:55
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
tool_action.h
view_controls.h
src
include
tool
tools_holder.h
Generated on Sat Feb 4 2023 00:06:30 for KiCad PCB EDA Suite by
1.9.4