1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Accessibility classes
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_ACCESSBASE_H_
13 #define _WX_ACCESSBASE_H_
15 // ----------------------------------------------------------------------------
16 // headers we have to include here
17 // ----------------------------------------------------------------------------
19 #include "wx/variant.h"
26 wxACC_NOT_IMPLEMENTED
,
30 // Child ids are integer identifiers from 1 up.
31 // So zero represents 'this' object.
34 // Navigation constants
53 wxROLE_SYSTEM_ANIMATION
,
54 wxROLE_SYSTEM_APPLICATION
,
56 wxROLE_SYSTEM_BUTTONDROPDOWN
,
57 wxROLE_SYSTEM_BUTTONDROPDOWNGRID
,
58 wxROLE_SYSTEM_BUTTONMENU
,
61 wxROLE_SYSTEM_CHARACTER
,
63 wxROLE_SYSTEM_CHECKBUTTON
,
67 wxROLE_SYSTEM_COLUMNHEADER
,
68 wxROLE_SYSTEM_COMBOBOX
,
70 wxROLE_SYSTEM_DIAGRAM
,
73 wxROLE_SYSTEM_DOCUMENT
,
74 wxROLE_SYSTEM_DROPLIST
,
75 wxROLE_SYSTEM_EQUATION
,
76 wxROLE_SYSTEM_GRAPHIC
,
78 wxROLE_SYSTEM_GROUPING
,
79 wxROLE_SYSTEM_HELPBALLOON
,
80 wxROLE_SYSTEM_HOTKEYFIELD
,
81 wxROLE_SYSTEM_INDICATOR
,
84 wxROLE_SYSTEM_LISTITEM
,
85 wxROLE_SYSTEM_MENUBAR
,
86 wxROLE_SYSTEM_MENUITEM
,
87 wxROLE_SYSTEM_MENUPOPUP
,
88 wxROLE_SYSTEM_OUTLINE
,
89 wxROLE_SYSTEM_OUTLINEITEM
,
90 wxROLE_SYSTEM_PAGETAB
,
91 wxROLE_SYSTEM_PAGETABLIST
,
93 wxROLE_SYSTEM_PROGRESSBAR
,
94 wxROLE_SYSTEM_PROPERTYPAGE
,
95 wxROLE_SYSTEM_PUSHBUTTON
,
96 wxROLE_SYSTEM_RADIOBUTTON
,
98 wxROLE_SYSTEM_ROWHEADER
,
99 wxROLE_SYSTEM_SCROLLBAR
,
100 wxROLE_SYSTEM_SEPARATOR
,
101 wxROLE_SYSTEM_SLIDER
,
103 wxROLE_SYSTEM_SPINBUTTON
,
104 wxROLE_SYSTEM_STATICTEXT
,
105 wxROLE_SYSTEM_STATUSBAR
,
108 wxROLE_SYSTEM_TITLEBAR
,
109 wxROLE_SYSTEM_TOOLBAR
,
110 wxROLE_SYSTEM_TOOLTIP
,
111 wxROLE_SYSTEM_WHITESPACE
,
118 wxOBJID_WINDOW
= 0x00000000,
119 wxOBJID_SYSMENU
= 0xFFFFFFFF,
120 wxOBJID_TITLEBAR
= 0xFFFFFFFE,
121 wxOBJID_MENU
= 0xFFFFFFFD,
122 wxOBJID_CLIENT
= 0xFFFFFFFC,
123 wxOBJID_VSCROLL
= 0xFFFFFFFB,
124 wxOBJID_HSCROLL
= 0xFFFFFFFA,
125 wxOBJID_SIZEGRIP
= 0xFFFFFFF9,
126 wxOBJID_CARET
= 0xFFFFFFF8,
127 wxOBJID_CURSOR
= 0xFFFFFFF7,
128 wxOBJID_ALERT
= 0xFFFFFFF6,
129 wxOBJID_SOUND
= 0xFFFFFFF5
134 #define wxACC_STATE_SYSTEM_ALERT_HIGH 0x00000001
135 #define wxACC_STATE_SYSTEM_ALERT_MEDIUM 0x00000002
136 #define wxACC_STATE_SYSTEM_ALERT_LOW 0x00000004
137 #define wxACC_STATE_SYSTEM_ANIMATED 0x00000008
138 #define wxACC_STATE_SYSTEM_BUSY 0x00000010
139 #define wxACC_STATE_SYSTEM_CHECKED 0x00000020
140 #define wxACC_STATE_SYSTEM_COLLAPSED 0x00000040
141 #define wxACC_STATE_SYSTEM_DEFAULT 0x00000080
142 #define wxACC_STATE_SYSTEM_EXPANDED 0x00000100
143 #define wxACC_STATE_SYSTEM_EXTSELECTABLE 0x00000200
144 #define wxACC_STATE_SYSTEM_FLOATING 0x00000400
145 #define wxACC_STATE_SYSTEM_FOCUSABLE 0x00000800
146 #define wxACC_STATE_SYSTEM_FOCUSED 0x00001000
147 #define wxACC_STATE_SYSTEM_HOTTRACKED 0x00002000
148 #define wxACC_STATE_SYSTEM_INVISIBLE 0x00004000
149 #define wxACC_STATE_SYSTEM_MARQUEED 0x00008000
150 #define wxACC_STATE_SYSTEM_MIXED 0x00010000
151 #define wxACC_STATE_SYSTEM_MULTISELECTABLE 0x00020000
152 #define wxACC_STATE_SYSTEM_OFFSCREEN 0x00040000
153 #define wxACC_STATE_SYSTEM_PRESSED 0x00080000
154 #define wxACC_STATE_SYSTEM_PROTECTED 0x00100000
155 #define wxACC_STATE_SYSTEM_READONLY 0x00200000
156 #define wxACC_STATE_SYSTEM_SELECTABLE 0x00400000
157 #define wxACC_STATE_SYSTEM_SELECTED 0x00800000
158 #define wxACC_STATE_SYSTEM_SELFVOICING 0x01000000
159 #define wxACC_STATE_SYSTEM_UNAVAILABLE 0x02000000
166 wxACC_SEL_TAKEFOCUS
= 1,
167 wxACC_SEL_TAKESELECTION
= 2,
168 wxACC_SEL_EXTENDSELECTION
= 4,
169 wxACC_SEL_ADDSELECTION
= 8,
170 wxACC_SEL_REMOVESELECTION
= 16
171 } wxAccSelectionFlags
;
173 // Accessibility event identifiers
175 #define wxACC_EVENT_SYSTEM_SOUND 0x0001
176 #define wxACC_EVENT_SYSTEM_ALERT 0x0002
177 #define wxACC_EVENT_SYSTEM_FOREGROUND 0x0003
178 #define wxACC_EVENT_SYSTEM_MENUSTART 0x0004
179 #define wxACC_EVENT_SYSTEM_MENUEND 0x0005
180 #define wxACC_EVENT_SYSTEM_MENUPOPUPSTART 0x0006
181 #define wxACC_EVENT_SYSTEM_MENUPOPUPEND 0x0007
182 #define wxACC_EVENT_SYSTEM_CAPTURESTART 0x0008
183 #define wxACC_EVENT_SYSTEM_CAPTUREEND 0x0009
184 #define wxACC_EVENT_SYSTEM_MOVESIZESTART 0x000A
185 #define wxACC_EVENT_SYSTEM_MOVESIZEEND 0x000B
186 #define wxACC_EVENT_SYSTEM_CONTEXTHELPSTART 0x000C
187 #define wxACC_EVENT_SYSTEM_CONTEXTHELPEND 0x000D
188 #define wxACC_EVENT_SYSTEM_DRAGDROPSTART 0x000E
189 #define wxACC_EVENT_SYSTEM_DRAGDROPEND 0x000F
190 #define wxACC_EVENT_SYSTEM_DIALOGSTART 0x0010
191 #define wxACC_EVENT_SYSTEM_DIALOGEND 0x0011
192 #define wxACC_EVENT_SYSTEM_SCROLLINGSTART 0x0012
193 #define wxACC_EVENT_SYSTEM_SCROLLINGEND 0x0013
194 #define wxACC_EVENT_SYSTEM_SWITCHSTART 0x0014
195 #define wxACC_EVENT_SYSTEM_SWITCHEND 0x0015
196 #define wxACC_EVENT_SYSTEM_MINIMIZESTART 0x0016
197 #define wxACC_EVENT_SYSTEM_MINIMIZEEND 0x0017
198 #define wxACC_EVENT_OBJECT_CREATE 0x8000
199 #define wxACC_EVENT_OBJECT_DESTROY 0x8001
200 #define wxACC_EVENT_OBJECT_SHOW 0x8002
201 #define wxACC_EVENT_OBJECT_HIDE 0x8003
202 #define wxACC_EVENT_OBJECT_REORDER 0x8004
203 #define wxACC_EVENT_OBJECT_FOCUS 0x8005
204 #define wxACC_EVENT_OBJECT_SELECTION 0x8006
205 #define wxACC_EVENT_OBJECT_SELECTIONADD 0x8007
206 #define wxACC_EVENT_OBJECT_SELECTIONREMOVE 0x8008
207 #define wxACC_EVENT_OBJECT_SELECTIONWITHIN 0x8009
208 #define wxACC_EVENT_OBJECT_STATECHANGE 0x800A
209 #define wxACC_EVENT_OBJECT_LOCATIONCHANGE 0x800B
210 #define wxACC_EVENT_OBJECT_NAMECHANGE 0x800C
211 #define wxACC_EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
212 #define wxACC_EVENT_OBJECT_VALUECHANGE 0x800E
213 #define wxACC_EVENT_OBJECT_PARENTCHANGE 0x800F
214 #define wxACC_EVENT_OBJECT_HELPCHANGE 0x8010
215 #define wxACC_EVENT_OBJECT_DEFACTIONCHANGE 0x8011
216 #define wxACC_EVENT_OBJECT_ACCELERATORCHANGE 0x8012
218 // ----------------------------------------------------------------------------
220 // All functions return an indication of success, failure, or not implemented.
221 // ----------------------------------------------------------------------------
223 class WXDLLEXPORT wxAccessible
;
224 class WXDLLEXPORT wxWindow
;
225 class WXDLLEXPORT wxPoint
;
226 class WXDLLEXPORT wxRect
;
227 class WXDLLEXPORT wxAccessibleBase
: public wxObject
229 DECLARE_NO_COPY_CLASS(wxAccessibleBase
)
232 wxAccessibleBase(wxWindow
* win
): m_window(win
) {}
233 virtual ~wxAccessibleBase() {}
237 // Can return either a child object, or an integer
238 // representing the child element, starting from 1.
239 // pt is in screen coordinates.
240 virtual wxAccStatus
HitTest(const wxPoint
& WXUNUSED(pt
), int* WXUNUSED(childId
), wxAccessible
** WXUNUSED(childObject
))
241 { return wxACC_NOT_IMPLEMENTED
; }
243 // Returns the rectangle for this object (id = 0) or a child element (id > 0).
244 // rect is in screen coordinates.
245 virtual wxAccStatus
GetLocation(wxRect
& WXUNUSED(rect
), int WXUNUSED(elementId
))
246 { return wxACC_NOT_IMPLEMENTED
; }
248 // Navigates from fromId to toId/toObject.
249 virtual wxAccStatus
Navigate(wxNavDir
WXUNUSED(navDir
), int WXUNUSED(fromId
),
250 int* WXUNUSED(toId
), wxAccessible
** WXUNUSED(toObject
))
251 { return wxACC_NOT_IMPLEMENTED
; }
253 // Gets the name of the specified object.
254 virtual wxAccStatus
GetName(int WXUNUSED(childId
), wxString
* WXUNUSED(name
))
255 { return wxACC_NOT_IMPLEMENTED
; }
257 // Gets the number of children.
258 virtual wxAccStatus
GetChildCount(int* WXUNUSED(childCount
))
259 { return wxACC_NOT_IMPLEMENTED
; }
261 // Gets the specified child (starting from 1).
262 // If *child is NULL and return value is wxACC_OK,
263 // this means that the child is a simple element and
264 // not an accessible object.
265 virtual wxAccStatus
GetChild(int WXUNUSED(childId
), wxAccessible
** WXUNUSED(child
))
266 { return wxACC_NOT_IMPLEMENTED
; }
268 // Gets the parent, or NULL.
269 virtual wxAccStatus
GetParent(wxAccessible
** WXUNUSED(parent
))
270 { return wxACC_NOT_IMPLEMENTED
; }
272 // Performs the default action. childId is 0 (the action for this object)
273 // or > 0 (the action for a child).
274 // Return wxACC_NOT_SUPPORTED if there is no default action for this
275 // window (e.g. an edit control).
276 virtual wxAccStatus
DoDefaultAction(int WXUNUSED(childId
))
277 { return wxACC_NOT_IMPLEMENTED
; }
279 // Gets the default action for this object (0) or > 0 (the action for a child).
280 // Return wxACC_OK even if there is no action. actionName is the action, or the empty
281 // string if there is no action.
282 // The retrieved string describes the action that is performed on an object,
283 // not what the object does as a result. For example, a toolbar button that prints
284 // a document has a default action of "Press" rather than "Prints the current document."
285 virtual wxAccStatus
GetDefaultAction(int WXUNUSED(childId
), wxString
* WXUNUSED(actionName
))
286 { return wxACC_NOT_IMPLEMENTED
; }
288 // Returns the description for this object or a child.
289 virtual wxAccStatus
GetDescription(int WXUNUSED(childId
), wxString
* WXUNUSED(description
))
290 { return wxACC_NOT_IMPLEMENTED
; }
292 // Returns help text for this object or a child, similar to tooltip text.
293 virtual wxAccStatus
GetHelpText(int WXUNUSED(childId
), wxString
* WXUNUSED(helpText
))
294 { return wxACC_NOT_IMPLEMENTED
; }
296 // Returns the keyboard shortcut for this object or child.
298 virtual wxAccStatus
GetKeyboardShortcut(int WXUNUSED(childId
), wxString
* WXUNUSED(shortcut
))
299 { return wxACC_NOT_IMPLEMENTED
; }
301 // Returns a role constant.
302 virtual wxAccStatus
GetRole(int WXUNUSED(childId
), wxAccRole
* WXUNUSED(role
))
303 { return wxACC_NOT_IMPLEMENTED
; }
305 // Returns a state constant.
306 virtual wxAccStatus
GetState(int WXUNUSED(childId
), long* WXUNUSED(state
))
307 { return wxACC_NOT_IMPLEMENTED
; }
309 // Returns a localized string representing the value for the object
311 virtual wxAccStatus
GetValue(int WXUNUSED(childId
), wxString
* WXUNUSED(strValue
))
312 { return wxACC_NOT_IMPLEMENTED
; }
314 // Selects the object or child.
315 virtual wxAccStatus
Select(int WXUNUSED(childId
), wxAccSelectionFlags
WXUNUSED(selectFlags
))
316 { return wxACC_NOT_IMPLEMENTED
; }
318 // Gets the window with the keyboard focus.
319 // If childId is 0 and child is NULL, no object in
320 // this subhierarchy has the focus.
321 // If this object has the focus, child should be 'this'.
322 virtual wxAccStatus
GetFocus(int* WXUNUSED(childId
), wxAccessible
** WXUNUSED(child
))
323 { return wxACC_NOT_IMPLEMENTED
; }
325 // Gets a variant representing the selected children
327 // Acceptable values:
328 // - a null variant (IsNull() returns TRUE)
329 // - a list variant (GetType() == wxT("list"))
330 // - an integer representing the selected child element,
331 // or 0 if this object is selected (GetType() == wxT("long"))
332 // - a "void*" pointer to a wxAccessible child object
333 virtual wxAccStatus
GetSelections(wxVariant
* WXUNUSED(selections
))
334 { return wxACC_NOT_IMPLEMENTED
; }
338 // Returns the window associated with this object.
340 wxWindow
* GetWindow() { return m_window
; }
342 // Sets the window associated with this object.
344 void SetWindow(wxWindow
* window
) { m_window
= window
; }
348 // Each platform's implementation must define this
349 // static void NotifyEvent(int eventType, wxWindow* window, wxAccObject objectType,
360 // ----------------------------------------------------------------------------
361 // now include the declaration of the real class
362 // ----------------------------------------------------------------------------
364 #if defined(__WXMSW__)
365 #include "wx/msw/ole/access.h"
366 #elif defined(__WXMOTIF__)
367 #include "wx/generic/access.h"
368 #elif defined(__WXMGL__)
369 #include "wx/generic/access.h"
370 #elif defined(__WXGTK__)
371 #include "wx/generic/access.h"
372 #elif defined(__WXX11__)
373 #include "wx/generic/access.h"
374 #elif defined(__WXMAC__)
375 #include "wx/generic/access.h"
376 #elif defined(__WXPM__)
377 #include "wx/generic/access.h"