summaryrefslogtreecommitdiff
path: root/idl
diff options
context:
space:
mode:
authorbillh <billh@e2bd861d-eb25-0410-b326-f6ed22b6b98c>2006-01-16 14:16:45 +0000
committerbillh <billh@e2bd861d-eb25-0410-b326-f6ed22b6b98c>2006-01-16 14:16:45 +0000
commit3fd7452ac529990da31e6b56597f87e3f0d2bb37 (patch)
treee3898d9ba8e74e6c1d20535cc1dfa6ebeee1d336 /idl
parentc8bb006881bf32579ce674777067474c36021f26 (diff)
downloadat-spi2-core-3fd7452ac529990da31e6b56597f87e3f0d2bb37.tar.gz
New IDL API, extensions to basic at-spi interfaces.
Also added some enhancements to event emission - events now include host-app, role, and accessible-name info. (This commit is a preventative measure to ensure that the new stuff appears in gnome 2.13 tarballs today; ChangeLog entry will be completed later today.) git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@782 e2bd861d-eb25-0410-b326-f6ed22b6b98c
Diffstat (limited to 'idl')
-rw-r--r--idl/Accessibility.idl65
-rw-r--r--idl/Accessibility_Accessible.idl219
-rw-r--r--idl/Accessibility_Action.idl44
-rw-r--r--idl/Accessibility_Application.idl73
-rw-r--r--idl/Accessibility_Component.idl132
-rw-r--r--idl/Accessibility_Desktop.idl9
-rw-r--r--idl/Accessibility_EditableText.idl71
-rw-r--r--idl/Accessibility_Event.idl102
-rw-r--r--idl/Accessibility_Hyperlink.idl74
-rw-r--r--idl/Accessibility_Hypertext.idl40
-rw-r--r--idl/Accessibility_Image.idl74
-rw-r--r--idl/Accessibility_LoginHelper.idl53
-rw-r--r--idl/Accessibility_Registry.idl413
-rw-r--r--idl/Accessibility_Relation.idl68
-rw-r--r--idl/Accessibility_Role.idl251
-rw-r--r--idl/Accessibility_Selection.idl95
-rw-r--r--idl/Accessibility_State.idl206
-rw-r--r--idl/Accessibility_StreamableContent.idl82
-rw-r--r--idl/Accessibility_Table.idl244
-rw-r--r--idl/Accessibility_Text.idl322
-rw-r--r--idl/Accessibility_Value.idl27
21 files changed, 2270 insertions, 394 deletions
diff --git a/idl/Accessibility.idl b/idl/Accessibility.idl
index 990324a9..63ff91dc 100644
--- a/idl/Accessibility.idl
+++ b/idl/Accessibility.idl
@@ -2,7 +2,7 @@
* AT-SPI - Assistive Technology Service Provider Interface
* (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
*
- * Copyright 2001 Ximian, Inc.
+ * Copyright 2001-2005 Ximian, Inc. and Sun Microsystems, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -32,6 +32,67 @@
#endif
#endif
+#ifndef _BONOBO_IDL_INCLUDED_
+#define _BONOBO_IDL_INCLUDED_
+#include <Bonobo_Unknown.idl>
+#endif /* _BONOBO_IDL_INCLUDED_ */
+
+/*!\mainpage AT-SPI Interfaces and Subinterfaces
+ *
+ * This is the main documentation page for the
+ * Assistive Technology Service Provider Interface (AT-SPI).
+ *
+ * \section apps Applications and Interface Components
+ * Namespace Accessibility includes service APIs implemented by
+ * participating applications and their user interface components:\n\n
+ * Accessibility::Accessible\n
+ * Accessibility::Application\n
+ * Accessibility::Desktop\n
+ * Accessibility::Component\n
+ * Accessibility::Hypertext\n
+ * Accessibility::Image\n
+ * Accessibility::Selection\n
+ * Accessibility::StreamableContent\n
+ * Accessibility::Table\n
+ * Accessibility::Text\n
+ * Accessibility::EditableText\n
+ * Accessibility::Value
+ *
+ * \section types Enumerated Types
+ * Accessibility defines a number of key enumerated types, including:\n\n
+ * Accessibility::RelationType\n
+ * Accessibility::Role\n
+ * Accessibility::StateType\n
+ * Accessibility::Event\n
+ * Accessibility::EventDetails \n
+ *
+ * \section Registry
+ * Accessibility also includes Accessibility::Registry,
+ * which is the service used by assistive technologies and related
+ * AT-SPI clients to register interest in certain classes of events,
+ * enumerate the currently available desktop and application list,
+ * and to synthesize certain kinds of device events.
+ *
+ * \section listeners Event Listener Interfaces
+ * Accessibility::EventListener\n
+ * Accessibility::DeviceEventListener
+ *
+ * \section helpers Helper Interfaces
+ *
+ * The following interfaces may be implemented by assistive technologies
+ * themselves, in order to export their services in a consistent manner or
+ * in order to interoperate with other applications or desktop services.\n
+ *
+ * Accessibility::LoginHelper : Implemented by adaptive technologies which
+ * need to participate in user-authentication or login activities, and which
+ * therefore may need negotiation with authentication agents or processes.\n
+ *
+ * Accessibility::Selector [NEW]: Implemented by user agents or assistive
+ * technologies which export lists of choices from which the end-user is
+ * expected to make selections. Useful for various types of remote
+ * activation or intercommunication between multiple ATs.
+ **/
+
/*
* Accessibility interfaces and subinterfaces
*/
@@ -64,6 +125,8 @@
#include <Accessibility_Event.idl>
#include <Accessibility_Registry.idl>
#include <Accessibility_Role.idl>
+#include <Accessibility_LoginHelper.idl>
+#include <Accessibility_Selector.idl>
#ifndef __ACCESSIBILITY_COMPILATION__
#ifdef __ORBIT_IDL__
diff --git a/idl/Accessibility_Accessible.idl b/idl/Accessibility_Accessible.idl
index d9bccd9b..ac56f68f 100644
--- a/idl/Accessibility_Accessible.idl
+++ b/idl/Accessibility_Accessible.idl
@@ -23,120 +23,251 @@
#ifndef _ACCESSIBILITY_ACCESSIBLE_IDL
#define _ACCESSIBILITY_ACCESSIBLE_IDL
-#include <Bonobo_Unknown.idl>
-
#include "Accessibility_Relation.idl"
#include "Accessibility_State.idl"
#include "Accessibility_Role.idl"
module Accessibility {
+ /** used by Text and Document: these correspond to the POSIX setlocale() enum values. **/
+ enum LOCALE_TYPE {
+ LOCALE_TYPE_MESSAGES,
+ LOCALE_TYPE_COLLATE,
+ LOCALE_TYPE_CTYPE,
+ LOCALE_TYPE_MONETARY,
+ LOCALE_TYPE_NUMERIC,
+ LOCALE_TYPE_TIME
+ };
+
+ /** A list of Relations, which may be many-to-many. */
typedef sequence<Relation> RelationSet;
+ /**
+ * A list of name-value pairs, returned as a sequence of strings;
+ * the name and value are separated by a colon.
+ * @note "Attributes" returned in AttributeSet lists are distinct from,
+ * and should not be confused with, "attribute" members of interfaces
+ * as defined by the IDL "attribute" keyword. IDL attributes are
+ * strongly-typed values which are individually obtained via
+ * language-specific bindings whose syntax is dictated by the OMG's
+ * IDL language bindings. For instance using the C language,
+ * the "Accessible::name" attribute is queried using
+ * \c Accessibility_Accessible__get_name (obj, &ev);
+ * Name-value pairs associated with Accessible instances are not
+ * normally redundant with these IDL attributes, i.e. there is no
+ * "accessible-name" attribute in the AttributeSet returned from
+ * Accessible::getAttributes().
+ *
+ * Where possible, the names and values in the name-value pairs
+ * should be chosen from well-established attribute namespaces
+ * using standard semantics. For example, metadata namespace and
+ * values should be chosen from the 'Dublin Core' Metadata
+ * namespace using Dublin Core semantics:
+ * http://dublincore.org/dcregistry/
+ * Similarly, relevant structural metadata should be exposed
+ * using attribute names and values chosen from the CSS2 and WICD specification:
+ * http://www.w3.org/TR/1998/REC-CSS2-19980512
+ * WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).
+ *
+ * Finally, note that typographic, semantic, and presentational annotations which
+ * are associated with text content, in particular which are associated with particular
+ * text ranges, should be exposed via Accessibility::Text::getAttributeRun instead of
+ * via these more general 'Object attributes'.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ typedef sequence<string> AttributeSet;
+
+ /**
+ * A list of accessible roles
+ * @since AT-SPI 1.7.0
+ **/
+ typedef sequence<Role> RoleSet;
+
+ /** Used by Component and Text, a struct defining a bounding rectangle.
+ * The relevant coordinate system is determined by the context of the
+ * API call which returned or receives the value.
+ */
struct BoundingBox {
- long x;
- long y;
- long width;
- long height;
+ long x; /**< the value corresponding to the minimum or leftmost x position. */
+ long y; /**< the value corresponding to the minimum y value. */
+ long width; /**< the horizontal extent of the bounding box,
+ * that is, the difference between the maximum and minimum
+ * x coordinate bounds.
+ */
+ long height; /**< the vertical extent of the bounding box,
+ * that is, the difference between the maximum and minimum
+ * y coordinate bounds.
+ */
};
+
+ interface Application; /**< defined in Accessibility_Application.idl **/
+
+ /**
+ * The base interface which is implemented by all accessible objects.
+ * All objects support interfaces for querying their contained 'children'
+ * and position in the accessible-object hierarchy, whether or not they
+ * actually have children.
+ *
+ * @note Events that may be emitted by instances of Accessible include:
+ * \li \c "object:property-change" A base (strongly-typed) object attribute has changed,
+ * for instance "object:property-change:accessible-name".
+ * Notifed property subtypes include accessible-name, accessible-description,
+ * and accessible-parent.
+ *
+ * \li \c "object:children-changed" The number or identity of an object's children
+ * has changed.
+ * \li \c "object:state-changed" The object's StateSet has had a state added
+ * or removed.
+ * \li \c "object:active-descendant-changed" If the object includes
+ * STATE_MANAGES_DESCENDANTS, this event is fired to indicate that the
+ * descendant having STATE_ACTIVE has changed; this corresponds to
+ * "micro" keyboard focus when the containing/emitting object has
+ * "macro" or technical keyboard focus. For instance, this event is
+ * usually emitted while traversing tables and/or spreadsheet cells.
+ * \li \c "object:attribute-change" A weakly-typed property, as contained in the
+ * AttributeSet returned by Accessible::getAttributes, has changed in value,
+ * been added, or been removed from the object.
+ * ("object:attribute-change" notifications were added in AT-SPI 1.7.0)
+ */
interface Accessible : Bonobo::Unknown {
/**
- * @name: a (short) #string representing the object's name.
+ * a (short) \c string representing the object's name.
**/
attribute string name;
/**
- * @description: a #string describing the object in more detail than @name.
+ * a \c string describing the object in more detail than \a name.
**/
attribute string description;
/**
- * @parent: an #Accessible object which is this object's containing object.
+ * an ::Accessible object which is this object's containing object.
**/
- readonly attribute Accessible parent;
+ readonly attribute Accessibility::Accessible parent;
/**
- * @childCount: the number of children contained by this object.
+ * childCount: the number of children contained by this object.
**/
readonly attribute long childCount;
/**
- * isEqual:
- * @obj: an #Accessible object reference to compare to
- *
- * Determine whether an #Accessible refers to the same object as another
+ * Determine whether an ::Accessible refers to the same object as another.
+ * This method should be used rather than brute-force comparison of
+ * object references (i.e. "by-value" comparison), as two object references
+ * may have different apparent values yet refer to the same object.
*
- * Returns: a #boolean indicating whether the two object references
+ * @param obj: an ::Accessible object reference to compare to
+ * @returns: a \c boolean indicating whether the two object references
* point to the same object.
**/
boolean isEqual (in Accessible obj);
/**
- * getChildAtIndex:
- * @index: an in parameter indicating which child is requested (zero-indexed).
- *
- * Get the accessible child of this object at index @index.
- *
- * Returns: the 'nth' @Accessible child of this object.
+ * Get the accessible child of this object at \c index.
+ * @param index: an in parameter indicating which child is requested (zero-indexed).
+ * @returns: the 'nth' ::Accessible child of this object.
**/
Accessible getChildAtIndex (in long index);
/**
- * getIndexInParent:
- *
* Get the index of this object in its parent's child list.
- *
- * Returns: a long integer indicating this object's index in the parent's list.
+ * @returns: a long integer indicating this object's index in the parent's list.
**/
long getIndexInParent ();
/**
- * getRelationSet:
- *
* Get a set defining this object's relationship to other accessible objects.
- *
- * Returns: a @RelationSet defining this object's relationships.
+ * @returns: a ::RelationSet defining this object's relationships.
**/
RelationSet getRelationSet ();
/**
- * getRole:
- * Get the @Role indicating the type of UI role played by this object.
+ * Get the ::Role indicating the type of UI role played by this object.
*
- * Returns: a @Role indicating the type of UI role played by this object.
+ * @returns: a ::Role indicating the type of UI role played by this object.
**/
Role getRole ();
/**
- * getRoleName:
* Get a string indicating the type of UI role played by this object.
*
- * Returns: a UTF-8 string indicating the type of UI role played by this object.
+ * @returns: a UTF-8 string indicating the type of UI role played by this object.
**/
string getRoleName ();
/**
- * getLocalizedRoleName:
* Get a string indicating the type of UI role played by this object,
* translated to the current locale.
*
- * Returns: a UTF-8 string indicating the type of UI role played by this object.
+ * @returns: a UTF-8 string indicating the type of UI role played by this object.
**/
string getLocalizedRoleName ();
/**
- * getState:
- *
- * Get the current state of the object as a @StateSet.
- * Returns: a @StateSet encapsulating the currently true states of the object.
+ * Get the current state of the object as a ::StateSet.
+ * @returns: a ::StateSet encapsulating the currently true states of the object.
**/
StateSet getState ();
- void unImplemented ();
- void unImplemented2 ();
- void unImplemented3 ();
+ /**
+ * Get a list of properties applied to this object as a whole, as an
+ * ::AttributeSet consisting of name-value pairs. As such these attributes
+ * may be considered weakly-typed properties or annotations, as distinct
+ * from the strongly-typed interface instance data declared using the IDL
+ * "attribute" keyword.
+ *
+ * Not all objects have explicit "name-value pair" AttributeSet properties.
+ *
+ * Attribute names and values may have any UTF-8 string value, however where possible,
+ * in order to facilitate consistent use and exposure of "attribute" properties by
+ * applications and AT clients, attribute names and values should chosen from
+ * a publicly-specified namespace where appropriate.
+ *
+ * Where possible, the names and values in the name-value pairs
+ * should be chosen from well-established attribute namespaces
+ * using standard semantics.
+ * For example, attributes of ::Accessible objects corresponding to XHTML content
+ * elements should correspond to attribute names and values specified in the w3c
+ * XHTML specification, at http://www.w3.org/TR/xhtml2, where such values are not
+ * already exposed via a more strongly-typed aspect of the AT-SPI API.
+ * Metadata names and
+ * values should be chosen from the 'Dublin Core' Metadata
+ * namespace using Dublin Core semantics:
+ * http://dublincore.org/dcregistry/
+ * Similarly, relevant structural metadata should be exposed
+ * using attribute names and values chosen from the CSS2 and WICD specification:
+ * http://www.w3.org/TR/1998/REC-CSS2-19980512
+ * WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).
+ *
+ * @note Clients seeking semantic or typographical attributes associated with
+ * specific character spans of text content should use ::Text::getAttributeRun instead.
+ * The attributes returned by Accessible::getAttributes do not include
+ * "text attributes".
+ *
+ * @see ::Accessibility::Text::getAttributeRun
+ *
+ * @returns: an ::AttributeSet encapsulating any "attribute values" currently
+ * defined for the object.
+ *
+ * @since AT-SPI 1.7.0
+ **/
+ AttributeSet getAttributes ();
+
+ /**
+ * Get the containing Application for this object.
+ *
+ * @returns the Application instance to which this object belongs.
+ * @since AT-SPI 1.7.0
+ **/
+ Application getApplication ();
+
+ /** /cond future expansion */
+ void unimplemented ();
+ /** /endcond */
+
};
};
diff --git a/idl/Accessibility_Action.idl b/idl/Accessibility_Action.idl
index 2bab51db..d14d90bf 100644
--- a/idl/Accessibility_Action.idl
+++ b/idl/Accessibility_Action.idl
@@ -21,63 +21,78 @@
*/
module Accessibility {
-
+ /**
+ * An interface through which a user-actionable user interface
+ * component can be manipulated. Components which react to mouse or
+ * keyboard input from the user, (with the exception of pure text entry
+ * fields with no other function), should implement this interface.
+ * Typical actions include "click", "press", "release" (for instance for
+ * buttons), "menu" (for objects which have context menus invokable from
+ * mouse or keyboard), "open" for icons representing files folders, and others.
+ */
interface Action : Bonobo::Unknown {
/**
- * nActions: a @long containing the number of actions this object supports.
+ * nActions: a \c long containing the number of actions this object supports.
*
**/
readonly attribute long nActions;
/**
* getDescription:
- * @index: an %in parameter specifying the index of the action
+ * @param index: the index of the action
* for which a description is desired.
*
- * Gets the description of the specified action.
+ * Get the description of the specified action. The description of an action
+ * may provide information about the result of action invocation, unlike the
+ * action name.
+ * @see getName.
*
- * Returns: a @wstring containing the description of the specified action.
+ * @returns: a \c string containing the description of the specified action.
*
**/
string getDescription (in long index);
/**
* getName:
- * @index: an %in parameter specifying the index of the action
+ * @param index: the index of the action
* whose name is requested.
*
- * Gets the name of the specified action.
+ * Get the name of the specified action. Action names generally describe
+ * the user action, i.e. "click" or "press", rather then the result of
+ * invoking the action.
*
- * Returns: a @string containing the name of the specified action.
+ * @returns: a \c string containing the name of the specified action.
*
**/
string getName (in long index);
/**
* doAction:
- * @index: an %in parameter specifying the 0-based index of the action to perform.
+ * @param index: the 0-based index of the action to perform.
*
* Causes the object to perform the specified action.
*
- * Returns: a @boolean indicating success or failure.
+ * @returns: a \c boolean indicating success or failure.
*
**/
boolean doAction (in long index);
/**
* getKeyBinding:
- * @index: an %in parameter specifying the 0-based index of the action
+ * @param index: the 0-based index of the action
* for which a key binding is requested.
*
- * Gets the key binding associated with a specific action.
+ * Get the key binding associated with a specific action.
*
- * Returns: a @string containing the key binding for the specified action,
- * "" if none exists.
+ * @returns: a \c string containing the key binding for the specified action,
+ * or an empty string ("") if none exists.
**/
string getKeyBinding (in long index);
+
/**
+ * \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -86,6 +101,7 @@ module Accessibility {
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Application.idl b/idl/Accessibility_Application.idl
index 33b4998d..e35332f8 100644
--- a/idl/Accessibility_Application.idl
+++ b/idl/Accessibility_Application.idl
@@ -2,7 +2,7 @@
* AT-SPI - Assistive Technology Service Provider Interface
* (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
*
- * Copyright 2001 Sun Microsystems Inc.
+ * Copyright 2001-2004 Sun Microsystems Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -28,102 +28,97 @@
module Accessibility {
- enum LOCALE_TYPE {
- LOCALE_TYPE_MESSAGES,
- LOCALE_TYPE_COLLATE,
- LOCALE_TYPE_CTYPE,
- LOCALE_TYPE_MONETARY,
- LOCALE_TYPE_NUMERIC,
- LOCALE_TYPE_TIME
- };
-
+ /**
+ * An interface identifying an object which is the root of the
+ * user interface Accessible hierarchy associated with a running application.
+ * Children of Application are typically, but not exclusively,
+ * top-level windows.
+ * @note It is possible for an element deeper in an Accessibility stack to
+ * implement Application, for instance in the case of "embedded applications"
+ * which draw into toplevel windows associated with other applications
+ * from the user's point of view.
+ */
interface Application : Accessible {
/**
- * @toolkitName:
* A string indicating the type of user interface toolkit
* which is used by the application.
- * Ordinarily clients of @AccessibleApplication should be
- * toolkit-agnostic, dependencies on this method probably
- * should be reconsidered!
+ * @note Ordinarily clients of ::Application should be
+ * toolkit-agnostic, dependencies on this property should
+ * be avoided where possible.
**/
readonly attribute string toolkitName;
/**
- * @version:
* A string indicating the version number of the application's
* accessibility bridge implementation.
**/
readonly attribute string version;
/**
- * @id:
* The application instance's unique ID as assigned by the registry.
**/
attribute long id;
/**
- * registerToolkitEventListener:
- * @listener: an #EventListener object which will receive the requested
+ * @param listener: an ::EventListener object which will receive the requested
* events from the application's toolkits via toolit 'bridges'
- * @eventName: a UTF-8 string indicating the type of (toolkit-specific) event
+ * @param eventName: a UTF-8 string indicating the type of (toolkit-specific) event
* being requested. Not all applications can generate toolkit events of
* a given type.
*
* Register with this application's toolkit for "toolkit-specific" event notifications.
+ * @note
* For most event support, clients should use non-toolkit-specific events
- * whenever possible, via #Registry::registerGlobalEventListener - this method
- * is provided as a 'back door' when generic names do not exist for the events in question.
- * SUBJECT TO DEPRECATION in favor of Registry::registerGlobalEventListener forms.
- *
+ * whenever possible, via ::Registry::registerGlobalEventListener - this method
+ * is provided as a 'back door' when generic names do not exist for the events in
+ * question.
**/
void registerToolkitEventListener (in EventListener listener, in string eventName);
/**
* registerObjectEventListener:
- * @listener: an #EventListener object which will receive the requested
+ * @param listener: an ::EventListener object which will receive the requested
* events
- * @eventName: a UTF-8 string indicating the type of (toolkit-specific) event
+ * @param eventName: a UTF-8 string indicating the type of (toolkit-specific) event
* being requested.
* Register with this application toolkit for "Accessibility::Accessible"
- * event notifications. SUBJECT TO DEPRECATION
- *
+ * event notifications.
+ * @note: SUBJECT TO DEPRECATION.
**/
void registerObjectEventListener (in EventListener listener, in string eventName);
/**
- * pause:
- *
* Request that the application temporarily stop sending events.
* In most cases this should pause the application's main event loop.
*
- * Returns: %true if the request succeeded, %false otherwise.
+ * @returns: \c true if the request succeeded, \c false otherwise.
+ *
+ * @note: This method is not implemented in most toolkits, and therefore should be treated with caution.
**/
boolean pause ();
/**
- * resume:
- *
* Request that the application resume sending events.
*
- * Returns: %true if the request succeeded, %false otherwise.
+ * @returns: \c True if the request succeeded, \c False otherwise.
**/
boolean resume ();
- /**
- * getLocale:
- *
- * @lctype: the LocaleType for which the locale is queried.
+ /**
* Gets the locale in which the application is currently operating.
- * For the current message locale, use @lctype LOCALE_TYPE_MESSAGES.
+ * For the current message locale, use \a lctype LOCALE_TYPE_MESSAGES.
*
- * Returns: a string compliant with the POSIX standard for locale description.
+ * @param lctype The LocaleType for which the locale is queried.
+ * @returns a string compliant with the POSIX standard for locale description.
**/
string getLocale (in LOCALE_TYPE lctype);
+ /**\cond (This comment tells doxygen not to document these) */
void unImplemented_ ();
void unImplemented2_ ();
void unImplemented3_ ();
+ /**\endcond */
};
};
diff --git a/idl/Accessibility_Component.idl b/idl/Accessibility_Component.idl
index b444ab1c..f4f063ea 100644
--- a/idl/Accessibility_Component.idl
+++ b/idl/Accessibility_Component.idl
@@ -24,32 +24,140 @@
module Accessibility {
+ /**
+ * The ComponentLayer of a Component instance indicates its relative stacking order
+ * with respect to the onscreen visual representation of the UI.
+ * ComponentLayer, in combination with Component bounds information, can be used
+ * to compute the visibility of all or part of a component. This is important in
+ * programmatic determination of region-of-interest for magnification, and in
+ * ¨flat screen review¨ models of the screen, as well as for other uses.
+ * Objects residing in two of the ComponentLayer categories support
+ * further z-ordering information, with respect to their peers in the same layer:
+ * namely, LAYER_WINDOW and LAYER_MDI. Relative stacking order for other objects within
+ * the same layer is not available; the recommended heuristic is ¨first child paints first¨,
+ * in other words, assume that the first siblings in the child list are subject to being
+ * overpainted by later siblings if their bounds intersect.
+ *
+ * The order of layers, from bottom to top, is:
+ * \li LAYER_BACKGROUND
+ * \li LAYER_WINDOW
+ * \li LAYER_MDI
+ * \li LAYER_CANVAS
+ * \li LAYER_WIDGET
+ * \li LAYER_POPUP
+ * \li LAYER_OVERLAY
+ */
enum ComponentLayer {
- LAYER_INVALID,
- LAYER_BACKGROUND,
- LAYER_CANVAS,
- LAYER_WIDGET,
- LAYER_MDI,
- LAYER_POPUP,
- LAYER_OVERLAY,
- LAYER_WINDOW,
- LAYER_LAST_DEFINED
+ LAYER_INVALID,/**< Indicates an error condition or uninitialized value. */
+ LAYER_BACKGROUND,/**< The bottom-most layer, over which everything else is painted.
+ * The 'desktop background' is generally in this layer. */
+ LAYER_CANVAS,/**< The 'background' layer for most content renderers and UI Component
+ * containers. */
+ LAYER_WIDGET,/**< The layer in which the majority of ordinary 'foreground' widgets reside.*/
+ LAYER_MDI,/**< A special layer between LAYER_CANVAS and LAYER_WIDGET, in which the
+ * 'pseudo windows' (e.g. the MDI frames) reside.
+ * @see Component::getMDIZOrder */
+ LAYER_POPUP,/**< A layer for popup window content, above LAYER_WIDGET. */
+ LAYER_OVERLAY,/**< The topmost layer. */
+ LAYER_WINDOW,/**< The layer in which a toplevel window background usually resides. */
+ LAYER_LAST_DEFINED/**< Used only to determine the end of the enumeration. */
};
+ /**
+ * The Component interface is implemented by objects which occupy on-screen space, e.g. objects
+ * which have onscreen visual representations. The methods in Component allow clients to identify
+ * where the objects lie in the onscreen coordinate system, their relative size, stacking order, and
+ * position. It also provides a mechanism whereby keyboard focus may be transferred to specific
+ * user interface elements programmatically. This is a 2D API, coordinates of 3D objects are projected into the
+ * 2-dimensional screen view for purposes of this interface.
+ *
+ * @note the meaning and defined values of the \c short \c coord_type parameter used by some
+ * Component methods is as follows:
+ * \li 0 indicates coord_type_xy_screen, coordinates are relative to the display screen, in pixels.
+ * \li 1 indicates coord_type_xy_window, coordinates are relative to the current toplevel window, in pixels.
+ *
+ * @note Events emitted by Component instances include:
+ * \li \c "object:bounds-changed"
+ * \li \c "object:visible-data-changed"
+ */
interface Component : Bonobo::Unknown {
-
+
+ /**
+ * @returns \c True if the specified point lies within the Component's bounding box,
+ * \c False otherwise.
+ */
boolean contains (in long x, in long y, in short coord_type);
+ /**
+ * @returns the Accessible child whose bounding box contains the specified point.
+ */
Accessible getAccessibleAtPoint (in long x, in long y, in short coord_type);
+ /**
+ * Obtain the Component's bounding box, in pixels, relative to the specified coordinate system.
+ * @returns a BoundingBox which entirely contains the object's onscreen visual representation.
+ **/
BoundingBox getExtents (in short coord_type);
+ /**
+ * Obtain the position of the current component in the coordinate system specified
+ * by \c coord_type.
+ * @param coord_type
+ * @param x an out parameter which will be back-filled with the returned x coordinate.
+ * @param y an out parameter which will be back-filled with the returned y coordinate.
+ */
void getPosition (out long x, out long y, in short coord_type);
+ /**
+ * Obtain the size, in the coordinate system specified by \c coord_type,
+ * of the rectangular area which fully contains the object's
+ * visual representation, without accounting for viewport clipping.
+ * @param width the object's horizontal extents in the specified coordinate system.
+ * @param height the object's vertical extents in the specified coordinate system.
+ */
void getSize (out long width, out long height);
+ /** @returns the ComponentLayer in which this object resides. */
ComponentLayer getLayer ();
+ /**
+ * Obtain the relative stacking order (i.e. 'Z' order) of an object.
+ * Larger values indicate that an object is on "top" of the stack, therefore
+ * objects with smaller MDIZOrder may be obscured by objects with a larger MDIZOrder,
+ * but not vice-versa.
+ * @note only relevant for objects in LAYER_MDI or LAYER_WINDOW
+ * @returns an integer indicating the object's place in the stacking order.
+ */
short getMDIZOrder ();
+ /**
+ * Request that the object obtain keyboard focus.
+ *
+ * @returns \c True if keyboard focus was successfully transferred to the Component.
+ */
boolean grabFocus ();
+ /**
+ * Register an EventListener for notification when this object receives keyboard focus.
+ * @note you probably want to register for ¨focus:¨ events via
+ * Registry::registerGlobalEventListener instead.
+ */
void registerFocusHandler (in EventListener handler);
+ /**
+ * Request that an EventListener registered via registerFocusHandler no longer be notified
+ * when this object receives keyboard focus.
+ */
void deregisterFocusHandler (in EventListener handler);
- /**
+ /**
+ * Obtain the alpha value of the component. An alpha value of 1.0 or greater
+ * indicates that the object is fully opaque, and an alpha value of 0.0 indicates
+ * that the object is fully transparent. Negative alpha values have no defined
+ * meaning at this time.
+ *
+ * @note alpha values are used in conjunction with Z-order calculations to
+ * determine whether an object wholly or partially obscures another object's
+ * visual intersection, in the event that their bounds intersect.
+ *
+ * @see STATE_OPAQUE
+ *
+ * @since AT-SPI 1.7.0
+ */
+ double getAlpha ();
+
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -57,6 +165,6 @@ module Accessibility {
void unImplemented ();
void unImplemented2 ();
void unImplemented3 ();
- void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Desktop.idl b/idl/Accessibility_Desktop.idl
index 9c398f9c..19271227 100644
--- a/idl/Accessibility_Desktop.idl
+++ b/idl/Accessibility_Desktop.idl
@@ -27,12 +27,14 @@
#include <Accessibility_Accessible.idl>
module Accessibility {
- interface Desktop : Accessible {
/**
* At the moment this is only a marker interface, it acts just like
- * any other Accessible.
+ * any other Accessible. In all known implementations, the
+ * children are all instances of Application, but this is not
+ * guaranteed by this interface.
**/
- /**
+ interface Desktop : Accessible {
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -41,6 +43,7 @@ module Accessibility {
void unImplemented2_ ();
void unImplemented3_ ();
void unImplemented4_ ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_EditableText.idl b/idl/Accessibility_EditableText.idl
index 5e39f277..6e878adf 100644
--- a/idl/Accessibility_EditableText.idl
+++ b/idl/Accessibility_EditableText.idl
@@ -24,17 +24,84 @@
module Accessibility {
+ /**
+ * Derived from interface Text, EditableText provides methods for
+ * modifying textual content of components which support editing.
+ * EditableText also interacts with the system clipboard via copyText,
+ * cutText, and pasteText.
+ *
+ * @note read-only instances of EditableText are possible;
+ * These may be instances of a general-purpose component type which are
+ * sometimes, but not always, user-editable, or may be
+ * components which are temporarily or circumstantially
+ * in a non-editable state.
+ */
interface EditableText : Text {
-
+ /**
+ * Replace the text contents with a new string, discarding the old contents.
+ *
+ * @param newContents a UTF-8 string with which the text object's contents will be replaced.
+ * @returns \c True if the text content was successfully changed, \c False otherwise.
+ */
boolean setTextContents (in string newContents);
+ /**
+ * Insert new text contents into an existing text object at a given location, while retaining
+ * the old contents.
+ * @param position the character offset into the Text implementor's content at which the
+ * new content will be inserted.
+ * @param text a UTF-8 string of which \c length characters will be inserted into the text
+ * object's text buffer.
+ * @param length the number of characters of \c text to insert. If the character count
+ * of \c text is less than or equal to \c length, the entire contents of \c text
+ * will be inserted.
+ *
+ * @returns \c True if the text content was successfully inserted, \c False otherwise.
+ */
boolean insertText (in long position, in string text, in long length);
+ /**
+ * Apply a particular set of attributes to a range of text.
+ *
+ *
+ * @returns \c True if the text attributes were successfully modified, \c False otherwise.
+ */
boolean setAttributes (in string attributes, in long startPos, in long endPos);
+ /**
+ * Copy a range of text into the system clipboard.
+ * @param startPos the character offset of the first character in the range of text being
+ * copied.
+ * @param endPos the offset of the first character past the end of the range of text
+ * being copied.
+ */
void copyText (in long startPos, in long endPos);
+ /**
+ * Excise a range of text from a Text object, copying it into the system clipboard.
+ * @param startPos the character offset of the first character in the range of text being
+ * cut.
+ * @param endPos the offset of the first character past the end of the range of text
+ * being cut.
+ * @returns \c True if the text was successfully cut, \c False otherwise.
+ */
boolean cutText (in long startPos, in long endPos);
+ /**
+ * Excise a range of text from a Text object without copying it into the system clipboard.
+ * @param startPos the character offset of the first character in the range of text being
+ * deleted.
+ * @param endPos the offset of the first character past the end of the range of text
+ * being deleted.
+ * @returns \c True if the text was successfully deleted, \c False otherwise.
+ */
boolean deleteText (in long startPos, in long endPos);
+ /**
+ * Copy the text contents of the system clipboard, if any, into a Text object,
+ * inserting it at a particular character offset.
+ *
+ * @param position the character offset before which the text will be inserted.
+ * @returns \c True if the text was successfully pasted into the Text object, \c False otherwise.
+ */
boolean pasteText (in long position);
+
/**
- * unImplemented7:
+ * unImplemented:
*
* placeholders for future expansion. Note that these are named
* 'unimplemented5 and unimplemented6' to avoid conflict with
diff --git a/idl/Accessibility_Event.idl b/idl/Accessibility_Event.idl
index 792fa447..d7d11651 100644
--- a/idl/Accessibility_Event.idl
+++ b/idl/Accessibility_Event.idl
@@ -29,20 +29,122 @@ module Accessibility
{
interface Accessible;
+ /**
+ * A struct encapsulating detailed information about an Event.
+ * This struct supercedes the previous use of the 'any' field
+ * in EventDetails; the content previously stored in Event::any_data
+ * is now stored in EventDetails::any_data, and Event::any_data
+ * points to an instance of the EventDetails structure, if
+ * the object's implementation supports event detail reporting,
+ * otherwise Event::any_data contains CORBA_OBJECT_NIL.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ struct EventDetails {
+ Application host_application;
+ Role source_role;
+ string source_name;
+ any any_data;
+ };
+
+ /**
+ * A structure encapsulating information about an event
+ * for which notification was requested. Usually such notification
+ * is requested via a call to Registry::registerGlobalEventListener.
+ * The structure contains a colon-delimited string indicating the event
+ * type, a reference to the generating Accessible, two detail fields whose
+ * interpretation is event-type-specific, and a final field containing
+ * event-type-specific data.
+ *
+ * @note Since AT-SPI 1.7.0 the 'any' field contains an EventDetails
+ * struct, which encapsulates additional information about the event
+ * and its generating object.
+ */
struct Event {
+ /** A colon-delimited string indicating the type of the event.
+ * The string can be interpreted as
+ * \c class:type:subtype
+ * For instance ¨object:text-changed:insert¨ is an event
+ * from the 'Object' class, which corresponds to Accessible objects
+ * general, the type of the event is a ¨text-changed¨ event (i.e. a change in the
+ * content of an implementor of the Text interface), and the
+ * specific subtype of the change is an insertion event.
+ *
+ * Event classes include the following:
+ * \li focus: an object has received keyboard focus. This event has no type or subtype.
+ * \li window: a toplevel window has changed state.
+ * \li object: an object (i.e. Accessible) has undergone some change in state, content,
+ * or hierarchy
+ * \li document:a change to a document's content has occurred, or its
+ * content loading status has changed.
+ * \li mouse: an event originating from the pointing device. Rarely used;
+ * in most cases clients will wish to register for pointer events via
+ * the DeviceEventController::registerDeviceEvent method instead.
+ * \li keyboard: an event indicating that the keyboard state (for example, the
+ * modifier state) has changed significantly.
+ * "keyboard:" events are not sent for individual keystrokes except as
+ * a side-effect of certain keys, for instance modifier keys.
+ * Clients interested in key events should listen for DeviceEvents
+ * via DeviceEventController::registerKeystrokeListener instead.
+ *
+ * @note For more information on specific event types, see the documentation for
+ * each of the individual interfaces supported by some Accessible objects.
+ *
+ * @see Accessible, Component, Image, Selection, Table, Text, Value.
+ */
string type;
+ /**
+ * The Accessible object which is the source of the event. The source object is the object
+ * to which the change inferred by the event emission occurs; for instance,
+ * the object emitting a ¨object:parent-changed¨ event is the child, not the parent.
+ * Likewise, the event source of an ¨object:children-changed:insert¨ event is the parent,
+ * not the inserted child.
+ */
Accessible source;
+ /** An integer whose meaning is event type dependent. It may indicate the offset of
+ * text being inserted, in the case of ¨object:text-changed:insert¨, or the index of a
+ * newly added child in the case of ¨object:children-changed:add¨.
+ * @note since most AT-SPI clients react to events via an asynchronous queue, for
+ * performance reasons, this field may be of limited utility unless the client maintains
+ * a large client-side cache of the hierarchy and contained data. This is because by the time
+ * such an event is asynchronously processed, the state of the originating object may have
+ * changed. In other words, the data in the detail1 member is not state-coherent outside
+ * of the event handler. More useful results are gotten by examination of the 'any_data' field.
+ */
long detail1;
+ /** see description of detail2 */
long detail2;
+ /**
+ * A generic storage location for event-type-specific data which provides more specific
+ * information about the event; for instance, in AT-SPI versions prior to 1.7.0,
+ * in the case of ¨object:text-changed:insert¨ events, this field contains a string
+ * indicating the inserted text.
+ *
+ * @note Since AT-SPI 1.7.0, the data contained in this field is an EventDetails struct.
+ */
any any_data;
};
+ /**
+ * A generic interface implemented by objects for the
+ * receipt of event notifications. EventListener is the interface from which
+ * Accessibility::Registry is derived, and via which clients of the Registry
+ * receive notification of changes to an application's user interface and content.
+ */
interface EventListener : Bonobo::Unknown {
+ /**
+ * Synchronously notify an EventListener that an event has occurred, by passing it an
+ * Event struct.
+ * @param e The Event about which the listener is being notified.
+ */
void notifyEvent (in Event e);
+
+/** \cond */
void unImplemented_ ();
void unImplemented2_ ();
void unImplemented3_ ();
void unImplemented4_ ();
+/** \endcond */
};
};
diff --git a/idl/Accessibility_Hyperlink.idl b/idl/Accessibility_Hyperlink.idl
index 3c45f5da..90eb3bdb 100644
--- a/idl/Accessibility_Hyperlink.idl
+++ b/idl/Accessibility_Hyperlink.idl
@@ -24,14 +24,85 @@
module Accessibility {
+ /**
+ * Instances of Hyperlink are returned by Hypertext objects, and are
+ * the means by which end users and clients interact with linked, and in
+ * some cases embedded, content. Hyperlinks may have multiple "anchors",
+ * where an anchor corresponds to a reference to a particular resource with
+ * a corresponding resource identified (URI). Hyperlinks may be
+ * queried for their URIs, or queried for the objects corresponding to their
+ * anchors. The objects thus obtained are instances of Accessible,
+ * and may be queried, and manipulated via the Action interface.
+ *
+ * @note A Hyperlink implementor is normally NOT an Accessible;
+ * the preferred usage is for a Hyperlink's associated "objects"
+ * (accessed via the ::getObject method) are Accessibles. This means
+ * that Actions such as "open link" are normally invoked on
+ * the result of Hyperlink::getObject rather than directly on the
+ * Hyperlink instance. For historical reasons some implementors of Hyperlink
+ * implement Action as well. This usage on the part of implementing
+ * applications and toolkits is discouraged, but clients of Hyperlink
+ * should be aware of it and prepared to handle such usage.
+ */
interface Hyperlink : Bonobo::Unknown {
+ /** the number of separate anchors associated with this Hyperlink */
readonly attribute short nAnchors;
+ /**
+ * the starting offset within the containing Hypertext content
+ * with which this Hyperlink is associated
+ */
readonly attribute long startIndex;
+ /**
+ * the ending offset within the containing Hypertext content
+ * with which this Hyperlink is associated; that is, the offset of the
+ * first element past the range within the Hypertext associated with
+ * this Hyperlink.
+ */
readonly attribute long endIndex;
+ /**
+ * Gets the i'th object, (where i is an integer between 0 and
+ * Hyperlink::numAnchors - 1, inclusive) associated with a Hyperlink.
+ * The objects returned are usually actionable (i.e. they should implement
+ * Accessibility::Action), and the available actions often include
+ * "open", "bookmark", "save link as", etc. They may also implement
+ * Accessibility::StreamableContent, although clients can normally use
+ * ::getURI to obtain a resource locator via which the object's
+ * data may be accessed.
+ *
+ * @note the most common application for 'multi anchor'
+ * hyperlinks in HTML is probably "client side imagemaps".
+ * A clickable image which uses the HTML 'usemap' attribute
+ * should have one anchor for every &lt;area&gt; element that
+ * includes an HREF. The objects corresponding to these map
+ * areas may implement Accessibility::Component, to represent
+ * their onscreen bounding box, and may expose their 'shape' as
+ * as name-value pair via Accessibility::Accessible::getAttributeSet.
+ *
+ * @returns an Accessible object instance representing the
+ * Hyperlink's ith anchor, or through which the content associated with
+ * the \c ith anchor can be
+ * accessed.
+ */
Accessible getObject (in long i);
+ /**
+ * Obtain a resource locator ('URI') which can be used to
+ * access the content to which this link "points" or is connected.
+ * @returns a string corresponding to the URI of the Hyperlink's
+ * 'ith' anchor, if one exists, or a NIL string otherwise.
+ */
string getURI (in long i);
+ /**
+ * Check the hyperlink to see if a connection to its backing
+ * content can be established, or if its URI is valid.
+ * @note instances of invalid hyperlinks include links with malformed
+ * URIs, or for which a contact to the service provider
+ * specified in the URI cannot be established.
+ * @returns \c True if the object's content is available, or
+ * \c False if the hyperlink's URI is invalid, or
+ * a connection to the resource can not be established.
+ */
boolean isValid ();
- /**
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -40,5 +111,6 @@ module Accessibility {
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Hypertext.idl b/idl/Accessibility_Hypertext.idl
index 97dc74fd..552483d8 100644
--- a/idl/Accessibility_Hypertext.idl
+++ b/idl/Accessibility_Hypertext.idl
@@ -23,14 +23,52 @@
#include <Accessibility.idl>
module Accessibility {
-
+ /**
+ * An interface used for objects which implement linking between
+ * multiple resource or content locations, or multiple 'markers'
+ * within a single document. A Hypertext instance is associated with
+ * one or more Hyperlinks, which are associated with particular
+ * offsets within the Hypertext's included content.
+ *
+ * @note While this interface is derived from ::Text,
+ * there is no requirement that Hypertext instances have
+ * textual content; they may implement ::Image as well,
+ * and Hyperlinks need not have non-zero text offsets.
+ */
interface Hypertext : Bonobo::Unknown {
+ /**
+ * Query the hypertext object for the number of Hyperlinks it
+ * contains.
+ *
+ * @returns the number of Hyperlinks associated with this Hypertext
+ * object, as a long integer.
+ */
long getNLinks ();
+ /**
+ * Get one of the Hyperlinks associated with this Hypertext object,
+ * by index.
+ *
+ * @param linkIndex an integer from 0 to getNLinks() - 1.
+ * @returns the Hyperlink in this Hypertext object.
+ */
Hyperlink getLink (in long linkIndex);
+ /**
+ * Get the hyperlink index, if any, associated with a
+ * particular character offset in the Hypertext object.
+ * For Hypertext implementors without textual content, all
+ * hyperlinks are associated with character offset '0'.
+ *
+ * @return the index of the Hyperlink associated with character
+ * offset \c characterIndex, or -1 if no Hyperlink is associated
+ * with that character offset.
+ */
long getLinkIndex (in long characterIndex);
+
+ /** \cond */
void unImplemented ();
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Image.idl b/idl/Accessibility_Image.idl
index 54df08d2..6cf50f8e 100644
--- a/idl/Accessibility_Image.idl
+++ b/idl/Accessibility_Image.idl
@@ -2,7 +2,7 @@
* AT-SPI - Assistive Technology Service Provider Interface
* (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
*
- * Copyright 2001 Sun Microsystems, Inc.
+ * Copyright 2001 - 2005 Sun Microsystems, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -20,14 +20,84 @@
* Boston, MA 02111-1307, USA.
*/
+#include "Accessibility_Accessible.idl"
+
module Accessibility {
+ /**
+ * An interface implemented by objects which render image data or
+ * pictorial information to the screen. When onscreen components include
+ * graphical information that is not purely intended to enhance "3d effect"
+ * or visual layout, but which conveys some semantic or informational
+ * content to the sighted user, they should implement Image, and that
+ * semantic content should be conveyed textually to the extent possible
+ * via the image description, as well as the Accessible::name and
+ * Accessible::description properties.
+ */
interface Image : Bonobo::Unknown {
+ /**
+ * A UTF-8 string providing a textual description
+ * of what is visually depicted in the image.
+ *
+ * @note It is recommended that imageDescription be the shorter
+ * of the available image descriptions, for instance "alt text"
+ * in HTML images, and a longer description be provided in
+ * Accessible::accessible-description, if available.
+ * A short, one or two word label for the image should be provided in
+ * Accessible::accessible-name.
+ */
readonly attribute string imageDescription;
+ /**
+ * A string corresponding to the POSIX LC_MESSAGES locale used
+ * by the imageDescription.
+ * @since AT-SPI 1.7.0
+ */
+ readonly attribute string imageLocale;
+ /**
+ * Obtain a bounding box which entirely contains the image contents,
+ * as displayed on screen. The bounds returned do not account for
+ * any viewport clipping or the fact that the image may be
+ * partially or wholly obscured by other onscreen content.
+ * @note This method returns the bounds of the current onscreen
+ * view, and not the nominal size of the source data in the
+ * event that the original image has been rescaled.
+ *
+ * @param coordType If 0, the returned bounding box position is returned
+ * relative to the screen; if 1, the bounding box position is returned
+ * relative to the containing window.
+ * @returns a BoundingBox enclosing the image's onscreen representation.
+ */
BoundingBox getImageExtents (in short coordType);
+ /**
+ * Get the coordinates of the current image position on screen.
+ *
+ * @param x Back-filled with the x coordinate of the
+ * onscreen image (i.e. the minimum x coordinate)
+ * @param y Back-filled with the y coordinate of the
+ * onscreen image (i.e. the minimum y coordinate)
+ * @param coordType If 0, the returned x and y coordinates are
+ * returned relative to the screen;
+ * if 1, they are returned relative to the containing window.
+ */
void getImagePosition (out long x, out long y, in short coordType);
+ /**
+ * Obtain the width and height of the current onscreen view of the
+ * image. The extents returned do not account for
+ * any viewport clipping or the fact that the image may be
+ * partially or wholly obscured by other onscreen content.
+ * @note This method returns the size of the current onscreen
+ * view, and not the nominal or "original" size of the source
+ * image, in the event that the original image has been rescaled.
+ *
+ * @param width Back-filled with the x extents of the
+ * onscreen image (i.e. the image width in pixels)
+ * @param height Back-filled with the y extents of the
+ * onscreen image (i.e. the image height in pixels)
+ */
void getImageSize (out long width, out long height);
+
/**
+ * \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -35,6 +105,6 @@ module Accessibility {
void unImplemented ();
void unImplemented2 ();
void unImplemented3 ();
- void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_LoginHelper.idl b/idl/Accessibility_LoginHelper.idl
index 141fb3a2..140aea2b 100644
--- a/idl/Accessibility_LoginHelper.idl
+++ b/idl/Accessibility_LoginHelper.idl
@@ -28,7 +28,10 @@
module Accessibility {
/**
- * LoginHelper:
+ * @brief An interface for use by assistive technologies by which
+ * they can access system information and services on a 'need to know'
+ * basis while the screen is locked, during user authentication, or
+ * during other sensitive operations.
*
* This interface is intended for use by assistive technologies
* and related user-enabling services, and by applications and
@@ -38,23 +41,23 @@ module Accessibility {
* service.
*
* Such 'applications' (for instance, screen lock dialogs and
- * security-enabled web browsers) use the @LoginHelper client
+ * security-enabled web browsers) use the ::LoginHelper client
* interfaces, and the bonobo-activation query service, to
- * query for assistive technologies which advertise the @LoginHelper
+ * query for assistive technologies which advertise the ::LoginHelper
* service. The client then queries these assistive technologies
- * for their device I/O requirements, via the @getDeviceReqs call.
- * The client may then issue the advisory request @setSafe (TRUE),
- * which requests that the @LoginHelper-implementing service make a
+ * for their device I/O requirements, via the ::getDeviceReqs call.
+ * The client may then issue the advisory request ::setSafe (TRUE),
+ * which requests that the ::LoginHelper -implementing service make a
* best-effort attempt to make itself more secure (for instance,
* an onscreen keyboard might turn off word prediction, and a
* screenreader may turn off keyboard echo via speech). The return
- * value of @setSafe is an advisory indication of whether this attempt
+ * value of ::setSafe is an advisory indication of whether this attempt
* was successful (no specific guarantees are implied).
* Once the 'security sensitive' state is exited, the client should
- * call @setSafe (FALSE).
+ * call ::setSafe (FALSE).
*
- * The return values from @getDeviceReqs inform the client of which
- * services the @LoginHelper service (e. g. assistive technology) needs
+ * The return values from ::getDeviceReqs inform the client of which
+ * services the ::LoginHelper service (e. g. assistive technology) needs
* in order to do its job. The client may use this information to
* loosen any restrictions on access which it may currently have in
* place (for instance, keyboard grabs, etc.). If it does not do so,
@@ -64,12 +67,11 @@ module Accessibility {
**/
interface LoginHelper : Bonobo::Unknown {
- /*
- * WindowInfo:
+ /**
* A structure containing info about toplevel X windows that
- * the @LoginHelper instance wishes to have raised.
+ * the ::LoginHelper instance wishes to have raised.
*
- * @winID: The windowing-system-dependeny Window ID of the toplevel window.
+ * @param winID: The windowing-system-dependeny Window ID of the toplevel window.
*/
struct WindowInfo {
/* string display; */
@@ -82,7 +84,7 @@ module Accessibility {
/*
* DeviceReq:
*
- * The system and device access and services which the @LoginHelper-implementing
+ * The system and device access and services which the LoginHelper-implementing
* assistive technology requires in order to enable the user to use the system.
*
*/
@@ -104,30 +106,33 @@ module Accessibility {
/**
* setSafe:
+ * @param safe_mode: \c TRUE if the client is requesting that 'safe mode' be
+ * initiated, \c FALSE if the client is advising that 'safe mode' may be
+ * exited, i.e. normal operation may be resumed.
*
* Request a LoginHelper to enter "safe" mode, or
* inform LoginHelper that "safe" mode may be exited.
- * If @safe_mode is %TRUE, but the return value is %FALSE,
+ * If \a safe_mode is \c TRUE, but the return value is \c FALSE,
* the requesting client may wish to deny services to the
- * %LoginHelper, for instance avoid raising its toplevels.
+ * ::LoginHelper, for instance avoid raising its toplevels.
* The return value is purely advisory, and no guarantees are
* intended about what the implementing LoginHelper will do
* to improve security when in "safe" mode.
*
- * Returns: whether the %LoginHelper is now "safe" or not.
+ * @returns: whether the ::LoginHelper is now "safe" or not.
**/
boolean setSafe (in boolean safe_mode);
/**
* getDeviceReqs:
*
- * Query a @LoginHelper for the types of
+ * Query a ::LoginHelper for the types of
* device I/O it requires, in order to do its job.
- * For instance, a @LoginHelper which needs to receive keyboard
+ * For instance, a ::LoginHelper which needs to receive keyboard
* events will include
* Accessibility_LoginHelper_CORE_KEYBOARD in this list.
*
- * Returns: A sequence of @LoginHelper_DeviceReq indicating
+ * @returns: A sequence of ::LoginHelper_DeviceReq indicating
* the device I/O required in order to facilitate end-user access
* to the system.
**/
@@ -138,14 +143,15 @@ module Accessibility {
*
* Get a list of window IDs that need raising on login.
*
- * Returns: a sequence containing window IDS for toplevels which
+ * @returns: a sequence containing window IDS for toplevels which
* need to be raised/made visible during user authentication, in
- * order for the @LoginHelper to facilitate end-user access to the
+ * order for the ::LoginHelper to facilitate end-user access to the
* system.
**/
WindowList getRaiseWindows ();
/**
+ * \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -154,6 +160,7 @@ module Accessibility {
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Registry.idl b/idl/Accessibility_Registry.idl
index 88f8bfe0..5a41c32f 100644
--- a/idl/Accessibility_Registry.idl
+++ b/idl/Accessibility_Registry.idl
@@ -34,63 +34,90 @@ module Accessibility {
interface DeviceEventController;
+ /**
+ * The Registry is a service through which applications providing
+ * accessibility services (servers) can rendezvous with consumers of those
+ * services (Assistive Technologies). The Registry is the first "port of call" for
+ * accessible applications and for assistive technologies wishing to query and
+ * interact with those applications.
+ *
+ * The Registry service provides four basic functions to Assistive Technology (AT) clients:
+ * \li it provides a list of the applications who have registered with the AT-SPI
+ * framework, thereby announcing their participation in the AT-SPI framework;
+ * \li it allows AT clients to register for notification of changes in application
+ * state (at-spi Events);
+ * \li it dispatches/relays said events from participating applications to
+ * the registered listeners;
+ * \li it gives access to system device events via the associated DeviceEventController
+ * interface.
+ *
+ * From the point of view of accessible applications (i.e. AT-SPI service producers),
+ * the Registry is primarily a registration and event delivery service. Applications
+ * normally only call the registerApplication and deregisterApplication Registry methods,
+ * and its inherited EventListener::notifyEvent method.
+ *
+ * @note Although all application events are dispatched via the Registry, other AT client
+ * calls are serviced directly by the applications, rather than being relayed via the
+ * Registry. The AT client obtains references to these application objects
+ * via the enumeration of Desktop instances whose children are Application instances
+ * (Registry::getDesktopList) and via examination of the 'source' member of the Event
+ * structure.
+ *
+ * The Registry normally lives in its own process space; communication via Registry and
+ * both application services and AT clients takes place via IPC. A process space diagram
+ * illustrating the relationship between applications, Registry, and AT is shown below.
+ * @image html "http://developer.gnome.org/projects/gap/tech-docs/SPIBlockDiagram.png"
+ *
+ *
+ * @see Desktop, Application, Event, EventListener
+ **/
interface Registry : EventListener {
/**
- * registerApplication:
- * @application: a reference to the requesting @Application
- *
* Register a new application with the accessibility broker.
- *
+ * @param application: a reference to the requesting Application
**/
oneway void registerApplication (in Application application);
/**
+ * De-register an application previously registered with the broker.
* deregisterApplication:
- * @application: a reference to the @Application
+ * @param application: a reference to the Application
* to be deregistered.
- *
- * De-register an application previously registered with the broker.
- *
**/
void deregisterApplication (in Application application);
/**
- * registerGlobalEventListener:
- * @listener: a reference to the requesting @EventListener.
- * @eventName: a string which indicates the type of events about
- * which the client desires notification.
- *
* Register a client's interest in (all) application events of
* a certain type.
- *
+ * @param listener: a reference to the requesting ::EventListener.
+ * @param eventName: a string which indicates the type of events about
+ * which the client desires notification.
**/
void registerGlobalEventListener (in EventListener listener,
in string eventName);
/**
- * deregisterGlobalEventListener:
- * @listener: the requesting @EventListener
- * @eventName: a string indicating the type of events
+ * deregisterGlobalEventListenerAll:
+ * @param listener: the requesting EventListener
*
* Request that a previously registered client stop receiving
- * global notifications for events of a certain type.
+ * global notifications for all events for which it was registered.
*
**/
-
void deregisterGlobalEventListenerAll (in EventListener listener);
+
/**
* deregisterGlobalEventListener:
- * @listener: the requesting @EventListener
- * @eventName: a string indicating the type of events
+ * @param listener: the requesting EventListener
+ * @param eventName: a string indicating the type of events
*
* Request that a previously registered client stop receiving
* global notifications for events of a certain type.
*
**/
-
void deregisterGlobalEventListener (in EventListener listener,
- in string event_name);
+ in string eventName);
/**
* event types: "Window" "Desktop"
* "Window:Create" "Window:Destroy"
@@ -112,39 +139,37 @@ module Accessibility {
* getDesktopCount:
*
* Get the current number of desktops.
- * Returns: a short integer indicating the current number of
- * @Desktops.
+ * @returns a short integer indicating the current number of
+ * Desktops.
**/
short getDesktopCount ();
/**
* getDesktop:
- * @n: the index of the requested @Desktop.
+ * @n: the index of the requested Desktop.
*
* Get the nth accessible desktop.
*
- * Returns: a reference to the requested @Desktop.
+ * @returns a reference to the requested Desktop.
**/
Desktop getDesktop (in short n);
/**
- * getDesktopList:
- *
* Get a list of accessible desktops.
*
- * Returns: a sequence containing references to
- * the @Desktops.
+ * @returns: a sequence containing references to
+ * the Desktops.
**/
DesktopSeq getDesktopList ();
/**
- * getDeviceEventController:
+ * Obtain an object which can be used to request device event notifications.
*
- * Returns: an object implementing DeviceEventController
+ * @returns: an object implementing DeviceEventController
**/
DeviceEventController getDeviceEventController ();
- /**
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -155,58 +180,191 @@ module Accessibility {
void unImplemented4 ();
void unImplemented5 ();
void unImplemented6 ();
+ /** \endcond */
};
- /* Deprecated, DO NOT USE! */
+ /** Deprecated, DO NOT USE! */
enum KeyEventType {
KEY_PRESSED,
KEY_RELEASED
};
+ /** Used to specify the event types of interest to an EventListener, or
+ * to identify the type of an event for which notification has been sent.
+ * @see EventTypeSeq, DeviceEvent::type
+ */
enum EventType {
- KEY_PRESSED_EVENT,
- KEY_RELEASED_EVENT,
- BUTTON_PRESSED_EVENT,
- BUTTON_RELEASED_EVENT
+ KEY_PRESSED_EVENT, /**< key on a keyboard device was pressed. */
+ KEY_RELEASED_EVENT, /**< key on a keyboard device was released. */
+ BUTTON_PRESSED_EVENT,/**< button on a non-keyboard human interface device
+ * (HID) was pressed */
+ BUTTON_RELEASED_EVENT /**< button on a non-keyboard human interface device
+ * (HID) was pressed */
};
+ /** Used when synthesizing keyboard input via DeviceEventController:generateKeyboardEvent.*/
enum KeySynthType {
- KEY_PRESS,
- KEY_RELEASE,
- KEY_PRESSRELEASE,
- KEY_SYM,
- KEY_STRING
+ KEY_PRESS,/** emulate the pressing of a hardware keyboard key. */
+ KEY_RELEASE,/** emulate the release of a hardware keyboard key. */
+ KEY_PRESSRELEASE,/** a hardware keyboard key is pressed and immediately released. */
+ KEY_SYM,/** a symbolic key event is generated, without specifying a hardware key.
+ * @note if the keysym is not present in the current keyboard map,
+ * the DeviceEventController instance has a limited ability to generate
+ * such keysyms on-the-fly. Reliability of generateKeyboardEvent calls
+ * using out-of-keymap keysyms will vary from system to system, and on the
+ * number of different out-of-keymap being generated in quick succession.
+ * In practice this is rarely significant, since the keysyms of interest to
+ * AT clients and keyboard emulators are usually part of the current keymap, i.e.
+ * present on the system keyboard for the current locale (even if a physical
+ * hardware keyboard is not connected.
+ */
+ KEY_STRING /** a string is converted to its equivalent keyboard events and emitted.
+ * If the string consists of complex character or composed characters
+ * which are not in the current keymap, string emission is subject to the
+ * out-of-keymap limitations described for KeySynthType::KEY_SYM.
+ * In practice this limitation primarily effects Chinese and Japanese locales.
+ */
};
enum ModifierType {
- MODIFIER_SHIFT,
- MODIFIER_SHIFTLOCK,
- MODIFIER_CONTROL,
- MODIFIER_ALT,
- MODIFIER_META,
+ MODIFIER_SHIFT, /** The left or right 'Shift' key */
+ MODIFIER_SHIFTLOCK, /** The ShiftLock or CapsLock key */
+ MODIFIER_CONTROL,/** 'Control'/'Ctrl' */
+ MODIFIER_ALT,/** The Alt key (as opposed to AltGr) */
+ MODIFIER_META,/** depending on the platform this may map to 'Window', 'Function', 'Meta',
+ * 'Menu', or 'NumLock'.
+ * Such 'Meta keys' will map to one of META, META2, META3.
+ * On X Windows platforms these META values map to
+ * the modifier masks Mod1Mask, Mod2Mask, Mod3Mask, e.g. an event having
+ * ModifierType::MODIFIER_META2 means that the 'Mod2Mask' bit is
+ * set in the corresponding XEvent.
+ */
MODIFIER_META2,
MODIFIER_META3,
- MODIFIER_NUMLOCK
+ MODIFIER_NUMLOCK/** A symbolic meta key name that is mapped by AT-SPI to the
+ * appropriate META value, for the convenience of the client.
+ */
};
+ /** A structure that encapsulates the characteristics of the event notifications
+ * that should be sent to an EventListener in response to a call to
+ * DeviceEventController::registerKeystrokeListener or
+ * DeviceEventController::registerDeviceEventListener. */
struct EventListenerMode {
- boolean synchronous;
- boolean preemptive;
- boolean global;
+ boolean synchronous; /**< If \c True, specifies that
+ * DeviceEventController should block while waiting
+ * for client to process the requested event notifications;
+ * ordinarily should be used only when client needs to perform
+ * operations synchronously with event delivery. Note that because
+ * of the architecture of device event systems in general,
+ * use of this flag may not block delivery of the event to
+ * the currently focussed application unless it is used in
+ * conjunction with the preemptive flag. */
+ boolean preemptive; /**< If \c True, specifies that
+ * Listener is allowed to pre-empt the delivery of the event,
+ * effectively "consuming" it such that it is not delivered
+ * to the currently focussed desktop application.
+ * Key events consumed via this API will not be
+ * available for use by other applications or services, so this
+ * option should be used sparingly. */
+ boolean global; /**< If \c True, specifies that
+ * Event notifications should be sent regardless of whether the
+ * currently focussed application participates in the AT-SPI
+ * infrastructure. On systems with the XEvIE X extension, this flag
+ * also allows access to events which are already subject to
+ * interception via a "system keygrab" (as described in the X Window System
+ * documentation for XGrabKey). The 'global' and 'preemptive' flags
+ * should only be used together for the purposes of registering
+ * "system global key shortcuts" i.e. command keys for use by the
+ * assistive technology. */
};
+ /**
+ * an unsigned short int consisting of zero or more of the following
+ * values OR'ed together:
+ *
+ * \li \c 1<<::KEY_PRESSED_EVENT = 1
+ * \li \c 1<<::KEY_RELEASED_EVENT = 2
+ * \li \c 1<<::BUTTON_PRESSED_EVENT = 3,
+ * \li \c 1<<::BUTTON_RELEASED_EVENT = 4
+ **/
typedef unsigned long ControllerEventMask;
+ /** A structure which encapsulates information about a device event. */
struct DeviceEvent {
- EventType type;
- long id;
- short hw_code;
- unsigned short modifiers;
- unsigned long timestamp;
- string event_string;
- boolean is_text;
+ EventType type; /**< Identifies the type of the containing DeviceEvent. */
+ long id; /**< an identifier which identifies this event in the event stream.
+ * On X Window systems this corresponds to the XEvent serial number.
+ */
+ short hw_code; /**< a numeric code which is hardware and system-dependent, identifying the
+ * specific hardware button or key on the device for which the event has
+ * occurred. On X Window systems, for global key notifications and for most
+ * non-global key notifications as well, this code corresponds to the
+ * XKeycode. For switch and button events it indicates the switch
+ * or button number.
+ * @note
+ * For technical reasons, this code may differ from the XKeycode
+ * when generated by Java applications for consumption by non-global
+ * key listeners. This is subject to change in future versions of the
+ * DeviceEventController implementation.
+ */
+
+ unsigned short modifiers; /**< an unsigned short int consisting of zero or more of the following
+ * values OR'ed together:
+ * \li \c 1<<::MODIFIER_SHIFT (=1, corresponds to Xlib's ShiftMask)
+ * \li \c 1<<::MODIFIER_SHIFTLOCK (=2, corresponds to Xlib's LockMask)
+ * \li \c 1<<::MODIFIER_CONTROL (=4, corresponds to Xlib's ControlMask)
+ * \li \c 1<<::MODIFIER_ALT (=8, corresponds to Xlib's Mod1Mask)
+ * \li \c 1<<::MODIFIER_META (=16, corresponds to Xlib's Mod2Mask)
+ * \li \c 1<<::MODIFIER_META2 (=32, corresponds to Xlib's Mod3Mask)
+ * \li \c 1<<::MODIFIER_META3 (=64, corresponds to Xlib's Mod4Mask)
+ **/
+ unsigned long timestamp; /**< an unsigned integer representing the time that the
+ * event occurred. On X Window systems this event is
+ * a time in milliseconds from some arbitrary starting
+ * point; it therefore has a cycle time of approximately
+ * 50 days.
+ */
+ string event_string; /**< A string representation of the event. If is_text is
+ * \c True, then this string represents the character or typographic
+ * sequence that would be received by a focussed text input field.
+ * event_string is in general suitable for exposure to the
+ * end-user for purposes of keyboard echo.
+ */
+ boolean is_text; /**< \c True if the event results in the insertion of characters
+ * into an input text buffer, or would do so if delivered to a focussed
+ * text input field. ¨Typographical¨ key events have this field set to
+ * \c True, whereas ¨control¨ key events generally do not.
+ */
};
+ /**
+ * A structure which defines the identity of a key for which notifications
+ * are to be requested. The data in the members of a ::KeyDefinition are used to
+ * determine which keyboard events 'match' the notification request filed by a client.
+ *
+ * @note Ordinarily a KeyDefinition specifies one and only one of the criteria below;
+ * the result of using a KeyDefinition with multiple members defined as nonzero is
+ * undefined.
+ *
+ * @param keycode if nonzero, the numeric, system-dependent value corresponding to a
+ * physical key on the keyboard. Keycode values have no semantic meaning to the end-user,
+ * and may depend on the user's hardware and operating environment. They therefore are
+ * rarely useful "as-is" to AT clients, unless the client has used operating system
+ * services to identify the hardward keycode associated with a particular key symbol.
+ * Notifications for key events requested by keycode are less dependent on modifier state
+ * than \c keysym based notifications, but some hardware (notably many laptops) may generate
+ * more than one keycode for the same physical key, depending on the state of physical
+ * shift/modifier keys.
+ * @param keysym if nonzero, the numeric value corresponding to the X Keysym of the key for which
+ * notification is requested. Note that the presence of active modifiers will affect
+ * whether notification for key events requested via "keysym" specification takes place,
+ * since the keysym depends on the modifier state for most keys.
+ * @param keystring if non-NULL, the string value of the inserted characters if the corresponding
+ * key event has ::KeyEvent:is_text set to \c True, or the string representing the
+ * 'name' of the key. On X11 systems, the string 'name' of non-printing keysyms corresponds
+ * to the values in "keysymdef.h" as provided by Xlib, with the leading "XK_" stripped off.
+ **/
struct KeyDefinition {
long keycode;
long keysym;
@@ -218,33 +376,56 @@ module Accessibility {
typedef sequence< EventType > KeyEventTypeSeq;
typedef sequence< EventType > EventTypeSeq;
+ /** This interface should be implemented by AT-SPI clients who wish to
+ * make use of the DeviceEventController to receive device event notifications.
+ * DeviceEvents include keyboard events and mouse button/motion events.
+ **/
interface DeviceEventListener : Bonobo::Unknown {
+ /** Notify an interested DeviceEventListener that a DeviceEvent has occurred.
+ * @returns \c True if the recipient/consumer wishes to consume the event, i.e.
+ * prevent it from being delivered to the desktop, \c False if the event should
+ * continue to be delivered as normal.
+ */
boolean notifyEvent (in DeviceEvent event);
+ /** \cond */
void unImplemented__ ();
void unImplemented_2_ ();
void unImplemented_3_ ();
void unImplemented_4_ ();
void unImplemented_5_ ();
void unImplemented_6_ ();
+ /** \endcond */
};
+ /**
+ * The interface via which clients request notification of device events, and
+ * through which device events may be simulated.
+ ***/
interface DeviceEventController : Bonobo::Unknown {
/**
- * registerKeystrokeListener:
- * @listener: a @DeviceEventListener which will intercept key events.
- * @keys: a @KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
- * @mask: a @ControllerEventMask filtering the intercepted key events.
- * @type: an @EventType mask that may created by ORing event types together.
- * @is_synchronous: a @boolean indicating whether the listener should
- * receive the events synchronously, potentially consuming them,
- * or just be notified asynchronously of those events that have
- * been generated.
- * Returns: %true if successful, %false if not
- *
* Register to intercept keyboard events, and either pass them on or
* consume them.
*
+ * @param listener: a DeviceEventListener which will intercept key events.
+ * @param keys: a KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
+ * @param mask: a ControllerEventMask filtering the intercepted key events.
+ * @param type: a KeyEventTypeSeq that may created by ORing event types together.
+ * @param mode: an EventListenerMode indicating whether the listener should
+ * receive the events synchronously, potentially consuming them,
+ * or just be notified asynchronously of those events that have
+ * been generated.
+ * @note Some platforms have limited support for global, preemptive EventListenerMode.
+ * Such a registration may fail if another client already has priority for preemptive
+ * access to one or more of the members of the KeySet. AT consumers have the option
+ * of re-trying the request without the global flag, or without the preemptive flag,
+ * or of re-trying with a different KeySet. The best support for pre-emptive
+ * global keyboard listeners is provided on platforms whose Xserver implementation
+ * provides the XEvIE extension.
+ *
+ * @returns \c True if the DeviceEventListener was successfully registered
+ * for the requested KeySet, ControllerEventMask, event types, and EventListenerMode;
+ * otherwise returns \c False.
**/
boolean registerKeystrokeListener (in DeviceEventListener listener,
in KeySet keys,
@@ -253,16 +434,11 @@ module Accessibility {
in EventListenerMode mode);
/**
- * deregisterKeystrokeListener:
- * @listener: a @DeviceEventListener which will intercept key events.
- * @keys: a @KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
- * @mask: a @ControllerEventMask filtering the intercepted key events.
- * @type: an @EventType mask that may created by ORing event types together.
- *
- * Returns: void
- *
* De-register a previously registered keyboard eventlistener.
- *
+ * @param listener: a DeviceEventListener which will intercept key events.
+ * @param keys: a KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
+ * @param mask: a ControllerEventMask filtering the intercepted key events.
+ * @param type: an EventType mask that may created by ORing event types together.
**/
void deregisterKeystrokeListener (in DeviceEventListener listener,
in KeySet keys,
@@ -270,78 +446,88 @@ module Accessibility {
in KeyEventTypeSeq type);
/**
- * registerDeviceEventListener:
- * @listener: a @DeviceEventListener which will intercept events.
- * @typeseq: an @EventTypeSeq indicating which event types to listen for.
- * Returns: %true if successful, %false if not
- *
* Register to intercept events, and either pass them on or
* consume them. To listen to keyboard events use registerKeystrokeListener
* instead.
- *
+ * @param listener: a DeviceEventListener which will intercept events.
+ * @param typeseq: an EventTypeSeq indicating which event types to listen for.
+ * @returns \c True if successful, \c False if not
**/
boolean registerDeviceEventListener (in DeviceEventListener listener,
in EventTypeSeq typeseq);
/**
- * deregisterDeviceEventListener:
- * @listener: a @DeviceEventListener which will intercept events.
- * @typeseq: an @EventTypeSeq indicating which event types to stop
- * listening for.
- *
- * Returns: void
- *
* De-register a previously registered keyboard eventlistener.
- *
+ * @param listener: a DeviceEventListener which will intercept events.
+ * @param typeseq: an EventTypeSeq indicating which event types to stop
+ * listening for.
**/
void deregisterDeviceEventListener (in DeviceEventListener listener,
in EventTypeSeq typeseq);
+ /**
+ * Notify the Registry instance that a device event has taken place, and
+ * allow pre-emptive listeners the opportunity to 'consume' the event
+ * and thus prevent its further issuance/forwarding. This is the
+ * method used by accessibility bridges to forward "toolkit dependent"
+ * device events to the Registry from the application's process space.
+ *
+ * @note AT clients do not normally need to use this method, it is intended for use
+ * by toolkit bridges and special-purpose applications.
+ *
+ * @returns \c True if the event was consumed by a (pre-emptive) listener,
+ * \c False if not (in which case the device event will be forwarded
+ * as normal to any application which would normally receive it, e.g.
+ * the currently active application in the case of mouse or keyboard events).
+ **/
boolean notifyListenersSync (in DeviceEvent event);
+ /**
+ * Notify the Registry instance that a device event has taken place in
+ * an asynchronous manner. This is the
+ * method used by accessibility bridges to forward "toolkit dependent"
+ * device events to the Registry from the application's process space.
+ * If the event in question is potentially pre-emptible.
+ * ::notifyListenersSync should be used instead.
+ *
+ * @note AT clients do not normally need to use this method, it is intended for use
+ * by toolkit bridges and special-purpose applications.
+ **/
oneway void notifyListenersAsync (in DeviceEvent event);
/**
- * generateKeyboardEvent:
- * @keycode: a long integer indicating the keycode of
+ * Synthesize a keyboard event.
+ * @param keycode: a long integer indicating the keycode of
* the keypress to be synthesized.
- * @keystring: an optional UTF-8 string indicating a complex
+ * @param keystring: an optional UTF-8 string indicating a complex
* keyboard input event.
- * @type: a #KeySynthType indicating the type of event(s) to be
+ * @param type: a KeySynthType indicating the type of event(s) to be
* synthesized: a key press, release, press-release pair,
* or a complex input string (for instance from an
* internationalized or complex text input method, or
* a composed character).
*
- * Note that @keycode may be truncated before being
+ * @note keycode may be truncated before being
* processed, as keycode length may be platform-dependent
* and keycode ranges are generally much smaller than
* CORBA_long.
- * One or the other of @keycode or @keystring are generally NULL,
- * (but not both), depending on the value of @type.
+ * One or the other of keycode or keystring are generally NULL,
+ * (but not both), depending on the value of \c type.
*
- * Returns: void
- *
- * Synthesize a keyboard event.
- *
**/
void generateKeyboardEvent (in long keycode,
in string keystring,
in KeySynthType type);
/**
- * generateMouseEvent:
- * @x: a long integer indicating the screen x coord for the mouse event.
- * @y: a long integer indicating the screen y coord for the mouse event.
- * @eventName: a string indicating the type of mouse event, e.g. "button1up"
- * Returns: void
- *
* Synthesize a mouse event.
- *
+ * @param x: a long integer indicating the screen x coord for the mouse event.
+ * @param y: a long integer indicating the screen y coord for the mouse event.
+ * @param eventName: a string indicating the type of mouse event, e.g. "button1up"
**/
void generateMouseEvent (in long x, in long y, in string eventName);
- /**
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -350,6 +536,7 @@ module Accessibility {
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Relation.idl b/idl/Accessibility_Relation.idl
index 2d2b1e42..b6f2911b 100644
--- a/idl/Accessibility_Relation.idl
+++ b/idl/Accessibility_Relation.idl
@@ -25,39 +25,97 @@
module Accessibility {
+ /**
+ * RelationType specifies a relationship between objects (possibly one-to-many or many-to-one)
+ * outside of the normal parent/child hierarchical relationship. It allows better semantic
+ * identification of how objects are associated with one another.
+ * For instance the RELATION_LABELLED_BY relationship may be used to identify labelling information
+ * that should accompany the accessibleName property when presenting an object's content or identity
+ * to the end user. Similarly, RELATION_CONTROLLER_FOR can be used to further specify the context
+ * in which a valuator is useful, and/or the other UI components which are directly effected by
+ * user interactions with the valuator. Common examples include association of scrollbars with
+ * the viewport or panel which they control.
+ */
enum RelationType {
+ /** Not a meaningful relationship; clients should not normally encounter this RelationType value. */
RELATION_NULL,
+ /** Object is a label for one or more other objects. */
RELATION_LABEL_FOR,
+ /** Object is labelled by one or more other objects. */
RELATION_LABELLED_BY,
+ /** Object is an interactive object which modifies the state, onscreen location, or other attributes
+ * of one or more target objects. */
RELATION_CONTROLLER_FOR,
+ /** Object state, position, etc. is modified/controlled by user interaction with one or
+ * more other objects. For instance a viewport or scroll pane may be CONTROLLED_BY scrollbars. */
RELATION_CONTROLLED_BY,
+ /** Object has a grouping relationship (e.g. ¨same group as¨) to one or more other objects. */
RELATION_MEMBER_OF,
+ /** Object is a tooltip associated with another object. */
RELATION_TOOLTIP_FOR,
+ /** Reserved for future use. */
RELATION_NODE_CHILD_OF,
+ /** Used to indicate that a relationship exists, but its type is not specified in the enumeration
+ * and must be obtained via a call to getRelationTypeName. */
RELATION_EXTENDED,
+ /** Object renders content which flows logically to another object.
+ * For instance, text in a paragraph may flow to another object which is not the
+ * ¨next sibling¨ in the accessibility hierarchy. */
RELATION_FLOWS_TO,
+ /** Reciprocal of RELATION_FLOWS_TO. */
RELATION_FLOWS_FROM,
+ /** Object is visually and semantically considered a subwindow of another object, even though
+ * it is not the object's child. Useful when dealing with embedded applications and other cases
+ * where the widget hierarchy does not map cleanly to the onscreen presentation. */
RELATION_SUBWINDOW_OF,
+ /** Similar to SUBWINDOW_OF, but specifically used for cross-process embedding. */
RELATION_EMBEDS,
+ /** Reciprocal of RELATION_EMBEDS; Used to denote content rendered by embedded renderers that
+ * live in a separate process space from the embedding context. */
RELATION_EMBEDDED_BY,
+ /** Denotes that the object is a transient window or frame associated with another onscreen object.
+ * Similar to TOOLTIP_FOR, but more general. Useful for windows which are technically
+ * toplevels but which, for one or more reasons, do not explicitly cause their associated
+ * window to lose ¨window focus¨. Creation of a ROLE_WINDOW object with the POPUP_FOR relation
+ * usually requires some presentation action on the part of assistive technology clients, even though
+ * the previous toplevel ROLE_FRAME object may still be the active window. */
RELATION_POPUP_FOR,
+ /** This is the reciprocal relation to RELATION_POPUP_FOR. */
+ RELATION_PARENT_WINDOW_OF,
+ /** Do not use as a parameter value, used to determine the size of the enumeration. */
RELATION_LAST_DEFINED
};
- /*
- * This interface inherits from a base class implementing ref counts.
+ /**
+ * An interface via which objects' non-hierarchical relationships to one another
+ * are indicated. An instance of Relations represents a "one-to-many" correspondance.
+ *
+ * @note This interface inherits from a base class implementing ref counts.
*/
-
interface Relation : Bonobo::Unknown {
+
+ /** @returns the RelationType of this Relation. */
RelationType getRelationType ();
- string getRelationTypeName ();
+
+ /** @returns an unlocalized string representing the relation type. */
+ string getRelationTypeName ();
+
+ /** @returns the number of objects to which this relationship applies. */
short getNTargets ();
+
+ /** @returns an Object which is the 'nth'target of this Relation, e.g. the Object at index i
+ * in the list of Objects having the specified relationship to this Accessible.
+ * \note This target should always implement Accessible, though it is returned as an Object.
+ * (In this respect this method is probably ill-specified.)
+ **/
Object getTarget (in short index);
- /* placeholders for future expansion */
+
+ /** \cond placeholders for future expansion */
void unImplemented ();
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Role.idl b/idl/Accessibility_Role.idl
index a64f66a2..b70e86ad 100644
--- a/idl/Accessibility_Role.idl
+++ b/idl/Accessibility_Role.idl
@@ -26,255 +26,267 @@
module Accessibility {
enum Role {
+ /** A Role indicating an error condition, such as uninitialized Role data. */
ROLE_INVALID,
- /* Object is a label indicating the keyboard accelerators for the parent */
+ /** Object is a label indicating the keyboard accelerators for the parent */
ROLE_ACCELERATOR_LABEL,
- /* Object is used to alert the user about something */
+ /** Object is used to alert the user about something */
ROLE_ALERT,
- /* Object contains a dynamic or moving image of some kind */
+ /** Object contains a dynamic or moving image of some kind */
ROLE_ANIMATION,
- /* Object is a 2d directional indicator */
+ /** Object is a 2d directional indicator */
ROLE_ARROW,
- /* Object contains one or more dates, usually arranged into a 2d list */
+ /** Object contains one or more dates, usually arranged into a 2d list */
ROLE_CALENDAR,
- /* Object that can be drawn into and is used to trap events */
+ /** Object that can be drawn into and is used to trap events */
ROLE_CANVAS,
- /*
+ /**
* A choice that can be checked or unchecked and provides a separate
* indicator for the current state.
*/
ROLE_CHECK_BOX,
- /* A menu item that behaves like a check box (see ROLE_CHECK_BOX) */
+ /** A menu item that behaves like a check box (see ROLE_CHECK_BOX) */
ROLE_CHECK_MENU_ITEM,
- /* A specialized dialog that lets the user choose a color. */
+ /** A specialized dialog that lets the user choose a color. */
ROLE_COLOR_CHOOSER,
- /* The header for a column of data */
+ /** The header for a column of data */
ROLE_COLUMN_HEADER,
- /* A list of choices the user can select from */
+ /** A list of choices the user can select from */
ROLE_COMBO_BOX,
- /* An object which allows entry of a date */
+ /** An object which allows entry of a date */
ROLE_DATE_EDITOR,
- /* An inconifed internal frame within a DESKTOP_PANE */
+ /** An inconifed internal frame within a DESKTOP_PANE */
ROLE_DESKTOP_ICON,
- /*
+ /**
* A pane that supports internal frames and iconified versions of those
* internal frames.
*/
ROLE_DESKTOP_FRAME,
- /*
+ /**
* An object that allows a value to be changed via rotating a visual element,
* or which displays a value via such a rotating element.
*/
ROLE_DIAL,
- /* A top level window with title bar and a border */
+ /** A top level window with title bar and a border */
ROLE_DIALOG,
- /*
+ /**
* A pane that allows the user to navigate through and select the contents
* of a directory
*/
ROLE_DIRECTORY_PANE,
- /*
+ /**
* A specialized dialog that displays the files in the directory and lets
* the user select a file, browse a different directory, or specify a
* filename.
*/
ROLE_DRAWING_AREA,
- /*
+ /**
* An object used for drawing custom user interface elements.
*/
ROLE_FILE_CHOOSER,
- /*
+ /**
* A object that fills up space in a user interface
*/
ROLE_FILLER,
- /* XXX Don't know sure about this. */
+ /** XXX Don't use, reserved for future use. */
ROLE_FOCUS_TRAVERSABLE,
- /* Allows selection of a display font */
+ /** Allows selection of a display font */
ROLE_FONT_CHOOSER,
- /* A top level window with a title bar, border, menubar, etc. */
+ /** A top level window with a title bar, border, menubar, etc. */
ROLE_FRAME,
- /* A pane that is guaranteed to be painted on top of all panes beneath it */
+ /** A pane that is guaranteed to be painted on top of all panes beneath it */
ROLE_GLASS_PANE,
- /*
+ /**
* A document container for HTML, whose children
* represent the document content.
*/
ROLE_HTML_CONTAINER,
- /* A small fixed size picture, typically used to decorate components */
+ /** A small fixed size picture, typically used to decorate components */
ROLE_ICON,
- /* An image, typically static. */
+ /** An image, typically static. */
ROLE_IMAGE,
- /* A frame-like object that is clipped by a desktop pane. */
+ /** A frame-like object that is clipped by a desktop pane. */
ROLE_INTERNAL_FRAME,
- /* An object used to present an icon or short string in an interface */
+ /** An object used to present an icon or short string in an interface */
ROLE_LABEL,
- /*
+ /**
* A specialized pane that allows its children to be drawn in layers,
* providing a form of stacking order.
*/
ROLE_LAYERED_PANE,
- /*
+ /**
* An object that presents a list of objects to the user and allows the
* user to select one or more of them.
*/
ROLE_LIST,
- /* An object that represents an element of a list. */
+ /** An object that represents an element of a list. */
ROLE_LIST_ITEM,
- /*
+ /**
* An object usually found inside a menu bar that contains a list of
* actions the user can choose from.
*/
ROLE_MENU,
- /*
+ /**
* An object usually drawn at the top of the primary dialog box of an
* application that contains a list of menus the user can choose from.
*/
ROLE_MENU_BAR,
- /*
+ /**
* An object usually contained in a menu that presents an action the
* user can choose.
*/
ROLE_MENU_ITEM,
- /* A specialized pane whose primary use is inside a DIALOG */
+ /** A specialized pane whose primary use is inside a DIALOG */
ROLE_OPTION_PANE,
- /* An object that is a child of a page tab list */
+ /** An object that is a child of a page tab list */
ROLE_PAGE_TAB,
- /*
+ /**
* An object that presents a series of panels (or page tabs), one at a time,
* through some mechanism provided by the object.
*/
ROLE_PAGE_TAB_LIST,
- /* A generic container that is often used to group objects. */
+ /** A generic container that is often used to group objects. */
ROLE_PANEL,
- /*
+ /**
* A text object uses for passwords, or other places where the text
* content is not shown visibly to the user.
*/
ROLE_PASSWORD_TEXT,
- /*
+ /**
* A temporary window that is usually used to offer the user a list of
* choices, and then hides when the user selects one of those choices.
*/
ROLE_POPUP_MENU,
- /* An object used to indicate how much of a task has been completed. */
+ /** An object used to indicate how much of a task has been completed. */
ROLE_PROGRESS_BAR,
- /*
+ /**
* An object the user can manipulate to tell the application to do
* something.
*/
ROLE_PUSH_BUTTON,
- /*
+ /**
* A specialized check box that will cause other radio buttons in the
* same group to become uncghecked when this one is checked.
*/
ROLE_RADIO_BUTTON,
- /* Object is both a menu item and a "radio button" (see ROLE_RADIO_BUTTON) */
+ /** Object is both a menu item and a "radio button" (see ROLE_RADIO_BUTTON) */
ROLE_RADIO_MENU_ITEM,
- /*
+ /**
* A specialized pane that has a glass pane and a layered pane as its
* children.
*/
ROLE_ROOT_PANE,
- /* The header for a row of data */
+ /** The header for a row of data */
ROLE_ROW_HEADER,
- /*
+ /**
* An object usually used to allow a user to incrementally view a large
- * amount of data.
+ * amount of data by moving the bounds of a viewport along a one-dimensional axis.
*/
ROLE_SCROLL_BAR,
- /*
+ /**
* An object that allows a user to incrementally view a large amount
- * of information.
+ * of information. ROLE_SCROLL_PANE objects are usually accompanied by
+ * ROLE_SCROLL_BAR controllers, on which the RELATION_CONTROLLER_FOR and
+ * RELATION_CONTROLLED_BY reciprocal relations are set; \see
+ * Accessibility::RelationSet.
*/
ROLE_SCROLL_PANE,
- /*
+ /**
* An object usually contained in a menu to provide a visible and
* logical separation of the contents in a menu.
*/
ROLE_SEPARATOR,
- /* An object that allows the user to select from a bounded range */
+ /** An object that allows the user to select from a bounded range */
ROLE_SLIDER,
- /*
+ /**
* An object which allows one of a set of choices to be selected,
- * and which displays the current choice.
+ * and which displays the current choice. Unlike ROLE_SCROLL_BAR,
+ * ROLE_SLIDER objects need not control 'viewport'-like objects.
*/
ROLE_SPIN_BUTTON,
- /* A specialized panel that presents two other panels at the same time. */
+ /** A specialized panel that presents two other panels at the same time. */
ROLE_SPLIT_PANE,
- /* Object displays non-quantitative status information (c.f. ROLE_PROGRESS_BAR) */
+ /** Object displays non-quantitative status information (c.f. ROLE_PROGRESS_BAR) */
ROLE_STATUS_BAR,
- /* An object used to repesent information in terms of rows and columns. */
+ /** An object used to repesent information in terms of rows and columns. */
ROLE_TABLE,
+ /** A 'cell' or discrete child within a Table. \note Table cells need not have ROLE_TABLE_CELL,
+ * other RoleType values are valid as well. */
ROLE_TABLE_CELL,
+ /** An object which labels a particular column in a Table. */
ROLE_TABLE_COLUMN_HEADER,
+ /** An object which labels a particular row in a Table. Table rows and columns may also be
+ * labelled via the RELATION_LABEL_FOR/RELATION_LABELLED_BY relationships;
+ * \see Accessibility::RelationSet. */
ROLE_TABLE_ROW_HEADER,
- /* Object allows menu to be removed from menubar and shown in its own window. */
+ /** Object allows menu to be removed from menubar and shown in its own window. */
ROLE_TEAROFF_MENU_ITEM,
- /* An object that emulates a terminal */
+ /** An object that emulates a terminal */
ROLE_TERMINAL,
- /* An object that presents text to the user */
+ /** An object that presents text to the user, of nonspecific type. */
ROLE_TEXT,
- /*
+ /**
* A specialized push button that can be checked or unchecked, but does
* not procide a separate indicator for the current state.
*/
ROLE_TOGGLE_BUTTON,
- /*
+ /**
* A bar or palette usually composed of push buttons or toggle buttons
*/
ROLE_TOOL_BAR,
- /*
+ /**
* An object that provides information about another object
*/
ROLE_TOOL_TIP,
- /* An object used to repsent hierarchical information to the user. */
+ /** An object used to repsent hierarchical information to the user. */
ROLE_TREE,
- /* An object that presents both tabular and hierarchical info to the user */
+ /** An object that presents both tabular and hierarchical info to the user */
ROLE_TREE_TABLE,
- /*
+ /**
* The object contains some Accessible information, but its role is
- * not known.
+ * not known.
*/
ROLE_UNKNOWN,
- /* An object usually used in a scroll pane. */
+ /** An object usually used in a scroll pane, or to otherwise clip a larger object or
+ * content renderer to a specific onscreen viewport. */
ROLE_VIEWPORT,
- /* A top level window with no title or border */
+ /** A ¨top level window¨ with no title or border. */
ROLE_WINDOW,
- /*
+ /**
* means that the role for this item is known, but not included in the
* core enumeration
*/
ROLE_EXTENDED,
- /* An object that serves as a document header. */
+ /** An object that serves as a document header. */
ROLE_HEADER,
- /* An object that serves as a document footer. */
+ /** An object that serves as a document footer. */
ROLE_FOOTER,
- /* An object which is contains a paragraph of text content. */
+ /** An object which is contains a single paragraph of text content. \see also ROLE_TEXT. */
ROLE_PARAGRAPH,
- /*
+ /**
* An object which describes margins and tab stops, etc.
* for text objects which it controls
* (should have CONTROLLER_FOR relation to such).
*/
ROLE_RULER,
- /*
+ /**
* An object corresponding to the toplevel accessible of an
* application, which may contain ROLE_FRAME objects or other
* accessible objects. Children of AccessibleDesktop objects
* are generally ROLE_APPLICATION objects.
*/
ROLE_APPLICATION,
- /*
+ /**
* The object is a dialog or list containing items for insertion
* into an entry widget, for instance a list of words for completion
* of a text entry.
*/
ROLE_AUTOCOMPLETE,
- /*
+ /**
* The object is an editable text object in a toolbar.
*/
ROLE_EDITBAR,
- /*
+ /**
* The object is an embedded component container. This role is a
* "grouping" hint that the contained objects share a context which is
* different from the container in which this accessible is embedded.
@@ -282,7 +294,86 @@ module Accessibility {
* for embedding of out-of-process component, "panel applets", etc.
*/
ROLE_EMBEDDED,
- /* not a valid role, used for finding end of enumeration. */
+
+ /**
+ * The object is a link to some other content, for instance to a URI in this or another
+ * document. ROLE_LINK can occur primarily in two situations; as the role of an
+ * object returned via the Hypertext::getLink, or, more importantly, as the role
+ * of a standalone object that implements the Hypertext interface but points to only
+ * one link object.
+ *
+ * @note NOT SURE ABOUT THIS ONE, the description makes it sound pretty ropy.
+ * Why aren't links just identified via the Hypertext interface? For non-textual
+ * hyperlinks (as allowed in XHTML 2.0), shouldn't this role be ROLE_IMAGE
+ * or ROLE_ICON?
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_LINK,
+ /**
+ * The object is a component whose textual content may be entered or modified by the user,
+ * provided STATE_EDITABLE is present.
+ * @note a readonly ROLE_ENTRY object (i.e. where STATE_EDITABLE is not present) implies a
+ * read-only ¨text field¨ in a form, as opposed to a title, label, or caption.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_ENTRY,
+ /**
+ * The object is a graphical depiction of quantitative data. It may contain multiple
+ * subelements whose attributes and/or description may be queried to obtain both the
+ * quantitative data and information about how the data is being presented.
+ * The LABELLED_BY relation is particularly important in interpreting objects of this type,
+ * as is the accessible-description property.
+ * @see ROLE_CAPTION
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_CHART,
+ /**
+ * The object contains descriptive information, usually textual, about another user interface
+ * element such as a table, chart, or image.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_CAPTION,
+ /**
+ * The object is a visual frame or container which contains a view of document content.
+ * Document frames may occur within another Document instance, in which case the second
+ * document may be said to be embedded in the containing instance. HTML frames are
+ * often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement
+ * the Document interface.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_DOCUMENT_FRAME,
+ /**
+ * The object serves as a heading for content which follows it in a document.
+ * The 'heading level' of the heading, if availabe, may be obtained by
+ * querying the object's attributes.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_HEADING,
+ /**
+ * The object is a containing instance which encapsulates a page of
+ * information. ROLE_PAGE is used in documents and content which support
+ * a paginated navigation model.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_PAGE,
+ /**
+ * The object is a containing instance of document content which constitutes
+ * a particular 'logical' section of the document. The type of content within
+ * a section, and the nature of the section division itself, may be obtained
+ * by querying the object's attributes. Sections may be nested.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ ROLE_SECTION,
+
+ /** not a valid role, used for finding end of enumeration. */
ROLE_LAST_DEFINED
};
};
diff --git a/idl/Accessibility_Selection.idl b/idl/Accessibility_Selection.idl
index a14e505e..e059ed9a 100644
--- a/idl/Accessibility_Selection.idl
+++ b/idl/Accessibility_Selection.idl
@@ -24,15 +24,108 @@
module Accessibility {
+ /**
+ * An interface which indicates that an object exposes a 'selection' model,
+ * allowing the selection of one or more of its children. Read-only Selection
+ * instances are possible, in which case the interface is used to programmatically
+ * determine the selected-ness of its children. A selected child has ::State::STATE_SELECTED,
+ * and a child which may hypothetically be selected (though possibly not programmatically
+ * selectable) has ::State::STATE_SELECTABLE.
+ * @note Events emitted by implementors of Selection include:
+ * \li \c "object:selection-changed" An instance of Selection has undergone a change in the
+ * 'selected-ness' of its children, i.e. had a selection added,
+ * removed, and/or modified. Usually accompanied by
+ * corresponding \c "object:state-changed:selected" events
+ * from the corresponding children, unless the children are
+ * previously un-queried via AT-SPI and the Selection instance
+ * has ::State::STATE_MANAGES_DESCENDANTS.
+ **/
interface Selection : Bonobo::Unknown {
+ /**
+ * The number of children of a Selection implementor which are
+ * currently selected.
+ */
readonly attribute long nSelectedChildren;
+ /**
+ * Get the i-th selected Accessible child of a Selection.
+ * @note \c selectedChildIndex refers to the index in the list of
+ * 'selected' children as opposed to the more general 'child index'
+ * of an object; as such it generally differs from that used in
+ * Accessible::getChildAtIndex() or returned by
+ * Accessible::getIndexInParent().
+ * \c selectedChildIndex must lie between 0
+ * and Selection::nSelectedChildren-1, inclusive.
+ * @param selectedChildIndex: a long integer indicating which of the
+ * selected children of an object is being requested.
+ * @returns a pointer to a selected Accessible child object,
+ * specified by \c selectedChildIndex.
+ */
Accessible getSelectedChild (in long selectedChildIndex);
+ /**
+ * Add a child to the selected children list of a Selection.
+ * @note For Selection implementors that only allow
+ * single selections, this call may result in the
+ * replacement of the (single) current
+ * selection. The call may return \c False if
+ * the child is not selectable (i.e. does not have ::State::STATE_SELECTABLE),
+ * if the user does not have permission to change the selection,
+ * or if the Selection instance does not have ::State::STATE_SENSITIVE.
+ *
+ * @param childIndex: a long integer indicating which child of the
+ * Selection is to be selected.
+ *
+ * @returns \c True if the child was successfully selected,
+ * \c False otherwise.
+ */
boolean selectChild (in long childIndex);
+ /**
+ * Remove a child to the selected children list of a Selection.
+ * @note \c childIndex is the index in the selected-children list,
+ * not the index in the parent container. \c selectedChildIndex in this
+ * method, and \c childIndex in Selection::selectChild
+ * are asymmettric.
+ *
+ * @param selectedChildIndex: a long integer indicating which of the
+ * selected children of the Selection is to be deselected. The index
+ * is a zero-offset index into the 'selected child list', not
+ * a zero-offset index into the list of all children of the Selection.
+ *
+ * @returns \c True if the child was successfully deselected,
+ * \c False otherwise.
+ *
+ * @see deselectChild
+ **/
boolean deselectSelectedChild (in long selectedChildIndex);
+ /**
+ * Determine whether a particular child of an Selection implementor
+ * is currently selected. Note that \c childIndex is the zero-offset
+ * index into the standard Accessible container's list of children.
+ *
+ * @param childIndex: an index into the Selection's list of children.
+ *
+ * @returns \c True if the specified child is currently selected,
+ * \c False otherwise.
+ **/
boolean isChildSelected (in long childIndex);
+ /**
+ * Attempt to select all of the children of a Selection implementor.
+ * Not all Selection implementors support this operation (for instance,
+ * implementations which support only "single selection" do not support this operation).
+ *
+ * @returns \c True if successful, \c False otherwise.
+ */
boolean selectAll ();
+ /**
+ * Attempt to clear all selections (i.e. deselect all children) of a Selection.
+ * Not all Selection implementations allow the removal of all selections.
+ *
+ * @note this operation may fail if the object must have at least one selected child,
+ * if the user does not have permission to change the selection, or if the Selection
+ * does not have ::State::STATE_SENSITIVE.
+ *
+ * @returns \c True if the selections were successfully cleared, \c False otherwise.
+ */
boolean clearSelection ();
-
/**
* unImplemented:
*
diff --git a/idl/Accessibility_State.idl b/idl/Accessibility_State.idl
index 9c43288f..effbda3d 100644
--- a/idl/Accessibility_State.idl
+++ b/idl/Accessibility_State.idl
@@ -27,113 +27,244 @@ module Accessibility {
enum StateType {
STATE_INVALID,
- /* Indicates a window is currently the active window */
+ /** Indicates a window is currently the active window, or is an active subelement within a container or table **/
STATE_ACTIVE,
- /* Indicates that the object is armed */
+ /** Indicates that the object is armed */
STATE_ARMED,
- /* Indicates the current object is busy */
+ /**
+ * Indicates the current object is busy, i.e. onscreen representation is in the process of changing, or
+ * the object is temporarily unavailable for interaction due to activity already in progress.
+ */
STATE_BUSY,
- /* Indicates this object is currently checked */
+ /** Indicates this object is currently checked */
STATE_CHECKED,
- /* Indicates this object is collapsed */
+ /** Indicates this object is collapsed */
STATE_COLLAPSED,
- /* Indicates that this object no longer contains a backing widget */
+ /** Indicates that this object no longer has a valid backing widget
+ * (for instance, if its peer object has been destroyed) */
STATE_DEFUNCT,
- /* Indicates the user can change the contents of this object */
+ /** Indicates the user can change the contents of this object */
STATE_EDITABLE,
- /* Indicates that this object is enabled */
+ /** Indicates that this object is enabled, i.e. that it currently reflects some application state.
+ * Objects that are "greyed out" may lack this state, and may lack the STATE_SENSITIVE if direct user
+ * interaction cannot cause them to acquire STATE_ENABLED. @see STATE_SENSITIVE.
+ */
STATE_ENABLED,
- /* Indicates this object allows progressive disclosure of its children */
+ /** Indicates this object allows progressive disclosure of its children */
STATE_EXPANDABLE,
- /* Indicates this object its expanded */
+ /** Indicates this object its expanded */
STATE_EXPANDED,
- /*
+ /**
* Indicates this object can accept keyboard focus, which means all
* events resulting from typing on the keyboard will normally be passed
* to it when it has focus
*/
STATE_FOCUSABLE,
- /* Indicates this object currently has the keyboard focus */
+ /** Indicates this object currently has the keyboard focus */
STATE_FOCUSED,
- /* Indicates that the object has an associated tooltip */
+ /** Indicates that the object has an associated tooltip */
STATE_HAS_TOOLTIP,
- /* Indicates the orientation of thsi object is horizontal */
+ /** Indicates the orientation of thsi object is horizontal */
STATE_HORIZONTAL,
- /* Indicates this object is minimized and is represented only by an icon */
+ /** Indicates this object is minimized and is represented only by an icon */
STATE_ICONIFIED,
- /*
+ /**
* Indicates something must be done with this object before the user can
* interact with an object in a different window.
*/
STATE_MODAL,
- /* Indicates this (text) object can contain multiple lines of text */
+ /** Indicates this (text) object can contain multiple lines of text */
STATE_MULTI_LINE,
- /*
+ /**
* Indicates this object allows more than one of its children to be
- * selected at the same time
+ * selected at the same time, or in the case of text objects,
+ * that the object supports non-contiguous text selections.
*/
STATE_MULTISELECTABLE,
- /* Indicates this object paints every pixel within its rectangular region. */
+ /** Indicates this object paints every pixel within its rectangular region.
+ * It also indicates an alpha value of unity, if it supports alpha blending.
+ */
STATE_OPAQUE,
- /* Indicates this object is currently pressed */
+ /** Indicates this object is currently pressed */
STATE_PRESSED,
- /* Indicates the size of this object is not fixed */
+ /** Indicates the size of this object's size is not fixed */
STATE_RESIZABLE,
- /*
+ /**
* Indicates this object is the child of an object that allows its
* children to be selected and that this child is one of those children
* that can be selected.
*/
STATE_SELECTABLE,
- /*
+ /**
* Indicates this object is the child of an object that allows its
* children to be selected and that this child is one of those children
* that has been selected.
*/
STATE_SELECTED,
- /* Indicates this object is sensitive */
+ /** Indicates this object is sensitive, e.g. to user interaction.
+ * STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
+ * but may be found in the absence of STATE_ENABLED if the current visible state of the
+ * control is "disconnected" from the application state. In such cases, direct user interaction
+ * can often result in the object gaining STATE_SENSITIVE, for instance if a user makes
+ * an explicit selection using an object whose current state is ambiguous or undefined.
+ * @see STATE_ENABLED, STATE_INDETERMINATE. */
STATE_SENSITIVE,
- /*
+ /**
* Indicates this object, the object's parent, the object's parent's
- * parent, and so on, are all visible
+ * parent, and so on, are all 'shown' to the end-user, i.e.
+ * subject to "exposure" if blocking or obscuring objects do not interpose
+ * between this object and the top of the window stack.
*/
STATE_SHOWING,
- /* Indicates this (text) object can contain only a single line of text */
+ /** Indicates this (text) object can contain only a single line of text */
STATE_SINGLE_LINE,
- /* Indicates that this object's index within parent information may be invalid */
+ /** Indicates that the information returned for this object may no longer be
+ * synchronized with the application state. This can occur if the object has STATE_TRANSIENT,
+ * and can also occur towards the end of the object peer's lifecycle. */
STATE_STALE,
- /* Indicates this object is transient */
+ /** Indicates this object is transient */
STATE_TRANSIENT,
- /* Indicates the orientation of this object is vertical */
+ /** Indicates the orientation of this object is vertical; for example this state may appear on
+ * such objects as scrollbars, text objects (with vertical text flow), separators, etc.
+ */
STATE_VERTICAL,
- /* Indicates this object is visible */
+ /** Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.
+ * @note: STATE_VISIBLE is no guarantee that the object is actually unobscured on the screen, only
+ * that it is 'potentially' visible, barring obstruction, being scrolled or clipped out of the
+ * field of view, or having an ancestor container that has not yet made visible.
+ * A widget is potentially onscreen if it has both STATE_VISIBLE and STATE_SHOWING.
+ * The absence of STATE_VISIBLE and STATE_SHOWING is semantically equivalent to saying
+ * that an object is 'hidden'.
+ */
STATE_VISIBLE,
- /*
+ /**
* Indicates that "active-descendant-changed" event is sent when children
* become 'active' (i.e. are selected or navigated to onscreen). Used to
* prevent need to enumerate all children in very large containers, like
- * tables.
+ * tables. The presence of STATE_MANAGES_DESCENDANTS is an indication to the client.
+ * that the children should not, and need not, be enumerated by the client.
+ * Objects implementing this state are expected to provide relevant state
+ * notifications to listening clients, for instance notifications of visibility
+ * changes and activation of their contained child objects, without the client
+ * having previously requested references to those children.
*/
STATE_MANAGES_DESCENDANTS,
- /*
- * Indicates that a check box is in a state other than checked or not checked.
+ /**
+ * Indicates that a check box or other boolean indicator is in a state other than
+ * checked or not checked. This usually means that the boolean value reflected or
+ * controlled by the object does not apply consistently to the entire current context.
+ * For example, a checkbox for the "Bold" attribute of text may have STATE_INDETERMINATE
+ * if the currently selected text contains a mixture of weight attributes.
+ * In many cases interacting with a STATE_INDETERMINATE object will cause
+ * the context's corresponding boolean attribute to be homogenized, whereupon the object
+ * will lose STATE_INDETERMINATE and a corresponding state-changed event will be fired.
*/
STATE_INDETERMINATE,
+ /**
+ * Indicates that user interaction with this object is 'required' from the user,
+ * for instance before completing the processing of a form.
+ */
+ STATE_REQUIRED,
+ /**
+ * Indicates that an object's onscreen content is truncated, e.g. a text value in a spreadsheet cell.
+ * @since AT-SPI 1.7.0.
+ */
+ STATE_TRUNCATED,
+ /**
+ * Indicates this object's visual representation is dynamic, not static.
+ * This state may be applied to an object during an animated 'effect' and
+ * be removed from the object once its visual representation becomes static.
+ * @note some applications, notably content viewers, may not be able to detect
+ * all kinds of animated content. Therefore the absence of this state should not
+ * be taken as definitive evidence that the object's visual representation is
+ * static; this state is advisory.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ STATE_ANIMATED,
+ /**
+ * This object has indicated an error condition due to failure of input
+ * validation. For instance, a form control may acquire this state in response
+ * to invalid or malformed user input.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ STATE_INVALID_ENTRY,
+ /**
+ * This state indicates that the object in question implements some form of ¨typeahead¨ or
+ * pre-selection behavior whereby entering the first character of one or more sub-elements
+ * causes those elements to scroll into view or become selected. Subsequent character input
+ * may narrow the selection further as long as one or more sub-elements match the string.
+ * This state is normally only useful and encountered on objects that implement Selection.
+ * In some cases the typeahead behavior may result in full or partial ¨completion¨ of
+ * the data in the input field, in which case these input events may trigger text-changed
+ * events from the source.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ STATE_SUPPORTS_AUTOCOMPLETION,
+ /**
+ * This state indicates that the object in question supports text selection.
+ * It should only be exposed on objects which implement the Text interface,
+ * in order to distinguish this state from STATE_SELECTABLE, which infers that
+ * the object in question is a selectable child of an object which implements
+ * Selection. While similar, text selection and subelement selection are
+ * distinct operations.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ STATE_SELECTABLE_TEXT,
+ /**
+ * This state indicates that the object in question is the 'default' interaction object
+ * in a dialog, i.e. the one that gets activated if the user presses "Enter" when the
+ * dialog is initially posted.
+ *
+ * @since AT-SPI 1.7.0
+ */
+ STATE_IS_DEFAULT,
+ /** This value of the enumeration should not be used as a parameter, it indicates the number of
+ * items in the StateType enumeration.
+ */
STATE_LAST_DEFINED
};
typedef sequence <StateType> StateSeq;
+ /**
+ * The StateSet interface encapsulates a collection of state information.
+ * It allows comparison of state information between object instances, and comparisons
+ * of an object's state with some hypothetical collection of states.
+ */
interface StateSet : Bonobo::Unknown {
+
+ /** Query a StateSet for a specific StateType.
+ * @param state the StateType being queried for.
+ * @returns \c TRUE if the StateSet contains StateType \a state.
+ */
boolean contains (in StateType state);
+
+ /** Add a StateType to an existing StateSet, if not already present. */
void add (in StateType state);
+
+ /** Remove a StateType to an existing StateSet, if it is present. */
void remove (in StateType state);
+
+ /** Compare two statesets for equivalence.
+ * @param stateSet the StateSet to be compared with this one.
+ * @returns \c TRUE if the two StateSet objects are composed of the same StateTypes.
+ */
boolean equals (in StateSet stateSet);
- /* returns a 'difference set' */
+
+ /** Compare two StateSet instances and obtain their differences.
+ * @returns a 'difference set', i.e. a StateSet consisting of those states
+ * not shared by the two sets being compared. */
StateSet compare (in StateSet compareState);
+
+ /** @returns \c TRUE if the StateSet contains no states. */
boolean isEmpty ();
+ /** \cond */
/* Private */
StateSeq getStates ();
@@ -146,6 +277,7 @@ module Accessibility {
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_StreamableContent.idl b/idl/Accessibility_StreamableContent.idl
index 4ca62bbf..c552a638 100644
--- a/idl/Accessibility_StreamableContent.idl
+++ b/idl/Accessibility_StreamableContent.idl
@@ -26,12 +26,91 @@ module Accessibility {
typedef sequence<string> StringSeq;
+ /**
+ * An interface whereby an object allows its backing content
+ * to be streamed to clients. Negotiation of content type
+ * is allowed. Clients may examine the backing data and
+ * transform, convert, or parse the content in order to
+ * present it in an alternate form to end-users.
+ *
+ * @note The StreamableContent interface is particularly useful for saving,
+ * printing, or post-processing entire documents, or for persisting
+ * alternate views of a document.
+ * If document content itself is being serialized, stored, or converted,
+ * then use of the StreamableContent interface can help address performance
+ * issues. Unlike most AT-SPI/Accessibility interfaces, this interface
+ * is not strongly tied to the current user-agent view of the
+ * a particular document, but may in some cases give access to the
+ * underlying model data.
+ */
interface StreamableContent {
+
+ /**
+ * Specifies the meaning of a seek 'offset'. Not all SeekTypes are
+ * supported by all StreamableContent data sources, for instance
+ * some streams may not support seeking from the beginning or other
+ * types of 'backwards' seeks.
+ */
+ enum SeekType {
+ SEEK_SET, /**< Seek from the start of the stream or data source.*/
+ SEEK_CURRENT, /**< Seek relative to the current position. */
+ SEEK_END /**< Seek from the end of the file, stream, or data source. */
+ };
+
+ /**
+ * Indicates that a transmission error has occurred while
+ * reading or seeking the stream or data source.
+ */
+ exception IOError {
+ string reason;
+ };
+ /**
+ * Indicates that the requested operation is not supported by the stream instance.
+ */
+ exception NotSupported {
+ string reason;
+ };
+
+ /**
+ * The operation is supported, but the current requestor does not have
+ * permission to t the request, for instance does not have permission to read
+ * the stream.
+ */
+ exception NoPermission {
+ string reason;
+ };
+
+ /**
+ * getContentTypes:
+ * @returns the list of available mimetypes for this object's content.
+ */
StringSeq getContentTypes ();
+ /**
+ * Retrieve this object's content, in a format appropriate to a
+ * requested mimetype.
+ *
+ * @note the data is returned as an object of type ::Bonobo::Stream.
+ * The primary methods which are supported on Bonobo::Streams for the
+ * purposes of the ::StreamableContent API are \c seek and \c read.
+ * \c seek may not be supported for all mimetypes or
+ * all implementors.
+ *
+ \verbatim
+ long Bonobo::Stream:seek (in long offset, in SeekType whence)
+ raises (NoPermission, IOError)
+ void Bonobo::Stream:read (in long count, out iobuf buffer)
+ raises (NoPermission, IOError)
+ \endverbatim
+ *
+ * @see ::Bonobo::Stream
+ *
+ * @returns a ::Bonobo::Stream whose mimetype matches \a contentType,
+ * if available, or \c NIL.
+ */
Bonobo::Stream getContent (in string contentType);
- /* methods used from Bonobo::Stream : seek, read. Others unsupported. */
/**
+ * \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -40,5 +119,6 @@ module Accessibility {
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Table.idl b/idl/Accessibility_Table.idl
index 66e0301c..0e2ee672 100644
--- a/idl/Accessibility_Table.idl
+++ b/idl/Accessibility_Table.idl
@@ -26,34 +26,273 @@ module Accessibility {
typedef sequence<long> LongSeq;
+ /**
+ * An interface used by containers whose contained data is arranged in
+ * a "tabular" (i.e.\ row-column) fashion. Tables may resemble a two-dimensional
+ * grid, as in a spreadsheet, or may feature objects which span multiple rows and/or
+ * columns, but whose bounds are aligned on a row/column matrix. Thus, the Table
+ * interface may be used to represent "spreadsheets" as well as "frames".
+ *
+ * Objects within tables are children of the Table instance, and they may be referenced
+ * either via a child index or via a row/column pair.
+ * Their role may be ROLE_TABLE_CELL, but table 'cells' may have other roles as well.
+ * These 'cells' may implement other interfaces, such as Text, Action, Image,
+ * and Component, and should do so as appropriate to their onscreen representation
+ * and/or behavior.
+ */
interface Table : Bonobo::Unknown {
+ /**
+ * The total number of rows in this table (including empty rows),
+ * exclusive of any rows which are programmatically hidden.
+ * Rows which are merely scrolled out of view are included.
+ */
readonly attribute long nRows;
+ /**
+ * The total number of columns in this table (including empty columns),
+ * exclusive of columns which are programmatically hidden.
+ * Columns which are scrolled out of view or clipped by the current
+ * viewport are included.
+ */
readonly attribute long nColumns;
+ /**
+ * An Accessible which represents of a caption for a Table.
+ **/
readonly attribute Accessible caption;
+ /**
+ * An accessible object which summarizes the contents of a Table.
+ * This object is frequently itself a Table instance, albeit a simplified one.
+ */
readonly attribute Accessible summary;
+ /**
+ * The number of rows currently selected.
+ * A selected row is one in which all included cells are selected.
+ * @note Not all tables support row selection.
+ */
readonly attribute long nSelectedRows;
+ /**
+ * The number of columns currently selected.
+ * A selected column is one in which all included cells are selected.
+ * @note Not all tables support column selection.
+ */
readonly attribute long nSelectedColumns;
-
+ /**
+ * Get the table cell at the specified row and column indices.
+ * @note To get the accessible object at a particular (x, y) screen coordinate,
+ * use Accessible::getAccessibleAtPoint ().
+ *
+ * @param row: the specified table row, zero-indexed.
+ * @param column: the specified table column, zero-indexed.
+ *
+ * @returns an Accessible object representing the specified table cell.
+ **/
Accessible getAccessibleAt (in long row, in long column);
+ /**
+ * Get the 1-D child index corresponding to the specified 2-D row and column indices.
+ * @note To get the accessible object at a particular (x, y) screen coordinate,
+ * use Accessible::getAccessibleAtPoint.
+ *
+ * @param row: the specified table row, zero-indexed.
+ * @param column: the specified table column, zero-indexed.
+ *
+ * @see getRowAtIndex, getColumnAtIndex
+ *
+ * @returns a long integer which serves as the index of a specified cell in the
+ * table, in a form usable by Accessible::getChildAtIndex.
+ **/
long getIndexAt (in long row, in long column);
+ /**
+ * Get the table row index occupied by the child at a particular 1-D child index.
+ *
+ * @param index: the specified child index, zero-indexed.
+ *
+ * @see getIndexAt(), getColumnAtIndex()
+ *
+ * @returns a long integer indicating the first row spanned by the child of a
+ * table, at the specified 1-D (zero-offset) \c index.
+ **/
long getRowAtIndex (in long index);
+ /**
+ * Get the table column index occupied by the child at a particular 1-D child index.
+ *
+ * @param index: the specified child index, zero-indexed.
+ *
+ * @see getIndexAt(), getRowAtIndex()
+ *
+ * @returns a long integer indicating the first column spanned by the child of a
+ * table, at the specified 1-D (zero-offset) \c index.
+ **/
long getColumnAtIndex (in long index);
+ /**
+ * Get a text description of a particular table row. This differs from
+ * AccessibleTable_getRowHeader, which returns an Accessible.
+ * @param row: the specified table row, zero-indexed.
+ *
+ * @returns a UTF-8 string describing the specified table row, if available.
+ **/
string getRowDescription (in long row);
+ /**
+ * Get a text description of a particular table column. This differs from
+ * AccessibleTable_getColumnHeader, which returns an Accessible.
+ * @param column: the specified table column, zero-indexed.
+ *
+ * @returns a UTF-8 string describing the specified table column, if available.
+ **/
string getColumnDescription (in long column);
+ /**
+ * Get the number of rows spanned by the table cell at the specific row and column.
+ * (some tables can have cells which span multiple rows and/or columns).
+ *
+ * @param row: the specified table row, zero-indexed.
+ * @param column: the specified table column, zero-indexed.
+ *
+ * @returns a long integer indicating the number of rows spanned by the specified cell.
+ **/
long getRowExtentAt (in long row, in long column);
+ /**
+ * Get the number of columns spanned by the table cell at the specific row and column.
+ * (some tables can have cells which span multiple rows and/or columns).
+ *
+ * @param row: the specified table row, zero-indexed.
+ * @param column: the specified table column, zero-indexed.
+ *
+ * @returns a long integer indicating the number of columns spanned by the
+ * specified cell.
+ **/
long getColumnExtentAt (in long row, in long column);
+ /**
+ * Get the header associated with a table row, if available. This differs from
+ * getRowDescription, which returns a string.
+ *
+ * @param row: the specified table row, zero-indexed.
+ *
+ * @returns an Accessible representatin of the specified table row, if available.
+ **/
Accessible getRowHeader (in long row);
+ /**
+ * Get the header associated with a table column, if available, as an
+ * instance of Accessible. This differs from
+ * getColumnDescription, which returns a string.
+ *
+ * @param column: the specified table column, zero-indexed.
+ *
+ * @returns an Accessible representatin of the specified table column, if available.
+ **/
Accessible getColumnHeader (in long column);
+ /**
+ * Obtain the indices of all rows which are currently selected.
+ * @note Not all tables support row selection.
+ *
+ * @returns a sequence of integers comprising the indices of rows currently selected.
+ **/
LongSeq getSelectedRows ();
+ /**
+ * Obtain the indices of all columns which are currently selected.
+ * @note Not all tables support column selection.
+ *
+ * @returns a sequence of integers comprising the indices of columns currently selected.
+ **/
LongSeq getSelectedColumns ();
+ /**
+ * Determine whether a table row is selected.
+ * @note Not all tables support row selection.
+ *
+ * @param row: the row being queried.
+ *
+ * @returns \c True if the specified row is currently selected, \c False if not.
+ **/
boolean isRowSelected (in long row);
+ /**
+ * Determine whether a table column is selected.
+ * @note Not all tables support column selection.
+ *
+ * @param column: the column being queried.
+ *
+ * @returns \c True if the specified column is currently selected, \c False if not.
+ **/
boolean isColumnSelected (in long column);
+ /**
+ * Determine whether the cell at a specific row and column is selected.
+ * @param row a row occupied by the cell whose state is being queried.
+ * @param column a column occupied by the cell whose state is being queried.
+ *
+ * @returns \c True if the specified cell is currently selected,
+ * \c False if not.
+ **/
boolean isSelected (in long row, in long column);
+ /**
+ * Select the specified row, adding it to the current row selection,
+ * if the table's selection model permits it.
+ *
+ * @param row
+ * @note Possible reasons for addRowSelection to return \c False
+ * include:
+ * \li The table does not support Selection
+ * \li The table row includes cells which do not have STATE_SELECTABLE
+ * \li The table does not support selection by row
+ * \li The table does not support selection of multiple rows, and
+ * one row is already selected.
+ * \li The table does not support non-contiguous selections (i.e.
+ * does not include STATE_MULTISELECTABLE), and the specified row
+ * would result in selection of non-contiguous rows.
+ * \li The table does not support user-instigated selection.
+ *
+ * @returns \c True if the specified row was successfully selected,
+ * \c False if not.
+ **/
boolean addRowSelection (in long row);
+ /**
+ * Select the specified column, adding it to the current column selection,
+ * if the table's selection model permits it.
+ *
+ * @param column
+ * @note Possible reasons for addColumnSelection to return \c False
+ * include:
+ * \li The table does not support Selection
+ * \li The table column includes cells which do not have STATE_SELECTABLE
+ * \li The table does not support selection by column
+ * \li The table does not support selection of multiple columns, and
+ * one column is already selected.
+ * \li The table does not support non-contiguous selections (i.e.
+ * does not include STATE_MULTISELECTABLE), and the specified column
+ * would result in selection of non-contiguous columns.
+ * \li The table does not support user-instigated selection.
+ *
+ * @returns \c True if the specified column was successfully selected,
+ * \c False if not.
+ **/
boolean addColumnSelection (in long column);
+ /**
+ * Remove the specified row from current row selection,
+ * if the table's selection model permits it.
+ *
+ * @param row
+ * @note Possible reasons for removeRowSelection to return \c False
+ * include:
+ * \li The table does not support user-instigated Selection
+ * \li The table has no selected rows or does not support deselection by row
+ *
+ * @returns \c True if the specified row was successfully de-selected,
+ * \c False if not.
+ **/
boolean removeRowSelection (in long row);
+ /**
+ * Remove the specified column from current column selection,
+ * if the table's selection model permits it.
+ *
+ * @param column
+ * @note Possible reasons for removeColumnSelection to return \c False
+ * include:
+ * \li The table does not support user-instigated modification of
+ * selection state
+ * \li The table has no selected columns or does not support
+ * deselection by column.
+ *
+ * @returns \c True if the specified column was successfully de-selected,
+ * \c False if not.
+ **/
boolean removeColumnSelection (in long column);
- /**
+
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -66,5 +305,6 @@ typedef sequence<long> LongSeq;
void unImplemented6 ();
void unImplemented7 ();
void unImplemented8 ();
+ /** \endcond */
};
};
diff --git a/idl/Accessibility_Text.idl b/idl/Accessibility_Text.idl
index d0ea1f38..9afb8556 100644
--- a/idl/Accessibility_Text.idl
+++ b/idl/Accessibility_Text.idl
@@ -22,14 +22,44 @@
module Accessibility {
+ /**
+ * Specifies the boundary conditions determining a run of text as returned from
+ * getTextAtOffset, getTextAfterOffset, and getTextBeforeOffset.
+ */
enum TEXT_BOUNDARY_TYPE {
- TEXT_BOUNDARY_CHAR,
- TEXT_BOUNDARY_WORD_START,
- TEXT_BOUNDARY_WORD_END,
- TEXT_BOUNDARY_SENTENCE_START,
- TEXT_BOUNDARY_SENTENCE_END,
- TEXT_BOUNDARY_LINE_START,
- TEXT_BOUNDARY_LINE_END
+ TEXT_BOUNDARY_CHAR,/**< Text is bounded by this character only.
+ * Start and end offsets differ by one, by definition, for this value.
+ */
+ TEXT_BOUNDARY_WORD_START,/**< Boundary condition is start of a word; i.e. range is from start of
+ * one word to the start of another word.
+ */
+ TEXT_BOUNDARY_WORD_END,/**< Boundary condition is the end of a word; i.e. range is from
+ * the end of one word to the end of another.
+ * @note some locales may not distinguish between words and
+ * characters or glyphs, in particular those locales which use
+ * wholly or partially ideographic character sets. In these cases,
+ * characters may be returned in lieu of multi-character substrings.
+ */
+ TEXT_BOUNDARY_SENTENCE_START,/**< Boundary condition is start of a sentence, as determined
+ * by the application.
+ * @note Some locales or character sets may not include explicit sentence
+ * delimiters, so this boundary type can not always be honored.
+ * Some locales will return lines of text instead of grammatical sentences.
+ */
+ TEXT_BOUNDARY_SENTENCE_END,/**< Boundary condition is end of a sentence, as determined by the application,
+ * including the sentence-delimiting character, for instance '.'
+ * @note Some locales or character sets may not include explicit sentence
+ * delimiters, so this boundary type can not always be honored.
+ * Some locales will return lines of text instead of grammatical sentences.
+ */
+ TEXT_BOUNDARY_LINE_START,/**< Boundary condition is the start of a line; i.e. range is
+ * from start of one line to the start of another. This generally
+ * means that an end-of-line character will appear at the end of the range.
+ */
+ TEXT_BOUNDARY_LINE_END /**< Boundary condition is the end of a line; i.e. range is
+ * from start of one line to the start of another. This generally
+ * means that an end-of-line character will be the first character of the range.
+ */
};
/**
@@ -41,13 +71,56 @@ module Accessibility {
**/
enum TEXT_CLIP_TYPE {
TEXT_CLIP_NONE,
- TEXT_CLIP_MIN,
- TEXT_CLIP_MAX,
- TEXT_CLIP_BOTH
+ TEXT_CLIP_MIN,/**< characters/glyphs clipped by the minimum coordinate are omitted */
+ TEXT_CLIP_MAX,/**< characters/glyphs which intersect the maximum coordinate are omitted */
+ TEXT_CLIP_BOTH /**< only glyphs falling entirely within the region bounded by min and max are retained. */
};
+ /**
+ * The text interface should be implemented by objects which place textual information onscreen as character
+ * strings or glyphs. The text interface allows access to textual content, including display attributes and
+ * semantic hints associated with runs of text, and access to bounding box information for glyphs and substrings.
+ * It also allows portions of textual content to be selected, if the object's StateSet includes
+ * STATE_SELECTABLE_TEXT.
+ *
+ * In some cases a Text object may have, as its content, an empty string. In particular this can
+ * occur in the case of Hypertext objects which do not display explicitly textual information onscreen,
+ * as Hypertext is derived from the Text interface. @see Hypertext.
+ *
+ * Typographic and semantic attributes of onscreen textual content, for instance typeface, weight,
+ * language, and such qualities as 'emphasis' or 'blockquote', are represented as text attributes.
+ * Contiguous sequences of characters over which these attributes are unchanged are referred to as
+ * "attribute runs", and are available via Text::getAttributeRun. Where possible, implementing clients
+ * will report textual attributes which are the same over the entire text object, for instance those
+ * inherited from a default or document-scope style, via getDefaultAttributes instead of reporting them
+ * explicitly for each character. Therefore, for any span of text, the attributes in effect are the union
+ * of the set returned by Text::getDefaultAttributes, and the set returned at a particular character
+ * offset via Text::getAttributeRun.
+ *
+ * @note Events that may be emitted by instances of Text include:
+ * \li \c "object:text-attributes-changed" The attributes of a range of text, or the range over
+ * which attributes apply, has changed.
+ * \li \c "object:text-changed" The text content of this object has changed.
+ * \li \c "object:text-bounds-changed" The character bounds of a text object have changed,
+ * for instance in response to a reformatting or reflow operation.
+ * \li \c "object:text-caret-moved" The character offset of the text caret (visible or notional) within
+ * this object has changed. Events of this type may also be generated when an onscreen
+ * text caret appears or disappears.
+ * \li \c "object:text-selection-changed" The range or number of text selections within this text object
+ * has changed.
+ *
+ * @note In some cases, objects which are not onscreen may implement Text, but if such objects
+ * implement Component, their potential visibility should be examined (via comparison with STATE_VISIBLE
+ * and STATE_SHOWING) before exposing them to the user. Objects which implement Text but not Component
+ * may be encountered in special-purpose interfaces or as special ¨accessibility¨ extensions to visual
+ * interfaces to allow non-graphical access to application features. These instances should be considered
+ * the exception, rather than the rule.
+ */
interface Text : Bonobo::Unknown {
+ /** A structure used to define a continguous range of text, including its
+ * (unattributed) textual content.
+ **/
struct Range {
long startOffset;
long endOffset;
@@ -56,40 +129,263 @@ module Accessibility {
};
typedef sequence<Range> RangeList;
-
+
+ /** The total current number of characters in the Text object,
+ * including whitespace and non-spacing characters.
+ **/
readonly attribute long characterCount;
+
+ /** The current offset of the text caret in the Text object.
+ * This caret may be virtual, e.g. non-visual and notional-only, but if an
+ * onscreen representation of the caret position is visible, it will correspond to this offset.
+ * The caret offset is given as a character offset, as opposed to a byte offset into
+ * a text buffer or a column offset.
+ **/
readonly attribute long caretOffset;
+
+ /**
+ * Obtain all or part of the onscreen textual content of a Text object. If endOffset is specified as
+ * "-1", then this method will return the entire onscreen textual contents of the Text object.
+ * @note 'onscreen' in this context means "potentially onscreen", this method does not perform any sort
+ * of coordinate visibility clipping or window-stack-ordering clipping. The text thus reported
+ * corresponds to the text which would be presented onscreen if the object implementing the Text interface
+ * were entirely unobscured.
+ * @returns the textual content of the current Text object beginning startOffset (inclusive)
+ * up to but not including the character at endOffset.
+ **/
string getText (in long startOffset, in long endOffset);
+
+ /** Programmatically move the text caret (visible or virtual, as above) to a given position.
+ * @param offset a long int indicating the desired character offset. Not all implementations of
+ * Text will honor setCaretOffset requests, so the return value below should be checked by the client.
+ * @returns \c TRUE if the request was carried out, or \c FALSE if the caret could not be moved to
+ * the requested position.
+ **/
boolean setCaretOffset (in long offset);
+
+ /**
+ * Obtain a subset of the text content of an object which entirely precedes \c offset,
+ * delimited by character, word, line, or sentence boundaries as specified by \c type. The
+ * starting and ending offsets of the resulting substring are returned in \c startOffset
+ * and \c endOffset. By definition, if such a substring exists, \c endOffset is less than or
+ * equal to \c offset.
+ * @param offset the offset from which the substring search begins.
+ * @param type the text-boundary delimiter which determines whether the returned text constitures
+ * a character, word, line, or sentence (and possibly attendant whitespace),
+ * and whether the start or ending of such a substring forms the boundary condition.
+ * @param startOffset back-filled with the starting offset of the resulting substring, if one exists.
+ * @param endOffset back-filled with the offset of the character immediately following the resulting
+ * substring, if one exists.
+ * @see TEXT_BOUNDARY_TYPE
+ * @returns a string which is a substring of the text content of the object, delimited by the
+ * specified boundary condition.
+ */
string getTextBeforeOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
out long startOffset, out long endOffset);
+ /**
+ * Obtain a subset of the text content of an object which includes the specified \c offset,
+ * delimited by character, word, line, or sentence boundaries as specified by \c type. The
+ * starting and ending offsets of the resulting substring are returned in \c startOffset
+ * and \c endOffset.
+ * @param offset the offset from which the substring search begins, and which must
+ * lie within the returned substring.
+ * @param type the text-boundary delimiter which determines whether the returned text constitures
+ * a character, word, line, or sentence (and possibly attendant whitespace),
+ * and whether the start or ending of such a substring forms the boundary condition.
+ * @param startOffset back-filled with the starting offset of the resulting substring, if one exists.
+ * @param endOffset back-filled with the offset of the character immediately following the resulting
+ * substring, if one exists.
+ * @see TEXT_BOUNDARY_TYPE
+ * @returns a string which is a substring of the text content of the object, delimited by the
+ * specified boundary condition.
+ */
string getTextAtOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
out long startOffset, out long endOffset);
+ /**
+ * Obtain a subset of the text content of an object which entirely follows \c offset,
+ * delimited by character, word, line, or sentence boundaries as specified by \c type. The
+ * starting and ending offsets of the resulting substring are returned in \c startOffset
+ * and \c endOffset. By definition, if such a substring exists, \c startOffset must be greater than
+ * \c offset.
+ * @param offset the offset from which the substring search begins, and which must
+ * lie before the returned substring.
+ * @param type the text-boundary delimiter which determines whether the returned text constitures
+ * a character, word, line, or sentence (and possibly attendant whitespace),
+ * and whether the start or ending of such a substring forms the boundary condition.
+ * @param startOffset back-filled with the starting offset of the resulting substring, if one exists.
+ * @param endOffset back-filled with the offset of the character immediately following the resulting
+ * substring, if one exists.
+ * @see TEXT_BOUNDARY_TYPE
+ * @returns a string which is a substring of the text content of the object, delimited by the
+ * specified boundary condition.
+ */
string getTextAfterOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
out long startOffset, out long endOffset);
+ /**
+ * @returns an unsigned long integer whose value corresponds to the UCS-4 representation of the
+ * character at the specified text offset, or 0 if offset is out of range.
+ */
unsigned long getCharacterAtOffset (in long offset); /* long instead of wchar,
* to allow unicode chars > 16 bits
*/
+ /**
+ * Get the string value of a named attribute at a given offset, if defined.
+ * @param offset the offset of the character for which the attribute run is to be obtained.
+ * @param attributeName the name of the attribute for which the value is to be returned, if defined.
+ * @param startOffset back-filled with the offset of the first character in the attribute run
+ * containing the character at \c offset.
+ * @param endOffset back-filled with the offset of the first character past the end of the
+ * attribute run containing the character at \c offset.
+ * @param defined back-filled with \c True if the attributeName has a defined value at \c offset,
+ * \c False otherwise.
+ * @returns the value of attribute (name-value pair) corresponding to "name", if defined.
+ **/
+ string getAttributeValue (in long offset, in string attributeName,
+ out long startOffset,
+ out long endOffset,
+ out boolean defined);
+ /**
+ * getAttributes is deprecated in favor of getAttributeRun.
+ * @returns the attributes at offset, as a semicolon-delimited set of colon-delimited name-value pairs.
+ * @see getAttributeRun
+ **/
string getAttributes (in long offset,
out long startOffset, out long endOffset);
+ /**
+ * Deprecated in favor of getDefaultAttributeSet.
+ * @returns the attributes which apply to the entire text content, but which were not explicitly
+ * specified by the content creator.
+ * @see getDefaultAttributeSet
+ **/
string getDefaultAttributes ();
+ /**
+ * Obtain a the bounding box, as x, y, width, and height, of the character or glyph at a particular
+ * character offset in this object's text content. The coordinate system in which the results are
+ * reported is specified by coordType. If an onscreen glyph corresponds to multiple character offsets,
+ * for instance if the glyph is a ligature, the bounding box reported will include the entire glyph and
+ * therefore may apply to more than one character offset.
+ * @param offset the character offset of the character or glyph being queried.
+ * @param x the minimum horizontal coordinate of the bounding box of the glyph representing
+ * the character at \c offset.
+ * @param y the minimum vertical coordinate of the bounding box of the glyph representing
+ * the character at \c offset.
+ * @param width the horizontal extent of the bounding box of the glyph representing
+ * the character at \c offset.
+ * @param height the vertical extent of the bounding box of the glyph representing
+ * the character at \c offset.
+ * @param coordType If 0, the results will be reported in screen coordinates, i.e. in pixels
+ * relative to the upper-left corner of the screen, with the x axis pointing right
+ * and the y axis pointing down.
+ * If 1, the results will be reported relative to the containing toplevel window,
+ * with the x axis pointing right and the y axis pointing down.
+ **/
void getCharacterExtents (in long offset, out long x, out long y, out long width, out long height, in short coordType);
+ /**
+ * Get the offset of the character at a given onscreen coordinate. The coordinate system used to interpret
+ * x and y is determined by parameter coordType.
+ * @param x
+ * @param y
+ * @param coordType if 0, the input coordinates are interpreted relative to the entire screen, if 1,
+ * they are relative to the toplevel window containing this Text object.
+ * @returns the text offset (as an offset into the character array) of the glyph whose onscreen bounds contain the point x,y, or -1 if the point is outside the bounds of any glyph.
+ **/
long getOffsetAtPoint (in long x, in long y, in short coordType);
+ /**
+ * Obtain the number of separate, contiguous selections in the current Text object.
+ * Text objects which do not implement selection of discontiguous text regions will always
+ * return '0' or '1'. Note that "contiguous" is defined by continuity of the offsets, i.e.
+ * a text 'selection' is defined by a start/end offset pair. In the case of bidirectional text,
+ * this means that a continguous selection may appear visually discontiguous, and vice-versa.
+ *
+ * @returns the number of contiguous selections in the current Text object.
+ **/
long getNSelections ();
+ /**
+ * The result of calling getSelection with an out-of-range selectionNum (i.e. for a selection
+ * which does not exist) is not strictly defined, but should set endOffset equal to startOffset.
+ **/
void getSelection (in long selectionNum, out long startOffset, out long endOffset);
+ /**
+ * The result of calling addSelection on objects which already have one selection present, and which
+ * do not include STATE_MULTISELECTABLE, is undefined, other than the return value.
+ * @returns \c True of the selection was successfully added, \c False otherwise. Selection may
+ * fail if the object does not support selection of text (see STATE_SELECTABLE_TEXT), if the
+ * object does not support multiple selections and a selection is already defined, or for other reasons
+ * (for instance if the user does not have permission to copy the text into the relevant selection
+ * buffer).
+ **/
boolean addSelection (in long startOffset, in long endOffset);
+ /**
+ * Deselect the text contained in the specified selectionNum, if such a selection
+ * exists, otherwise do nothing. Removal of a non-existant selectionNum has no effect.
+ * @returns \c True if the selection was successfully removed, \c False otherwise.
+ **/
boolean removeSelection (in long selectionNum);
+ /**
+ * Modify an existing selection's start or ending offset.
+ *
+ * Calling setSelection for a selectionNum that is not already defined has no effect.
+ * The result of calling setSelection with a selectionNum greater than 0 for objects that
+ * do not include STATE_MULTISELECTABLE is undefined.
+ * @param selectionNum indicates which of a set of non-contiguous selections to modify.
+ * @param startOffset the new starting offset for the selection
+ * @param endOffset the new ending offset for the selection
+ * @returns \c True if the selection corresponding to selectionNum is successfully modified,
+ * \c False otherwise.
+ **/
boolean setSelection (in long selectionNum, in long startOffset, in long endOffset);
+ /**
+ * Obtain the bounding box which entirely contains a given text range.
+ * Negative values may be returned for the bounding box parameters in the event
+ * that all or part of the text range is offscreen or not mapped to the screen.
+ * @param startOffset the offset of the first character in the specified range.
+ * @param endOffset the offset of the character immediately after the last
+ * character in the specified range.
+ * @param x an integer parameter which is back-filled with the minimum
+ * horizontal coordinate of the resulting bounding box.
+ * @param y an integer parameter which is back-filled with the minimum
+ * vertical coordinate of the resulting bounding box.
+ * @param width an integer parameter which is back-filled with the
+ * horizontal extent of the bounding box.
+ * @param height an integer parameter which is back-filled with the
+ * vertical extent of the bounding box.
+ * @param coordType If 0, the above coordinates are reported in pixels relative to
+ * corner of the screen; if 1, the coordinates are reported relative to the
+ * corner of the containing toplevel window.
+ **/
void getRangeExtents (in long startOffset, in long endOffset,
out long x, out long y,
out long width, out long height, in short coordType);
+
+ /**
+ * Return the text content within a bounding box,
+ * as a list of Range structures.
+ * Depending on the TEXT_CLIP_TYPE parameters, glyphs which are clipped by the
+ * bounding box (i.e. which lie partially inside and partially outside it)
+ * may or may not be included in the ranges returned.
+ * @note This method may be of particular interest to screen review algorithms.
+ * @see TEXT_CLIP_TYPE.
+ * @param x the minimum x ( i.e. leftmost) coordinate of the bounding box.
+ * @param y the minimum y coordinate of the bounding box.
+ * @param width the horizontal size of the bounding box. The rightmost bound of the bounding box
+ * is (x + width);
+ * @param height the vertical size of the bounding box. The maximum y value of the bounding box
+ * is (y + height);
+ * @param coordType If 0, the above coordinates are interpreted as pixels relative to
+ * corner of the screen; if 1, the coordinates are interpreted as pixels relative to the
+ * corner of the containing toplevel window.
+ * @param xClipType determines whether text which intersects the bounding box in the x direction
+ * is included.
+ * @param yClipType determines whether text which intersects the bounding box in the y direction
+ * is included.
+ **/
RangeList getBoundedRanges (in long x, in long y,
in long width, in long height,
in short coordType,
in TEXT_CLIP_TYPE xClipType,
in TEXT_CLIP_TYPE yClipType);
- /**
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -97,5 +393,7 @@ module Accessibility {
void unImplemented ();
void unImplemented2 ();
void unImplemented3 ();
+ void unImplemented4 ();
+ /** \endcond **/
};
};
diff --git a/idl/Accessibility_Value.idl b/idl/Accessibility_Value.idl
index 82de7710..4531879d 100644
--- a/idl/Accessibility_Value.idl
+++ b/idl/Accessibility_Value.idl
@@ -22,13 +22,37 @@
module Accessibility {
+ /**
+ * An interface supporting controls which allow a
+ * one-dimensional, scalar quantity to be modified or which
+ * reflect a scalar quantity. (If STATE_EDITABLE is not present,
+ * the valuator is treated as "read only".
+ *
+ * @note Events generated by Image instances include:
+ * \li \c "object:value-changed"
+ */
interface Value : Bonobo::Unknown {
+ /**
+ * The minimum value allowed by this valuator.
+ */
readonly attribute double minimumValue;
+ /**
+ * The maximum value allowed by this valuator.
+ */
readonly attribute double maximumValue;
+ /**
+ * The smallest incremental change which this valuator allows.
+ * If 0, the incremental changes to the valuator are
+ * limited only by the precision of a double precision value
+ * on the platform.
+ */
readonly attribute double minimumIncrement;
+ /**
+ * The current value of the valuator.
+ */
attribute double currentValue;
- /**
+ /** \cond
* unImplemented:
*
* placeholders for future expansion.
@@ -37,5 +61,6 @@ module Accessibility {
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
+ /** \endcond */
};
};