X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=cspi%2Fspi_accessible.c;h=2710ef836505795765a89afd18f43ad300ae211f;hb=59568fcca2ea754f1ebb7133f29e1e0908e2af4a;hp=d1bbcb99ad75a22406e28d5ff4ce02d098a52fbf;hpb=0c5a81f27dfbae31a499393e94ac271e684e192f;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/cspi/spi_accessible.c b/cspi/spi_accessible.c index d1bbcb9..2710ef8 100644 --- a/cspi/spi_accessible.c +++ b/cspi/spi_accessible.c @@ -101,7 +101,21 @@ static const char *role_names [] = "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 *)) @@ -189,11 +203,24 @@ cspi_init_role_table (AccessibleRole *role_table) 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 */ @@ -215,6 +242,21 @@ cspi_role_from_spi_role (Accessibility_Role role) 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. @@ -427,6 +469,8 @@ Accessible_getRelationSet (Accessible *obj) cspi_return_val_if_fail (obj != NULL, NULL); + g_assert (!cspi_exception ()); + relation_set = Accessibility_Accessible_getRelationSet (CSPI_OBJREF (obj), cspi_ev ()); @@ -499,9 +543,39 @@ Accessible_getRoleName (Accessible *obj) } /** + * 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. * + * Gets the current state of an object. + * * Returns: a pointer to an #AccessibleStateSet representing the object's current state. **/ AccessibleStateSet * @@ -517,7 +591,7 @@ Accessible_getStateSet (Accessible *obj) CSPI_OBJREF (obj), cspi_ev ()); cspi_return_val_if_ev ("getState", NULL); - cspi_return_val_if_fail (corba_stateset != NULL, 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); @@ -530,6 +604,58 @@ Accessible_getStateSet (Accessible *obj) 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 */ /** @@ -581,6 +707,22 @@ Accessible_isComponent (Accessible *obj) } /** + * 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. * @@ -756,6 +898,21 @@ Accessible_getComponent (Accessible *obj) 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: @@ -988,7 +1145,10 @@ cspi_init_relation_type_table (AccessibleRelationType *relation_type_table) 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_LAST_DEFINED] = SPI_RELATION_LAST_DEFINED; + 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 @@ -1149,6 +1309,13 @@ spi_state_to_corba (AccessibleState state) 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 Accessibility_STATE_INVALID; }