1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/access.h
3 // Purpose:     Accessibility classes
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     2003-02-12
7 // RCS-ID:      $Id: access.h 51246 2008-01-16 12:56:37Z VZ $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_ACCESSBASE_H_
13 #define _WX_ACCESSBASE_H_
14 
15 // ----------------------------------------------------------------------------
16 // headers we have to include here
17 // ----------------------------------------------------------------------------
18 
19 #include "wx/defs.h"
20 
21 #if wxUSE_ACCESSIBILITY
22 
23 #include "wx/variant.h"
24 
25 typedef enum
26 {
27     wxACC_FAIL,
28     wxACC_FALSE,
29     wxACC_OK,
30     wxACC_NOT_IMPLEMENTED,
31     wxACC_NOT_SUPPORTED
32 } wxAccStatus;
33 
34 // Child ids are integer identifiers from 1 up.
35 // So zero represents 'this' object.
36 #define wxACC_SELF 0
37 
38 // Navigation constants
39 
40 typedef enum
41 {
42     wxNAVDIR_DOWN,
43     wxNAVDIR_FIRSTCHILD,
44     wxNAVDIR_LASTCHILD,
45     wxNAVDIR_LEFT,
46     wxNAVDIR_NEXT,
47     wxNAVDIR_PREVIOUS,
48     wxNAVDIR_RIGHT,
49     wxNAVDIR_UP
50 } wxNavDir;
51 
52 // Role constants
53 
54 typedef enum {
55     wxROLE_NONE,
56     wxROLE_SYSTEM_ALERT,
57     wxROLE_SYSTEM_ANIMATION,
58     wxROLE_SYSTEM_APPLICATION,
59     wxROLE_SYSTEM_BORDER,
60     wxROLE_SYSTEM_BUTTONDROPDOWN,
61     wxROLE_SYSTEM_BUTTONDROPDOWNGRID,
62     wxROLE_SYSTEM_BUTTONMENU,
63     wxROLE_SYSTEM_CARET,
64     wxROLE_SYSTEM_CELL,
65     wxROLE_SYSTEM_CHARACTER,
66     wxROLE_SYSTEM_CHART,
67     wxROLE_SYSTEM_CHECKBUTTON,
68     wxROLE_SYSTEM_CLIENT,
69     wxROLE_SYSTEM_CLOCK,
70     wxROLE_SYSTEM_COLUMN,
71     wxROLE_SYSTEM_COLUMNHEADER,
72     wxROLE_SYSTEM_COMBOBOX,
73     wxROLE_SYSTEM_CURSOR,
74     wxROLE_SYSTEM_DIAGRAM,
75     wxROLE_SYSTEM_DIAL,
76     wxROLE_SYSTEM_DIALOG,
77     wxROLE_SYSTEM_DOCUMENT,
78     wxROLE_SYSTEM_DROPLIST,
79     wxROLE_SYSTEM_EQUATION,
80     wxROLE_SYSTEM_GRAPHIC,
81     wxROLE_SYSTEM_GRIP,
82     wxROLE_SYSTEM_GROUPING,
83     wxROLE_SYSTEM_HELPBALLOON,
84     wxROLE_SYSTEM_HOTKEYFIELD,
85     wxROLE_SYSTEM_INDICATOR,
86     wxROLE_SYSTEM_LINK,
87     wxROLE_SYSTEM_LIST,
88     wxROLE_SYSTEM_LISTITEM,
89     wxROLE_SYSTEM_MENUBAR,
90     wxROLE_SYSTEM_MENUITEM,
91     wxROLE_SYSTEM_MENUPOPUP,
92     wxROLE_SYSTEM_OUTLINE,
93     wxROLE_SYSTEM_OUTLINEITEM,
94     wxROLE_SYSTEM_PAGETAB,
95     wxROLE_SYSTEM_PAGETABLIST,
96     wxROLE_SYSTEM_PANE,
97     wxROLE_SYSTEM_PROGRESSBAR,
98     wxROLE_SYSTEM_PROPERTYPAGE,
99     wxROLE_SYSTEM_PUSHBUTTON,
100     wxROLE_SYSTEM_RADIOBUTTON,
101     wxROLE_SYSTEM_ROW,
102     wxROLE_SYSTEM_ROWHEADER,
103     wxROLE_SYSTEM_SCROLLBAR,
104     wxROLE_SYSTEM_SEPARATOR,
105     wxROLE_SYSTEM_SLIDER,
106     wxROLE_SYSTEM_SOUND,
107     wxROLE_SYSTEM_SPINBUTTON,
108     wxROLE_SYSTEM_STATICTEXT,
109     wxROLE_SYSTEM_STATUSBAR,
110     wxROLE_SYSTEM_TABLE,
111     wxROLE_SYSTEM_TEXT,
112     wxROLE_SYSTEM_TITLEBAR,
113     wxROLE_SYSTEM_TOOLBAR,
114     wxROLE_SYSTEM_TOOLTIP,
115     wxROLE_SYSTEM_WHITESPACE,
116     wxROLE_SYSTEM_WINDOW
117 } wxAccRole;
118 
119 // Object types
120 
121 typedef enum {
122     wxOBJID_WINDOW =    0x00000000,
123     wxOBJID_SYSMENU =   0xFFFFFFFF,
124     wxOBJID_TITLEBAR =  0xFFFFFFFE,
125     wxOBJID_MENU =      0xFFFFFFFD,
126     wxOBJID_CLIENT =    0xFFFFFFFC,
127     wxOBJID_VSCROLL =   0xFFFFFFFB,
128     wxOBJID_HSCROLL =   0xFFFFFFFA,
129     wxOBJID_SIZEGRIP =  0xFFFFFFF9,
130     wxOBJID_CARET =     0xFFFFFFF8,
131     wxOBJID_CURSOR =    0xFFFFFFF7,
132     wxOBJID_ALERT =     0xFFFFFFF6,
133     wxOBJID_SOUND =     0xFFFFFFF5
134 } wxAccObject;
135 
136 // Accessible states
137 
138 #define wxACC_STATE_SYSTEM_ALERT_HIGH       0x00000001
139 #define wxACC_STATE_SYSTEM_ALERT_MEDIUM     0x00000002
140 #define wxACC_STATE_SYSTEM_ALERT_LOW        0x00000004
141 #define wxACC_STATE_SYSTEM_ANIMATED         0x00000008
142 #define wxACC_STATE_SYSTEM_BUSY             0x00000010
143 #define wxACC_STATE_SYSTEM_CHECKED          0x00000020
144 #define wxACC_STATE_SYSTEM_COLLAPSED        0x00000040
145 #define wxACC_STATE_SYSTEM_DEFAULT          0x00000080
146 #define wxACC_STATE_SYSTEM_EXPANDED         0x00000100
147 #define wxACC_STATE_SYSTEM_EXTSELECTABLE    0x00000200
148 #define wxACC_STATE_SYSTEM_FLOATING         0x00000400
149 #define wxACC_STATE_SYSTEM_FOCUSABLE        0x00000800
150 #define wxACC_STATE_SYSTEM_FOCUSED          0x00001000
151 #define wxACC_STATE_SYSTEM_HOTTRACKED       0x00002000
152 #define wxACC_STATE_SYSTEM_INVISIBLE        0x00004000
153 #define wxACC_STATE_SYSTEM_MARQUEED         0x00008000
154 #define wxACC_STATE_SYSTEM_MIXED            0x00010000
155 #define wxACC_STATE_SYSTEM_MULTISELECTABLE  0x00020000
156 #define wxACC_STATE_SYSTEM_OFFSCREEN        0x00040000
157 #define wxACC_STATE_SYSTEM_PRESSED          0x00080000
158 #define wxACC_STATE_SYSTEM_PROTECTED        0x00100000
159 #define wxACC_STATE_SYSTEM_READONLY         0x00200000
160 #define wxACC_STATE_SYSTEM_SELECTABLE       0x00400000
161 #define wxACC_STATE_SYSTEM_SELECTED         0x00800000
162 #define wxACC_STATE_SYSTEM_SELFVOICING      0x01000000
163 #define wxACC_STATE_SYSTEM_UNAVAILABLE      0x02000000
164 
165 // Selection flag
166 
167 typedef enum
168 {
169     wxACC_SEL_NONE            = 0,
170     wxACC_SEL_TAKEFOCUS       = 1,
171     wxACC_SEL_TAKESELECTION   = 2,
172     wxACC_SEL_EXTENDSELECTION = 4,
173     wxACC_SEL_ADDSELECTION    = 8,
174     wxACC_SEL_REMOVESELECTION = 16
175 } wxAccSelectionFlags;
176 
177 // Accessibility event identifiers
178 
179 #define wxACC_EVENT_SYSTEM_SOUND              0x0001
180 #define wxACC_EVENT_SYSTEM_ALERT              0x0002
181 #define wxACC_EVENT_SYSTEM_FOREGROUND         0x0003
182 #define wxACC_EVENT_SYSTEM_MENUSTART          0x0004
183 #define wxACC_EVENT_SYSTEM_MENUEND            0x0005
184 #define wxACC_EVENT_SYSTEM_MENUPOPUPSTART     0x0006
185 #define wxACC_EVENT_SYSTEM_MENUPOPUPEND       0x0007
186 #define wxACC_EVENT_SYSTEM_CAPTURESTART       0x0008
187 #define wxACC_EVENT_SYSTEM_CAPTUREEND         0x0009
188 #define wxACC_EVENT_SYSTEM_MOVESIZESTART      0x000A
189 #define wxACC_EVENT_SYSTEM_MOVESIZEEND        0x000B
190 #define wxACC_EVENT_SYSTEM_CONTEXTHELPSTART   0x000C
191 #define wxACC_EVENT_SYSTEM_CONTEXTHELPEND     0x000D
192 #define wxACC_EVENT_SYSTEM_DRAGDROPSTART      0x000E
193 #define wxACC_EVENT_SYSTEM_DRAGDROPEND        0x000F
194 #define wxACC_EVENT_SYSTEM_DIALOGSTART        0x0010
195 #define wxACC_EVENT_SYSTEM_DIALOGEND          0x0011
196 #define wxACC_EVENT_SYSTEM_SCROLLINGSTART     0x0012
197 #define wxACC_EVENT_SYSTEM_SCROLLINGEND       0x0013
198 #define wxACC_EVENT_SYSTEM_SWITCHSTART        0x0014
199 #define wxACC_EVENT_SYSTEM_SWITCHEND          0x0015
200 #define wxACC_EVENT_SYSTEM_MINIMIZESTART      0x0016
201 #define wxACC_EVENT_SYSTEM_MINIMIZEEND        0x0017
202 #define wxACC_EVENT_OBJECT_CREATE                 0x8000
203 #define wxACC_EVENT_OBJECT_DESTROY                0x8001
204 #define wxACC_EVENT_OBJECT_SHOW                   0x8002
205 #define wxACC_EVENT_OBJECT_HIDE                   0x8003
206 #define wxACC_EVENT_OBJECT_REORDER                0x8004
207 #define wxACC_EVENT_OBJECT_FOCUS                  0x8005
208 #define wxACC_EVENT_OBJECT_SELECTION              0x8006
209 #define wxACC_EVENT_OBJECT_SELECTIONADD           0x8007
210 #define wxACC_EVENT_OBJECT_SELECTIONREMOVE        0x8008
211 #define wxACC_EVENT_OBJECT_SELECTIONWITHIN        0x8009
212 #define wxACC_EVENT_OBJECT_STATECHANGE            0x800A
213 #define wxACC_EVENT_OBJECT_LOCATIONCHANGE         0x800B
214 #define wxACC_EVENT_OBJECT_NAMECHANGE             0x800C
215 #define wxACC_EVENT_OBJECT_DESCRIPTIONCHANGE      0x800D
216 #define wxACC_EVENT_OBJECT_VALUECHANGE            0x800E
217 #define wxACC_EVENT_OBJECT_PARENTCHANGE           0x800F
218 #define wxACC_EVENT_OBJECT_HELPCHANGE             0x8010
219 #define wxACC_EVENT_OBJECT_DEFACTIONCHANGE        0x8011
220 #define wxACC_EVENT_OBJECT_ACCELERATORCHANGE      0x8012
221 
222 // ----------------------------------------------------------------------------
223 // wxAccessible
224 // All functions return an indication of success, failure, or not implemented.
225 // ----------------------------------------------------------------------------
226 
227 class WXDLLIMPEXP_FWD_CORE wxAccessible;
228 class WXDLLIMPEXP_FWD_CORE wxWindow;
229 class WXDLLIMPEXP_FWD_CORE wxPoint;
230 class WXDLLIMPEXP_FWD_CORE wxRect;
231 class WXDLLEXPORT wxAccessibleBase : public wxObject
232 {
DECLARE_NO_COPY_CLASS(wxAccessibleBase)233     DECLARE_NO_COPY_CLASS(wxAccessibleBase)
234 
235 public:
236     wxAccessibleBase(wxWindow* win): m_window(win) {}
~wxAccessibleBase()237     virtual ~wxAccessibleBase() {}
238 
239 // Overridables
240 
241         // Can return either a child object, or an integer
242         // representing the child element, starting from 1.
243         // pt is in screen coordinates.
HitTest(const wxPoint & WXUNUSED (pt),int * WXUNUSED (childId),wxAccessible ** WXUNUSED (childObject))244     virtual wxAccStatus HitTest(const wxPoint& WXUNUSED(pt), int* WXUNUSED(childId), wxAccessible** WXUNUSED(childObject))
245          { return wxACC_NOT_IMPLEMENTED; }
246 
247         // Returns the rectangle for this object (id = 0) or a child element (id > 0).
248         // rect is in screen coordinates.
GetLocation(wxRect & WXUNUSED (rect),int WXUNUSED (elementId))249     virtual wxAccStatus GetLocation(wxRect& WXUNUSED(rect), int WXUNUSED(elementId))
250          { return wxACC_NOT_IMPLEMENTED; }
251 
252         // Navigates from fromId to toId/toObject.
Navigate(wxNavDir WXUNUSED (navDir),int WXUNUSED (fromId),int * WXUNUSED (toId),wxAccessible ** WXUNUSED (toObject))253     virtual wxAccStatus Navigate(wxNavDir WXUNUSED(navDir), int WXUNUSED(fromId),
254                 int* WXUNUSED(toId), wxAccessible** WXUNUSED(toObject))
255          { return wxACC_NOT_IMPLEMENTED; }
256 
257         // Gets the name of the specified object.
GetName(int WXUNUSED (childId),wxString * WXUNUSED (name))258     virtual wxAccStatus GetName(int WXUNUSED(childId), wxString* WXUNUSED(name))
259          { return wxACC_NOT_IMPLEMENTED; }
260 
261         // Gets the number of children.
GetChildCount(int * WXUNUSED (childCount))262     virtual wxAccStatus GetChildCount(int* WXUNUSED(childCount))
263          { return wxACC_NOT_IMPLEMENTED; }
264 
265         // Gets the specified child (starting from 1).
266         // If *child is NULL and return value is wxACC_OK,
267         // this means that the child is a simple element and
268         // not an accessible object.
GetChild(int WXUNUSED (childId),wxAccessible ** WXUNUSED (child))269     virtual wxAccStatus GetChild(int WXUNUSED(childId), wxAccessible** WXUNUSED(child))
270          { return wxACC_NOT_IMPLEMENTED; }
271 
272         // Gets the parent, or NULL.
GetParent(wxAccessible ** WXUNUSED (parent))273     virtual wxAccStatus GetParent(wxAccessible** WXUNUSED(parent))
274          { return wxACC_NOT_IMPLEMENTED; }
275 
276         // Performs the default action. childId is 0 (the action for this object)
277         // or > 0 (the action for a child).
278         // Return wxACC_NOT_SUPPORTED if there is no default action for this
279         // window (e.g. an edit control).
DoDefaultAction(int WXUNUSED (childId))280     virtual wxAccStatus DoDefaultAction(int WXUNUSED(childId))
281          { return wxACC_NOT_IMPLEMENTED; }
282 
283         // Gets the default action for this object (0) or > 0 (the action for a child).
284         // Return wxACC_OK even if there is no action. actionName is the action, or the empty
285         // string if there is no action.
286         // The retrieved string describes the action that is performed on an object,
287         // not what the object does as a result. For example, a toolbar button that prints
288         // a document has a default action of "Press" rather than "Prints the current document."
GetDefaultAction(int WXUNUSED (childId),wxString * WXUNUSED (actionName))289     virtual wxAccStatus GetDefaultAction(int WXUNUSED(childId), wxString* WXUNUSED(actionName))
290          { return wxACC_NOT_IMPLEMENTED; }
291 
292         // Returns the description for this object or a child.
GetDescription(int WXUNUSED (childId),wxString * WXUNUSED (description))293     virtual wxAccStatus GetDescription(int WXUNUSED(childId), wxString* WXUNUSED(description))
294          { return wxACC_NOT_IMPLEMENTED; }
295 
296         // Returns help text for this object or a child, similar to tooltip text.
GetHelpText(int WXUNUSED (childId),wxString * WXUNUSED (helpText))297     virtual wxAccStatus GetHelpText(int WXUNUSED(childId), wxString* WXUNUSED(helpText))
298          { return wxACC_NOT_IMPLEMENTED; }
299 
300         // Returns the keyboard shortcut for this object or child.
301         // Return e.g. ALT+K
GetKeyboardShortcut(int WXUNUSED (childId),wxString * WXUNUSED (shortcut))302     virtual wxAccStatus GetKeyboardShortcut(int WXUNUSED(childId), wxString* WXUNUSED(shortcut))
303          { return wxACC_NOT_IMPLEMENTED; }
304 
305         // Returns a role constant.
GetRole(int WXUNUSED (childId),wxAccRole * WXUNUSED (role))306     virtual wxAccStatus GetRole(int WXUNUSED(childId), wxAccRole* WXUNUSED(role))
307          { return wxACC_NOT_IMPLEMENTED; }
308 
309         // Returns a state constant.
GetState(int WXUNUSED (childId),long * WXUNUSED (state))310     virtual wxAccStatus GetState(int WXUNUSED(childId), long* WXUNUSED(state))
311          { return wxACC_NOT_IMPLEMENTED; }
312 
313         // Returns a localized string representing the value for the object
314         // or child.
GetValue(int WXUNUSED (childId),wxString * WXUNUSED (strValue))315     virtual wxAccStatus GetValue(int WXUNUSED(childId), wxString* WXUNUSED(strValue))
316          { return wxACC_NOT_IMPLEMENTED; }
317 
318         // Selects the object or child.
Select(int WXUNUSED (childId),wxAccSelectionFlags WXUNUSED (selectFlags))319     virtual wxAccStatus Select(int WXUNUSED(childId), wxAccSelectionFlags WXUNUSED(selectFlags))
320          { return wxACC_NOT_IMPLEMENTED; }
321 
322         // Gets the window with the keyboard focus.
323         // If childId is 0 and child is NULL, no object in
324         // this subhierarchy has the focus.
325         // If this object has the focus, child should be 'this'.
GetFocus(int * WXUNUSED (childId),wxAccessible ** WXUNUSED (child))326     virtual wxAccStatus GetFocus(int* WXUNUSED(childId), wxAccessible** WXUNUSED(child))
327          { return wxACC_NOT_IMPLEMENTED; }
328 
329 #if wxUSE_VARIANT
330         // Gets a variant representing the selected children
331         // of this object.
332         // Acceptable values:
333         // - a null variant (IsNull() returns TRUE)
334         // - a list variant (GetType() == wxT("list"))
335         // - an integer representing the selected child element,
336         //   or 0 if this object is selected (GetType() == wxT("long"))
337         // - a "void*" pointer to a wxAccessible child object
GetSelections(wxVariant * WXUNUSED (selections))338     virtual wxAccStatus GetSelections(wxVariant* WXUNUSED(selections))
339          { return wxACC_NOT_IMPLEMENTED; }
340 #endif // wxUSE_VARIANT
341 
342 // Accessors
343 
344         // Returns the window associated with this object.
345 
GetWindow()346     wxWindow* GetWindow() { return m_window; }
347 
348         // Sets the window associated with this object.
349 
SetWindow(wxWindow * window)350     void SetWindow(wxWindow* window) { m_window = window; }
351 
352 // Operations
353 
354         // Each platform's implementation must define this
355     // static void NotifyEvent(int eventType, wxWindow* window, wxAccObject objectType,
356     //                         int objectId);
357 
358 private:
359 
360 // Data members
361 
362     wxWindow*   m_window;
363 };
364 
365 
366 // ----------------------------------------------------------------------------
367 // now include the declaration of the real class
368 // ----------------------------------------------------------------------------
369 
370 #if defined(__WXMSW__)
371     #include "wx/msw/ole/access.h"
372 #endif
373 
374 #endif // wxUSE_ACCESSIBILITY
375 
376 #endif // _WX_ACCESSBASE_H_
377 
378