"calendar",
"canvas",
"check box",
+ "check menu item",
"color chooser",
"column header",
"combo box",
"date editor",
"desktop icon",
"desktop frame",
+ "dial",
"dialog",
"directory pane",
+ "drawing area",
"file chooser",
"filler",
- "focus traversable",
"font chooser",
"frame",
"glass pane",
"table column header",
"table row header",
"tearoff menu item",
+ "terminal",
"text",
"toggle button",
"toolbar",
"tooltip",
"tree",
+ "tree table",
"<unknown>",
"viewport",
"window",
#define MAX_ROLES (sizeof (role_names) / sizeof (char *))
+static SPIBoolean
+cspi_init_role_table (AccessibleRole *role_table)
+{
+ int i;
+ for (i = 0; i < Accessibility_ROLE_LAST_DEFINED; ++i)
+ {
+ role_table [i] = SPI_ROLE_UNKNOWN;
+ }
+ role_table [Accessibility_ROLE_INVALID] = SPI_ROLE_INVALID;
+ role_table [Accessibility_ROLE_ACCELERATOR_LABEL] = SPI_ROLE_ACCEL_LABEL;
+ role_table [Accessibility_ROLE_ALERT] = SPI_ROLE_ALERT;
+ role_table [Accessibility_ROLE_ANIMATION] = SPI_ROLE_ANIMATION;
+ role_table [Accessibility_ROLE_ARROW] = SPI_ROLE_ARROW;
+ role_table [Accessibility_ROLE_CALENDAR] = SPI_ROLE_CALENDAR;
+ role_table [Accessibility_ROLE_CANVAS] = SPI_ROLE_CANVAS;
+ role_table [Accessibility_ROLE_CHECK_BOX] = SPI_ROLE_CHECK_BOX;
+ role_table [Accessibility_ROLE_CHECK_MENU_ITEM] = SPI_ROLE_CHECK_MENU_ITEM;
+ role_table [Accessibility_ROLE_COLOR_CHOOSER] = SPI_ROLE_COLOR_CHOOSER;
+ role_table [Accessibility_ROLE_COLUMN_HEADER] = SPI_ROLE_COLUMN_HEADER;
+ role_table [Accessibility_ROLE_COMBO_BOX] = SPI_ROLE_COMBO_BOX;
+ role_table [Accessibility_ROLE_DATE_EDITOR] = SPI_ROLE_DATE_EDITOR;
+ role_table [Accessibility_ROLE_DESKTOP_ICON] = SPI_ROLE_DESKTOP_ICON;
+ role_table [Accessibility_ROLE_DESKTOP_FRAME] = SPI_ROLE_DESKTOP_FRAME;
+ role_table [Accessibility_ROLE_DIAL] = SPI_ROLE_DIAL;
+ role_table [Accessibility_ROLE_DIALOG] = SPI_ROLE_DIALOG;
+ role_table [Accessibility_ROLE_DIRECTORY_PANE] = SPI_ROLE_DIRECTORY_PANE;
+ role_table[Accessibility_ROLE_DRAWING_AREA] = SPI_ROLE_DRAWING_AREA;
+ role_table [Accessibility_ROLE_FILE_CHOOSER] = SPI_ROLE_FILE_CHOOSER;
+ role_table [Accessibility_ROLE_FILLER] = SPI_ROLE_FILLER;
+ role_table [Accessibility_ROLE_FONT_CHOOSER] = SPI_ROLE_FONT_CHOOSER;
+ role_table [Accessibility_ROLE_FRAME] = SPI_ROLE_FRAME;
+ role_table [Accessibility_ROLE_GLASS_PANE] = SPI_ROLE_GLASS_PANE;
+ role_table [Accessibility_ROLE_HTML_CONTAINER] = SPI_ROLE_HTML_CONTAINER;
+ role_table [Accessibility_ROLE_ICON] = SPI_ROLE_ICON;
+ role_table [Accessibility_ROLE_IMAGE] = SPI_ROLE_IMAGE;
+ role_table [Accessibility_ROLE_INTERNAL_FRAME] = SPI_ROLE_INTERNAL_FRAME;
+ role_table [Accessibility_ROLE_LABEL] = SPI_ROLE_LABEL;
+ role_table [Accessibility_ROLE_LAYERED_PANE] = SPI_ROLE_LAYERED_PANE;
+ role_table [Accessibility_ROLE_LIST] = SPI_ROLE_LIST;
+ role_table [Accessibility_ROLE_LIST_ITEM] = SPI_ROLE_LIST_ITEM;
+ role_table [Accessibility_ROLE_MENU] = SPI_ROLE_MENU;
+ role_table [Accessibility_ROLE_MENU_BAR] = SPI_ROLE_MENU_BAR;
+ role_table [Accessibility_ROLE_MENU_ITEM] = SPI_ROLE_MENU_ITEM;
+ role_table [Accessibility_ROLE_OPTION_PANE] = SPI_ROLE_OPTION_PANE;
+ role_table [Accessibility_ROLE_PAGE_TAB] = SPI_ROLE_PAGE_TAB;
+ role_table [Accessibility_ROLE_PAGE_TAB_LIST] = SPI_ROLE_PAGE_TAB_LIST;
+ role_table [Accessibility_ROLE_PANEL] = SPI_ROLE_PANEL;
+ role_table [Accessibility_ROLE_PASSWORD_TEXT] = SPI_ROLE_PASSWORD_TEXT;
+ role_table [Accessibility_ROLE_POPUP_MENU] = SPI_ROLE_POPUP_MENU;
+ role_table [Accessibility_ROLE_PROGRESS_BAR] = SPI_ROLE_PROGRESS_BAR;
+ role_table [Accessibility_ROLE_PUSH_BUTTON] = SPI_ROLE_PUSH_BUTTON;
+ role_table [Accessibility_ROLE_RADIO_BUTTON] = SPI_ROLE_RADIO_BUTTON;
+ role_table [Accessibility_ROLE_RADIO_MENU_ITEM] = SPI_ROLE_RADIO_MENU_ITEM;
+ role_table [Accessibility_ROLE_ROOT_PANE] = SPI_ROLE_ROOT_PANE;
+ role_table [Accessibility_ROLE_ROW_HEADER] = SPI_ROLE_ROW_HEADER;
+ role_table [Accessibility_ROLE_SCROLL_BAR] = SPI_ROLE_SCROLL_BAR;
+ role_table [Accessibility_ROLE_SCROLL_PANE] = SPI_ROLE_SCROLL_PANE;
+ role_table [Accessibility_ROLE_SEPARATOR] = SPI_ROLE_SEPARATOR;
+ role_table [Accessibility_ROLE_SLIDER] = SPI_ROLE_SLIDER;
+ role_table [Accessibility_ROLE_SPIN_BUTTON] = SPI_ROLE_SPIN_BUTTON;
+ role_table [Accessibility_ROLE_SPLIT_PANE] = SPI_ROLE_SPLIT_PANE;
+ role_table [Accessibility_ROLE_STATUS_BAR] = SPI_ROLE_STATUS_BAR;
+ role_table [Accessibility_ROLE_TABLE] = SPI_ROLE_TABLE;
+ role_table [Accessibility_ROLE_TABLE_CELL] = SPI_ROLE_TABLE_CELL;
+ role_table[Accessibility_ROLE_TABLE_COLUMN_HEADER] = SPI_ROLE_TABLE_COLUMN_HEADER;
+ role_table[Accessibility_ROLE_TABLE_ROW_HEADER] = SPI_ROLE_TABLE_ROW_HEADER;
+ role_table [Accessibility_ROLE_TEAROFF_MENU_ITEM] = SPI_ROLE_TEAROFF_MENU_ITEM;
+ role_table[Accessibility_ROLE_TERMINAL] = SPI_ROLE_TERMINAL;
+ role_table [Accessibility_ROLE_TEXT] = SPI_ROLE_TEXT;
+ role_table [Accessibility_ROLE_TOGGLE_BUTTON] = SPI_ROLE_TOGGLE_BUTTON;
+ role_table [Accessibility_ROLE_TOOL_BAR] = SPI_ROLE_TOOL_BAR;
+ role_table [Accessibility_ROLE_TOOL_TIP] = SPI_ROLE_TOOL_TIP;
+ role_table [Accessibility_ROLE_TREE] = SPI_ROLE_TREE;
+ role_table [Accessibility_ROLE_TREE_TABLE] = SPI_ROLE_TREE_TABLE;
+ role_table [Accessibility_ROLE_VIEWPORT] = SPI_ROLE_VIEWPORT;
+ role_table [Accessibility_ROLE_WINDOW] = SPI_ROLE_WINDOW;
+ role_table [Accessibility_ROLE_EXTENDED] = SPI_ROLE_EXTENDED;
+ role_table [Accessibility_ROLE_LAST_DEFINED] = SPI_ROLE_EXTENDED;
+
+ return TRUE;
+}
+
static AccessibleRole
cspi_role_from_spi_role (Accessibility_Role role)
{
- return role; /* FIXME: need to compare, equivalence not guaranteed */
+ /* array is sized according to IDL roles because IDL roles are the index */
+ static AccessibleRole cspi_role_table [Accessibility_ROLE_LAST_DEFINED];
+ static SPIBoolean is_initialized = FALSE;
+ AccessibleRole cspi_role;
+ if (!is_initialized)
+ {
+ is_initialized = cspi_init_role_table (cspi_role_table);
+ }
+ if (role >= 0 && role < Accessibility_ROLE_LAST_DEFINED)
+ {
+ cspi_role = cspi_role_table [role];
+ }
+ else
+ {
+ cspi_role = SPI_ROLE_EXTENDED;
+ }
+ return cspi_role;
}
+static SPIBoolean
+init_state_table (Accessibility_StateType *state_table)
+{
+ int i;
+
+ for (i = 0; i < Accessibility_STATE_LAST_DEFINED; i++)
+ state_table[i] = SPI_STATE_INVALID;
+
+ state_table[SPI_STATE_ACTIVE] = Accessibility_STATE_ACTIVE;
+ state_table[SPI_STATE_ARMED] = Accessibility_STATE_ARMED;
+ state_table[SPI_STATE_BUSY] = Accessibility_STATE_BUSY;
+ state_table[SPI_STATE_CHECKED] = Accessibility_STATE_CHECKED;
+ state_table[SPI_STATE_DEFUNCT] = Accessibility_STATE_DEFUNCT;
+ state_table[SPI_STATE_EDITABLE] = Accessibility_STATE_EDITABLE;
+ state_table[SPI_STATE_ENABLED] = Accessibility_STATE_ENABLED;
+ state_table[SPI_STATE_EXPANDABLE] = Accessibility_STATE_EXPANDABLE;
+ state_table[SPI_STATE_EXPANDED] = Accessibility_STATE_EXPANDED;
+ state_table[SPI_STATE_FOCUSABLE] = Accessibility_STATE_FOCUSABLE;
+ state_table[SPI_STATE_FOCUSED] = Accessibility_STATE_FOCUSED;
+ state_table[SPI_STATE_HORIZONTAL] = Accessibility_STATE_HORIZONTAL;
+ state_table[SPI_STATE_ICONIFIED] = Accessibility_STATE_ICONIFIED;
+ state_table[SPI_STATE_MODAL] = Accessibility_STATE_MODAL;
+ state_table[SPI_STATE_MULTI_LINE] = Accessibility_STATE_MULTI_LINE;
+ state_table[SPI_STATE_MULTISELECTABLE] = Accessibility_STATE_MULTISELECTABLE;
+ state_table[SPI_STATE_OPAQUE] = Accessibility_STATE_OPAQUE;
+ state_table[SPI_STATE_PRESSED] = Accessibility_STATE_PRESSED;
+ state_table[SPI_STATE_RESIZABLE] = Accessibility_STATE_RESIZABLE;
+ state_table[SPI_STATE_SELECTABLE] = Accessibility_STATE_SELECTABLE;
+ state_table[SPI_STATE_SELECTED] = Accessibility_STATE_SELECTED;
+ state_table[SPI_STATE_SENSITIVE] = Accessibility_STATE_SENSITIVE;
+ state_table[SPI_STATE_SHOWING] = Accessibility_STATE_SHOWING;
+ state_table[SPI_STATE_SINGLE_LINE] = Accessibility_STATE_SINGLE_LINE;
+ state_table[SPI_STATE_STALE] = Accessibility_STATE_STALE;
+ state_table[SPI_STATE_TRANSIENT] = Accessibility_STATE_TRANSIENT;
+ state_table[SPI_STATE_VERTICAL] = Accessibility_STATE_VERTICAL;
+ state_table[SPI_STATE_VISIBLE] = Accessibility_STATE_VISIBLE;
+
+ return TRUE;
+}
+
+
+
+static Accessibility_StateType
+spi_state_type_from_accessible_state (AccessibleState type)
+{
+ static Accessibility_StateType state_table[Accessibility_STATE_LAST_DEFINED];
+ static SPIBoolean table_initialized = FALSE;
+ Accessibility_StateType rv;
+
+ if (!table_initialized)
+ table_initialized = init_state_table (state_table);
+ if (type > SPI_STATE_INVALID && type < SPI_STATE_LAST_DEFINED)
+ rv = state_table[type];
+ else
+ rv = Accessibility_STATE_INVALID;
+ return rv;
+}
+
+
+
+
/**
* AccessibleRole_getName:
* @role: an #AccessibleRole object to query.
*
* Get a localizeable string that indicates the name of an #AccessibleRole.
- * Currently broken, do not use.
+ * <em>DEPRECATED.</em>
*
* Returns: a localizable string name for an #AccessibleRole enumerated type.
**/
{
if (role < MAX_ROLES)
{
- return g_strdup (role_names [(int) role]);
+ return CORBA_string_dup (role_names [(int) role]);
}
else
{
cspi_return_val_if_ev ("getRelationSet", NULL);
- /* this looks hack-ish, but it's based on the CORBA C bindings spec */
n_relations = relation_set->_length;
- relations = malloc (sizeof (AccessibleRelation *) * n_relations);
+ relations = malloc (sizeof (AccessibleRelation *) * (n_relations + 1));
for (i = 0; i < n_relations; ++i)
{
relations[i] = cspi_object_add (CORBA_Object_duplicate (
relation_set->_buffer[i], cspi_ev ()));
}
- relations[i] = CORBA_OBJECT_NIL;
+ relations[i] = NULL;
CORBA_free (relation_set);
AccessibleStateSet *
Accessible_getStateSet (Accessible *obj)
{
- return NULL;
+ AccessibleStateSet *retval;
+
+ cspi_return_val_if_fail (obj != NULL, NULL);
+
+ retval = cspi_object_add (
+ Accessibility_Accessible_getState (CSPI_OBJREF (obj),
+ cspi_ev ()));
+
+ return retval;
}
/* Interface query methods */
}
/**
+ * Accessible_isStreamableContent:
+ * @obj: a pointer to the #Accessible instance to query.
+ *
+ * Query whether the specified #Accessible implements
+ * #AccessibleStreamableContent.
+ *
+ * Returns: #TRUE if @obj implements the #AccessibleStreamableContent interface,
+ * #FALSE otherwise.
+**/
+SPIBoolean
+Accessible_isStreamableContent (Accessible *obj)
+{
+ return cspi_accessible_is_a (obj,
+ "IDL:Accessibility/StreamableContent:1.0");
+}
+
+/**
* Accessible_isText:
* @obj: a pointer to the #Accessible instance to query.
*
/**
+ * Accessible_getStreamableContent:
+ * @obj: a pointer to the #Accessible instance to query.
+ *
+ * Get the #AccessibleStreamableContent interface for an #Accessible.
+ *
+ * Returns: a pointer to an #AccessibleStreamableContent interface instance, or
+ * NULL if @obj does not implement #AccessibleStreamableContent.
+ **/
+AccessibleStreamableContent *
+Accessible_getStreamableContent (Accessible *obj)
+{
+ return (AccessibleStreamableContent *) Accessible_queryInterface (
+ obj, "IDL:Accessibility/StreamableContent:1.0");
+}
+
+/**
* Accessible_getTable:
* @obj: a pointer to the #Accessible instance to query.
*
AccessibleRelationType
AccessibleRelation_getRelationType (AccessibleRelation *obj)
{
- cspi_return_val_if_fail (obj != NULL, -1);
- return 0;
+ AccessibleRelationType retval;
+
+ cspi_return_val_if_fail (obj, SPI_RELATION_NULL);
+ retval =
+ Accessibility_Relation_getRelationType (CSPI_OBJREF (obj), cspi_ev());
+ cspi_return_val_if_ev ("getRelationType", SPI_RELATION_NULL);
+ return retval;
}
/**
int
AccessibleRelation_getNTargets (AccessibleRelation *obj)
{
- cspi_return_val_if_fail (obj != NULL, -1);
- return 0;
+ int retval;
+
+ cspi_return_val_if_fail (obj, -1);
+ retval = (int)
+ Accessibility_Relation_getNTargets (CSPI_OBJREF (obj), cspi_ev());
+ cspi_return_val_if_ev ("getNTargets", -1);
+ return retval;
}
/**
Accessible *
AccessibleRelation_getTarget (AccessibleRelation *obj, int i)
{
- cspi_return_val_if_fail (obj != NULL, NULL);
- return NULL;
+ Accessible *retval;
+
+ cspi_return_val_if_fail (obj, NULL);
+
+ retval = cspi_object_add (
+ Accessibility_Relation_getTarget (CSPI_OBJREF(obj),
+ (CORBA_short) i, cspi_ev()));
+ cspi_return_val_if_ev ("getTarget", NULL);
+ return retval;
}
/**
AccessibleState state)
{
CORBA_boolean retval;
-
+ Accessibility_StateType spi_state;
+
cspi_return_val_if_fail (obj != NULL, FALSE);
+ spi_state = spi_state_type_from_accessible_state (state);
retval = Accessibility_StateSet_contains (CSPI_OBJREF (obj),
- state, cspi_ev ());
+ spi_state, cspi_ev ());
cspi_return_val_if_ev ("contains", FALSE);
AccessibleStateSet_add (AccessibleStateSet *obj,
AccessibleState state)
{
+ Accessibility_StateType spi_state;
+
cspi_return_if_fail (obj != NULL);
- Accessibility_StateSet_add (CSPI_OBJREF (obj), state, cspi_ev ());
+ spi_state = spi_state_type_from_accessible_state (state);
+ Accessibility_StateSet_add (CSPI_OBJREF (obj), spi_state, cspi_ev ());
cspi_check_ev ("add");
}
AccessibleStateSet_remove (AccessibleStateSet *obj,
AccessibleState state)
{
+ Accessibility_StateType spi_state;
+
cspi_return_if_fail (obj != NULL);
- Accessibility_StateSet_remove (CSPI_OBJREF (obj), state, cspi_ev ());
+ spi_state = spi_state_type_from_accessible_state (state);
+ Accessibility_StateSet_remove (CSPI_OBJREF (obj), spi_state, cspi_ev ());
cspi_check_ev ("remove");
}
AccessibleStateSet_compare (AccessibleStateSet *obj,
AccessibleStateSet *obj2)
{
+ Accessibility_StateSet retval;
+
cspi_return_val_if_fail (obj != NULL, NULL);
cspi_return_val_if_fail (obj2 != NULL, NULL);
+ retval = Accessibility_StateSet_compare (CSPI_OBJREF(obj), CSPI_OBJREF(obj2), cspi_ev ());
return NULL;
}
SPIBoolean
AccessibleStateSet_isEmpty (AccessibleStateSet *obj)
{
+ CORBA_boolean retval;
+
cspi_return_val_if_fail (obj != NULL, FALSE);
- return TRUE;
- /* return Accessibility_StateSet_isEmpty (CSPI_OBJREF (obj), cspi_ev ());*/
+ retval = Accessibility_StateSet_isEmpty (CSPI_OBJREF (obj), cspi_ev ());
+ return (SPIBoolean) retval;
}