1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/univ/inphand.h
3 // Purpose: wxInputHandler class maps the keyboard and mouse events to the
4 // actions which then are performed by the control
5 // Author: Vadim Zeitlin
8 // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_UNIV_INPHAND_H_
13 #define _WX_UNIV_INPHAND_H_
15 #include "wx/univ/inpcons.h" // for wxControlAction(s)
17 // ----------------------------------------------------------------------------
18 // types of the standard input handlers which can be passed to
19 // wxTheme::GetInputHandler()
20 // ----------------------------------------------------------------------------
22 #define wxINP_HANDLER_DEFAULT wxT("")
23 #define wxINP_HANDLER_BUTTON wxT("button")
24 #define wxINP_HANDLER_CHECKBOX wxT("checkbox")
25 #define wxINP_HANDLER_CHECKLISTBOX wxT("checklistbox")
26 #define wxINP_HANDLER_COMBOBOX wxT("combobox")
27 #define wxINP_HANDLER_LISTBOX wxT("listbox")
28 #define wxINP_HANDLER_NOTEBOOK wxT("notebook")
29 #define wxINP_HANDLER_RADIOBTN wxT("radiobtn")
30 #define wxINP_HANDLER_SCROLLBAR wxT("scrollbar")
31 #define wxINP_HANDLER_SLIDER wxT("slider")
32 #define wxINP_HANDLER_SPINBTN wxT("spinbtn")
33 #define wxINP_HANDLER_STATUSBAR wxT("statusbar")
34 #define wxINP_HANDLER_TEXTCTRL wxT("textctrl")
35 #define wxINP_HANDLER_TOOLBAR wxT("toolbar")
36 #define wxINP_HANDLER_TOPLEVEL wxT("toplevel")
38 // ----------------------------------------------------------------------------
39 // wxInputHandler: maps the events to the actions
40 // ----------------------------------------------------------------------------
42 class WXDLLIMPEXP_CORE wxInputHandler
: public wxObject
45 // map a keyboard event to one or more actions (pressed == true if the key
46 // was pressed, false if released), returns true if something was done
47 virtual bool HandleKey(wxInputConsumer
*consumer
,
48 const wxKeyEvent
& event
,
51 // map a mouse (click) event to one or more actions
52 virtual bool HandleMouse(wxInputConsumer
*consumer
,
53 const wxMouseEvent
& event
) = 0;
55 // handle mouse movement (or enter/leave) event: it is separated from
56 // HandleMouse() for convenience as many controls don't care about mouse
58 virtual bool HandleMouseMove(wxInputConsumer
*consumer
,
59 const wxMouseEvent
& event
);
61 // do something with focus set/kill event: this is different from
62 // HandleMouseMove() as the mouse maybe over the control without it having
65 // return true to refresh the control, false otherwise
66 virtual bool HandleFocus(wxInputConsumer
*consumer
, const wxFocusEvent
& event
);
68 // react to the app getting/losing activation
70 // return true to refresh the control, false otherwise
71 virtual bool HandleActivation(wxInputConsumer
*consumer
, bool activated
);
73 // virtual dtor for any base class
74 virtual ~wxInputHandler();
77 // ----------------------------------------------------------------------------
78 // wxStdInputHandler is just a base class for all other "standard" handlers
79 // and also provides the way to chain input handlers together
80 // ----------------------------------------------------------------------------
82 class WXDLLIMPEXP_CORE wxStdInputHandler
: public wxInputHandler
85 wxStdInputHandler(wxInputHandler
*handler
) : m_handler(handler
) { }
87 virtual bool HandleKey(wxInputConsumer
*consumer
,
88 const wxKeyEvent
& event
,
91 return m_handler
? m_handler
->HandleKey(consumer
, event
, pressed
)
95 virtual bool HandleMouse(wxInputConsumer
*consumer
,
96 const wxMouseEvent
& event
)
98 return m_handler
? m_handler
->HandleMouse(consumer
, event
) : false;
101 virtual bool HandleMouseMove(wxInputConsumer
*consumer
, const wxMouseEvent
& event
)
103 return m_handler
? m_handler
->HandleMouseMove(consumer
, event
) : false;
106 virtual bool HandleFocus(wxInputConsumer
*consumer
, const wxFocusEvent
& event
)
108 return m_handler
? m_handler
->HandleFocus(consumer
, event
) : false;
112 wxInputHandler
*m_handler
;
115 #endif // _WX_UNIV_INPHAND_H_