? idl/at-spi-draft-idl.tar.gz
? idl/doxygen-warnings.log
? idl/oxyconf
Index: idl/Accessibility.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility.idl,v
retrieving revision 1.4
diff -u -r1.4 Accessibility.idl
--- idl/Accessibility.idl	11 Dec 2001 16:56:15 -0000	1.4
+++ idl/Accessibility.idl	10 Oct 2005 11:26:13 -0000
@@ -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,58 @@
 #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
+ * Accessibility::Accessible\n
+ * Accessibility::Application\n
+ * Accessibility::Desktop\n
+ * Accessibility::Component\n 
+ * Accessibility::Collection [NEW]\n
+ * Accessibility::Document [NEW]\n
+ * Accessibility::Hypertext\n
+ * Accessibility::Image [REVISED]\n
+ * Accessibility::Selection\n
+ * Accessibility::StreamableContent\n
+ * Accessibility::Table\n
+ * Accessibility::Terminal [NEW]\n
+ * Accessibility::Text\n
+ * Accessibility::EditableText\n
+ * Accessibility::Value
+ *
+ * \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 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 : 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
  */
@@ -45,6 +97,9 @@
 #include <Accessibility_Table.idl>
 #include <Accessibility_Text.idl>
 #include <Accessibility_Value.idl>
+#include <Accessibility_Collection.idl>
+#include <Accessibility_Document.idl>
+#include <Accessibility_Terminal.idl>
 
 /*
  * Interfaces derived from Accessibility::Text
@@ -64,6 +119,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__
Index: idl/Accessibility_Accessible.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_Accessible.idl,v
retrieving revision 1.14
diff -u -r1.14 Accessibility_Accessible.idl
--- idl/Accessibility_Accessible.idl	1 Dec 2003 17:36:06 -0000	1.14
+++ idl/Accessibility_Accessible.idl	10 Oct 2005 11:26:13 -0000
@@ -23,16 +23,30 @@
 #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 **/
+  enum LOCALE_TYPE {
+      LOCALE_TYPE_MESSAGES,
+      LOCALE_TYPE_COLLATE,
+      LOCALE_TYPE_CTYPE,
+      LOCALE_TYPE_MONETARY,
+      LOCALE_TYPE_NUMERIC,
+      LOCALE_TYPE_TIME
+  };
+
   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. */
+  typedef sequence<string> AttributeSet;
+
+    /** A list of accessible roles */
+  typedef sequence<Role> RoleSet;
+
   struct BoundingBox {
 	  long x;
 	  long y;
@@ -40,46 +54,48 @@
 	  long height;
   };
 
+  interface Application; /** defined in Accessibility_Application.idl **/
+
   interface Accessible : Bonobo::Unknown {
 
     /**
-     * @name: a (short) #string representing the object's name.
+     * name: a (short) \c string representing the object's name.
      **/
     attribute string name;
 
     /**
-     * @description: a #string describing the object in more detail than @name.
+     * description: 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.
+     * parent: 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
+     * @param 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
      *
-     * Returns: a #boolean indicating whether the two object references
+     * @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).
+     * @param index: an in parameter indicating which child is requested (zero-indexed).
      *
-     * Get the accessible child of this object at index @index.
+     * Get the accessible child of this object at \c index.
      *
-     * Returns: the 'nth' @Accessible child of this object.
+     * @returns: the 'nth' ::Accessible child of this object.
      **/
     Accessible 	getChildAtIndex (in long index);
 
@@ -88,7 +104,7 @@
      *
      * 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 ();
 
@@ -97,15 +113,15 @@
      *
      * 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 ();
 
@@ -113,7 +129,7 @@
      * 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 ();
 
@@ -122,21 +138,50 @@
      * 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 ();
+    /**
+     * getAttributes:
+     *
+     * Get the current list of attributes applied to this object as a whole, as an ::AttributeSet.
+     * Not all objects have explicit attributes.  Where appropriate, attribute names and values should
+     * be chosen from the list of "recommended attributes and values" maintained with the 
+     * Gnome Accessibility Project, or defined by a specification referenced by the above recommendation.
+     * For example, attributes of ::Accessible objects corresponding to XHTML content elements should
+     * correspond to attribute names and values specified in the w3c XHTML specification.
+     * 
+     * @returns: an ::AttributeSet encapsulating any "attribute values" currently defined for the object.
+     **/
+    AttributeSet	getAttributes ();
+
+    /**
+     * Get the containing ::Application for this object.
+     *
+     * @returns the ::Application instance to which this object belongs.
+     **/
+    Application getApplication ();
+
+    /**
+     * Get the containing Accessible for this object which implements Document, 
+     * if this object is a child of 
+     * a container which implements the Document interface.
+     *
+     * @returns the Accessible instance representing the document 
+     * to which this object belongs, or \c NIL, if this object does not belong
+     * to the content of any document.
+     **/
+    Accessible    getDocumentObject ();
+
   };
 };
 
Index: idl/Accessibility_Action.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_Action.idl,v
retrieving revision 1.8
diff -u -r1.8 Accessibility_Action.idl
--- idl/Accessibility_Action.idl	19 Nov 2002 20:04:18 -0000	1.8
+++ idl/Accessibility_Action.idl	10 Oct 2005 11:26:14 -0000
@@ -25,59 +25,61 @@
   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.
      *
-     * 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.
      *
-     * 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 +88,7 @@
     void unImplemented2 ();
     void unImplemented3 ();
     void unImplemented4 ();
+      /** \endcond */
   };
 };
 
Index: idl/Accessibility_Application.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_Application.idl,v
retrieving revision 1.12
diff -u -r1.12 Accessibility_Application.idl
--- idl/Accessibility_Application.idl	4 Dec 2003 23:07:10 -0000	1.12
+++ idl/Accessibility_Application.idl	10 Oct 2005 11:26:14 -0000
@@ -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,51 +28,42 @@
 
 module Accessibility {
 
-  enum LOCALE_TYPE {
-      LOCALE_TYPE_MESSAGES,
-      LOCALE_TYPE_COLLATE,
-      LOCALE_TYPE_CTYPE,
-      LOCALE_TYPE_MONETARY,
-      LOCALE_TYPE_NUMERIC,
-      LOCALE_TYPE_TIME
-  };
-
   interface Application : Accessible {
 
     /**
-     * @toolkitName:
+     * toolkitName:
      * A string indicating the type of user interface toolkit
      * which is used by the application.
-     * Ordinarily clients of @AccessibleApplication should be
+     * Ordinarily clients of ::AccessibleApplication should be
      * toolkit-agnostic, dependencies on this method probably
-     * should be reconsidered!
+     * should be avoided!
      **/
     readonly attribute string toolkitName;
 
     /**
-     * @version:
+     * version:
      * A string indicating the version number of the application's
      * accessibility bridge implementation.
      **/
     readonly attribute string version;
 
     /**
-     * @id:
+     * 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.
      *       For most event support, clients should use non-toolkit-specific events
-     *       whenever possible, via #Registry::registerGlobalEventListener - this method 
+     *       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.
      *
@@ -81,12 +72,13 @@
 
     /**
      * 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);
@@ -97,7 +89,9 @@
      * 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 ();
 
@@ -106,24 +100,26 @@
      *
      * 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.
+     * @param 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.
+     * @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 */
   };
 };
 
Index: idl/Accessibility_Collection.idl
===================================================================
RCS file: idl/Accessibility_Collection.idl
diff -N idl/Accessibility_Collection.idl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ idl/Accessibility_Collection.idl	10 Oct 2005 11:26:15 -0000
@@ -0,0 +1,318 @@
+/* 
+ * AT-SPI - Assistive Technology Service Provider Interface 
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 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
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+module Accessibility {
+
+    /** A structure that encapsulates an object reference for an Accessible, its localized name, and its Role **/
+    struct AccessibleSetEntry {
+	Accessible accessible;
+	string     name;
+	Role       role;
+    }
+
+    /** A list of Accessible instances, returned as a Sequence of Accessible objects. */
+    typedef sequence<AccessibleSetEntry> AccessibleSet;
+
+    /**
+     * \b NEW
+     *
+     * An interface designed to allow a subset of the complete accessible object
+     * 'tree' to be returned which satisfies a set of criteria.  This interface can
+     * be used to avoid iteration or client-side search of the object tree.
+     *
+     * Collection is an interface which is particularly useful within large containers,
+     * for instance Table instances, and for complex documents.  
+     * For that reason, implementors
+     * of Document are encouraged to implement Collection as well.
+
+     *
+     * Because the Collection API is recursive, in general only a few elements in 
+     * the accessibility hierarchy need implement it, for instance Document containers,
+     * Table instances, and toplevel windows.
+
+     */
+  interface Collection : Bonobo::Unknown {
+
+      /** Order in which an ::AccessibleSet should be returned. */
+      enum SortOrder {
+	  SORT_ORDER_INVALID,
+	  SORT_ORDER_CANONICAL, /**< The order of children as defined by 
+				   Accessibility::Accessible::getIndexInParent */
+	  SORT_ORDER_FLOW, /**< The order in which content 'flows', 
+			    * for instance text flow 
+			    */
+	  SORT_ORDER_TAB, /**< The 'TAB' order, e.g. the order in which objects 
+			   * obtain focus via 'TAB' or similar forward keyboard 
+			   * navigation.  Primary useful for objects with 
+			   * STATE_FOCUSSABLE. 
+			   */
+	  SORT_ORDER_REVERSE_CANONICAL, /**< The reverse of the order of children as defined by 
+				   Accessibility::Accessible::getIndexInParent */
+	  SORT_ORDER_REVERSE_FLOW, /**< The reverse of the order in which content 'flows', 
+			    * for instance text flow from last to first. 
+			    */
+	  SORT_ORDER_REVERSE_TAB, /**< The reverse 'TAB' order, e.g. the order in which objects 
+			   * obtain focus via 'Shift-TAB' or similar backwards keyboard 
+			   * navigation.  Primary useful for objects with 
+			   * STATE_FOCUSSABLE. 
+			   */
+	  SORT_ORDER_LAST_DEFINED
+      };
+      
+      /** 
+       * Enumeration used to specify how attribute matching is done in
+       * Collection::getChildren.
+       */
+      enum MatchType {
+	  MATCH_INVALID, 
+	  MATCH_ALL, /**< \c TRUE if all of the criteria are met */
+	  MATCH_ANY, /**< \c TRUE if any of the criteria are met */
+	  MATCH_NONE,/**< \c TRUE if none of the criteria are met */
+	  MATCH_EMPTY,/**< \c Same as MATCH_ALL if the criteria is non-empty;
+			 for empty criteria this rule requires returned value to also have empty 
+			 set. */
+	  MATCH_LAST_DEFINED
+      };
+
+      /**
+       * Query whether an object is a descendant of another in the accessibility
+       * hierarchy. \note An object is not considered to be an ancestor of itself.
+       *
+       * @param object: the object to search for in the Collection.
+       *
+       * @returns \c TRUE if \a object is a descendant of this Collection, 
+       * \c FALSE otherwise. 
+       */
+        boolean isAncestorOf (in Accessible object);
+
+       /**
+	* Create a ::MatchRule for the purposes of doing a getChildren query on a container.
+	* The resulting ::MatchRule should be freed by the caller when it is no longer needed, 
+	* via ::freeMatchRule.  If any of the following params are empty or NULL: 
+	* %states, %attributes, %roles, %interfaces, then any value for the corresponding
+	* parameter in a queried child will constitute a match, unless the following ::MatchType
+	* is MATCH_EMPTY.  For example, 
+	* @example: createMatchRule (NULL, MATCH_ANY, 
+	*                            NULL, MATCH_ANY, 
+	*                            NULL, MATCH_ANY,
+	*                            "", MATCH_ANY,
+	*                            FALSE);
+	* will create a match rule which returns all children of the specified Collection, whereas
+	*           createMatchRule (NULL, MATCH_ANY,
+	*                            NULL, MATCH_EMPTY,
+	*                            NULL, MATCH_ANY,
+	*                            "", MATCH_ANY,
+	*                            FALSE);
+	* will return only those objects having no attributes.  
+	* @note MATCH_EMPTY does not
+	* make sense for the %rolematchtype or %interfacematchtype parameters, as all children
+	* of a collection have non-empty Roles and implement at least one interface. 
+	*
+	* @param states: An Accessibility::StateSet whose states are to be compared 
+	*                with the objects in the collection.  
+	* @param statematchtype: A ::MatchType which determines the match requirements for the
+	*                'states' criterion.
+	* @param attributes: An ::AttributeSet, as a list of name-value pairs, 
+	*                of attributes which should present in members of a
+	*                matching set.  In the case of text attributes, the presence
+	*                of the attribute somewhere within the content of an
+	*                object is deemed to be a match, i.e. an object's entire 
+	*                content need not match the attribute if some subrange of the
+	*                object content matches the attribute values.
+	* @param attributematchtype: A ::MatchType which determines the match requirements for the
+	*                'attributes' criterion.
+	* @param roles:  A ::RoleSet specifying the Accessibility::Role values which
+	*                are to be considered among the match criteria.
+	* @param rolematchtype: A ::MatchType which determines the match requirements for the
+	*                'roles' criterion.
+	* @param interfaces: A string which represents one or more IDL interface 
+	*                definitions which should be implemented by matching objects.
+	* @param interfacematchtype: A ::MatchType which determines the match requirements for the
+	*                'interfaces' criterion.
+	* @param invert: If TRUE, the resulting ::MatchRule will return objects which do NOT match the
+	*                specified criteria, instead of those which do; i.e. this parameter "inverts" the
+	*                sense of the resulting query.
+	* @returns a ::MatchRule which encapsulates the specified criteria.  
+	**/
+       MatchRule        createMatchRule (in StateSet states,
+					 in MatchType statematchtype,
+					 in AttributeSet attributes,
+					 in MatchType attributematchtype,
+					 in RoleSet roles,
+					 in MatchType rolematchtype,
+					 in string interfaces,
+					 in MatchType interfacematchtype,
+					 in boolean invert);
+       /**
+	* Frees the resources associated with the specified ::MatchRule.
+	* The ::Matchrule should not be re-used by the client after freeing.
+	**/
+       void             freeMatchRule (in MatchRule rule);
+       
+       /**
+	* Query a Collection for objects within it which match a certain set of 
+	* criteria.  Any criteria which are \c NULL below will be excluded from
+	* consideration unless \a rule is \c MATCH_EMPTY.  \c MATCH_ANY will require 
+	* that one or more of the non-empty parameters \a states, \a attributes, 
+	* or \a repoid be an exact match.  Parameters \a states, \a attributes, \a roles, 
+	* and \a repoid may be empty sets.
+	*
+	* @param rule:   The ::MatchRule which determines which children should be returned.
+	* @param sortby: The order in which the resulting ::AccessibleSet should be
+	*                returned.
+	* @param recurse:  If \c TRUE, the search will recurse into the sub-containers 
+	*                and may potentially include 'grandchildren' and their 
+	*                descendants.  If \c FALSE, only immediate children will be
+	*                tested against the match criteria.
+	* @param count:  If >= 0, the maximum length of the sequence which should be
+	*                returned to the caller.  If -1, the caller may receive a
+	*                sequence of any length.  On successful completion, this
+	*                parameter will be back-filled with the total number of 
+	*                matching elements (_not_ the number of elements in the returned
+	*                list); this means that a value of 0 may be
+	*                used to obtain the length of the complete match list.  As a
+	*                special case, if this param is backfilled with '-1', it means that
+	*                the length of the resulting collection is either unbounded or unknown
+	*                to the service being interrogated; in this case the client should
+	*                supply an upper length bound in \a count and use multiple calls to
+	*                ::getNextChildren to traverse the ::Collection.
+	*
+	* @returns an ::AccessibleSet consisting of children which meet the criteria,
+	* or \c NIL if no matching objects were found in the ::AccessibleSet.
+	*/
+       AccessibleSet getChildren (in MatchRule rule,
+				  in SortOrder sortby,
+				  in boolean recurse,
+				  inOut long count);
+       
+       /**
+        * Find a list of the previous elements in a collection which match a particular search 
+	* criterion, relative to a subelement of the specified container.
+	*
+	* @note For applications interested in an entire ordered list from a collection, 
+	* ::getChildren API is more efficient; getPreviousMatch is primarily intended for
+	* navigation from the user's current point of regard or keyboard focus.
+	* 
+	* @param current_object: the Accessibility::Accessible within the ::Collection which forms
+	*               one boundary for the search set; only objects which precede this object in
+	*               the requested \a sortby sort order will be returned. If the specified 
+	*               \a sortby order does not apply to \a current_object (for instance if ::SORT_ORDER_TAB
+	*               has been requested, but \a current_object is not in the tab sequence), then
+	*               ::SORT_ORDER_CANONICAL will be used to determine the "previous" matching element
+	*               for the purposes of bounding the returned set.  The returned set, thus bounded, 
+	*               will however respect the \a sortby order requested by the user. 
+	* @param rule:   The match criteria which determines what constitutes a 'match'.
+	* @param sortby: The order in which the resulting ::AccessibleSet should be
+	*                returned.
+	* @param recurse:  If \c TRUE, the search will recurse into the sub-containers 
+	*                and may potentially include 'grandchildren' and their 
+	*                descendants.  If \c FALSE, only siblings and immediate children will be
+	*                tested against the match criteria.
+	* @param count:  If >= 0, the maximum length of the sequence which should be
+	*                returned to the caller.  If -1, the caller may receive a
+	*                sequence of any length.  On successful completion, this
+	*                parameter will be back-filled with the total number of 
+	*                matching elements (_not_ the number of elements in the returned
+	*                list); this means that a value of 0 may be
+	*                used to obtain the length of the complete match list.  As a
+	*                special case, if this param is backfilled with '-1', it means that
+	*                the length of the resulting collection is either unbounded or unknown
+	*                to the service being interrogated; in this case the client should
+	*                supply an upper length bound in \a count and use multiple calls to
+	*                ::getPreviousChildren to traverse the ::Collection.
+	*
+	* @returns an ::AccessibleSet consisting of the elements in a collection which match a set of match criteria
+	* and which precede the given object, according to a specified sort order. 
+        */
+       AccessibleSet getPreviousChildren (in Accessible current_object,
+					  in MatchRule rule, 
+					  in SortOrder sortby, 
+					  in boolean recurse,
+					  inout long count);
+       
+       /**
+        * Find a list of the next elements in a collection which match a particular search criterion.
+	*
+	* @note For applications interested in an entire ordered list from a collection, 
+	* ::getChildren API is more efficient; getNextMatch is primarily intended for
+	* navigation from the user's current point of regard or keyboard focus.
+	* 	
+	* @param current_object: the Accessibility::Accessible within the ::Collection which forms
+	*               one boundary for the search set; only objects which follow this object in
+	*               the requested \a sortby sort order will be returned. If the specified 
+	*               \a sortby order does not apply to \a current_object (for instance if ::SORT_ORDER_TAB
+	*               has been requested, but \a current_object is not in the tab sequence), then
+	*               ::SORT_ORDER_CANONICAL will be used to determine the "previous" matching element
+	*               for the purposes of bounding the returned set.  The returned set, thus bounded, 
+	*               will however respect the \a sortby order requested by the user. 
+	* @param rule:   The match criteria which determines what constitutes a 'match'.
+	* @param sortby: The order in which the resulting ::AccessibleSet should be
+	*                returned.
+	* @param recurse:  If \c TRUE, the search will recurse into the sub-containers 
+	*                and may potentially include 'grandchildren' and their 
+	*                descendants.  If \c FALSE, only siblings and immediate children will be
+	*                tested against the match criteria.
+	* @param count:  If >= 0, the maximum length of the sequence which should be
+	*                returned to the caller.  If -1, the caller may receive a
+	*                sequence of any length.  On successful completion, this
+	*                parameter will be back-filled with the total number of 
+	*                matching elements (_not_ the number of elements in the returned
+	*                list); this means that a value of 0 may be
+	*                used to obtain the length of the complete match list.  As a
+	*                special case, if this param is backfilled with '-1', it means that
+	*                the length of the resulting collection is either unbounded or unknown
+	*                to the service being interrogated; in this case the client should
+	*                supply an upper length bound in \a count and use multiple calls to
+	*                ::getNextChildren to traverse the ::Collection.
+	*
+	* @returns an ::AccessibleSet consisting of the elements in a collection which match a
+	* set of match criteria which follow the given object, according to a specified sort order. 
+        */
+       AccessibleSet getNextChildren (in Accessible current_object,
+				      in MatchRule rule, 
+				      in SortOrder sortby, 
+				      in boolean recurse,
+				      inout long count);
+       
+       /**
+	* Query an object for the current 'active descendant', i.e. the 
+	* descendant currently having STATE_ACTIVE and reacting to keyboard events.
+	* If the object being queried doesn't have state MANAGES_DESCENDANTS, 
+	* this method will return NIL.
+	*
+	* @returns: The currently active descendant, if there is one, otherwise NIL.
+	*/
+       Accessible getActiveDescendant ();
+       
+       /**
+	*\cond
+	* unImplemented:
+	*
+	* placeholders for future expansion.
+	*/
+       void unImplemented ();
+       void unImplemented2 ();
+       void unImplemented3 ();
+       void unImplemented4 ();
+       /** \endcond */
+  };
+};
Index: idl/Accessibility_Document.idl
===================================================================
RCS file: idl/Accessibility_Document.idl
diff -N idl/Accessibility_Document.idl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ idl/Accessibility_Document.idl	10 Oct 2005 11:26:16 -0000
@@ -0,0 +1,82 @@
+/* 
+ * AT-SPI - Assistive Technology Service Provider Interface 
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 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
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __ACCESSIBILITY_DOCUMENT_DEFINED__
+#define __ACCESSIBILITY_DOCUMENT_DEFINED__
+
+module Accessibility {
+
+    /**
+     * \b NEW
+     * Primarily a 'tagging' interface which indicates the start of 
+     * document content in the Accessibility hierarchy.  
+     * Accessible objects below the node implementing
+     * Document are normally assumed to be part of the document content.
+     * Attributes of Document are those attributes associated with the document 
+     * as a whole.  Objects that implement Document are normally expected to
+     * implement Collection as well.
+     *
+     * \see Accessibility::Collection
+     */
+  interface Document : Bonobo::Unknown {
+
+     /**
+     * Gets the locale associated with the document's content.
+     * For the current message locale, use \a lctype LOCALE_TYPE_MESSAGES.
+     *
+     * @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);
+
+      /**
+       * Gets the value of a single attribute, if specified for the document as a whole.
+       *
+       * @param attributename: a string indicating the name of a specific attribute 
+       * (name-value pair) being queried.
+       * 
+       * @returns a string corresponding to the value of the specified attribute, or
+       * an empty string if the attribute is unspecified for the object.
+       **/
+    string       getAttributeValue (in string attributename);
+
+      /**
+       * Gets all attributes specified for a document as a whole.  
+       * For attributes which change within 
+       * the document content, see Accessibility::Text::getAttributes instead.
+       * 
+       * @returns an ::AttributeSet containing the attributes of the document, as
+       * name-value pairs.
+       **/
+    AttributeSet       getAttributes ();
+
+    /**\cond **/
+    void          unImplemented_ ();
+    void          unImplemented2_ ();
+    void          unImplemented3_ ();
+    void          unImplemented4_ ();
+    /**\endcond **/
+  };
+};
+
+#endif
Index: idl/Accessibility_Image.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_Image.idl,v
retrieving revision 1.8
diff -u -r1.8 Accessibility_Image.idl
--- idl/Accessibility_Image.idl	19 Nov 2002 20:04:19 -0000	1.8
+++ idl/Accessibility_Image.idl	10 Oct 2005 11:26:16 -0000
@@ -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,25 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include "Accessibility_Accessible.idl"
+
 module Accessibility {
 
   interface Image : Bonobo::Unknown  {
     readonly attribute string imageDescription;
+      /** 
+       * \b NEW 
+       * A string corresponding to the POSIX LC_MESSAGES locale used 
+       * by the imageDescription.
+       */
+    readonly attribute string imageLocale;
     BoundingBox getImageExtents (in short coordType);
     void getImagePosition (out long x, out long y, in short coordType);
     void getImageSize (out long width, out long height);
+    AttributeSet getImageAttributes ();
+
     /**
+     * \cond
      * unImplemented:
      *
      * placeholders for future expansion.
@@ -35,6 +46,6 @@
     void unImplemented ();
     void unImplemented2 ();
     void unImplemented3 ();
-    void unImplemented4 ();
+    /** \endcond */
   };
 };
Index: idl/Accessibility_LoginHelper.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_LoginHelper.idl,v
retrieving revision 1.5
diff -u -r1.5 Accessibility_LoginHelper.idl
--- idl/Accessibility_LoginHelper.idl	8 Mar 2005 13:24:44 -0000	1.5
+++ idl/Accessibility_LoginHelper.idl	10 Oct 2005 11:26:16 -0000
@@ -38,23 +38,23 @@
      * 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,
@@ -67,9 +67,9 @@
       /* 
        * 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 +82,7 @@
       /*
        * 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 +104,33 @@
 
   	/**
          * 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 +141,15 @@
          *
          * 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 +158,7 @@
 	void unImplemented2 ();
 	void unImplemented3 ();
 	void unImplemented4 ();
+      /** \endcond */
     };
 
 };
Index: idl/Accessibility_Selector.idl
===================================================================
RCS file: idl/Accessibility_Selector.idl
diff -N idl/Accessibility_Selector.idl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ idl/Accessibility_Selector.idl	10 Oct 2005 11:26:17 -0000
@@ -0,0 +1,149 @@
+/* 
+ * AT-SPI - Assistive Technology Service Provider Interface 
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 2001 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
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <Bonobo_Unknown.idl>
+
+#ifndef _ACCESSIBILITY_SELECTOR_IDL_
+#define _ACCESSIBILITY_SELECTOR_IDL_
+
+module Accessibility {
+
+    /** A structure which encapsulates both a string representation of a command and a unique command ID **/
+    struct Command {
+	  string name;
+	  long   id;
+     };
+
+    /** A list of Command objects **/
+    typedef sequence<Command> CommandList;
+
+    /** 
+    * \b NEW
+    * An interface which should be implemented by assistive technologies or other
+    * clients of the ::Selector interface, over which notifications to the list of
+    * available commands is made.  The notifyCommands() method of the client is then called by 
+    * the ::Selector instance.
+    **/
+    interface CommandListener {
+	/**
+	 * Notify the CommandListener instance of changes to the currently
+	 * available commands, by sending the current ::CommandList.
+	 *
+	 * @param commands The newly-available list of ::Command objects which
+	 * may be invoked by the listener.
+	 **/
+	void notifyCommands (in CommandList commands);
+    };
+
+    /**
+     * \bnew
+     * Selector:
+     *
+     * This interface is intended for use by assistive technologies
+     * and related user-agents.  Via this interface, an assistive technology or
+     * user agent may expose a series of choices or selections in textual form,
+     * which can be activated on demand by a client of the Selector interface.
+     *
+     * Examples of the use of this interface include voice-command and remote-control
+     * applications, in which the user interaction is wholly or partly delegated by the 
+     * implementor to an external agent.  
+     *
+     **/
+  interface Selector : Bonobo::Unknown {
+
+      enum CommandResult {
+	  COMMAND_RESULT_INVALID,
+	  COMMAND_RESULT_SUCCESS,
+	  COMMAND_RESULT_FAILED,
+	  COMMAND_RESULT_OBSOLETE,
+	  COMMAND_RESULT_LAST_DEFINED
+      };
+
+      /** This attribute is TRUE if this Selector allows its ::CommandList to be specified by the client **/
+      readonly attribute boolean supportsReplace;
+
+      /** 
+       * Query the ::Selector for the current ::CommandList.
+       *
+       * @returns the currently available ::CommandList 
+       **/
+      CommandList getCommands ();
+
+      /**
+       * @returns TRUE if the replacement request was successful, 
+       * FALSE if the request could not be honored.
+       **/
+      boolean replaceCommands (in CommandList commands);
+
+      /** 
+       * Ask the ::Selector to re-calculate its ::CommandList.
+       * @note in most cases the ::Selector will continuously
+       * update its ::CommandList without recourse to this call.
+       * This call is equivalent to ::getCommands, except that
+       * after ::refreshCommands the new ::CommandList will be returned
+       * via any registered ::CommandListener instances rather than
+       * synchronously via this call.
+       *
+       * @returns TRUE if the ::CommandList changed.
+       **/
+      boolean refreshCommands ();
+
+      /** 
+       * Request that the ::Selector invoke the specified ::Command.
+       * @param command the ::Command to activate/invoke.
+       * @returns a ::CommandResult indicating whether the 
+       * request was honored, and the reason for failure if the
+       * ::Command could not be activated or invoked.
+       **/
+      CommandResult activateCommand (in Command command);
+
+      /** 
+       * Register a :CommandListener instance for notification of 
+       * changes to the command set.
+       * @param listener the ::CommandListener to be notified of changes.
+       **/
+      void registerChangeListener (in CommandListener listener);
+
+      /** 
+       * Tell the ::Selector instance to cease notifying the
+       * specified ::CommandListener of changes to the command list.
+       * @param listener the ::CommandListener to remove from the
+       * notification list.
+       **/
+      void deregisterChangeListener (in CommandListener listener);
+
+	/**
+	 *\cond
+	 * unImplemented:
+	 *
+	 * placeholders for future expansion.
+	 */
+	void unImplemented ();
+	void unImplemented2 ();
+	void unImplemented3 ();
+	void unImplemented4 ();
+        /**\endcond */
+    };
+
+};
+
+#endif
Index: idl/Accessibility_State.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_State.idl,v
retrieving revision 1.11
diff -u -r1.11 Accessibility_State.idl
--- idl/Accessibility_State.idl	20 May 2003 14:57:55 -0000	1.11
+++ idl/Accessibility_State.idl	10 Oct 2005 11:26:17 -0000
@@ -27,7 +27,7 @@
 
   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 */
   STATE_ARMED,
@@ -119,6 +119,11 @@
    * Indicates that a check box is in a state other than checked or not checked.
    */
   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,
 
   STATE_LAST_DEFINED
   };
Index: idl/Accessibility_StreamableContent.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_StreamableContent.idl,v
retrieving revision 1.3
diff -u -r1.3 Accessibility_StreamableContent.idl
--- idl/Accessibility_StreamableContent.idl	1 Jan 2002 22:35:30 -0000	1.3
+++ idl/Accessibility_StreamableContent.idl	10 Oct 2005 11:26:17 -0000
@@ -27,11 +27,38 @@
   typedef sequence<string> StringSeq;
 
   interface StreamableContent {
+      /**
+       * getContentTypes:
+       * @returns the list of available mimetypes for this object's content.
+       */
     StringSeq getContentTypes ();
+      /**
+       * getContent:
+       * 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 +67,6 @@
     void unImplemented2 ();
     void unImplemented3 ();
     void unImplemented4 ();
+      /** \endcond */
   };
 };
Index: idl/Accessibility_Terminal.idl
===================================================================
RCS file: idl/Accessibility_Terminal.idl
diff -N idl/Accessibility_Terminal.idl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ idl/Accessibility_Terminal.idl	10 Oct 2005 11:26:18 -0000
@@ -0,0 +1,138 @@
+/* 
+ * AT-SPI - Assistive Technology Service Provider Interface 
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 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
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+module Accessibility {
+
+    /**
+     * \b NEW
+     * An interface dedicated to the support of virtual terminals and
+     * terminal emulators, in which row/column text position, and line-by-line
+     * access, are the dominant user model.  In this API, 'line' refers to the
+     * terminal row position as well as the relevant line of text.  
+     * Terminals are represented as a 2D array of text; text which 
+     * has scrolled out of view is not exposed via this API.  
+     *
+     * \note Implementors of Terminal should emit change notifications of type
+     *       "terminal:line-changed", which are partly redundant with "object:text-changed".
+     *       Clients of ::Terminal may therefore elect to listen to "terminal:line-changed"
+     *       events in preference to "object:text-changed" events.
+     *
+     * \see Accessibility::Registry::registerGlobalEventListener.
+     *
+     * \note Implementors of Terminal are also expected to implement Text.
+     *
+     * \see Accessibility::Text
+     */
+    interface Terminal : Bonobo::Unknown {
+
+    /**
+     * nLines: a \c long containing the number of lines in this terminal.
+     * 
+     **/
+    readonly attribute long nLines;
+
+    /**
+     * nColumns: a \c long containing the number of columns in this terminal.
+     * 
+     **/
+    readonly attribute long nColumns;
+      
+    /** for Asian langs - do we need this? @note Apparently some Asian lang terminals 
+     have "fullwidth modes" in which all columns are 'full width' and each character
+    (including 'halfwidth' chars) gets a whole column, whereas other UTF-8 terminals will
+    place 'doublewidth' (aka fullwidth) Asian characters across two columns.  A flag like this
+    would help clients make sense of the column data being reported by these two different cases.
+    A related question is, if we have this flag, is it immutable? We need notifications if its state changes...
+    **/  
+    readonly attribute boolean isDoubleWidth;
+
+    /**
+     * applicationName:
+     * a \c string containing the name of the application which currently
+     * 'owns' the terminal window's content.
+     **/
+    readonly attribute string applicationName;
+
+    /** 
+     * @returns a UTF-8-compatible string whose content includes the lines
+     * from \a startLine to \a endLine, inclusive, including trailing newlines.
+     **/
+    string getLines (in long startLine, in long endLine);
+
+    /** 
+     * getCaretLine:
+     *
+     * Get the current text caret position as 0-indexed line and column offsets.
+     *
+     * @param column: on successful return, back-filled with the current
+     * text caret column position within the returned row.
+     *
+     * @returns the (0-based) line index of the current caret position.
+     **/
+    unsigned long getCaretLine (out long column);
+
+    /** 
+     * Move the caret to a specific line/column position in the Terminal.
+     *
+     * @param line the line of text to which the caret should be moved.
+     * @param column the column in \a line to which the caret should be moved.
+     *
+     * @returns \c TRUE if the caret was successfully moved, \c FALSE otherwise.
+     *
+     * @note  not all implementations of ::Terminal support programmatic movement
+     *        of the text caret - clients should always check the return value.
+     **/
+    boolean setCaret (inout long line, inout long column);
+
+    /** 
+     * @param line 
+     *
+     * @returns the caret offset, as defined by Accessibility::Text,
+     * corresponding to the initial column of line \a line.
+     **/
+    long getOffsetAtLine (in long line);
+
+    /** 
+     * @param offset
+     * @param column the column number within the line associated with \a offset.
+     *
+     * @returns the line number corresponding
+     * to a particular character offset (as defined by Accessibility::Text).
+     **/
+    long getLineAtOffset (in long offset, out long column);
+
+    /** new terminal: events - line-changed **/
+
+    /**
+     *\cond
+     * unImplemented:
+     *
+     * placeholders for future expansion.
+     */
+    void unImplemented ();
+    void unImplemented2 ();
+    void unImplemented3 ();
+    void unImplemented4 ();
+    /** \endcond */
+  };
+};
+
Index: idl/Accessibility_Text.idl
===================================================================
RCS file: /cvs/gnome/at-spi/idl/Accessibility_Text.idl,v
retrieving revision 1.10
diff -u -r1.10 Accessibility_Text.idl
--- idl/Accessibility_Text.idl	1 Dec 2003 17:10:50 -0000	1.10
+++ idl/Accessibility_Text.idl	10 Oct 2005 11:26:18 -0000
@@ -70,6 +70,24 @@
     unsigned long getCharacterAtOffset (in long offset);  /* long instead of wchar, 
 							   * to allow unicode chars > 16 bits 
 							   */
+    /** 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);
+    /** 
+     * returns an AttributeSet comprised of the name-value pairs associated with this text offset's
+     * characteristics.  If includeDefaults is TRUE, then this AttributeSet should include the default
+     * attributes as well as those which are explicitly assigned to the attribute run in question.
+     * startOffset and endOffset will be back-filled to indicate the start and end of the attribute run
+     * which contains 'offset' - an attribute run is a contiguous section of text whose attributes are
+     * homogeneous.
+     **/
+    AttributeSet getAttributeRun (in long offset,
+				  out long startOffset, 
+				  out long endOffset,
+				  boolean includeDefaults);
+    /** getAttributes is deprecated in favor of getAttributeRun **/
     string getAttributes (in long offset,
 			  out long startOffset, out long endOffset);
     string getDefaultAttributes ();
