KiCad PCB EDA Suite
|
#include <tool_dispatcher.h>
Classes | |
struct | BUTTON_STATE |
< Stores information about a mouse button state More... | |
Public Member Functions | |
TOOL_DISPATCHER (TOOL_MANAGER *aToolMgr) | |
virtual | ~TOOL_DISPATCHER () |
virtual void | ResetState () |
Bring the dispatcher to its initial state. | |
virtual void | DispatchWxEvent (wxEvent &aEvent) |
Process wxEvents (mostly UI events), translate them to TOOL_EVENTs, and make tools handle those. | |
std::optional< TOOL_EVENT > | GetToolEvent (wxKeyEvent *aKeyEvent, bool *aSpecialKeyFlag) |
Map a wxWidgets key event to a TOOL_EVENT. | |
ACTION_MENU * | GetCurrentMenu () const |
Private Member Functions | |
bool | handleMouseButton (wxEvent &aEvent, int aIndex, bool aMotion) |
< Handles mouse related events (click, motion, dragging). | |
KIGFX::VIEW * | getView () |
Saves the state of key modifiers (Alt, Ctrl and so on). | |
Static Private Member Functions | |
static int | decodeModifiers (const wxKeyboardState *aState) |
Private Attributes | |
int | m_sysDragMinX |
Mininum distance before drag is activated in the X axis. | |
int | m_sysDragMinY |
Maximum distance before drag is activated in the Y axis. | |
VECTOR2D | m_lastMousePos |
The last mouse cursor position (in world coordinates). | |
VECTOR2D | m_lastMousePosScreen |
The last mouse cursor position (in screen coordinates). | |
std::vector< BUTTON_STATE * > | m_buttons |
Instance of tool manager that cooperates with the dispatcher. | |
TOOL_MANAGER * | m_toolMgr |
The menu from the main menubar currently shown (if any; nullptr otherwise) | |
ACTION_MENU * | m_currentMenu |
Static Private Attributes | |
static const int | DragTimeThreshold = 300 |
< The time threshold for a mouse button press that distinguishes between a single mouse click and a beginning of drag event (expressed in milliseconds). | |
static const int | DragDistanceThreshold = 8 |
Definition at line 52 of file tool_dispatcher.h.
TOOL_DISPATCHER::TOOL_DISPATCHER | ( | TOOL_MANAGER * | aToolMgr | ) |
aToolMgr | tool manager instance the events will be sent to. |
Definition at line 131 of file tool_dispatcher.cpp.
References BUT_AUX1, BUT_AUX2, BUT_LEFT, BUT_MIDDLE, BUT_RIGHT, DragDistanceThreshold, m_buttons, m_sysDragMinX, m_sysDragMinY, and ResetState().
|
virtual |
Definition at line 156 of file tool_dispatcher.cpp.
References m_buttons.
|
inlinestaticprivate |
Definition at line 90 of file tool_dispatcher.h.
References MD_ALT, MD_CTRL, and MD_SHIFT.
Referenced by DispatchWxEvent(), GetToolEvent(), and handleMouseButton().
|
virtual |
Process wxEvents (mostly UI events), translate them to TOOL_EVENTs, and make tools handle those.
aEvent | is the wxWidgets event to be processed. |
Definition at line 425 of file tool_dispatcher.cpp.
References decodeModifiers(), dump(), KIGFX::WX_VIEW_CONTROLS::EVT_REFRESH_MOUSE, KIPLATFORM::APP::ForceTimerMessagesToBeCreatedIfNecessary(), KIGFX::VIEW_CONTROLS::GetMousePosition(), TOOLS_HOLDER::GetToolCanvas(), GetToolEvent(), TOOL_MANAGER::GetToolHolder(), TOOL_MANAGER::GetViewControls(), handleMouseButton(), KIUI::IsInputControlEditable(), KIUI::IsInputControlFocused(), isMouseClick(), KIPLATFORM::UI::IsWindowActive(), kicadTraceKeyEvent, kicadTraceToolStack, m_buttons, m_currentMenu, m_lastMousePos, m_lastMousePosScreen, m_toolMgr, MD_ALT, MD_CTRL, MD_SHIFT, ACTION_MENU::OnMenuEvent(), TOOL_MANAGER::ProcessEvent(), TA_MOUSE_MOTION, TA_MOUSE_WHEEL, and TC_MOUSE.
Referenced by FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME(), EDA_3D_CANVAS::OnEvent(), EDA_DRAW_PANEL_GAL::OnEvent(), PANEL_PREVIEW_3D_MODEL::OnMenuEvent(), EDA_BASE_FRAME::OnMenuEvent(), CVPCB_MAINFRAME::setupEventHandlers(), SIMULATOR_FRAME::setupTools(), KICAD_MANAGER_FRAME::setupTools(), SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME(), CVPCB_MAINFRAME::~CVPCB_MAINFRAME(), and KICAD_MANAGER_FRAME::~KICAD_MANAGER_FRAME().
|
inline |
Definition at line 80 of file tool_dispatcher.h.
References m_currentMenu.
Referenced by LIB_TREE::onHoverTimer().
std::optional< TOOL_EVENT > TOOL_DISPATCHER::GetToolEvent | ( | wxKeyEvent * | aKeyEvent, |
bool * | aSpecialKeyFlag | ||
) |
Map a wxWidgets key event to a TOOL_EVENT.
Definition at line 345 of file tool_dispatcher.cpp.
References decodeModifiers(), dump(), ignore_unused(), isKeyModifierOnly(), isKeySpecialCode(), kicadTraceKeyEvent, MD_ALT, MD_CTRL, TA_CANCEL_TOOL, TA_KEY_PRESSED, TC_COMMAND, TC_KEYBOARD, and translateSpecialCode().
Referenced by DispatchWxEvent().
|
private |
Saves the state of key modifiers (Alt, Ctrl and so on).
Definition at line 170 of file tool_dispatcher.cpp.
References TOOL_MANAGER::GetView(), and m_toolMgr.
|
private |
< Handles mouse related events (click, motion, dragging).
Returns the instance of VIEW, used by the application.
Definition at line 176 of file tool_dispatcher.cpp.
References TOOL_DISPATCHER::BUTTON_STATE::button, TOOL_DISPATCHER::BUTTON_STATE::dblClickEvent, decodeModifiers(), down, TOOL_DISPATCHER::BUTTON_STATE::downEvent, TOOL_DISPATCHER::BUTTON_STATE::downPosition, TOOL_DISPATCHER::BUTTON_STATE::downTimestamp, TOOL_DISPATCHER::BUTTON_STATE::dragging, TOOL_DISPATCHER::BUTTON_STATE::dragOrigin, TOOL_DISPATCHER::BUTTON_STATE::dragOriginScreen, DragTimeThreshold, TOOL_DISPATCHER::BUTTON_STATE::GetState(), m_buttons, m_lastMousePos, m_lastMousePosScreen, m_sysDragMinX, m_sysDragMinY, m_toolMgr, TOOL_DISPATCHER::BUTTON_STATE::pressed, TOOL_MANAGER::ProcessEvent(), TA_MOUSE_CLICK, TA_MOUSE_DBLCLICK, TA_MOUSE_DOWN, TA_MOUSE_DRAG, TA_MOUSE_UP, TC_MOUSE, up, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by DispatchWxEvent().
|
virtual |
Bring the dispatcher to its initial state.
Definition at line 163 of file tool_dispatcher.cpp.
References m_buttons.
Referenced by TOOL_DISPATCHER().
|
staticprivate |
Definition at line 114 of file tool_dispatcher.h.
Referenced by TOOL_DISPATCHER().
|
staticprivate |
< The time threshold for a mouse button press that distinguishes between a single mouse click and a beginning of drag event (expressed in milliseconds).
The distance threshold for mouse cursor that distinguishes between a single mouse click and a beginning of drag event (expressed in screen pixels). System drag preferences take precedence if available
Definition at line 109 of file tool_dispatcher.h.
Referenced by handleMouseButton().
|
private |
Instance of tool manager that cooperates with the dispatcher.
Definition at line 124 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), handleMouseButton(), ResetState(), TOOL_DISPATCHER(), and ~TOOL_DISPATCHER().
|
private |
Definition at line 130 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), and GetCurrentMenu().
|
private |
The last mouse cursor position (in world coordinates).
Definition at line 119 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), and handleMouseButton().
|
private |
The last mouse cursor position (in screen coordinates).
State of mouse buttons.
Definition at line 120 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), and handleMouseButton().
|
private |
Mininum distance before drag is activated in the X axis.
Definition at line 116 of file tool_dispatcher.h.
Referenced by handleMouseButton(), and TOOL_DISPATCHER().
|
private |
Maximum distance before drag is activated in the Y axis.
Definition at line 117 of file tool_dispatcher.h.
Referenced by handleMouseButton(), and TOOL_DISPATCHER().
|
private |
The menu from the main menubar currently shown (if any; nullptr otherwise)
Definition at line 127 of file tool_dispatcher.h.
Referenced by DispatchWxEvent(), getView(), and handleMouseButton().