"fooler",
"paragraph",
"ruler",
- "application"
+ "application",
+ "autocomplete",
+ "editbar",
+ "embedded",
+ "entry",
+ "chart",
+ "caption",
+ "document_frame",
+ "heading",
+ "page",
+ "section",
+ "form",
+ "redundant object",
+ "link",
+ "input method window"
};
#define MAX_ROLES (sizeof (role_names) / sizeof (char *))
role_table [Accessibility_ROLE_PARAGRAPH] = SPI_ROLE_PARAGRAPH;
role_table [Accessibility_ROLE_RULER] = SPI_ROLE_RULER;
role_table [Accessibility_ROLE_APPLICATION] = SPI_ROLE_APPLICATION;
+ role_table [Accessibility_ROLE_AUTOCOMPLETE] = SPI_ROLE_AUTOCOMPLETE;
+ role_table [Accessibility_ROLE_EDITBAR] = SPI_ROLE_EDITBAR;
+ role_table [Accessibility_ROLE_EMBEDDED] = SPI_ROLE_EMBEDDED;
+ role_table [Accessibility_ROLE_ENTRY] = SPI_ROLE_ENTRY;
+ role_table [Accessibility_ROLE_CHART] = SPI_ROLE_CHART;
+ role_table [Accessibility_ROLE_CAPTION] = SPI_ROLE_CAPTION;
+ role_table [Accessibility_ROLE_DOCUMENT_FRAME] = SPI_ROLE_DOCUMENT_FRAME;
+ role_table [Accessibility_ROLE_HEADING] = SPI_ROLE_HEADING;
+ role_table [Accessibility_ROLE_PAGE] = SPI_ROLE_PAGE;
+ role_table [Accessibility_ROLE_SECTION] = SPI_ROLE_SECTION;
+ role_table [Accessibility_ROLE_FORM] = SPI_ROLE_FORM;
+ role_table [Accessibility_ROLE_REDUNDANT_OBJECT] = SPI_ROLE_REDUNDANT_OBJECT;
+ role_table [Accessibility_ROLE_LINK] = SPI_ROLE_LINK;
+ role_table [Accessibility_ROLE_INPUT_METHOD_WINDOW] = SPI_ROLE_INPUT_METHOD_WINDOW;
return TRUE;
}
-static AccessibleRole
+AccessibleRole
cspi_role_from_spi_role (Accessibility_Role role)
{
/* array is sized according to IDL roles because IDL roles are the index */
return cspi_role;
}
+AccessibleAttributeSet *
+_cspi_attribute_set_from_sequence (const Accessibility_AttributeSet *seq)
+{
+ AccessibleAttributeSet *set = g_new0 (AccessibleAttributeSet, 1);
+ int i;
+
+ set->len = seq->_length;
+ set->attributes = g_new0 (char *, set->len);
+ for (i = 0; i < set->len; ++i)
+ {
+ set->attributes[i] = g_strdup (seq->_buffer [i]);
+ }
+ return set;
+}
+
/**
* AccessibleRole_getName:
* @role: an #AccessibleRole object to query.
}
else
{
- return g_strdup ("");
+ return CORBA_string_dup ("");
}
}
cspi_return_val_if_fail (obj != NULL, NULL);
+ g_assert (!cspi_exception ());
+
relation_set =
Accessibility_Accessible_getRelationSet (CSPI_OBJREF (obj), cspi_ev ());
}
/**
+ * Accessible_getLocalizedRoleName:
+ * @obj: a pointer to the #Accessible object on which to operate.
+ *
+ * Get a UTF-8 string describing the (localized) role this object plays in the UI.
+ * This method will return useful values for roles that fall outside the
+ * enumeration used in Accessible_getRole ().
+ *
+ * @Since: AT-SPI 1.4
+ *
+ * Returns: a UTF-8 string specifying the role of this #Accessible object.
+ *
+ **/
+char *
+Accessible_getLocalizedRoleName (Accessible *obj)
+{
+ char *retval;
+
+ cspi_return_val_if_fail (obj != NULL, CORBA_string_dup ("invalid"));
+
+ retval =
+ Accessibility_Accessible_getLocalizedRoleName (CSPI_OBJREF (obj), cspi_ev ());
+
+ cspi_return_val_if_ev ("getLocalizedRoleName", CORBA_string_dup ("invalid"));
+
+ return retval;
+}
+
+/**
* Accessible_getStateSet:
* @obj: a pointer to the #Accessible object on which to operate.
*
- * Not Yet Implemented.
+ * Gets the current state of an object.
*
* Returns: a pointer to an #AccessibleStateSet representing the object's current state.
**/
CSPI_OBJREF (obj), cspi_ev ());
cspi_return_val_if_ev ("getState", NULL);
+ cspi_return_val_if_fail (corba_stateset != CORBA_OBJECT_NIL, NULL);
+ cspi_return_val_if_fail (cspi_ping (corba_stateset), NULL);
corba_seq = Accessibility_StateSet_getStates (corba_stateset, cspi_ev ());
cspi_return_val_if_ev ("getState", NULL);
return retval;
}
+/**
+ * Accessible_getAttributes:
+ * @obj: The #Accessible being queried.
+ *
+ * Get the #AttributeSet representing any assigned
+ * name-value pair attributes or annotations for this object.
+ * For typographic, textual, or textually-semantic attributes, see
+ * AccessibleText_getAttributes instead.
+ *
+ * Returns: The name-value-pair attributes assigned to this object.
+ */
+AccessibleAttributeSet *
+Accessible_getAttributes (Accessible *obj)
+{
+ AccessibleAttributeSet *retval;
+ Accessibility_AttributeSet *corba_seq;
+
+ cspi_return_val_if_fail (obj != NULL, NULL);
+
+ corba_seq = Accessibility_Accessible_getAttributes (
+ CSPI_OBJREF (obj), cspi_ev ());
+ cspi_return_val_if_ev ("getAttributes", NULL);
+
+ retval = _cspi_attribute_set_from_sequence (corba_seq);
+ CORBA_free (corba_seq);
+
+ return retval;
+}
+
+/**
+ * Accessible_getHostApplication:
+ * @obj: The #Accessible being queried.
+ *
+ * Get the containing #AccessibleApplication for an object.
+ *
+ * Returns: the containing AccessibleApplication instance for this object.
+ */
+AccessibleApplication *
+Accessible_getHostApplication (Accessible *obj)
+{
+ AccessibleApplication *retval;
+
+ cspi_return_val_if_fail (obj != NULL, NULL);
+
+ retval = Accessible_getApplication (cspi_object_add (
+ Accessibility_Accessible_getApplication (CSPI_OBJREF (obj),
+ cspi_ev ())));
+ cspi_return_val_if_ev ("getApplication", NULL);
+
+ return retval;
+}
+
/* Interface query methods */
/**
}
/**
+ * Accessible_isDocument:
+ * @obj: a pointer to the #Accessible instance to query.
+ *
+ * Query whether the specified #Accessible implements #AccessibleDocument.
+ *
+ * Returns: #TRUE if @obj implements the #AccessibleDocument interface,
+ * #FALSE otherwise.
+ **/
+SPIBoolean
+Accessible_isDocument (Accessible *obj)
+{
+ return cspi_accessible_is_a (obj,
+ "IDL:Accessibility/Document:1.0");
+}
+
+/**
* Accessible_isEditableText:
* @obj: a pointer to the #Accessible instance to query.
*
return (AccessibleComponent *) Accessible_queryInterface (
obj, "IDL:Accessibility/Component:1.0");
}
+/**
+ * Accessible_getDocument:
+ * @obj: a pointer to the #Accessible instance to query.
+ *
+ * Get the #AccessibleDocument interface for an #Accessible.
+ *
+ * Returns: a pointer to an #AccessibleDocument interface instance, or
+ * NULL if @obj does not implement #AccessibleDocument.
+ **/
+AccessibleDocument *
+Accessible_getDocument (Accessible *obj)
+{
+ return (AccessibleDocument *) Accessible_queryInterface (
+ obj, "IDL:Accessibility/Document:1.0");
+}
/**
* Accessible_getEditableText:
cspi_object_unref (obj);
}
+static SPIBoolean
+cspi_init_relation_type_table (AccessibleRelationType *relation_type_table)
+{
+ int i;
+ for (i = 0; i < Accessibility_RELATION_LAST_DEFINED; ++i)
+ {
+ relation_type_table [i] = SPI_RELATION_NULL;
+ }
+ relation_type_table [Accessibility_RELATION_NULL] = SPI_RELATION_NULL;
+ relation_type_table [Accessibility_RELATION_LABEL_FOR] = SPI_RELATION_LABEL_FOR;
+ relation_type_table [Accessibility_RELATION_LABELLED_BY] = SPI_RELATION_LABELED_BY;
+ relation_type_table [Accessibility_RELATION_CONTROLLER_FOR] = SPI_RELATION_CONTROLLER_FOR;
+ relation_type_table [Accessibility_RELATION_CONTROLLED_BY] = SPI_RELATION_CONTROLLED_BY;
+ relation_type_table [Accessibility_RELATION_MEMBER_OF] = SPI_RELATION_MEMBER_OF;
+ relation_type_table [Accessibility_RELATION_TOOLTIP_FOR] = SPI_RELATION_NULL;
+ relation_type_table [Accessibility_RELATION_NODE_CHILD_OF] = SPI_RELATION_NODE_CHILD_OF;
+ relation_type_table [Accessibility_RELATION_EXTENDED] = SPI_RELATION_EXTENDED;
+ relation_type_table [Accessibility_RELATION_FLOWS_TO] = SPI_RELATION_FLOWS_TO;
+ relation_type_table [Accessibility_RELATION_FLOWS_FROM] = SPI_RELATION_FLOWS_FROM;
+ relation_type_table [Accessibility_RELATION_SUBWINDOW_OF] = SPI_RELATION_SUBWINDOW_OF;
+ relation_type_table [Accessibility_RELATION_EMBEDS] = SPI_RELATION_EMBEDS;
+ relation_type_table [Accessibility_RELATION_EMBEDDED_BY] = SPI_RELATION_EMBEDDED_BY;
+ relation_type_table [Accessibility_RELATION_POPUP_FOR] = SPI_RELATION_POPUP_FOR;
+ relation_type_table [Accessibility_RELATION_PARENT_WINDOW_OF] = SPI_RELATION_PARENT_WINDOW_OF;
+ relation_type_table [Accessibility_RELATION_DESCRIBED_BY] = SPI_RELATION_DESCRIBED_BY;
+ relation_type_table [Accessibility_RELATION_DESCRIPTION_FOR] = SPI_RELATION_DESCRIPTION_FOR;
+ return TRUE;
+}
+
+static AccessibleRelationType
+cspi_relation_type_from_spi_relation_type (Accessibility_RelationType type)
+{
+ /* array is sized according to IDL RelationType because IDL RelationTypes are the index */
+ static AccessibleRelationType cspi_relation_type_table [Accessibility_RELATION_LAST_DEFINED];
+ static SPIBoolean is_initialized = FALSE;
+ AccessibleRelationType cspi_type;
+ if (!is_initialized)
+ {
+ is_initialized = cspi_init_relation_type_table (cspi_relation_type_table);
+ }
+ if (type >= 0 && type < Accessibility_RELATION_LAST_DEFINED)
+ {
+ cspi_type = cspi_relation_type_table [type];
+ }
+ else
+ {
+ cspi_type = SPI_RELATION_NULL;
+ }
+ return cspi_type;
+}
/**
* AccessibleRelation_getRelationType:
* @obj: a pointer to the #AccessibleRelation object to query.
AccessibleRelationType
AccessibleRelation_getRelationType (AccessibleRelation *obj)
{
- AccessibleRelationType retval;
+ Accessibility_RelationType 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;
+ return cspi_relation_type_from_spi_relation_type (retval);
}
/**
MAP_STATE (VERTICAL);
MAP_STATE (VISIBLE);
MAP_STATE (MANAGES_DESCENDANTS);
+ MAP_STATE (INDETERMINATE);
+ MAP_STATE (TRUNCATED);
+ MAP_STATE (REQUIRED);
+ MAP_STATE (INVALID_ENTRY);
+ MAP_STATE (SUPPORTS_AUTOCOMPLETION);
+ MAP_STATE (SELECTABLE_TEXT);
+ MAP_STATE (IS_DEFAULT);
+ MAP_STATE (VISITED);
default:
- return ATK_STATE_INVALID;
+ return Accessibility_STATE_INVALID;
}
#undef MAP_STATE
}