7fbe0eeb7c0b7efa53d45fe6ca29f325a4b16a50
[platform/core/uifw/at-spi2-atk.git] / cspi / spi_event.c
1 /*
2  * AT-SPI - Assistive Technology Service Provider Interface
3  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
4  *
5  * Copyright 2001 Sun Microsystems Inc.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public
18  * License along with this library; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22
23 #include <cspi/spi-private.h>
24 #include <cspi/spi-listener-impl.h>
25
26 /**
27  * createAccessibleEventListener:
28  * @callback : an #AccessibleEventListenerCB callback function, or NULL.
29  *
30  * Create a new #AccessibleEventListener with a specified (in-process) callback function.
31  *
32  * Returns: a pointer to a newly-created #AccessibleEventListener.
33  *
34  **/
35 AccessibleEventListener *
36 createAccessibleEventListener (AccessibleEventListenerCB callback,
37                                void                     *user_data)
38 {
39   AccessibleEventListener *listener = cspi_event_listener_new ();
40   if (callback)
41     {
42       AccessibleEventListener_addCallback (listener, callback, user_data);
43     }
44   return listener;
45 }
46
47 /**
48  * AccessibleEventListener_addCallback:
49  * @listener: the #AccessibleEventListener instance to modify.
50  * @callback: an #AccessibleEventListenerCB function pointer.
51  *
52  * Add an in-process callback function to an existing AccessibleEventListener.
53  * Note that the callback function must live in the same address
54  * space as the AccessibleEventListener implementation code, thus one should not
55  * use this function to attach callbacks to a 'remote' event listener
56  * (that is, one that was not created by a client call to
57  * createAccessibleEventListener ();
58  *
59  * Returns: #TRUE if successful, otherwise #FALSE.
60  *
61  **/
62 SPIBoolean
63 AccessibleEventListener_addCallback (AccessibleEventListener *listener,
64                                      AccessibleEventListenerCB callback,
65                                      void                     *user_data)
66 {
67   cspi_event_listener_add_callback (listener, callback, user_data);
68   return TRUE;
69 }
70
71 /**
72  * AccessibleEventListener_unref:
73  * @listener: a pointer to the #AccessibleEventListener being operated on.
74  *
75  * Decrements an #AccessibleEventListener's reference count.
76  **/
77 void
78 AccessibleEventListener_unref (AccessibleEventListener *listener)
79 {
80   /* Would prefer this not to be bonobo api */
81   bonobo_object_unref (BONOBO_OBJECT (listener));
82 }
83
84 /**
85  * AccessibleEventListener_removeCallback:
86  * @listener: the #AccessibleEventListener instance to modify.
87  * @callback: an #AccessibleEventListenerCB function pointer.
88  *
89  * Remove an in-process callback function from an existing AccessibleEventListener.
90  *
91  * Returns: #TRUE if successful, otherwise #FALSE.
92  *
93  **/
94 SPIBoolean
95 AccessibleEventListener_removeCallback (AccessibleEventListener  *listener,
96                                         AccessibleEventListenerCB callback)
97 {
98   cspi_event_listener_remove_callback (listener, callback);
99   return TRUE;
100 }
101
102 /**
103  * createAccessibleKeystrokeListener:
104  * @callback : an #AccessibleKeystrokeListenerCB callback function, or NULL.
105  *
106  * Create a new #AccessibleKeystrokeListener with a specified callback function.
107  *
108  * Returns: a pointer to a newly-created #AccessibleKeystrokeListener.
109  *
110  **/
111 AccessibleKeystrokeListener *
112 createAccessibleKeystrokeListener (AccessibleKeystrokeListenerCB callback,
113                                    void                         *user_data)
114 {
115   CSpiKeystrokeListener *listener = cspi_keystroke_listener_new ();
116   if (callback)
117     {
118       AccessibleKeystrokeListener_addCallback (listener, callback, user_data);
119     }
120   return (AccessibleKeystrokeListener *)listener;
121 }
122
123 /**
124  * AccessibleKeystrokeListener_addCallback:
125  * @listener: the #AccessibleKeystrokeListener instance to modify.
126  * @callback: an #AccessibleKeystrokeListenerCB function pointer.
127  *
128  * Add an in-process callback function to an existing #AccessibleKeystrokeListener.
129  *
130  * Returns: #TRUE if successful, otherwise #FALSE.
131  *
132  **/
133 SPIBoolean
134 AccessibleKeystrokeListener_addCallback (AccessibleKeystrokeListener *listener,
135                                          AccessibleKeystrokeListenerCB callback,
136                                          void                         *user_data)
137 {
138   cspi_keystroke_listener_add_callback (listener, callback, user_data);
139   return TRUE;
140 }
141
142 /**
143  * AccessibleKeystrokeListener_removeCallback:
144  * @listener: the #AccessibleKeystrokeListener instance to modify.
145  * @callback: an #AccessibleKeystrokeListenerCB function pointer.
146  *
147  * Remove an in-process callback function from an existing #AccessibleKeystrokeListener.
148  *
149  * Returns: #TRUE if successful, otherwise #FALSE.
150  *
151  **/
152 SPIBoolean
153 AccessibleKeystrokeListener_removeCallback (AccessibleKeystrokeListener *listener,
154                                             AccessibleKeystrokeListenerCB callback)
155 {
156   cspi_keystroke_listener_remove_callback (listener, callback);
157   return TRUE;
158 }
159
160 /**
161  * AccessibleKeystrokeListener_unref:
162  * @listener: a pointer to the #AccessibleKeystrokeListener being operated on.
163  *
164  * Decrements an #AccessibleKeystrokeListener's reference count.
165  **/
166 void
167 AccessibleKeystrokeListener_unref (AccessibleKeystrokeListener *listener)
168 {
169   /* Would prefer this not to be bonobo api */
170   bonobo_object_unref (BONOBO_OBJECT (listener));
171 }