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
9 // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
10 // Licence: wxWindows licence
11 ///////////////////////////////////////////////////////////////////////////////
13 #ifndef _WX_UNIV_INPHAND_H_
14 #define _WX_UNIV_INPHAND_H_
16 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
17 #pragma interface "inphand.h"
20 #include "wx/univ/inpcons.h" // for wxControlAction(s)
22 // ----------------------------------------------------------------------------
23 // types of the standard input handlers which can be passed to
24 // wxTheme::GetInputHandler()
25 // ----------------------------------------------------------------------------
27 #define wxINP_HANDLER_DEFAULT _T("")
28 #define wxINP_HANDLER_BUTTON _T("button")
29 #define wxINP_HANDLER_CHECKBOX _T("checkbox")
30 #define wxINP_HANDLER_CHECKLISTBOX _T("checklistbox")
31 #define wxINP_HANDLER_COMBOBOX _T("combobox")
32 #define wxINP_HANDLER_LISTBOX _T("listbox")
33 #define wxINP_HANDLER_NOTEBOOK _T("notebook")
34 #define wxINP_HANDLER_RADIOBTN _T("radiobtn")
35 #define wxINP_HANDLER_SCROLLBAR _T("scrollbar")
36 #define wxINP_HANDLER_SLIDER _T("slider")
37 #define wxINP_HANDLER_SPINBTN _T("spinbtn")
38 #define wxINP_HANDLER_STATUSBAR _T("statusbar")
39 #define wxINP_HANDLER_TEXTCTRL _T("textctrl")
40 #define wxINP_HANDLER_TOOLBAR _T("toolbar")
41 #define wxINP_HANDLER_TOPLEVEL _T("toplevel")
43 // ----------------------------------------------------------------------------
44 // wxInputHandler: maps the events to the actions
45 // ----------------------------------------------------------------------------
47 class WXDLLEXPORT wxInputHandler
: public wxObject
50 // map a keyboard event to one or more actions (pressed == TRUE if the key
51 // was pressed, FALSE if released), returns TRUE if something was done
52 virtual bool HandleKey(wxInputConsumer
*consumer
,
53 const wxKeyEvent
& event
,
56 // map a mouse (click) event to one or more actions
57 virtual bool HandleMouse(wxInputConsumer
*consumer
,
58 const wxMouseEvent
& event
) = 0;
60 // handle mouse movement (or enter/leave) event: it is separated from
61 // HandleMouse() for convenience as many controls don't care about mouse
63 virtual bool HandleMouseMove(wxInputConsumer
*consumer
,
64 const wxMouseEvent
& event
);
66 // do something with focus set/kill event: this is different from
67 // HandleMouseMove() as the mouse maybe over the control without it having
70 // return TRUE to refresh the control, FALSE otherwise
71 virtual bool HandleFocus(wxInputConsumer
*consumer
, const wxFocusEvent
& event
);
73 // react to the app getting/losing activation
75 // return TRUE to refresh the control, FALSE otherwise
76 virtual bool HandleActivation(wxInputConsumer
*consumer
, bool activated
);
78 // virtual dtor for any base class
79 virtual ~wxInputHandler();
82 // ----------------------------------------------------------------------------
83 // wxStdInputHandler is just a base class for all other "standard" handlers
84 // and also provides the way to chain input handlers together
85 // ----------------------------------------------------------------------------
87 class WXDLLEXPORT wxStdInputHandler
: public wxInputHandler
90 wxStdInputHandler(wxInputHandler
*handler
) : m_handler(handler
) { }
92 virtual bool HandleKey(wxInputConsumer
*consumer
,
93 const wxKeyEvent
& event
,
96 return m_handler
? m_handler
->HandleKey(consumer
, event
, pressed
)
100 virtual bool HandleMouse(wxInputConsumer
*consumer
,
101 const wxMouseEvent
& event
)
103 return m_handler
? m_handler
->HandleMouse(consumer
, event
) : FALSE
;
106 virtual bool HandleMouseMove(wxInputConsumer
*consumer
, const wxMouseEvent
& event
)
108 return m_handler
? m_handler
->HandleMouseMove(consumer
, event
) : FALSE
;
111 virtual bool HandleFocus(wxInputConsumer
*consumer
, const wxFocusEvent
& event
)
113 return m_handler
? m_handler
->HandleFocus(consumer
, event
) : FALSE
;
117 wxInputHandler
*m_handler
;
120 #endif // _WX_UNIV_INPHAND_H_