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 The 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 <tool/selection.h>
30
32
33class ACTIONS;
34class TOOL_ACTION;
35class TOOL_DISPATCHER;
36class TOOL_EVENT;
37class 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 */
46{
47public:
49
50 virtual ~TOOLS_HOLDER() { }
51
56
58
66 virtual void RegisterUIUpdateHandler( const TOOL_ACTION& aAction,
67 const ACTION_CONDITIONS& aConditions );
68
75 virtual void RegisterUIUpdateHandler( int aID, const ACTION_CONDITIONS& aConditions )
76 {}
77
83 virtual void UnregisterUIUpdateHandler( const TOOL_ACTION& aAction );
84
90 virtual void UnregisterUIUpdateHandler( int aID )
91 {}
92
99 {
100 return m_dummySelection;
101 }
102
116 virtual void PushTool( const TOOL_EVENT& aEvent );
117
123 virtual void PopTool( const TOOL_EVENT& aEvent );
124
125 bool ToolStackIsEmpty() { return m_toolStack.empty(); }
126
127 std::string CurrentToolName() const;
128 bool IsCurrentTool( const TOOL_ACTION& aAction ) const;
129
130 virtual void DisplayToolMsg( const wxString& msg ) {};
131
132 virtual void ShowChangedLanguage();
133
139
145
150 bool GetMoveWarpsCursor() const { return m_moveWarpsCursor; }
151
152#define ENVVARS_CHANGED 0x0001
153#define TEXTVARS_CHANGED 0x0002
154#define HOTKEYS_CHANGED 0x0004
155
160 virtual void CommonSettingsChanged( int aFlags = 0 );
161
165 virtual wxWindow* GetToolCanvas() const = 0;
166 virtual void RefreshCanvas() { }
167
168 virtual wxString ConfigBaseName() { return wxEmptyString; }
169
170protected:
174
175 SELECTION m_dummySelection; // Empty dummy selection
176
177 std::vector<std::string> m_toolStack; // Stack of user-level "tools". This is NOT a
178 // stack of TOOL instances, because somewhat
179 // confusingly most TOOLs implement more than one
180 // user-level tool. A user-level tool actually
181 // equates to an ACTION handler, so this stack
182 // stores ACTION names.
183
184 bool m_immediateActions; // Preference for immediate actions. If false,
185 // the first invocation of a hotkey will just
186 // select the relevant tool rather than executing
187 // the tool's action.
188 MOUSE_DRAG_ACTION m_dragAction; // DRAG_ANY/DRAG_SELECTED/SELECT.
189
190 bool m_moveWarpsCursor; // cursor is warped to move/drag origin
191};
192
193#endif // TOOL_HOLDER_H
Gather all the actions that are shared by tools.
Definition: actions.h:41
virtual wxWindow * GetToolCanvas() const =0
Canvas access.
virtual void CommonSettingsChanged(int aFlags=0)
Notification event that some of the common (suite-wide) settings have changed.
TOOL_DISPATCHER * GetToolDispatcher() const
Definition: tools_holder.h:57
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:171
bool m_immediateActions
Definition: tools_holder.h:184
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
virtual void UnregisterUIUpdateHandler(int aID)
Unregister a UI handler for a given ID that was registered using RegisterUIUpdateHandler.
Definition: tools_holder.h:90
std::string CurrentToolName() const
bool m_moveWarpsCursor
Definition: tools_holder.h:190
virtual void ShowChangedLanguage()
MOUSE_DRAG_ACTION GetDragAction() const
Indicates whether a drag should draw a selection rectangle or drag selected (or unselected) objects.
Definition: tools_holder.h:144
SELECTION m_dummySelection
Definition: tools_holder.h:175
virtual void PopTool(const TOOL_EVENT &aEvent)
Pops a tool from the stack.
TOOL_DISPATCHER * m_toolDispatcher
Definition: tools_holder.h:173
virtual ~TOOLS_HOLDER()
Definition: tools_holder.h:50
MOUSE_DRAG_ACTION m_dragAction
Definition: tools_holder.h:188
bool GetMoveWarpsCursor() const
Indicate that a move operation should warp the mouse pointer to the origin of the move object.
Definition: tools_holder.h:150
virtual void PushTool(const TOOL_EVENT &aEvent)
NB: the definition of "tool" is different at the user level.
virtual wxString ConfigBaseName()
Definition: tools_holder.h:168
bool ToolStackIsEmpty()
Definition: tools_holder.h:125
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...
bool GetDoImmediateActions() const
Indicate that hotkeys should perform an immediate action even if another tool is currently active.
Definition: tools_holder.h:138
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:55
std::vector< std::string > m_toolStack
Definition: tools_holder.h:177
virtual SELECTION & GetCurrentSelection()
Get the current selection from the canvas area.
Definition: tools_holder.h:98
virtual void UnregisterUIUpdateHandler(const TOOL_ACTION &aAction)
Unregister a UI handler for an action that was registered using RegisterUIUpdateHandler.
virtual void RefreshCanvas()
Definition: tools_holder.h:166
ACTIONS * m_actions
Definition: tools_holder.h:172
bool IsCurrentTool(const TOOL_ACTION &aAction) const
virtual void DisplayToolMsg(const wxString &msg)
Definition: tools_holder.h:130
Represent a single user action.
Definition: tool_action.h:269
Generic, UI-independent tool event.
Definition: tool_event.h:168
Master controller class:
Definition: tool_manager.h:62
MOUSE_DRAG_ACTION
Functors that can be used to figure out how the action controls should be displayed in the UI and if ...