Added initial implementations of SpiRelation and, for the C bindings
[platform/core/uifw/at-spi2-atk.git] / atk-bridge / bridge.c
index f47d084..2d988ee 100644 (file)
@@ -30,6 +30,8 @@
 #include "accessible.h"
 #include "application.h"
 
+#define SPI_BRIDGE_DEBUG 1
+
 #define APP_STATIC_BUFF_SZ 64
 
 typedef struct _ArgStruct ArgStruct;
@@ -41,7 +43,7 @@ struct _ArgStruct {
 
 static CORBA_Environment ev;
 static Accessibility_Registry registry;
-static Application *this_app;
+static SpiApplication *this_app;
 
 static gboolean bridge_register_app (gpointer p);
 static void bridge_focus_tracker (AtkObject *object);
@@ -57,6 +59,10 @@ static gboolean bridge_signal_listener (GSignalInvocationHint *signal_hint,
                                        const GValue *param_values,
                                        gpointer data);
 
+static gint bridge_key_listener (AtkImplementor *atk_impl,
+                                AtkKeyEventStruct *event,
+                                gpointer data);
+
 int
 gtk_module_init(gint *argc, gchar **argv[])
 {
@@ -83,7 +89,7 @@ bridge_register_app (gpointer gp)
     }
 
   /* Create the accesssible application server object */
-  this_app = application_new(atk_get_root ());
+  this_app = spi_application_new(atk_get_root ());
 
   obj_id = "OAFIID:Accessibility_Registry:proto0.1";
 
@@ -128,9 +134,19 @@ register_atk_event_listeners ()
 
   atk_add_focus_tracker (bridge_focus_tracker);
   atk_add_global_event_listener (bridge_property_event_listener, "Gtk:AtkObject:property-change");
-/*  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkObject:children-changed");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkObject:children-changed");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkObject:model-changed");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkObject:selection-changed");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkObject:visible-data-changed");
   atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkText:text-changed");
-  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkText:text-caret-moved");*/
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkText:text-caret-moved");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkTable:row-inserted");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkTable:row-reordered");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkTable:row-deleted");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkTable:column-inserted");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkTable:column-reordered");
+  atk_add_global_event_listener (bridge_signal_listener, "Gtk:AtkTable:column-deleted");
+  atk_add_key_event_listener    (bridge_key_listener, NULL);
 }
 
 static void bridge_exit_func()
@@ -146,7 +162,7 @@ static void bridge_focus_tracker (AtkObject *object)
 {
   Accessibility_Event *e = Accessibility_Event__alloc();
   e->type = CORBA_string_dup ("focus:");
-  e->source = CORBA_Object_duplicate (BONOBO_OBJREF (accessible_new (object)), &ev);
+  e->source = CORBA_Object_duplicate (BONOBO_OBJREF (spi_accessible_new (object)), &ev);
   e->detail1 = 0;
   e->detail2 = 0;
   Accessibility_Registry_notifyEvent (registry, e, &ev);
@@ -180,13 +196,13 @@ bridge_property_event_listener (GSignalInvocationHint *signal_hint,
   if (ATK_IS_IMPLEMENTOR (gobject))
   {
     aobject = atk_implementor_ref_accessible (ATK_IMPLEMENTOR (gobject));
-    source = CORBA_Object_duplicate (BONOBO_OBJREF (accessible_new (aobject)), &ev);
+    source = CORBA_Object_duplicate (BONOBO_OBJREF (spi_accessible_new (aobject)), &ev);
     g_object_unref (G_OBJECT(aobject));
   }
   else if (ATK_IS_OBJECT (gobject))
   {
     aobject = ATK_OBJECT (gobject);
-    source = CORBA_Object_duplicate (BONOBO_OBJREF (accessible_new (aobject)), &ev);
+    source = CORBA_Object_duplicate (BONOBO_OBJREF (spi_accessible_new (aobject)), &ev);
   }
   else
   {
@@ -203,6 +219,12 @@ bridge_property_event_listener (GSignalInvocationHint *signal_hint,
   return TRUE;
 }
 
+static gint
+bridge_key_listener (AtkImplementor *atk_impl, AtkKeyEventStruct *event, gpointer data)
+{
+  g_print ("bridge key listener!\n");
+}
+
 static gboolean
 bridge_signal_listener (GSignalInvocationHint *signal_hint,
                        guint n_param_values,
@@ -242,7 +264,7 @@ bridge_signal_listener (GSignalInvocationHint *signal_hint,
   }
 
   snprintf(sbuf, APP_STATIC_BUFF_SZ, "%s:%s", name, g_type_name (signal_query.itype));
-  source =  CORBA_Object_duplicate (BONOBO_OBJREF (accessible_new (aobject)), &ev);
+  source =  CORBA_Object_duplicate (BONOBO_OBJREF (spi_accessible_new (aobject)), &ev);
   e->type = CORBA_string_dup (sbuf);
   e->source = source;
   e->detail1 = 0;