Added makefile support for cspi directory.
[platform/core/uifw/at-spi2-atk.git] / cspi / spi_main.c
1 #include <libbonobo.h>
2 #include <stdio.h>
3 #include "spi.h"
4
5 static CORBA_Environment ev;
6 static AccessibilityRegistry registry;
7
8 Accessible *
9 Obj_Add (Accessible object)
10 {
11   /* TODO: keep list of live object refs */
12   Accessible *oref = g_malloc (sizeof (Accessible));
13   *oref = object;
14   return oref;
15 }
16
17 /*
18  *
19  * Basic SPI initialization and event loop function prototypes
20  *
21  */
22
23 int
24 SPI_init (void)
25 {
26   int argc = 0;
27   CORBA_Object oclient;
28   char *obj_id;
29
30   CORBA_exception_init(&ev);
31
32   if (!bonobo_init (&argc, NULL))
33     {
34       g_error ("Could not initialize Bonobo");
35     }
36
37   obj_id = "OAFIID:Accessibility_Registry:proto0.1";
38
39   oclient = bonobo_activation_activate_from_id (obj_id, 0, NULL, &ev);
40   if (ev._major != CORBA_NO_EXCEPTION) {
41     fprintf (stderr,
42             ("AT-SPI error: during registry activation: %s\n"),
43             CORBA_exception_id(&ev));
44     CORBA_exception_free(&ev);
45     exit(-1);
46   }
47
48   if (CORBA_Object_is_nil (oclient, &ev))
49     {
50       g_error ("Could not locate registry");
51       exit(-1);
52     }
53
54   registry = (Accessibility_Registry) oclient;
55
56   bonobo_activate ();
57
58   return 0;
59 }
60
61 void
62 SPI_event_main (boolean isGNOMEApp)
63 {
64   if (isGNOMEApp) bonobo_main();
65   else CORBA_ORB_run (bonobo_orb(), &ev);
66 }
67
68 /* Not Yet Implemented */
69 boolean
70 SPI_eventIsReady ()
71 {
72   return FALSE;
73 }
74
75 /* Not Yet Implemented */
76 AccessibleEvent *
77 SPI_nextEvent (boolean waitForEvent)
78 {
79   return NULL;
80 }
81
82 void
83 SPI_exit (void)
84 {
85   exit(0);
86 }
87
88 AccessibleEventListener *
89 CreateEventListener (AccessibleEventListenerCB callback)
90 {
91   AccessibleEventListener *listener = accessible_event_listener_new ();
92   if (callback)
93     {
94       accessible_event_listener_add_callback (listener, callback);
95     }
96 }
97
98 boolean
99 EventListener_addCallback (AccessibleEventListener *listener,
100                            AccessibleEventListenerCB callback)
101 {
102   accessible_event_listener_add_callback (listener, callback);
103   return TRUE;
104 }
105
106 boolean
107 EventListener_removeCallback (AccessibleEventListener *listener,
108                            AccessibleEventListenerCB callback)
109 {
110   accessible_event_listener_remove_callback (listener, callback);
111   return TRUE;
112 }
113
114 /*
115  *
116  * Global functions serviced by the registry
117  *
118  */
119
120 boolean
121 RegisterGlobalEventListener (AccessibleEventListener *listener,
122                              char *eventType)
123 {
124   Accessibility_Registry_registerGlobalEventListener (
125                          registry,
126                          (Accessibility_EventListener)
127                             bonobo_object_corba_objref (bonobo_object (listener)),
128                          eventType,
129                          &ev);
130
131   if (ev._major != CORBA_NO_EXCEPTION)
132     {
133     return FALSE;
134     }
135   else
136     {
137       return TRUE;
138     }
139 }
140
141 int
142 GetDesktopCount ()
143 {
144   return Accessibility_Registry_getDesktopCount (registry, &ev);
145 }
146
147 Accessible
148 *getDesktop (int n)
149 {
150   return Obj_Add (Accessibility_Registry_getDesktop (registry, (CORBA_short) n, &ev));
151 }
152
153 int
154 getDesktopList (Accessible **list)
155 {
156   *list = NULL;
157   return 0;
158 }
159
160 /* Not Yet Implemented */
161 void
162 registerKeystrokeListener (KeystrokeListener *listener)
163 {
164   ;
165 }
166
167 /* Not Yet Implemented */
168 void
169 generateKeyEvent (long keyCode, long meta)
170 {
171   ;
172 }
173
174 /* Not Yet Implemented */
175 void
176 generateMouseEvent (long x, long y, char *name)
177 {
178   ;
179 }
180
181 /*
182  *
183  * Accessible function prototypes
184  *
185  */
186
187 int
188 Accessible_ref (Accessible *obj)
189 {
190   Accessibility_Accessible_ref (*obj, &ev);
191   return 0;
192 }
193
194
195 int
196 Accessible_unref (Accessible *obj)
197 {
198   Accessibility_Accessible_unref (*obj, &ev);
199   return 0;
200 }
201
202 char *
203 Accessible_getName (Accessible *obj)
204 {
205   return Accessibility_Accessible__get_name (*obj, &ev);
206 }
207
208 char *
209 Accessible_getDescription (Accessible *obj)
210 {
211   return Accessibility_Accessible__get_description (*obj, &ev);
212 }
213
214 Accessible *
215 Accessible_getParent (Accessible *obj)
216 {
217   return Obj_Add (Accessibility_Accessible__get_parent (*obj, &ev));
218 }
219
220 long
221 Accessible_getChildCount (Accessible *obj)
222 {
223   return Accessibility_Accessible_getChildCount (*obj, &ev);
224 }
225
226 Accessible *
227 Accessible_getChildAtIndex (Accessible *obj,
228                             long childIndex)
229 {
230   return Obj_Add (Accessibility_Accessible_getChildAtIndex (*obj, childIndex, &ev));
231 }
232
233 long
234 Accessible_getIndexInParent (Accessible *obj)
235 {
236   return Accessibility_Accessible_getIndexInParent (*obj, &ev);
237 }
238
239 /* Not Yet Implemented */
240 AccessibleRelation **
241 Accessible_getRelationSet (Accessible *obj)
242 {
243   return NULL;
244 }
245
246 /* Not Yet Implemented */
247 char *
248 Accessible_getRole (Accessible *obj)
249 {
250   return "";
251 }
252
253 /* Not Yet Implemented */
254 AccessibleStateSet *
255 Accessible_getStateSet (Accessible *obj)
256 {
257   return NULL;
258 }
259
260
261 /*
262  *
263  * AccessibleApplication function prototypes
264  *
265  */
266
267 int
268 AccessibleApplication_ref (AccessibleApplication *obj)
269 {
270   Accessibility_Application_ref (*obj, &ev);
271   return 0;
272 }
273
274 int
275 AccessibleApplication_unref (AccessibleApplication *obj)
276 {
277   Accessibility_Application_unref (*obj, &ev);
278   return 0;
279 }
280
281 char *
282 AccessibleApplication_getToolkitName (AccessibleApplication *obj)
283 {
284   return Accessibility_Application__get_toolkitName (*obj, &ev);
285 }
286
287 char *
288 AccessibleApplication_getVersion (AccessibleApplication *obj)
289 {
290   return Accessibility_Application__get_version (*obj, &ev);
291 }
292
293 long
294 AccessibleApplication_getID (AccessibleApplication *obj)
295 {
296   return Accessibility_Application__getID (*obj, &ev);
297 }
298
299 /* Not Yet Implemented */
300 boolean
301 AccessibleApplication_pause (AccessibleApplication *obj)
302 {
303   return FALSE;
304 }
305
306 /* Not Yet Implemented */
307 boolean
308 AccessibleApplication_resume (AccessibleApplication *obj)
309 {
310   return FALSE;
311 }
312