fc962c648b78c3f2e3c844aa5770ee124148740b
[platform/core/uifw/at-spi2-atk.git] / idl / Accessibility_Role.idl
1 /* 
2  * AT-SPI - Assistive Technology Service Provider Interface 
3  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
4  *
5  * Copyright 2001 Sun Microsystems Inc.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public
18  * License along with this library; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22
23 #ifndef _ACCESSIBILITY_ROLE_IDL
24 #define _ACCESSIBILITY_ROLE_IDL
25
26 module Accessibility {
27
28   enum Role {
29   /** A Role indicating an error condition, such as uninitialized Role data. */
30   ROLE_INVALID,
31   /** Object is a label indicating the keyboard accelerators for the parent  */
32   ROLE_ACCELERATOR_LABEL,
33   /** Object is used to alert the user about something */
34   ROLE_ALERT,
35   /** Object contains a dynamic or moving image of some kind */
36   ROLE_ANIMATION,
37   /** Object is a 2d directional indicator */
38   ROLE_ARROW,
39   /** Object contains one or more dates, usually arranged into a 2d list */
40   ROLE_CALENDAR,
41   /** Object that can be drawn into and is used to trap events */
42   ROLE_CANVAS,
43   /**
44    * A choice that can be checked or unchecked and provides a separate
45    * indicator for the current state.
46    */
47   ROLE_CHECK_BOX,
48   /** A menu item that behaves like a check box (see ROLE_CHECK_BOX) */
49   ROLE_CHECK_MENU_ITEM,
50   /** A specialized dialog that lets the user choose a color. */
51   ROLE_COLOR_CHOOSER,
52   /** The header for a column of data */
53   ROLE_COLUMN_HEADER,
54   /** A list of choices the user can select from */
55   ROLE_COMBO_BOX,
56   /** An object which allows entry of a date */
57   ROLE_DATE_EDITOR,
58   /** An inconifed internal frame within a DESKTOP_PANE */
59   ROLE_DESKTOP_ICON,
60   /**
61    * A pane that supports internal frames and iconified versions of those
62    * internal frames.
63    */
64   ROLE_DESKTOP_FRAME,
65   /** 
66    * An object that allows a value to be changed via rotating a visual element,
67    * or which displays a value via such a rotating element. 
68    */
69   ROLE_DIAL,
70   /** A top level window with title bar and a border */
71   ROLE_DIALOG,
72   /**
73    * A pane that allows the user to navigate through and select the contents
74    * of a directory
75    */
76   ROLE_DIRECTORY_PANE,
77   /**
78    * A specialized dialog that displays the files in the directory and lets
79    * the user select a file, browse a different directory, or specify a
80    * filename.
81    */
82   ROLE_DRAWING_AREA,
83   /**
84    * An object used for drawing custom user interface elements.
85    */
86   ROLE_FILE_CHOOSER,
87   /**
88    * A object that fills up space in a user interface
89    */
90   ROLE_FILLER,
91   /** XXX Don't use, reserved for future use. */
92   ROLE_FOCUS_TRAVERSABLE,
93   /** Allows selection of a display font */
94   ROLE_FONT_CHOOSER,
95   /** A top level window with a title bar, border, menubar, etc. */
96   ROLE_FRAME,
97   /** A pane that is guaranteed to be painted on top of all panes beneath it */
98   ROLE_GLASS_PANE,
99   /**
100    * A document container for HTML, whose children
101    * represent the document content.
102    */
103   ROLE_HTML_CONTAINER,
104   /** A small fixed size picture, typically used to decorate components */
105   ROLE_ICON,
106   /** An image, typically static. */
107   ROLE_IMAGE,
108   /** A frame-like object that is clipped by a desktop pane. */
109   ROLE_INTERNAL_FRAME,
110   /** An object used to present an icon or short string in an interface */
111   ROLE_LABEL,
112   /**
113    * A specialized pane that allows its children to be drawn in layers,
114    * providing a form of stacking order.
115    */
116   ROLE_LAYERED_PANE,
117   /**
118    * An object that presents a list of objects to the user and allows the
119    * user to select one or more of them.
120    */
121   ROLE_LIST,
122   /** An object that represents an element of a list. */
123   ROLE_LIST_ITEM,
124   /**
125    * An object usually found inside a menu bar that contains a list of
126    * actions the user can choose from.
127    */
128   ROLE_MENU,
129   /**
130    * An object usually drawn at the top of the primary dialog box of an
131    * application that contains a list of menus the user can choose from.
132    */
133   ROLE_MENU_BAR,
134   /**
135    * An object usually contained in a menu that presents an action the
136    * user can choose.
137    */
138   ROLE_MENU_ITEM,
139   /** A specialized pane whose primary use is inside a DIALOG */
140   ROLE_OPTION_PANE,
141   /** An object that is a child of a page tab list */
142   ROLE_PAGE_TAB,
143   /**
144    * An object that presents a series of panels (or page tabs), one at a time,
145    * through some mechanism provided by the object.
146    */
147   ROLE_PAGE_TAB_LIST,
148   /** A generic container that is often used to group objects. */
149   ROLE_PANEL,
150   /**
151    * A text object uses for passwords, or other places where the text
152    * content is not shown visibly to the user.
153    */
154   ROLE_PASSWORD_TEXT,
155   /**
156    * A temporary window that is usually used to offer the user a list of
157    * choices, and then hides when the user selects one of those choices.
158    */
159   ROLE_POPUP_MENU,
160   /** An object used to indicate how much of a task has been completed. */
161   ROLE_PROGRESS_BAR,
162   /**
163    * An object the user can manipulate to tell the application to do
164    * something.
165    */
166   ROLE_PUSH_BUTTON,
167   /**
168    * A specialized check box that will cause other radio buttons in the
169    * same group to become uncghecked when this one is checked.
170    */
171   ROLE_RADIO_BUTTON,
172   /** Object is both a menu item and a "radio button" (see ROLE_RADIO_BUTTON) */
173   ROLE_RADIO_MENU_ITEM,
174   /**
175    * A specialized pane that has a glass pane and a layered pane as its
176    * children.
177    */
178   ROLE_ROOT_PANE,
179   /** The header for a row of data */
180   ROLE_ROW_HEADER,
181   /**
182    * An object usually used to allow a user to incrementally view a large
183    * amount of data by moving the bounds of a viewport along a one-dimensional axis.
184    */
185   ROLE_SCROLL_BAR,
186   /**
187    * An object that allows a user to incrementally view a large amount
188    * of information.  ROLE_SCROLL_PANE objects are usually accompanied by
189    * ROLE_SCROLL_BAR controllers, on which the RELATION_CONTROLLER_FOR and
190    * RELATION_CONTROLLED_BY reciprocal relations are set; \see 
191    * Accessibility::RelationSet.
192    */
193   ROLE_SCROLL_PANE,
194   /**
195    * An object usually contained in a menu to provide a visible and
196    * logical separation of the contents in a menu.
197    */
198   ROLE_SEPARATOR,
199   /** An object that allows the user to select from a bounded range */
200   ROLE_SLIDER,
201   /** 
202    * An object which allows one of a set of choices to be selected, 
203    * and which displays the current choice.  Unlike ROLE_SCROLL_BAR,
204    * ROLE_SLIDER objects need not control 'viewport'-like objects.
205    */
206   ROLE_SPIN_BUTTON,
207   /** A specialized panel that presents two other panels at the same time. */
208   ROLE_SPLIT_PANE,
209   /** Object displays non-quantitative status information (c.f. ROLE_PROGRESS_BAR) */
210   ROLE_STATUS_BAR,
211   /** An object used to repesent information in terms of rows and columns. */
212   ROLE_TABLE,
213   /** A 'cell' or discrete child within a Table. \note Table cells need not have ROLE_TABLE_CELL, 
214    * other RoleType values are valid as well.  */
215   ROLE_TABLE_CELL,
216   /** An object which labels a particular column in a Table. */
217   ROLE_TABLE_COLUMN_HEADER,
218   /** An object which labels a particular row in a Table. Table rows and columns may also be 
219    * labelled via the RELATION_LABEL_FOR/RELATION_LABELLED_BY relationships; 
220    * \see Accessibility::RelationSet. */
221   ROLE_TABLE_ROW_HEADER,
222   /** Object allows menu to be removed from menubar and shown in its own window. */
223   ROLE_TEAROFF_MENU_ITEM,
224   /** An object that emulates a terminal */
225   ROLE_TERMINAL,
226   /** An object that presents text to the user, of nonspecific type. */
227   ROLE_TEXT,
228   /**
229    * A specialized push button that can be checked or unchecked, but does
230    * not procide a separate indicator for the current state.
231    */
232   ROLE_TOGGLE_BUTTON,
233   /**
234    * A bar or palette usually composed of push buttons or toggle buttons
235    */
236   ROLE_TOOL_BAR,
237   /**
238    * An object that provides information about another object
239    */
240   ROLE_TOOL_TIP,
241   /** An object used to repsent hierarchical information to the user. */
242   ROLE_TREE,
243   /** An object that presents both tabular and hierarchical info to the user */
244   ROLE_TREE_TABLE,
245   /**
246    * The object contains some Accessible information, but its role is
247    * not known.  
248    */
249   ROLE_UNKNOWN,
250   /** An object usually used in a scroll pane, or to otherwise clip a larger object or 
251    * content renderer to a specific onscreen viewport. */
252   ROLE_VIEWPORT,
253   /** A ¨top level window¨ with no title or border. */
254   ROLE_WINDOW,
255   /** 
256    * means that the role for this item is known, but not included in the 
257    * core enumeration 
258    */
259   ROLE_EXTENDED,
260   /** An object that serves as a document header. */
261   ROLE_HEADER,
262   /** An object that serves as a document footer. */
263   ROLE_FOOTER,
264   /** An object which is contains a single paragraph of text content. \see also ROLE_TEXT. */
265   ROLE_PARAGRAPH,
266   /**
267    * An object which describes margins and tab stops, etc. 
268    * for text objects which it controls 
269    * (should have CONTROLLER_FOR relation to such). 
270    */
271   ROLE_RULER,
272   /**
273    * An object corresponding to the toplevel accessible of an 
274    * application, which may contain ROLE_FRAME objects or other
275    * accessible objects.  Children of AccessibleDesktop objects 
276    * are generally ROLE_APPLICATION objects.
277    */
278   ROLE_APPLICATION,
279   /**
280    * The object is a dialog or list containing items for insertion 
281    * into an entry widget, for instance a list of words for completion 
282    * of a text entry.
283    */
284   ROLE_AUTOCOMPLETE,
285   /**
286    * The object is an editable text object in a toolbar.
287    */
288   ROLE_EDITBAR,
289   /**
290    * The object is an embedded component container.  This role is a 
291    * "grouping" hint that the contained objects share a context which is 
292    * different from the container in which this accessible is embedded.
293    * In particular, it is used for some kinds of document embedding, and
294    * for embedding of out-of-process component, "panel applets", etc.
295    */
296   ROLE_EMBEDDED,
297
298   /**
299    * The object is a component whose textual content may be entered or modified by the user,
300    * provided STATE_EDITABLE is present.  
301    * @note a readonly ROLE_ENTRY object (i.e. where STATE_EDITABLE is not present) implies a
302    * read-only ¨text field¨ in a form, as opposed to a title, label, or caption.
303    *
304    * @since AT-SPI 1.7.0
305    */
306   ROLE_ENTRY,
307   /**
308    * The object is a graphical depiction of quantitative data.  It may contain multiple
309    * subelements whose attributes and/or description may be queried to obtain both the
310    * quantitative data and information about how the data is being presented.
311    * The LABELLED_BY relation is particularly important in interpreting objects of this type,
312    * as is the accessible-description property.  
313    * @see ROLE_CAPTION
314    *
315    * @since AT-SPI 1.7.0
316    */
317   ROLE_CHART,
318   /**
319    * The object contains descriptive information, usually textual, about another user interface
320    * element such as a table, chart, or image.
321    *
322    * @since AT-SPI 1.7.0
323    */
324   ROLE_CAPTION,
325   /**
326    * The object is a visual frame or container which contains a view of document content.  
327    * Document frames may occur within another Document instance, in which case the second 
328    * document may be said to be embedded in the containing instance.  HTML frames are
329    * often ROLE_DOCUMENT_FRAME.  Either this object, or a singleton descendant, should implement
330    * the Document interface.
331    *
332    * @since AT-SPI 1.7.0
333    */
334   ROLE_DOCUMENT_FRAME,
335   /**
336    * The object serves as a heading for content which follows it in a document.
337    * The 'heading level' of the heading, if availabe,  may be obtained by
338    * querying the object's attributes. 
339    *
340    * @since AT-SPI 1.7.0
341    */
342   ROLE_HEADING,
343   /**
344    * The object is a containing instance which encapsulates a page of 
345    * information.  ROLE_PAGE is used in documents and content which support
346    * a paginated navigation model.
347    * 
348    * @since AT-SPI 1.7.0
349    */
350   ROLE_PAGE,
351   /**
352    * The object is a containing instance of document content which constitutes
353    * a particular 'logical' section of the document.  The type of content within
354    * a section, and the nature of the section division itself, may be obtained
355    * by querying the object's attributes.  Sections may be nested.
356    *
357    * @since AT-SPI 1.7.0
358    */
359   ROLE_SECTION,
360   /**
361    * The object is redundant with another object in the hierarchy, 
362    * and is exposed for purely technical reasons.  Objects of this role 
363    * should be ignored by clients, if they are encountered at all. 
364    *
365    * @since AT-SPI 1.7.6
366    */
367   ROLE_REDUNDANT_OBJECT,
368   /**
369    * The object is a containing instance of document content which
370    * has within it components with which the user can interact in order to
371    * input information; i.e. the object is a container for pushbuttons,
372    * comboboxes, text input fields, and other 'GUI' components.
373    * ROLE_FORM should not, in general, be used for toplevel GUI containers
374    * or dialogs, but should be reserved for 'GUI' containers which occur within
375    * document content, for instance within Web documents, presentations, or 
376    * text documents.  Unlike other GUI containers and dialogs which occur inside
377    * application instances, ROLE_FORM containers' components are associated with
378    * the current document, rather than the current foreground application or
379    * viewer instance.
380    *
381    * @since AT-SPI 1.7.6
382    */
383   ROLE_FORM,
384   /**
385    * The object is a hypertext anchor, i.e. a "link" in a
386    * hypertext document.  Such objects are distinct from 'inline'
387    * content which may also use the Hypertext/Hyperlink interfaces
388    * to indicate the range/location within a text object where
389    * an inline or embedded object lies.
390    *
391    * @since AT-SPI 1.7.6
392    */
393   ROLE_LINK,
394   /**
395    * The object is a window or similar viewport which is used
396    * to allow composition or input of a 'complex character',
397    * in other words it is an "input method window."
398    *
399    * @since AT-SPI 1.7.6
400    */
401   ROLE_INPUT_METHOD_WINDOW,
402
403   /** not a valid role, used for finding end of enumeration. */
404   ROLE_LAST_DEFINED
405   };
406 };
407
408 #endif