[at-spi2-core] Completely re-work the protocol definitions.
- From: Mark Doffman <markdoffman src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [at-spi2-core] Completely re-work the protocol definitions.
- Date: Fri, 19 Feb 2010 13:11:16 +0000 (UTC)
commit 5ff3694f5476aaaff3fe48fd0738c238189c25bb
Author: Mark Doffman <mark doffman codethink co uk>
Date: Thu Feb 11 16:47:44 2010 -0800
Completely re-work the protocol definitions.
The XML has been re-done without the telepathy extensions.
An 'idl' has been added. This is NOT currently the canonical
protocol definition. It has more information than the XML
spec but is written in a pseudo idl for which there is no
parser. In the future the protocol should be defined to a similar
standard. The requirements for moving to canonical IDL
are that it is useful for generating Qt / GBus bindings.
Add a script to create c literals of introspection
data out of the introspection XML.
Makefile.am | 2 +-
configure.ac | 2 -
idl/accessible.didl | 234 +++++++
idl/action.didl | 54 ++
idl/application.didl | 20 +
idl/cache.didl | 26 +
idl/collection.didl | 69 ++
idl/component.didl | 139 ++++
idl/controller.didl | 95 +++
idl/device.didl | 33 +
idl/document.didl | 25 +
idl/event.didl | 79 +++
idl/hypertext.didl | 82 +++
idl/image.didl | 33 +
idl/listener.didl | 9 +
idl/selection.didl | 54 ++
idl/socket.didl | 31 +
idl/table.didl | 186 ++++++
idl/text.didl | 314 +++++++++
idl/types.didl | 25 +
idl/value.didl | 15 +
tools/Makefile.am | 4 -
tools/c-constants-generator.xsl | 308 ---------
tools/identity.xsl | 7 -
tools/spec-to-introspect.xsl | 53 --
xml/Accessibility.xml | 116 +---
xml/Accessible.xml | 58 ++
xml/Action.xml | 33 +
xml/Application.xml | 17 +
xml/Cache.xml | 21 +
xml/Collection.xml | 48 ++
xml/Component.xml | 54 ++
xml/DeviceEventController.xml | 64 ++
xml/DeviceEventListener.xml | 12 +
xml/Document.xml | 20 +
xml/EditableText.xml | 40 ++
xml/Event.xml | 190 ++++++
xml/Hyperlink.xml | 27 +
xml/Hypertext.xml | 21 +
xml/Image.xml | 27 +
xml/Makefile.am | 44 --
xml/Selection.xml | 42 ++
xml/Socket.xml | 27 +
xml/Table.xml | 135 ++++
xml/Text.xml | 151 +++++
xml/Value.xml | 14 +
xml/create-introspection.sh | 4 +
xml/introspection/README | 2 -
xml/org.freedesktop.atspi.Accessible.xml | 238 -------
xml/org.freedesktop.atspi.Action.xml | 94 ---
xml/org.freedesktop.atspi.Application.xml | 48 --
xml/org.freedesktop.atspi.Cache.xml | 99 ---
xml/org.freedesktop.atspi.Collection.xml | 58 --
xml/org.freedesktop.atspi.Component.xml | 215 ------
xml/org.freedesktop.atspi.Desktop.xml | 5 -
xml/org.freedesktop.atspi.DeviceEvent.xml | 272 --------
...org.freedesktop.atspi.DeviceEventController.xml | 181 -----
xml/org.freedesktop.atspi.DeviceEventListener.xml | 22 -
xml/org.freedesktop.atspi.Document.xml | 52 --
xml/org.freedesktop.atspi.EditableText.xml | 141 ----
xml/org.freedesktop.atspi.Event.xml | 91 ---
xml/org.freedesktop.atspi.Hyperlink.xml | 97 ---
xml/org.freedesktop.atspi.Hypertext.xml | 62 --
xml/org.freedesktop.atspi.Image.xml | 109 ---
xml/org.freedesktop.atspi.Registry.xml | 85 ---
xml/org.freedesktop.atspi.Relation.xml | 131 ----
xml/org.freedesktop.atspi.Role.xml | 542 ---------------
xml/org.freedesktop.atspi.Selection.xml | 154 -----
xml/org.freedesktop.atspi.State.xml | 354 ----------
xml/org.freedesktop.atspi.Table.xml | 486 --------------
xml/org.freedesktop.atspi.Text.xml | 696 --------------------
xml/org.freedesktop.atspi.Value.xml | 37 -
xml/remove-annotations.xsl | 14 +
xml/versioned-introspection.py | 91 +++
74 files changed, 2653 insertions(+), 4787 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 5565ece..9eb7da0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,3 @@
-SUBDIRS=xml tools registryd
+SUBDIRS=registryd
ACLOCAL_AMFLAGS=-I m4
diff --git a/configure.ac b/configure.ac
index 68f4f09..387d2e8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -129,8 +129,6 @@ AC_SUBST(DBUS_SERVICES_DIR)
AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
AC_CONFIG_FILES([Makefile
- xml/Makefile
- tools/Makefile
registryd/Makefile])
AC_OUTPUT
diff --git a/idl/accessible.didl b/idl/accessible.didl
new file mode 100644
index 0000000..eee462f
--- /dev/null
+++ b/idl/accessible.didl
@@ -0,0 +1,234 @@
+
+/*
+ The base interface which is implemented by all accessible objects.
+ */
+
+interface org.freestandards.atspi.Accessible {
+
+ enum <uint32> Role {
+ ROLE_INVALID = 0,
+ ROLE_ACCELERATOR_LABEL,
+ ROLE_ALERT,
+ ROLE_ANIMATION,
+ ROLE_ARROW,
+ ROLE_CALENDAR,
+ ROLE_CANVAS,
+ ROLE_CHECK_BOX,
+ ROLE_CHECK_MENU_ITEM,
+ ROLE_COLOR_CHOOSER,
+ ROLE_COLUMN_HEADER,
+ ROLE_COMBO_BOX,
+ ROLE_DATE_EDITOR,
+ ROLE_DESKTOP_ICON,
+ ROLE_DESKTOP_FRAME,
+ ROLE_DIAL,
+ ROLE_DIALOG,
+ ROLE_DIRECTORY_PANE,
+ ROLE_DRAWING_AREA,
+ ROLE_FILE_CHOOSER,
+ ROLE_FILLER,
+ ROLE_FOCUS_TRAVERSABLE,
+ ROLE_FONT_CHOOSER,
+ ROLE_FRAME,
+ ROLE_GLASS_PANE,
+ ROLE_HTML_CONTAINER,
+ ROLE_ICON,
+ ROLE_IMAGE,
+ ROLE_INTERNAL_FRAME,
+ ROLE_LABEL,
+ ROLE_LAYERED_PANE,
+ ROLE_LIST,
+ ROLE_LIST_ITEM,
+ ROLE_MENU,
+ ROLE_MENU_BAR,
+ ROLE_MENU_ITEM,
+ ROLE_OPTION_PANE,
+ ROLE_PAGE_TAB,
+ ROLE_PAGE_TAB_LIST,
+ ROLE_PANEL,
+ ROLE_PASSWORD_TEXT,
+ ROLE_POPUP_MENU,
+ ROLE_PROGRESS_BAR,
+ ROLE_PUSH_BUTTON,
+ ROLE_RADIO_BUTTON,
+ ROLE_RADIO_MENU_ITEM,
+ ROLE_ROOT_PANE,
+ ROLE_ROW_HEADER,
+ ROLE_SCROLL_BAR,
+ ROLE_SCROLL_PANE,
+ ROLE_SEPARATOR,
+ ROLE_SLIDER,
+ ROLE_SPIN_BUTTON,
+ ROLE_SPLIT_PANE,
+ ROLE_STATUS_BAR,
+ ROLE_TABLE,
+ ROLE_TABLE_CELL,
+ ROLE_TABLE_COLUMN_HEADER,
+ ROLE_TABLE_ROW_HEADER,
+ ROLE_TEAROFF_MENU_ITEM,
+ ROLE_TERMINAL,
+ ROLE_TEXT,
+ ROLE_TOGGLE_BUTTON,
+ ROLE_TOOL_BAR,
+ ROLE_TOOL_TIP,
+ ROLE_TREE,
+ ROLE_TREE_TABLE,
+ ROLE_UNKNOWN
+ }
+
+ /*
+ RelationType specifies a relationship between objects outside of the normal
+ parent/child hierarchical relationship. It allows better semantic
+ identification of how objects are associated with one another.
+ */
+ enum <uint32> RelationType {
+ RELATION_NULL = 0,
+ RELATION_LABEL_FOR,
+ RELATION_LABELLED_BY,
+ RELATION_CONTROLLER_FOR,
+ RELATION_CONTROLLED_BY,
+ RELATION_MEMBER_OF,
+ RELATION_TOOLTIP_FOR,
+ RELATION_NODE_CHILD_OF,
+ RELATION_NODE_PARENT_OF,
+ RELATION_EXTENDED,
+ RELATION_FLOWS_TO,
+ RELATION_FLOWS_FROM,
+ RELATION_SUBWINDOW_OF,
+ RELATION_EMBEDS,
+ RELATION_EMBEDDED_BY,
+ RELATION_POPUP_FOR,
+ RELATION_PARENT_WINDOW_OF,
+ RELATION_DESCRIPTION_FOR,
+ RELATION_DESCRIBED_BY,
+ RELATION_LAST_DEFINED
+ }
+
+ /*
+ Describes a one-to-many relationship between accessible objects.
+ */
+ struct Relation {
+ RelationType type;
+ Reference objects [];
+ }
+
+ enum uint32 StateType {
+ STATE_INVALID = 0,
+ STATE_ACTIVE,
+ STATE_ARMED,
+ STATE_BUSY,
+ STATE_CHECKED,
+ STATE_COLLAPSED,
+ STATE_DEFUNCT,
+ STATE_EDITABLE,
+ STATE_ENABLED,
+ STATE_EXPANDABLE,
+ STATE_EXPANDED,
+ STATE_FOCUSABLE,
+ STATE_FOCUSED,
+ STATE_HAS_TOOLTIP,
+ STATE_HORIZONTAL,
+ STATE_ICONIFIED,
+ STATE_MODAL,
+ STATE_MULTI_LINE,
+ STATE_MULTISELECTABLE,
+ STATE_OPAQUE,
+ STATE_PRESSED,
+ STATE_RESIZABLE,
+ STATE_SELECTABLE,
+ STATE_SELECTED,
+ STATE_SENSITIVE,
+ STATE_SHOWING,
+ STATE_SINGLE_LINE,
+ STATE_STALE,
+ STATE_TRANSIENT,
+ STATE_VERTICAL,
+ STATE_VISIBLE,
+ STATE_MANAGES_DESCENDANTS,
+ STATE_INDETERMINATE,
+ STATE_REQUIRED,
+ STATE_TRUNCATED,
+ STATE_ANIMATED,
+ STATE_INVALID_ENTRY,
+ STATE_SUPPORTS_AUTOCOMPLETION,
+ STATE_SELECTABLE_TEXT,
+ STATE_IS_DEFAULT,
+ STATE_VISITED,
+ STATE_LAST_DEFINED
+ }
+
+ /*
+ A two integer array representing a bit-field of currently held states.
+ */
+ typedef State uint32 [];
+
+ /* A short string representing the object's name. */
+ read property string Name;
+
+ /* A string describing the object in more detail. */
+ read property string Description;
+
+ /* The accessible object which is this objects containing parent */
+ read property Reference Parent;
+
+ /* The number of children contained by this object */
+ read property int32 ChildCount;
+
+ /* Get the accessible child of this object at the given index */
+ method GetChildAtIndex {
+ int32 index;
+ } reply {
+ Reference child;
+ }
+
+ /* Get the index of this accessible object within its containing objects child list. */
+ method GetIndexInParent reply {
+ int32 index;
+ }
+
+ /* Access this objects non-hierarchical relationships to other accessible objects */
+ method GetRelationSet reply {
+ RelationSet relations;
+ }
+
+ /* Get the Role indicating the type of UI role played by this object. */
+ method GetRole reply {
+ Role role;
+ }
+
+ /* Get a string indicating the type of UI role played by this object */
+ method GetRoleName reply {
+ string role;
+ }
+
+ /*
+ Get a string indicating the type of UI role played by this object,
+ transalted to the current locale.
+ */
+ method GetLocalizedRoleName {
+ string role;
+ }
+
+ /* Access the states currently held by this object. */
+ method GetState reply {
+ State state;
+ }
+
+ /*
+ Get a properties applied to this object as a whole, as an
+ set name-value pairs. As such these attributes may be considered
+ weakly-typed properties or annotations, as distinct
+ from the strongly-typed interface instance data.
+ */
+ method GetAttributes reply {
+ Attributes attributes;
+ }
+
+ /*
+ Get the containing Application for this object.
+ */
+ method GetApplication reply {
+ Reference application;
+ }
+}
+
diff --git a/idl/action.didl b/idl/action.didl
new file mode 100644
index 0000000..afc22e8
--- /dev/null
+++ b/idl/action.didl
@@ -0,0 +1,54 @@
+
+/*
+ An interface through which a user-actionable UI component can be manipulated.
+
+ Typical actions include "click", "press", "release" or "open".
+*/
+interface org.freestandards.atspi.Action {
+ /*
+ Represents a single action.
+ */
+ struct Action {
+ /* String containing short description of action. */
+ string name;
+ /* The description of an action may provide information about the result. */
+ string description;
+ /* A string containing the key-binding or "" if none exists */
+ string key_binding;
+ }
+
+ property read int32 NActions;
+
+ /* Get the description for the specified action. */
+ method GetDescription {
+ int32 index;
+ } reply {
+ string description
+ }
+
+ /* Get the name of the specified action */
+ method GetName {
+ int32 index;
+ } reply {
+ string name;
+ }
+
+ /* Get the key-binding for the specified action. */
+ method GetKeyBinding {
+ int32 index;
+ } reply {
+ string key_binding;
+ }
+
+ /* Retrieves the actions associated with the object. */
+ method GetActions reply {
+ Action actions [];
+ }
+
+ /* Causes the object to perform the specified action. */
+ method GetActions {
+ int32 index;
+ } reply {
+ boolean success;
+ }
+}
diff --git a/idl/application.didl b/idl/application.didl
new file mode 100644
index 0000000..19383f6
--- /dev/null
+++ b/idl/application.didl
@@ -0,0 +1,20 @@
+
+/*
+ An interface identifying an object which is the root of the
+ hierarchy associated with a running application.
+*/
+interface org.freestandards.atspi.Application {
+
+ /* A string indicating the type of user interface toolkit used by the application. */
+ read property string ToolkitName;
+
+ /* A string indicating the version of the applications accessibility bridge. */
+ read property string Version;
+
+ /* Gets the locale in which the application is currently running. */
+ method GetLocale {
+ LocaleType locale_type;
+ } reply {
+ string locale;
+ }
+}
diff --git a/idl/cache.didl b/idl/cache.didl
new file mode 100644
index 0000000..8cb9693
--- /dev/null
+++ b/idl/cache.didl
@@ -0,0 +1,26 @@
+
+interface org.freestandards.atspi.Cache {
+
+ struct CacheItem {
+ object path;
+ Reference parent;
+ Reference[] children;
+ string[] interfaces;
+ string name;
+ Role role;
+ string description;
+ StateSet states;
+ }
+
+ method GetItems reply {
+ CacheItem[] items;
+ }
+
+ signal AddAccessible {
+ CacheItem item;
+ }
+
+ signal RemoveAccessible {
+ Reference item;
+ }
+}
diff --git a/idl/collection.didl b/idl/collection.didl
new file mode 100644
index 0000000..f3eee6e
--- /dev/null
+++ b/idl/collection.didl
@@ -0,0 +1,69 @@
+
+/* TODO - Need to define the 'MatchRule' struct. */
+
+namespace org.freestandards.atspi {
+ interface Collection {
+ enum <uint32> SortOrder {
+ SORT_ORDER_INVALID = 0,
+ SORT_ORDER_CANONICAL,
+ SORT_ORDER_FLOW,
+ SORT_ORDER_TAB,
+ SORT_ORDER_REVERSE_CANONICAL,
+ SORT_ORDER_REVERSE_FLOW,
+ SORT_ORDER_REVERSE_TAB,
+ SORT_ORDER_LAST_DEFINED
+ }
+
+ enum <uint32> MatchType {
+ MATCH_INVALID = 0,
+ MATCH_ALL,
+ MATCH_ANY,
+ MATCH_NONE,
+ MATCH_EMPTY,
+ MATCH_LAST_DEFINED
+ }
+
+ enum <uint32> TreeTraversalType {
+ TREE_RESTRICT_CHILDREN,
+ TREE_RESTRICT_SIBLING,
+ TREE_INORDER,
+ TREE_LAST_DEFINED
+ }
+
+ method GetMatches {
+ MatchRule rule;
+ SortOrder sort_by;
+ int32 count;
+ boolean traverse;
+ } reply {
+ Reference matches [];
+ }
+
+ method GetMatchesTo {
+ object current_object;
+ MatchRule rule;
+ SortOrder sort_by;
+ TreeTraversalType type;
+ boolean recurse;
+ int32 count;
+ boolean traverse;
+ } reply {
+ Reference matches [];
+ }
+
+ method GetMatchesFrom {
+ object current_object;
+ MatchRule rule;
+ SortOrder sort_by;
+ TreeTraversalType type;
+ int32 count;
+ boolean traverse;
+ } reply {
+ Reference matches [];
+ }
+
+ method GetActiveDescendent reply {
+ Reference descendent;
+ }
+ }
+}
diff --git a/idl/component.didl b/idl/component.didl
new file mode 100644
index 0000000..aa40e78
--- /dev/null
+++ b/idl/component.didl
@@ -0,0 +1,139 @@
+
+using org.freestandards.atspi.Accessible.Reference = Reference;
+
+/*
+ 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.
+*/
+interface org.freestandards.atspi.Component {
+
+ /*
+ Used by Component, Image and Text interfaces to specify whether coordinates are
+ relative to the window or screen.
+ */
+ enum <uint32> CoordType {
+ COORD_TYPE_SCREEN = 0,
+ COORD_TYPE_WINDOW = 1
+ }
+
+ /*
+ Used by Component and Text interfaces, a struct defining a bounding rectange.
+ The coordinate system is determined by the context of the API call.
+ */
+ struct BoundingBox {
+ int32 x;
+ int32 y;
+ int32 width;
+ int32 height;
+ }
+
+ /*
+ Indicates the relative stacking order with respect to the onscreen visual representation.
+
+ The order of layers, from bottom to top is:
+ LAYER_BACKGROUND
+ LAYER_WINDOW
+ LAYER_MDI
+ LAYER_CANVAS
+ LAYER_WIDGET
+ LAYER_POPUP
+ LAYER_OVERLAY
+ */
+ enum <uint32> ComponentLayer {
+ LAYER_INVALID,
+ LAYER_BACKGROUND,
+ LAYER_CANVAS,
+ LAYER_WIDGET,
+ LAYER_MDI,
+ LAYER_POPUP,
+ LAYER_OVERLAY,
+ LAYER_WINDOW,
+ LAYER_LAST_DEFINED
+ }
+
+ /*
+ True if the specified point lies within the components bounding box.
+ */
+ method Contains {
+ int32 x;
+ int32 y;
+ CoordType coord_type;
+ } reply {
+ boolean within;
+ }
+
+ /*
+ Return the accessible child whose bounding box contains the specified point.
+ */
+ method GetAccessibleAtPoint {
+ int32 x;
+ int32 y;
+ CoordType coord_type;
+ } reply {
+ Reference child;
+ }
+
+ /*
+ Obtain the components bounding box, in pixels, relative to the specified coordinate system.
+ */
+ method GetExtents {
+ CoordType cood_type;
+ } reply {
+ BoundingBox box;
+ }
+
+ /*
+ Obtain the position of the current component in the specified coordinate system.
+ */
+ method GetPosition {
+ CoordType coord_type;
+ } reply {
+ int32 x;
+ int32 y;
+ }
+
+ /*
+ Obtain the size in the specified coordinate system.
+ Fully contains teh object's visual representation without accounting for viewport clipping.
+ */
+ method GetSize reply {
+ int32 width;
+ int32 height;
+ }
+
+ /*
+ The component layer in which this object resides.
+ */
+ method GetLayer reply {
+ ComponentLayer layer;
+ }
+
+ /*
+ Obtain the relative stacking order (i.e 'Z' order) of an object.
+ Larger values indicate that an object is on 'top' of the stack.
+ Only relevenat for objects in LAYER_MDI or LAYER_WINDOW.
+ */
+ method GetMDIZOrder reply {
+ int16 order;
+ }
+
+ /*
+ Request that an object obtain keyboard focus.
+ */
+ method GrabFocus reply {
+ boolean success;
+ }
+
+ /*
+ Obtain the alpha value of the component.
+ Alpha values are used with Z-Order to determine whether an obeject obscures
+ anothers visual representation.
+ */
+ method GetAlpha reply {
+ double alpha;
+ }
+}
diff --git a/idl/controller.didl b/idl/controller.didl
new file mode 100644
index 0000000..53b5f71
--- /dev/null
+++ b/idl/controller.didl
@@ -0,0 +1,95 @@
+
+interface org.freestandards.atspi.DeviceEventController {
+
+ enum <uint32> KeySynthType {
+ KEY_PRESS=0,
+ KEY_RELEASE,
+ KEY_PRESSRELEASE,
+ KEY_SYM,
+ KEY_STRING
+ }
+
+ /*
+ Consumption of events and syncronous event delivery is a sore-thumb.
+
+ The client should really have no say over what the DeviceEventController
+ does with regards to event delivery as such the 'syncronous' flag is redundant.
+
+ The 'global' flag is now useless as XEVIE is no longer maintained. As such
+ the DeviceEventController will not recieve any device events from applications
+ not participating.
+
+ The only possibly useful flag is 'preemptive'. However all keyboard events are
+ sent as pre-emptive from gail so its debateable whether even this flag is really
+ in-use.
+ */
+ struct EventListenerMode {
+ /* Controller should block while delivering this event. */
+ boolean syncronous;
+ /* Clients are allowed to consume this event. */
+ boolean preemptive;
+ /*
+ Event notifications should be sent regardless of whether
+ focused application participates in AT-SPI accessibility.
+ */
+ boolean global;
+ }
+
+ struct KeyDefinition {
+ int32 keycode;
+ int32 keysym;
+ string keystring;
+ int32 unused;
+ }
+
+ method RegisterKeystrokeListener {
+ object listener;
+ KeyDefinition[] keys;
+ uint32 mask;
+ EventType[] type;
+ EventListenerMode mode;
+ } reply {
+ boolean success;
+ }
+
+ method DeregisterKeystrokeListener {
+ object listener;
+ KeyDefinition[] keys;
+ uint32 mask;
+ EventType[] type;
+ }
+
+ method RegisterDeviceEventListener {
+ object listener;
+ EventType[] type;
+ } reply {
+ boolean success;
+ }
+
+ method DeregisterDeviceEventListener {
+ object listener;
+ EventType[] type;
+ }
+
+ method NotifyListenersSync {
+ DeviceEvent event;
+ } reply {
+ boolean consumed;
+ }
+
+ method NotifyListenersAsync {
+ DeviceEvent event;
+ }
+
+ method GenerateKeyboardEvent {
+ int32 keycode;
+ string keystring;
+ KeySynthType type;
+ }
+
+ method GenerateMouseEvent {
+ int32 x;
+ int32 y;
+ string event_name;
+ }
+}
diff --git a/idl/device.didl b/idl/device.didl
new file mode 100644
index 0000000..78bdd12
--- /dev/null
+++ b/idl/device.didl
@@ -0,0 +1,33 @@
+
+namespace org.freestandards.atspi {
+
+ enum <uint32> EventType {
+ KEY_PRESSED_EVENT=0,
+ KEY_RELEASED_EVENT,
+ BUTTON_PRESSED_EVENT,
+ BUTTON_RELEASED_EVENT
+ }
+
+ enum <uint32> ModifierType {
+ MODIFIER_SHIFT=0,
+ MODIFIER_SHIFTLOCK,
+ MODIFIER_CONTROL,
+ MODIFIER_ALT,
+ MODIFIER_META,
+ MODIFIER_META2,
+ MODIFIER_META3,
+ MODIFIER_NUMLOCK
+ }
+
+ struct DeviceEvent {
+ EventType type;
+ /* An identifier for the event, corresponds to XEvent serial number. */
+ int32 stream_id;
+ /* A numeric code identifying the hardware or button on which the event occured. */
+ int16 hw_code;
+ ModifierType modifiers;
+ int32 timestamp;
+ string event_string;
+ boolean is_text;
+ }
+}
diff --git a/idl/document.didl b/idl/document.didl
new file mode 100644
index 0000000..ce2a4f0
--- /dev/null
+++ b/idl/document.didl
@@ -0,0 +1,25 @@
+
+/*
+ Indicates the start of a document.
+
+ Children are part of the document content.
+*/
+interface org.freestandards.atspi.Document {
+
+ /* Gets the locale associated with the documents content. */
+ method GetLocale reply {
+ string locale;
+ }
+
+ /* Gets the value of a single attribute. */
+ method GetAttributeValue {
+ string key;
+ } reply {
+ string value;
+ }
+
+ /* Gets all attributes for the document as a whole. These are constant for all elements within the document.*/
+ method GetAttributes reply {
+ Attributes attributes;
+ }
+}
diff --git a/idl/event.didl b/idl/event.didl
new file mode 100644
index 0000000..d4c75cc
--- /dev/null
+++ b/idl/event.didl
@@ -0,0 +1,79 @@
+
+namespace org.freestandards.atspi.Event {
+
+ struct Event {
+ string minor;
+ int32 detail1;
+ int32 detail2;
+ variant val;
+ Reference application;
+ }
+
+ interface Object {
+ signal PropertyChange {Event event;}
+ signal BoundsChanged {Event event;}
+ signal LinkSelected {Event event;}
+ signal StateChanged {Event event;}
+ signal ChildrenChanged {Event event;}
+ signal VisibleDataChanged {Event event;}
+ signal SelectionChanged {Event event;}
+ signal ModelChanged {Event event;}
+ signal ActiveDescendantChanged {Event event;}
+ signal RowInserted {Event event;}
+ signal RowDeleted {Event event;}
+ signal RowReordered {Event event;}
+ signal ColumnInserted {Event event;}
+ signal ColumnDeleted {Event event;}
+ signal ColumnReordered {Event event;}
+ signal TextBoundsChanged {Event event;}
+ signal TextSelectionChanged {Event event;}
+ signal TextChanged {Event event;}
+ signal TextAttributesChanged {Event event;}
+ signal TextCaretMoved {Event event;}
+ signal AttributesChanged {Event event;}
+ }
+
+ interface Window {
+ signal PropertyChange {Event event;}
+ signal Minimize {Event event;}
+ signal Maximize {Event event;}
+ signal Restore {Event event;}
+ signal Close {Event event;}
+ signal Create {Event event;}
+ signal Reparent {Event event;}
+ signal DesktopCreate {Event event;}
+ signal DesktopDestroy {Event event;}
+ signal Destroy {Event event;}
+ signal Activate {Event event;}
+ signal Deactivate {Event event;}
+ signal Raise {Event event;}
+ signal Lower {Event event;}
+ signal Move {Event event;}
+ signal Resize {Event event;}
+ signal Shade {Event event;}
+ signal Ushade {Event event;}
+ signal Restyle {Event event;}
+ }
+
+ interface Mouse {
+ signal Abs {Event event;}
+ signal Rel {Event event;}
+ signal Button {Event event;}
+ }
+
+ interface Keyboard {
+ signal Modifiers {Event event;}
+ }
+
+ interface Document {
+ signal LoadComplete {Event event;}
+ signal Reload {Event event;}
+ signal LoadStopped {Event event;}
+ signal ContentChanged {Event event;}
+ signal AttributesChanged {Event event;}
+ }
+
+ interface Focus {
+ signal Focus {Event event;}
+ }
+}
diff --git a/idl/hypertext.didl b/idl/hypertext.didl
new file mode 100644
index 0000000..334dafd
--- /dev/null
+++ b/idl/hypertext.didl
@@ -0,0 +1,82 @@
+
+namespace org.freestandards.atspi {
+ /*
+ Instances of Hyperlink are returned by Hypertext object and
+ are the means by which end users and clients interact with linked
+ content.
+
+ Hyperlink instances DO NOT neccessarily implement the Accessible interface.
+ */
+ interface HyperLink {
+ /* The number of separate anchors associated with this Hyperlink. */
+ read property int32 NAnchors;
+
+ /*
+ The starting offset within the contianing Hypertext,
+ with which this Hyperlink is associated.
+ */
+ read property int32 StartIndex;
+
+ /*
+ The ending offset within the containing Hypertext with which
+ this Hyperlink is associated.
+ */
+ read property int32 EndIndex;
+
+ /*
+ Gets the i'th object associated with a Hyperlink.
+ Objects returned should implement the Action interface.
+ */
+ method GetObject {
+ int32 index;
+ } reply {
+ Reference anchor;
+ }
+
+ /*
+ Obtain a resource locator, URI, which can be used to access the content
+ which this link points to.
+ */
+ method GetUri {
+ int32 index;
+ } reply {
+ string uri;
+ }
+
+ /*
+ Check the hyperlink to see if a connection to its backing content can be
+ established or if its URI is valid.
+ */
+ method IsValid reply {
+ boolean valid;
+ }
+ }
+
+ /*
+ An interface used for objects which implement linking between multiple resource locations.
+ A hypertext instance is associated with one or more hyperlinks which are associated with
+ particular offests within the text.
+ */
+ interface Hypertext {
+
+ method GetNLinks reply {
+ int32 n_links;
+ }
+
+ method GetLink {
+ int32 index;
+ } reply {
+ Reference hyperlink;
+ }
+
+ /*
+ Get the hyperlink index, if any, associated with a particular text offset.
+ */
+ method GetLinkIndex {
+ int32 offset;
+ } reply {
+ /* -1 if no hyperlink is associated. */
+ int32 index;
+ }
+ }
+}
diff --git a/idl/image.didl b/idl/image.didl
new file mode 100644
index 0000000..9dee626
--- /dev/null
+++ b/idl/image.didl
@@ -0,0 +1,33 @@
+
+/*
+ An interface implemented by objects which render image data or
+ pictoral information on to the screen.
+*/
+interface org.freestandards.atspi.Image {
+ /* A textual description of what is visually depicted on the screen. */
+ read property string ImageDescription;
+
+ /* A string corresponding to the local used by the image description. */
+ read property string ImageLocale;
+
+ /* Obtain a bounding box which entirely contains the image contents. */
+ method GetImageExtents {
+ CoordType coord_type;
+ } reply {
+ BoundingBox;
+ }
+
+ /* Get the coordinates of the image on the screen */
+ method GetImagePosition {
+ CoordType coord_type;
+ } reply {
+ int32 x;
+ int32 y;
+ }
+
+ /* Get the size of the current on-screen view of the image. */
+ method GetImageSize reply {
+ int32 width;
+ int32 height;
+ }
+}
diff --git a/idl/listener.didl b/idl/listener.didl
new file mode 100644
index 0000000..7e3f6a1
--- /dev/null
+++ b/idl/listener.didl
@@ -0,0 +1,9 @@
+
+interface org.freestandards.atspi.DeviceEventListener {
+
+ method NotifyEvent {
+ DeviceEvent event;
+ } reply {
+ boolean success;
+ }
+}
diff --git a/idl/selection.didl b/idl/selection.didl
new file mode 100644
index 0000000..66fbef7
--- /dev/null
+++ b/idl/selection.didl
@@ -0,0 +1,54 @@
+
+/*
+ An interface which indicates that an object exposes a 'selection' model,
+ allowing the 'selection' of one or more of its children.
+*/
+interface org.freestandards.atspi.Selection {
+ /* The number of children that are currently selected. */
+ read property int32 NSelectedChildren;
+
+ /* Gets the ith SELECTED child. This is different to the index of all children. */
+ method GetSelectedChild {
+ int32 index;
+ } reply {
+ Reference child;
+ }
+
+ /* Select the child, add it to the list of selected children. */
+ method SelectChild {
+ int32 index;
+ } reply {
+ boolean success;
+ }
+
+ /* Deselect a child. The index refers to the index into the list of selected children. */
+ method DeselectSelectedChild {
+ int32 index;
+ } reply {
+ boolean success;
+ }
+
+ /* Determine whether a particular child is currently selected. */
+ method IsChildSelected {
+ int32 index;
+ } reply {
+ boolean selected;
+ }
+
+ /* Apptemt to select all of the containers children. */
+ method SelectAll reply {
+ boolean success;
+ }
+
+ /* Attempt to deselect all selected children. */
+ method ClearSelection reply {
+ boolean success;
+ }
+
+ /* Deselect a child. The index refers to the index into the list of all children. */
+ method DeselectChild {
+ int32 index;
+ } reply {
+ boolean success;
+ }
+}
diff --git a/idl/socket.didl b/idl/socket.didl
new file mode 100644
index 0000000..336ca6c
--- /dev/null
+++ b/idl/socket.didl
@@ -0,0 +1,31 @@
+
+namespace org.freestandards.atspi {
+ /*
+ Accessible objects with the socket interface are capable of embeding other
+ accessible heirarchies as one of their children. This allows
+ applications to embed themselves in the heirarchy of the desktop object.
+ */
+ interface Socket {
+ method Embed {
+ Reference plug;
+ } reply {
+ Reference socket;
+ }
+
+ method Unembed {
+ Reference plug;
+ }
+
+ /*
+ The available signal indicates that a socket has been
+ made available, it is for discovering new sockets.
+ This is used for when the process containing the desktop
+ object is re-started.
+
+ D-Bus bus name must have been granted by the D-Bus bus.
+ It is used to identify the new socket.
+ */
+ signal Available {
+ Reference socket;
+ }
+}
diff --git a/idl/table.didl b/idl/table.didl
new file mode 100644
index 0000000..ae1b8f0
--- /dev/null
+++ b/idl/table.didl
@@ -0,0 +1,186 @@
+
+namespace org.freestandards.atspi {
+
+ /*
+ An interface used by containers whose data is arranged in a tabular form.
+ Objects within tables are always children of the table object.
+ */
+ interface Table {
+ read property int32 NRows;
+
+ read property int32 NColumns;
+
+ read property Reference caption;
+
+ read property Reference summary;
+
+ /* Number of rows where all cells are selected. */
+ read property int32 NSelectedRows;
+
+ /* Number of columns where all cells are selected. */
+ read property int32 NSelectedColumns;
+
+ method GetAccessibleAt {
+ int32 row;
+ int32 column;
+ } reply {
+ Reference cell;
+ }
+
+ /*
+ Cells in a table are also children of the table in the standard heirarchy.
+ This method gets the child index of the given cell.
+ */
+ method GetIndexAt {
+ int32 row;
+ int32 column;
+ } reply {
+ int32 index;
+ }
+
+ /*
+ Indicates which row the child specified by index is on.
+ */
+ method GetRowAtIndex {
+ int32 index;
+ } reply {
+ int32 row;
+ }
+
+ /*
+ Indicates which column the child specified by index is on.
+ */
+ method GetColumnAtIndex {
+ int32 index;
+ } reply {
+ int32 column;
+ }
+
+ /*
+ Get a textual description of a row.
+ */
+ method GetRowDescription {
+ int32 row;
+ } reply {
+ string description;
+ }
+
+ /*
+ Get a textual description of a particular column.
+ */
+ method GetColumnDescription {
+ int32 column;
+ } reply {
+ string description;
+ }
+
+ /*
+ Get the number of rows spanned by the table cell at the specific row and column.
+ method GetRowExtentAt {
+ int32 row;
+ int32 column;
+ } reply {
+ int32 rowspan;
+ }
+
+ /*
+ Get the number of columns spanned by the table cell at the specific row and column.
+ */
+ method GetColumnExtentAt {
+ int32 row;
+ int32 column;
+ } reply {
+ int32 column_span;
+ }
+
+ /*
+ Get the header object associated with a particular table row.
+ */
+ method GetRowHeader {
+ int32 row;
+ } reply {
+ Reference header;
+ }
+
+ /*
+ Get the header object associated with a particular table column.
+ */
+ method GetColumnHeader {
+ int32 column;
+ } reply {
+ Reference header;
+ }
+
+ /*
+ Obtain the indicies of all rows which are currently selected.
+ */
+ method GetSelectedRows reply {
+ int32 indicies [];
+ }
+
+ /*
+ Obtain the indicies of all columns which are currently selected.
+ */
+ method GetSelectedColumns reply {
+ int32 indicies [];
+ }
+
+ method IsRowSelected {
+ int32 row;
+ } reply {
+ boolean selected;
+ }
+
+ method IsColumnSelected {
+ int32 column;
+ } reply {
+ boolean selected;
+ }
+
+ method IsSelected {
+ int32 row;
+ int32 column;
+ } reply {
+ boolean selected;
+ }
+
+ method AddRowSelection {
+ int32 row;
+ } reply {
+ boolean success;
+ }
+
+ method AddColumnSelection {
+ int32 column;
+ } reply {
+ boolean success;
+ }
+
+ method RemoveRowSelection {
+ int32 row;
+ } reply {
+ boolean success;
+ }
+
+ method RemoveColumnSelection {
+ int32 column;
+ } reply {
+ boolean success;
+ }
+
+ /*
+ Given a child index determine the row and column indicies and extents
+ and whether the cell is currently selected.
+ */
+ method GetRowColumnExtentsAtIndex {
+ int32 index;
+ } reply {
+ boolean valid;
+ int32 row;
+ int32 column;
+ int32 row_span;
+ int32 column_span;
+ boolean selected;
+ }
+ }
+}
diff --git a/idl/text.didl b/idl/text.didl
new file mode 100644
index 0000000..0796dcb
--- /dev/null
+++ b/idl/text.didl
@@ -0,0 +1,314 @@
+
+namespace org.freestandards.atspi {
+ /*
+ 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 to bounding boc information
+ for glyphs and substrings. It also alows portions of text to be selected, if the objects StateSet
+ includes STATE_SELECTABLE_TEXT.
+ */
+ interface Text {
+ /*
+ Specified the boundary conditions determining a run of text
+ as returned from:
+ GetTextAtOffset
+ GetTextAfterOffset
+ GetTextBeforeOffset
+ */
+ enum <uint32> TextBoundaryType {
+ 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
+ }
+
+ enum <uint32> TextClipType {
+ TEXT_CLIP_NONE,
+ TEXT_CLIP_MIN,
+ TEXT_CLIP_MAX,
+ TEXT_CLIP_BOTH
+ }
+
+ /*
+ A structure used to define a contiguous range of text, including
+ its (unattributed) textual content.
+ */
+ struct Range {
+ int32 start_offset;
+ int32 end_offset;
+ int32 content;
+ variant data;
+ }
+
+ /* The total number of character in the text object including whitespace. */
+ read property int32 CharacterCount;
+
+ /* The current offset of the text caret in the Text object. */
+ read property int32 CaretOffset;
+
+ /* Move the text caret to a given position. */
+ method SetCaretOffset {
+ int32 offset;
+ } reply {
+ boolean success;
+ }
+
+ /*
+ Obtain the subset of text content that entirely precedes the given offset,
+ delimited by character word, line or sentente boundaries.
+ */
+ method GetTextBeforeOffset {
+ int32 offset;
+ TextBoundaryType type;
+ } reply {
+ string s;
+ int32 start_offset;
+ int32 end_offset;
+ }
+
+ /*
+ Obtain the subset of text content that includes the given offset,
+ delimited by character word, line or sentente boundaries.
+ */
+ method GetTextAtOffset {
+ int32 offset;
+ TextBoundaryType type;
+ } reply {
+ string s;
+ int32 start_offset;
+ int32 end_offset;
+ }
+
+ /*
+ Obtain the subset of text content that entirely follows the given offset,
+ delimited by character word, line or sentente boundaries.
+ */
+ method GetTextAfterOffset {
+ int32 offset;
+ TextBoundaryType type;
+ } reply {
+ string s;
+ int32 start_offset;
+ int32 end_offset;
+ }
+
+ method GetCharacterAtOffset {
+ int32 offset;
+ } reply {
+ /* UCS-4 representation of the character or 0 if offset out-of-range. */
+ int32 c;
+ }
+
+ /*
+ Get the value of a named attribute at a given offset.
+ */
+ method GetAttributeValue {
+ int32 offset;
+ string attribute_key;
+ } reply {
+ string attribute_value;
+ int32 start_offset;
+ int32 end_offset;
+ boolean defined;
+ }
+
+ /* Deprecated in favor of GetAttributeRun. */
+ method GetAttributes {
+ int32 offset;
+ } reply {
+ Attributes attributes;
+ int32 start_offset;
+ int32 end_offset;
+ }
+
+ /* Deprecated in facor of GetDefaultAttributeSet. */
+ method GetDefaultAttributes reply {
+ Attributes attributes;
+ }
+
+ /*
+ Obtain a bounding box of the character glyph at a particular character offset,
+ in the given coordinate system.
+ */
+ method GetCharacterExtents {
+ int32 offset;
+ CoordType coord;
+ } reply {
+ int32 x;
+ int32 y;
+ int32 width;
+ int32 height;
+ }
+
+ /*
+ Get the offset of the character at a given on-screen coordinate. The coordinate
+ system used is determined by the give coordinate type.
+ */
+ method GetOffsetAtPoint {
+ int32 x;
+ int32 y;
+ CoordType coord;
+ } reply {
+ /* -1 if the point is outside the bounds of any glyph. */
+ int32 offset;
+ }
+
+ /*
+ Obtain the number of separate, contiguous selections in the current Text object.
+ */
+ method GetNSelections reply {
+ int32 n_selections;
+ }
+
+ method GetSelection {
+ int32 selection_index;
+ } reply {
+ int32 start_offset;
+ int32 end_offset;
+ }
+
+ method AddSelection {
+ int32 start_offset;
+ int32 end_offset;
+ } reply {
+ boolean success;
+ }
+
+ method RemoveSelection {
+ int32 selection_index;
+ } reply {
+ boolean success;
+ }
+
+ method SetSelection {
+ int32 selection_index;
+ int32 start_offset;
+ int32 end_offset;
+ } reply {
+ boolean success;
+ }
+
+ /*
+ Obtain the bounding box which entirely contains the given text range.
+ Negative values may be obtained in the event that part of the text range is
+ off-screen.
+ */
+ method GetRangeExtents {
+ int32 start_offset;
+ int32 end_offset;
+ CoordType coord;
+ } reply {
+ int32 x;
+ int32 y;
+ int32 width;
+ int32 height;
+ }
+
+ /*
+ Return the text content within a bounding box.
+
+ Depending on the clip type glyphs which are clipped by the bounding box
+ may, or may not be inclide in the ranges returned.
+ */
+ method GetBoundedRanges {
+ int32 x;
+ int32 y;
+ int32 width;
+ int32 height;
+ CoordType coord;
+ ClipType x_clip;
+ ClipType y_clip;
+ } reply {
+ RangeType ranges [];
+ }
+
+ /*
+ Gets the attributes of a particular text objects defined at a given offset.
+ The attributes are invariant over the offsets returned.
+ */
+ method GetAttributeRun {
+ int32 offset;
+ boolean include_defaults;
+ } reply {
+ Attributes attributes;
+ int32 start_offset;
+ int32 end_offset;
+ }
+
+ /*
+ Gets the default attributes that apply to the entire text.
+ */
+ method GetAttributeSet reply {
+ Attributes attributes'
+ }
+ }
+
+ /*
+ All objects supporting EditableText should also support the
+ Text interface.
+
+ Provides methods for modifying textual content of components which support editing.
+ EditableText also interacts with the system clipboard.
+ */
+ interface EditableText {
+ /*
+ Replace the text contents with a new string, discarding the old contents.
+ */
+ method SetTextContents {
+ string new_contents;
+ } reply {
+ boolean success;
+ }
+
+ /*
+ Insert new text contents into a given location.
+ */
+ method InsertText {
+ int32 position;
+ string text;
+ int32 length;
+ } reply {
+ boolean success;
+ }
+
+ /*
+ Copy a range of text in to the system clipboard.
+ */
+ method CopyText {
+ int32 start_pos;
+ int32 end_pos;
+ }
+
+ /*
+ Excise a range of text, copying it to the system clipboard.
+ */
+ method CutText {
+ int32 start_pos;
+ int32 end_pos;
+ } reply {
+ boolean success;
+ }
+
+ /*
+ Excise a range of text from the object without copying to the system clipboard.
+ */
+ method DeleteText {
+ int32 start_pos;
+ int32 end_pos;
+ } reply {
+ boolean success;
+ }
+
+ /*
+ Copy the contents of the system clip-board in to the text object.
+ */
+ method PasteText {
+ int32 position;
+ } reply {
+ boolean success;
+ }
+ }
+}
diff --git a/idl/types.didl b/idl/types.didl
new file mode 100644
index 0000000..b8c4129
--- /dev/null
+++ b/idl/types.didl
@@ -0,0 +1,25 @@
+/*
+ Type definitions needed by multiple interfaces.
+*/
+
+namespace org.freestandards.atspi {
+
+ /*
+ A connection independent reference to a D-Bus object.
+
+ The D-Bus object that is referenced will support at-least
+ the org.freestandards.atspi.Accessible interface.
+ */
+ struct Reference {
+ /* The D-Bus connection name where the object resides. */
+ string name;
+ /* The D-Bus path of the object. */
+ object path;
+ }
+
+ /*
+ Attributes are weakly typed properties of an object consisting of string-string
+ key-value pairs.
+ */
+ typedef Attributes dict <string, string>;
+}
diff --git a/idl/value.didl b/idl/value.didl
new file mode 100644
index 0000000..476cb43
--- /dev/null
+++ b/idl/value.didl
@@ -0,0 +1,15 @@
+
+/*
+ An interface supporting a one-dimensional scalar quantity
+ to be modified, or which reflects a scalar value.
+ */
+interface org.freestandards.atspi.Value {
+
+ read property double MinimumValue;
+
+ read property double MaximumValue;
+
+ read property double MinimumIncrement;
+
+ read property double currentValue;
+}
diff --git a/xml/Accessibility.xml b/xml/Accessibility.xml
index 6c4c470..0475db9 100644
--- a/xml/Accessibility.xml
+++ b/xml/Accessibility.xml
@@ -1,98 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
-<tp:spec xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" xmlns:xi="http://www.w3.org/2001/XInclude">
-
-
-<tp:version>1.24.0</tp:version>
-
-
-
-
-
-<tp:docstring>
- !\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::Collecgtion\n
- Accessibility::Component\n
- Accessibility::Hypertext\n
- Accessibility::Image\n
- Accessibility::Selection\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.
-</tp:docstring>
-
-<!-- Accessibility interfaces and subinterfaces -->
-
-<xi:include href="org.freedesktop.atspi.Accessible.xml"/>
-<xi:include href="org.freedesktop.atspi.Action.xml"/>
-<xi:include href="org.freedesktop.atspi.Collection.xml"/>
-<xi:include href="org.freedesktop.atspi.Component.xml"/>
-<xi:include href="org.freedesktop.atspi.Document.xml"/>
-<xi:include href="org.freedesktop.atspi.Hyperlink.xml"/>
-<xi:include href="org.freedesktop.atspi.Image.xml"/>
-<xi:include href="org.freedesktop.atspi.Selection.xml"/>
-<xi:include href="org.freedesktop.atspi.Table.xml"/>
-<xi:include href="org.freedesktop.atspi.Text.xml"/>
-<xi:include href="org.freedesktop.atspi.Cache.xml"/>
-<xi:include href="org.freedesktop.atspi.Value.xml"/>
-
-<!-- Interfaces derived from Accessibility::Text -->
-<xi:include href="org.freedesktop.atspi.EditableText.xml"/>
-<xi:include href="org.freedesktop.atspi.Hypertext.xml"/>
-<xi:include href="org.freedesktop.atspi.State.xml"/>
-
-<!-- Utility interfaces and interfaces derived from Accessibility::Accessible -->
-
-<xi:include href="org.freedesktop.atspi.Application.xml"/>
-<xi:include href="org.freedesktop.atspi.Registry.xml"/>
-<xi:include href="org.freedesktop.atspi.DeviceEvent.xml"/>
-<xi:include href="org.freedesktop.atspi.Desktop.xml"/>
-<xi:include href="org.freedesktop.atspi.DeviceEventController.xml"/>
-<xi:include href="org.freedesktop.atspi.DeviceEventListener.xml"/>
-<xi:include href="org.freedesktop.atspi.Relation.xml"/>
-<xi:include href="org.freedesktop.atspi.Role.xml"/>
-</tp:spec>
+<spec xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include href="Accessible.xml" parse="xml"/>
+ <xi:include href="Action.xml" parse="xml"/>
+ <xi:include href="Application.xml" parse="xml"/>
+ <xi:include href="Collection.xml" parse="xml"/>
+ <xi:include href="Component.xml" parse="xml"/>
+ <xi:include href="Document.xml" parse="xml"/>
+ <xi:include href="Hypertext.xml" parse="xml"/>
+ <xi:include href="Hyperlink.xml" parse="xml"/>
+ <xi:include href="Image.xml" parse="xml"/>
+ <xi:include href="Selection.xml" parse="xml"/>
+ <xi:include href="Table.xml" parse="xml"/>
+ <xi:include href="Text.xml" parse="xml"/>
+ <xi:include href="EditableText.xml" parse="xml"/>
+ <xi:include href="Cache.xml" parse="xml"/>
+ <xi:include href="Value.xml" parse="xml"/>
+ <xi:include href="DeviceEventController.xml" parse="xml"/>
+ <xi:include href="DeviceEventListener.xml" parse="xml"/>
+</spec>
diff --git a/xml/Accessible.xml b/xml/Accessible.xml
new file mode 100644
index 0000000..ace5926
--- /dev/null
+++ b/xml/Accessible.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Accessible">
+
+ <property name="name" type="s" access="read"/>
+
+ <property name="description" type="s" access="read"/>
+
+ <property name="parent" type="(so)" access="read">
+ <annotation name="com.trolltech.QtDBus.QtTypeName" value="QSpiObjectReference"/>
+ </property>
+
+ <property name="childCount" type="i" access="read"/>
+
+ <method name="GetChildAtIndex">
+ <arg direction="in" name="index" type="i"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="GetIndexInParent">
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetRelationSet">
+ <arg direction="out" type="a(ua(so))"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiRelationArray"/>
+ </method>
+
+ <method name="GetRole">
+ <arg direction="out" type="u"/>
+ </method>
+
+ <method name="GetRoleName">
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="GetLocalizedRoleName">
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="GetState">
+ <arg direction="out" type="au"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiIntList"/>
+ </method>
+
+ <method name="GetAttributes">
+ <arg direction="out" type="a{ss}"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiAttributeArray"/>
+ </method>
+
+ <method name="GetApplication">
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Action.xml b/xml/Action.xml
new file mode 100644
index 0000000..8702dca
--- /dev/null
+++ b/xml/Action.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Action">
+
+ <property name="nActions" type="i" access="read"/>
+
+ <method name="GetDescription">
+ <arg type="i" name="index" direction="in"/>
+ <arg type="s" direction="out"/>
+ </method>
+
+ <method name="GetName">
+ <arg type="i" name="index" direction="in"/>
+ <arg type="s" direction="out"/>
+ </method>
+
+ <method name="GetKeyBinding">
+ <arg type="i" name="index" direction="in"/>
+ <arg type="s" direction="out"/>
+ </method>
+
+ <method name="GetActions">
+ <arg direction="out" name="index" type="a(sss)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiActionArray"/>
+ </method>
+
+ <method name="DoAction">
+ <arg direction="in" name="index" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Application.xml b/xml/Application.xml
new file mode 100644
index 0000000..82d2818
--- /dev/null
+++ b/xml/Application.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Application">
+
+ <property name="toolkitName" type="s" access="read"/>
+
+ <property name="version" type="s" access="read"/>
+
+ <property name="id" type="i" access="read"/>
+
+ <method name="GetLocale">
+ <arg direction="in" name="lctype" type="u"/>
+ <arg direction="out" type="s"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Cache.xml b/xml/Cache.xml
new file mode 100644
index 0000000..fd6ead1
--- /dev/null
+++ b/xml/Cache.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Cache">
+
+ <method name="GetItems">
+ <arg name="nodes" type="a((so)(so)a(so)assusau)" direction="out"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiAccessibleCacheArray"/>
+ </method>
+
+ <signal name="AddAccessible">
+ <arg name="nodeAdded" type="((so)(so)a(so)assusau)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiAccessibleCacheArray"/>
+ </signal>
+
+ <signal name="RemoveAccessible">
+ <arg name="nodeRemoved" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiObjectReference"/>
+ </signal>
+
+</interface>
+</node>
diff --git a/xml/Collection.xml b/xml/Collection.xml
new file mode 100644
index 0000000..748b851
--- /dev/null
+++ b/xml/Collection.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Collection">
+
+ <method name="GetMatches">
+ <arg direction="in" name="rule" type="(auuasuauusub)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="QSpiMatchRule"/>
+ <arg direction="in" name="sortby" type="u"/>
+ <arg direction="in" name="count" type="i"/>
+ <arg direction="in" name="traverse" type="b"/>
+ <arg direction="out" type="a(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiReferenceSet"/>
+ </method>
+
+ <method name="GetMatchesTo">
+ <arg direction="in" name="current_object" type="o"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiObjectReference"/>
+ <arg direction="in" name="rule" type="(auuasuauusub)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="QSpiMatchRule"/>
+ <arg direction="in" name="sortby" type="u"/>
+ <arg direction="in" name="tree" type="u"/>
+ <arg direction="in" name="recurse" type="b"/>
+ <arg direction="in" name="count" type="i"/>
+ <arg direction="in" name="traverse" type="b"/>
+ <arg direction="out" type="a(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiReferenceSet"/>
+ </method>
+
+ <method name="GetMatchesFrom">
+ <arg direction="in" name="current_object" type="o"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiObjectReference"/>
+ <arg direction="in" name="rule" type="(auuasuauusub)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="QSpiMatchRule"/>
+ <arg direction="in" name="sortby" type="u"/>
+ <arg direction="in" name="tree" type="u"/>
+ <arg direction="in" name="count" type="i"/>
+ <arg direction="in" name="traverse" type="b"/>
+ <arg direction="out" type="a(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiReferenceSet"/>
+ </method>
+
+ <method name="GetActiveDescendant">
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiReferenceSet"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Component.xml b/xml/Component.xml
new file mode 100644
index 0000000..c7d3f94
--- /dev/null
+++ b/xml/Component.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Component">
+
+ <method name="Contains">
+ <arg direction="in" name="x" type="i"/>
+ <arg direction="in" name="y" type="i"/>
+ <arg direction="in" name="coord_type" type="u"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="GetAccessibleAtPoint">
+ <arg direction="in" name="x" type="i"/>
+ <arg direction="in" name="y" type="i"/>
+ <arg direction="in" name="coord_type" type="u"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="GetExtents">
+ <arg direction="in" name="coord_type" type="u"/>
+ <arg direction="out" type="(iiii)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiRect"/>
+ </method>
+
+ <method name="GetPosition">
+ <arg direction="in" name="coord_type" type="u"/>
+ <arg direction="out" name="x" type="i"/>
+ <arg direction="out" name="y" type="i"/>
+ </method>
+
+ <method name="GetSize">
+ <arg direction="out" name="width" type="i"/>
+ <arg direction="out" name="height" type="i"/>
+ </method>
+
+ <method name="GetLayer">
+ <arg direction="out" type="u"/>
+ </method>
+
+ <method name="GetMDIZOrder">
+ <arg direction="out" type="n"/>
+ </method>
+
+ <method name="GrabFocus">
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="GetAlpha">
+ <arg direction="out" type="d"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/DeviceEventController.xml b/xml/DeviceEventController.xml
new file mode 100644
index 0000000..1c76789
--- /dev/null
+++ b/xml/DeviceEventController.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.DeviceEventController">
+
+ <method name="RegisterKeystrokeListener">
+ <arg direction="in" name="listener" type="o"/>
+ <arg direction="in" name="keys" type="a(iisi)">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="QSpiKeyTypeArray"/>
+ </arg>
+ <arg direction="in" name="mask" type="u"/>
+ <arg direction="in" name="type" type="au">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In3" value="QSpiEventTypeArray"/>
+ </arg>
+ <arg direction="in" name="mode" type="(bbb)">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In4" value="QSpiEventMode"/>
+ </arg>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="DeregisterKeystrokeListener">
+ <arg direction="in" name="listener" type="o"/>
+ <arg direction="in" name="keys" type="a(iisi)">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="QSpiKeyTypeArray"/>
+ </arg>
+ <arg direction="in" name="mask" type="u"/>
+ <arg direction="in" name="type" type="u"/>
+ </method>
+
+ <method name="RegisterDeviceEventListener">
+ <arg direction="in" name="listener" type="o"/>
+ <arg direction="in" name="types" type="u"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="DeregisterDeviceEventListener">
+ <arg direction="in" name="listener" type="o"/>
+ <arg direction="in" name="types" type="u"/>
+ </method>
+
+ <method name="GenerateKeyboardEvent">
+ <arg direction="in" name="keycode" type="i"/>
+ <arg direction="in" name="keystring" type="s"/>
+ <arg direction="in" name="type" type="u"/>
+ </method>
+
+ <method name="GenerateMouseEvent">
+ <arg direction="in" name="x" type="i"/>
+ <arg direction="in" name="y" type="i"/>
+ <arg direction="in" name="eventName" type="s"/>
+ </method>
+
+ <method name="NotifyListenersSync">
+ <arg direction="in" name="event" type="(uinnisb)"/>
+ <arg direction="out" type="b"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiDeviceEvent"/>
+ </method>
+
+ <method name="NotifyListenersAsync">
+ <arg direction="in" name="event" type="(uinnisb)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiDeviceEvent"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/DeviceEventListener.xml b/xml/DeviceEventListener.xml
new file mode 100644
index 0000000..69193e3
--- /dev/null
+++ b/xml/DeviceEventListener.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.DeviceEventListener">
+
+ <method name="NotifyEvent">
+ <arg direction="in" name="event" type="(uinnisb)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiDeviceEvent"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Document.xml b/xml/Document.xml
new file mode 100644
index 0000000..047b3fc
--- /dev/null
+++ b/xml/Document.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Document">
+
+ <method name="GetLocale">
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="GetAttributeValue">
+ <arg direction="in" name="attributename" type="s"/>
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="GetAttributes">
+ <arg direction="out" type="{ss}"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiAttrubutes"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/EditableText.xml b/xml/EditableText.xml
new file mode 100644
index 0000000..62befd4
--- /dev/null
+++ b/xml/EditableText.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.EditableText">
+
+ <method name="SetTextContents">
+ <arg direction="in" name="newContents" type="s"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="InsertText">
+ <arg direction="in" name="position" type="i"/>
+ <arg direction="in" name="text" type="s"/>
+ <arg direction="in" name="length" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="CopyText">
+ <arg direction="in" name="startPos" type="i"/>
+ <arg direction="in" name="endPos" type="i"/>
+ </method>
+
+ <method name="CutText">
+ <arg direction="in" name="startPos" type="i"/>
+ <arg direction="in" name="endPos" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="DeleteText">
+ <arg direction="in" name="startPos" type="i"/>
+ <arg direction="in" name="endPos" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="PasteText">
+ <arg direction="in" name="position" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Event.xml b/xml/Event.xml
new file mode 100644
index 0000000..1731147
--- /dev/null
+++ b/xml/Event.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+
+<interface name="org.freedesktop.atspi.Event.Object">
+ <signal name="PropertyChange"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="BoundsChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="LinkSelected"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="StateChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ChildrenChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="VisibleDataChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="SelectionChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ModelChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ActiveDescendantChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="RowInserted"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="RowReordered"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="RowDeleted"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ColumnInserted"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ColumnReordered"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ColumnDeleted"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="TextBoundsChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="TextSelectionChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="TextChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="TextAttributesChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="TextCaretMoved"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="AttributesChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+</interface>
+
+<interface name="org.freedesktop.atspi.Event.Window">
+ <signal name="PropertyChange"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Minimize"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Maximize"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Restore"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Close"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Create"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Reparent"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="DesktopCreate"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="DesktopDestroy"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Destroy"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Activate"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Deactivate"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Raise"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Lower"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Move"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Resize"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Shade"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="uUshade"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Restyle"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+</interface>
+
+<interface name="org.freedesktop.atspi.Event.Mouse">
+ <signal name="Abs"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Rel"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Button"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+</interface>
+
+<interface name="org.freedesktop.atspi.Event.Keyboard">
+ <signal name="Modifiers"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+</interface>
+
+<interface name="org.freedesktop.atspi.Event.Terminal">
+ <signal name="LineChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ColumncountChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="LinecountChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ApplicationChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="CharwidthChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+</interface>
+
+<interface name="org.freedesktop.atspi.Event.Document">
+ <signal name="LoadComplete"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="Reload"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="LoadStopped"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="ContentChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+ <signal name="AttributesChanged"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+</interface>
+
+<interface name="org.freedesktop.atspi.Event.Focus">
+ <signal name="Focus"><arg direction="in" type="(suuv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
+ </signal>
+</interface>
+
+</node>
diff --git a/xml/Hyperlink.xml b/xml/Hyperlink.xml
new file mode 100644
index 0000000..bf3b01c
--- /dev/null
+++ b/xml/Hyperlink.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Hyperlink">
+
+ <property name="nAnchors" type="n" access="read"/>
+
+ <property name="startIndex" type="i" access="read"/>
+
+ <property name="endIndex" type="i" access="read"/>
+
+ <method name="GetObject">
+ <arg direction="in" name="i" type="i"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="GetURI">
+ <arg direction="in" name="i" type="i"/>
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="IsValid">
+ <arg direction="out" type="b"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Hypertext.xml b/xml/Hypertext.xml
new file mode 100644
index 0000000..1a5d7c8
--- /dev/null
+++ b/xml/Hypertext.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Hypertext">
+
+ <method name="GetNLinks">
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetLink">
+ <arg direction="in" name="linkIndex" type="i"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="GetLinkIndex">
+ <arg direction="in" name="characterIndex" type="i"/>
+ <arg direction="out" type="i"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Image.xml b/xml/Image.xml
new file mode 100644
index 0000000..a2aa01d
--- /dev/null
+++ b/xml/Image.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Image">
+
+ <property name="imageDescription" type="s" access="read"/>
+
+ <property name="imageLocale" type="s" access="read"/>
+
+ <method name="GetImageExtents">
+ <arg direction="in" name="coordType" type="u"/>
+ <arg direction="out" type="(iiii)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiRect"/>
+ </method>
+
+ <method name="GetImagePosition">
+ <arg direction="out" name="x" type="i"/>
+ <arg direction="out" name="y" type="i"/>
+ <arg direction="in" name="coordType" type="u"/>
+ </method>
+
+ <method name="GetImageSize">
+ <arg direction="out" name="width" type="i"/>
+ <arg direction="out" name="height" type="i"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Selection.xml b/xml/Selection.xml
new file mode 100644
index 0000000..69727e4
--- /dev/null
+++ b/xml/Selection.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Selection">
+
+ <property name="nSelectedChildren" type="i" access="read"/>
+
+ <method name="GetSelectedChild">
+ <arg direction="in" name="selectedChildIndex" type="i"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="SelectChild">
+ <arg direction="in" name="childIndex" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="DeselectSelectedChild">
+ <arg direction="in" name="selectedChildIndex" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="IsChildSelected">
+ <arg direction="in" name="childIndex" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="SelectAll">
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="ClearSelection">
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="deSelectChild">
+ <arg direction="in" name="childIndex" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Socket.xml b/xml/Socket.xml
new file mode 100644
index 0000000..9b3ad8b
--- /dev/null
+++ b/xml/Socket.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Image">
+
+ <method name="Embed">
+ <arg direction="in" name="plug" type="(so)">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiObjectReference"/>
+ </arg>
+ <arg direction="out" name="socket" type="(so)">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </arg>
+ </method>
+
+ <method name="Unembed">
+ <arg direction="in" name="plug" type="(so)">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiObjectReference"/>
+ </arg>
+ </method>
+
+ <signal name="Available">
+ <arg direction="in" name="socket" type="(so)">
+ <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="QSpiObjectReference"/>
+ </arg>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Table.xml b/xml/Table.xml
new file mode 100644
index 0000000..07d8fb6
--- /dev/null
+++ b/xml/Table.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Table">
+
+ <property name="nRows" type="i" access="read"/>
+
+ <property name="nColumns" type="i" access="read"/>
+
+ <property name="caption" type="(so)" access="read">
+ <annotation name="com.trolltech.QtDBus.QtTypeName" value="QSpiObjectReference"/>
+ </property>
+
+ <property name="summary" type="(so)" access="read">
+ <annotation name="com.trolltech.QtDBus.QtTypeName" value="QSpiObjectReference"/>
+ </property>
+
+ <property name="nSelectedRows" type="i" access="read"/>
+
+ <property name="nSelectedColumns" type="i" access="read"/>
+
+ <method name="GetAccessibleAt">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="GetIndexAt">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetRowAtIndex">
+ <arg direction="in" name="index" type="i"/>
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetColumnAtIndex">
+ <arg direction="in" name="index" type="i"/>
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetRowDescription">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="GetColumnDescription">
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="GetRowExtentAt">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetColumnExtentAt">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetRowHeader">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="GetColumnHeader">
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="(so)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
+ </method>
+
+ <method name="GetSelectedRows">
+ <arg direction="out" type="ai"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiIntList"/>
+ </method>
+
+ <method name="GetSelectedColumns">
+ <arg direction="out" type="ai"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiIntList"/>
+ </method>
+
+ <method name="IsRowSelected">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="IsColumnSelected">
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="IsSelected">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="AddRowSelection">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="AddColumnSelection">
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="RemoveRowSelection">
+ <arg direction="in" name="row" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="RemoveColumnSelection">
+ <arg direction="in" name="column" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="GetRowColumnExtentsAtIndex">
+ <arg direction="in" name="index" type="i"/>
+ <arg direction="out" type="b"/>
+ <arg direction="out" name="row" type="i"/>
+ <arg direction="out" name="col" type="i"/>
+ <arg direction="out" name="row_extents" type="i"/>
+ <arg direction="out" name="col_extents" type="i"/>
+ <arg direction="out" name="is_selected" type="b"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Text.xml b/xml/Text.xml
new file mode 100644
index 0000000..349bfbb
--- /dev/null
+++ b/xml/Text.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Text">
+
+ <property name="characterCount" type="i" access="read"/>
+
+ <property name="caretOffset" type="i" access="read"/>
+
+ <method name="GetText">
+ <arg direction="in" name="startOffset" type="i"/>
+ <arg direction="in" name="endOffset" type="i"/>
+ <arg direction="out" type="s"/>
+ </method>
+
+ <method name="SetCaretOffset">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="GetTextBeforeOffset">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="in" name="type" type="u"/>
+ <arg direction="out" type="s"/>
+ <arg direction="out" name="startOffset" type="i"/>
+ <arg direction="out" name="endOffset" type="i"/>
+ </method>
+
+ <method name="GetTextAtOffset">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="in" name="type" type="u"/>
+ <arg direction="out" type="s"/>
+ <arg direction="out" name="startOffset" type="i"/>
+ <arg direction="out" name="endOffset" type="i"/>
+ </method>
+
+ <method name="GetTextAfterOffset">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="in" name="type" type="u"/>
+ <arg direction="out" type="s"/>
+ <arg direction="out" name="startOffset" type="i"/>
+ <arg direction="out" name="endOffset" type="i"/>
+ </method>
+
+ <method name="GetCharacterAtOffset">
+ <arg name="offset" type="i" direction="in"/>
+ <arg type="i" direction="out"/>
+ </method>
+
+ <method name="GetAttributeValue">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="in" name="attributeName" type="s"/>
+ <arg direction="out" type="s"/>
+ <arg direction="out" name="startOffset" type="i"/>
+ <arg direction="out" name="endOffset" type="i"/>
+ <arg direction="out" name="defined" type="b"/>
+ </method>
+
+ <method name="GetAttributes">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="out" type="a{ss}"/>
+ <arg direction="out" name="startOffset" type="i"/>
+ <arg direction="out" name="endOffset" type="i"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiAttributeArray"/>
+ </method>
+
+ <method name="GetDefaultAttributes">
+ <arg direction="out" type="a{ss}"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiAttributeArray"/>
+ </method>
+
+ <method name="GetCharacterExtents">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="out" name="x" type="i"/>
+ <arg direction="out" name="y" type="i"/>
+ <arg direction="out" name="width" type="i"/>
+ <arg direction="out" name="height" type="i"/>
+ <arg direction="in" name="coordType" type="u"/>
+ </method>
+
+ <method name="GetOffsetAtPoint">
+ <arg direction="in" name="x" type="i"/>
+ <arg direction="in" name="y" type="i"/>
+ <arg direction="in" name="coordType" type="u"/>
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetNSelections">
+ <arg direction="out" type="i"/>
+ </method>
+
+ <method name="GetSelection">
+ <arg direction="in" name="selectionNum" type="i"/>
+ <arg direction="out" name="startOffset" type="i"/>
+ <arg direction="out" name="endOffset" type="i"/>
+ </method>
+
+ <method name="AddSelection">
+ <arg direction="in" name="startOffset" type="i"/>
+ <arg direction="in" name="endOffset" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="RemoveSelection">
+ <arg direction="in" name="selectionNum" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="SetSelection">
+ <arg direction="in" name="selectionNum" type="i"/>
+ <arg direction="in" name="startOffset" type="i"/>
+ <arg direction="in" name="endOffset" type="i"/>
+ <arg direction="out" type="b"/>
+ </method>
+
+ <method name="GetRangeExtents">
+ <arg direction="in" name="startOffset" type="i"/>
+ <arg direction="in" name="endOffset" type="i"/>
+ <arg direction="out" name="x" type="i"/>
+ <arg direction="out" name="y" type="i"/>
+ <arg direction="out" name="width" type="i"/>
+ <arg direction="out" name="height" type="i"/>
+ <arg direction="in" name="coordType" type="u"/>
+ </method>
+
+ <method name="GetBoundedRanges">
+ <arg direction="in" name="x" type="i"/>
+ <arg direction="in" name="y" type="i"/>
+ <arg direction="in" name="width" type="i"/>
+ <arg direction="in" name="height" type="i"/>
+ <arg direction="in" name="coordType" type="u"/>
+ <arg direction="in" name="xClipType" type="u"/>
+ <arg direction="in" name="yClipType" type="u"/>
+ <arg direction="out" type="a(iisv)"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiRangeList"/>
+ </method>
+
+ <method name="GetAttributeRun">
+ <arg direction="in" name="offset" type="i"/>
+ <arg direction="in" name="includeDefaults" type="b"/>
+ <arg direction="out" type="a{ss}"/>
+ <arg direction="out" name="startOffset" type="i"/>
+ <arg direction="out" name="endOffset" type="i"/>
+ <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiAttributeArray"/>
+ </method>
+
+ <method name="GetDefaultAttributeSet">
+ <arg direction="out" type="as"/>
+ </method>
+
+</interface>
+</node>
diff --git a/xml/Value.xml b/xml/Value.xml
new file mode 100644
index 0000000..13e53db
--- /dev/null
+++ b/xml/Value.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/node">
+<interface name="org.freedesktop.atspi.Value">
+
+ <property name="minimumValue" type="d" access="read"/>
+
+ <property name="maximumValue" type="d" access="read"/>
+
+ <property name="minimumIncrement" type="d" access="read"/>
+
+ <property name="currentValue" type="d" access="readwrite"/>
+
+</interface>
+</node>
diff --git a/xml/create-introspection.sh b/xml/create-introspection.sh
new file mode 100755
index 0000000..78ae328
--- /dev/null
+++ b/xml/create-introspection.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+xsltproc --xinclude remove-annotations.xsl Accessibility.xml -o Processed.xml
+python versioned-introspection.py
diff --git a/xml/remove-annotations.xsl b/xml/remove-annotations.xsl
new file mode 100644
index 0000000..5d25d0e
--- /dev/null
+++ b/xml/remove-annotations.xsl
@@ -0,0 +1,14 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="annotation"/>
+
+ <xsl:output method="xml" indent="yes" encoding="UTF-8"
+ omit-xml-declaration="yes"/>
+
+</xsl:stylesheet>
diff --git a/xml/versioned-introspection.py b/xml/versioned-introspection.py
new file mode 100644
index 0000000..1d594a3
--- /dev/null
+++ b/xml/versioned-introspection.py
@@ -0,0 +1,91 @@
+
+import sys
+from xml.etree import ElementTree
+
+CTEMPLATE = \
+"""
+/*
+ * This file has been auto-generated from the introspection data available
+ * in the at-spi2-core repository. The D-Bus procol is defined in this
+ * repository, which can be found at:
+ *
+ * http://download.gnome.org/sources/at-spi2-core/0.1/
+ *
+ * DO NOT EDIT.
+ */
+
+%s
+"""
+
+HTEMPLATE = \
+"""
+/*
+ * This file has been auto-generated from the introspection data available
+ * in the at-spi2-core repository. The D-Bus procol is defined in this
+ * repository, which can be found at:
+ *
+ * http://download.gnome.org/sources/at-spi2-core/0.1/
+ *
+ * DO NOT EDIT.
+ */
+
+#ifndef SPI_INTROSPECTION_DATA_H_
+#define SPI_INTROSPECTION_DATA_H_
+
+%s
+
+#endif /* SPI_INTROSPECTION_DATA_H_ */
+"""
+
+DECTEMPLATE = \
+"""
+const char *%s;
+"""
+
+DEFTEMPLATE = \
+"""
+const char *%s =
+%s;
+"""
+
+VERSION = "0.1.7"
+
+def convert_name (name):
+ return "spi_" + name.replace (".", "_")
+
+def convert_contents (contents):
+ contents = contents.replace ("\"", "\\\"")
+ literals = ["\"%s\"" % (line) for line in contents.split ("\n")]
+ return "\n".join (literals)
+
+def main (argv):
+ #Open the XML file and process includes.
+ tree = ElementTree.parse ("Processed.xml")
+ root = tree.getroot ()
+
+ #Open the output files.
+ cfile = open ("introspection.c", "w")
+ hfile = open ("introspection.h", "w")
+
+ ccontents = ""
+ hcontents = ""
+
+ for itf in root.findall ("node/interface"):
+ #Get and convert the name of the interface.
+ name = convert_name (itf.attrib["name"])
+
+ #Create the introspection string with version information.
+ itf.attrib["version"] = VERSION
+ contents = convert_contents (ElementTree.tostring (itf))
+
+ hcontents += DECTEMPLATE % (name)
+ ccontents += DEFTEMPLATE % (name, contents)
+
+ cfile.write (CTEMPLATE % (ccontents))
+ hfile.write (HTEMPLATE % (hcontents))
+
+ cfile.close ()
+ hfile.close ()
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]