X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=libspi%2Faccessible.c;h=fec72e74909298f643a67772655fecc7b28ff83f;hb=d0405018df7bc391ef2988f03dcc836c9d563a55;hp=4828d51018621b34d7ae7bd6d5168af8255a2111;hpb=1caff52b0256770430bdb7cfe950fdb8dddff1c4;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/libspi/accessible.c b/libspi/accessible.c index 4828d51..fec72e7 100644 --- a/libspi/accessible.c +++ b/libspi/accessible.c @@ -42,7 +42,7 @@ /* * Our parent Gtk object type */ -#define PARENT_TYPE BONOBO_X_OBJECT_TYPE +#define PARENT_TYPE BONOBO_OBJECT_TYPE /* * A pointer to our parent object class @@ -59,6 +59,7 @@ accessible_object_finalize (GObject *object) printf("accessible_object_finalize called\n"); g_object_unref (accessible->atko); + accessible->atko = NULL; printf("atko freed, calling parent finalize\n"); accessible_parent_class->finalize (object); @@ -73,7 +74,11 @@ impl_accessibility_accessible_get_name (PortableServer_Servant servant, { CORBA_char * retval; Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); - retval = CORBA_string_dup (atk_object_get_name (accessible->atko)); + retval = atk_object_get_name (accessible->atko); + if (retval ) + retval = CORBA_string_dup (retval); + else + retval = CORBA_string_dup (""); fprintf (stderr, "Accessible get_name called: %s\n", retval); return retval; } @@ -91,18 +96,101 @@ impl_accessibility_accessible_set_name (PortableServer_Servant servant, printf ("Accessible set_name called: %s\n", name); } +/* + * CORBA Accessibility::Accessible::get_description method implementation + */ +static CORBA_char * +impl_accessibility_accessible_get_description (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + CORBA_char * retval; + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + retval = CORBA_string_dup (atk_object_get_description (accessible->atko)); + fprintf (stderr, "Accessible get_description called: %s\n", retval); + return retval; +} + +/* + * CORBA Accessibility::Accessible::set_description method implementation + */ +static void +impl_accessibility_accessible_set_description (PortableServer_Servant servant, + const CORBA_char *name, + CORBA_Environment *ev) +{ + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + atk_object_set_description (accessible->atko, name); + printf ("Accessible set_description called: %s\n", name); +} + +/* + * CORBA Accessibility::Accessible::get_parent method implementation + */ +static Accessibility_Accessible +impl_accessibility_accessible_get_parent (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + Accessibility_Accessible retval; + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + AtkObject *parent; + parent = atk_object_get_parent (accessible->atko); + retval = bonobo_object_corba_objref (bonobo_object (accessible_new (parent))); + printf ("Accessible get_parent called\n"); + return retval; +} + +/* + * CORBA Accessibility::Accessible::get_childCount method implementation + */ +static CORBA_long +impl_accessibility_accessible_get_child_count (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + CORBA_long retval; + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + retval = (CORBA_long) atk_object_get_n_accessible_children (accessible->atko); + printf ("Accessible get_childCount called: %d\n", (int) retval); + return retval; +} + +/* + * CORBA Accessibility::Accessible::getChildAtIndex method implementation + */ +static Accessibility_Accessible +impl_accessibility_accessible_get_child_at_index (PortableServer_Servant servant, + const CORBA_long index, + CORBA_Environment *ev) +{ + Accessibility_Accessible retval; + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + AtkObject *child = atk_object_ref_accessible_child (accessible->atko, (gint) index); + retval = bonobo_object_corba_objref ( bonobo_object (accessible_new (child))); + printf ("Accessible get_child_at_index called.\n"); + return retval; +} + static void accessible_class_init (AccessibleClass *klass) { GObjectClass * object_class = (GObjectClass *) klass; POA_Accessibility_Accessible__epv *epv = &klass->epv; - accessible_parent_class = g_type_class_ref (BONOBO_X_OBJECT_TYPE); - /*accessible_parent_class = g_type_class_peek_parent (klass);*/ + accessible_parent_class = g_type_class_peek_parent (klass); object_class->finalize = accessible_object_finalize; epv->_get_name = impl_accessibility_accessible_get_name; epv->_set_name = impl_accessibility_accessible_set_name; + epv->_get_description = impl_accessibility_accessible_get_description; + epv->_set_description = impl_accessibility_accessible_set_description; + + epv->_get_parent = impl_accessibility_accessible_get_parent; + epv->_get_childCount = impl_accessibility_accessible_get_child_count; + epv->getChildAtIndex = impl_accessibility_accessible_get_child_at_index; + + /* epv->getIndexInParent = impl_accessibility_accessible_get_index_in_parent; */ + /* epv->getRelationSet = impl_accessibility_accessible_get_relation_set; */ + /* epv->getState = impl_accessibility_accessible_get_state; */ + /* epv->getRole = impl_accessibility_accessible_get_role; */ } static void @@ -129,12 +217,11 @@ accessible_get_type (void) NULL /* value table */ }; /* - * Here we use bonobo_x_type_unique instead of - * gtk_type_unique, this auto-generates a load of + * Bonobo_type_unique auto-generates a load of * CORBA structures for us. All derived types must - * use bonobo_x_type_unique. + * use bonobo_type_unique. */ - type = bonobo_x_type_unique ( + type = bonobo_type_unique ( PARENT_TYPE, POA_Accessibility_Accessible__init, NULL, @@ -151,6 +238,68 @@ accessible_new (AtkObject *o) { Accessible *retval = ACCESSIBLE (g_object_new (accessible_get_type (), NULL)); + g_object_ref (o); retval->atko = ATK_OBJECT (o); + + /* + * TODO: add interface containers/constructors for ACTION, EDITABLE_TEXT, HYPERTEXT, + * IMAGE, SELECTION, TABLE, TEXT, VALUE. + */ + + /* add appropriate ATK interfaces */ + + /* Action: not yet implemented + if (ATK_IS_ACTION (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (action_interface_new (o))); + } + */ + + if (ATK_IS_COMPONENT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (component_interface_new (o))); + } + + /* Others: not yet implemented + if (ATK_IS_EDITABLE_TEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (editable_text_interface_new (o))); + } + else if (ATK_IS_HYPERTEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (hypertext_interface_new (o))); + } + else if (ATK_IS_TEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (text_interface_new (o))); + } + if (ATK_IS_IMAGE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (image_interface_new (o))); + } + if (ATK_IS_SELECTION (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (selection_interface_new (o))); + } + if (ATK_IS_TABLE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (table_interface_new (o))); + } + if (ATK_IS_VALUE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (value_interface_new (o))); + } + + */ + return retval; }