From: michael Date: Mon, 26 Nov 2001 04:38:16 +0000 (+0000) Subject: add so I can tag. X-Git-Tag: AT_SPI2_CORE_0_1_3~1053 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=68e6b97ca60326accdcf5cd746833e2b3db97848;p=platform%2Fupstream%2Fat-spi2-core.git add so I can tag. git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@117 e2bd861d-eb25-0410-b326-f6ed22b6b98c --- diff --git a/cspi/bonobo/cspi-bonobo-listener.c b/cspi/bonobo/cspi-bonobo-listener.c new file mode 100644 index 0000000..ac1523c --- /dev/null +++ b/cspi/bonobo/cspi-bonobo-listener.c @@ -0,0 +1,143 @@ +#include +#include + +/* + * Standard event dispatcher + */ + +BONOBO_CLASS_BOILERPLATE (CSpiEventListener, cspi_event_listener, + GObject, spi_event_listener_get_type ()) + +static void +cspi_event (SpiEventListener *listener, + Accessibility_Event *event) +{ + GSList *l; + CSpiEventListener *clistener = (CSpiEventListener *) listener; + AccessibleEvent aevent; + + aevent.type = event->type; + aevent.source = cspi_object_add (event->source); + aevent.detail1 = event->detail1; + aevent.detail2 = event->detail2; + + for (l = clistener->callbacks; l; l = l->next) + { + AccessibleEventListenerCB cb = l->data; + cb (&aevent); + } + + cspi_object_unref (aevent.source); +} + +static void +cspi_event_listener_instance_init (CSpiEventListener *listener) +{ +} + +static void +cspi_event_listener_class_init (CSpiEventListenerClass *klass) +{ + klass->event = cspi_event; +} + +CSpiEventListener * +cspi_event_listener_new (void) +{ + return g_object_new (spi_event_listener_get_type (), NULL); +} + +void +cspi_event_listener_add_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_prepend (listener->callbacks, callback); +} + +void +cspi_event_listener_remove_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_remove (listener->callbacks, callback); +} + +/* + * Key event dispatcher + */ + +static gboolean +cspi_key_event (SpiKeystrokeListener *listener, + const Accessibility_KeyStroke *keystroke) +{ + GSList *l; + CSpiKeystrokeListener *clistener = (CSpiKeystrokeListener *) listener; + AccessibleKeystroke akeystroke; + gboolean handled = FALSE; + + switch (keystroke->type) + { + case Accessibility_KEY_PRESSED: + akeystroke.type = SPI_KEY_PRESSED; + break; + case Accessibility_KEY_RELEASED: + akeystroke.type = SPI_KEY_RELEASED; + break; + default: + akeystroke.type = 0; + break; + } + akeystroke.keyID = keystroke->keyID; + akeystroke.keycode = keystroke->keycode; + akeystroke.timestamp = keystroke->timestamp; + akeystroke.modifiers = keystroke->modifiers; + + for (l = clistener->callbacks; l; l = l->next) + { + AccessibleKeystrokeListenerCB cb = l->data; + if ((handled = cb (&akeystroke))) + { + break; + } + } + + return handled; +} + +static void +cspi_keystroke_listener_init (CSpiKeystrokeListener *listener) +{ +} + +static void +cspi_keystroke_listener_class_init (CSpiKeystrokeListenerClass *klass) +{ + klass->key_event = cspi_key_event; +} + +BONOBO_TYPE_FUNC (CSpiKeystrokeListener, + spi_keystroke_listener_get_type (), + cspi_keystroke_listener); + +CSpiKeystrokeListener * +cspi_keystroke_listener_new (void) +{ + return g_object_new (spi_keystroke_listener_get_type (), NULL); +} + +void +cspi_keystroke_listener_add_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_prepend (listener->callbacks, callback); +} + +void +cspi_keystroke_listener_remove_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_remove (listener->callbacks, callback); +} diff --git a/cspi/bonobo/cspi-bonobo-listener.h b/cspi/bonobo/cspi-bonobo-listener.h new file mode 100644 index 0000000..2dbf7c0 --- /dev/null +++ b/cspi/bonobo/cspi-bonobo-listener.h @@ -0,0 +1,48 @@ +#ifndef __SPI_LISTENER_IMPL_H__ +#define __SPI_LISTENER_IMP_H__ + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define CSPI_KEYSTROKE_LISTENER_TYPE (cspi_keystroke_listener_get_type ()) +#define CSPI_KEYSTROKE_LISTENER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CSPI_KEYSTROKE_LISTENER_TYPE, CSpiKeystrokeListener)) +#define CSPI_KEYSTROKE_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), CSPI_KEYSTROKE_LISTENER_TYPE, CSpiKeystrokeListenerClass)) +#define IS_CSPI_KEYSTROKE_LISTENER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CSPI_KEYSTROKE_LISTENER_TYPE)) +#define IS_CSPI_KEYSTROKE_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CSPI_KEYSTROKE_LISTENER_TYPE)) + +typedef struct _CSpiEventListener CSpiEventListener; +struct _CSpiEventListener { + SpiEventListener parent; + GSList *callbacks; +}; +typedef SpiEventListenerClass CSpiEventListenerClass; + +GType cspi_event_listener_get_type (void); +CSpiEventListener *cspi_event_listener_new (void); +void cspi_event_listener_add_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback); +void cspi_event_listener_remove_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback); + +typedef struct _CSpiKeystrokeListener CSpiKeystrokeListener; +struct _CSpiKeystrokeListener { + SpiKeystrokeListener parent; + GSList *callbacks; +}; +typedef SpiKeystrokeListenerClass CSpiKeystrokeListenerClass; + +GType cspi_keystroke_listener_get_type (void); +CSpiKeystrokeListener *cspi_keystroke_listener_new (void); +void cspi_keystroke_listener_add_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback); +void cspi_keystroke_listener_remove_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback); + +G_END_DECLS + +#endif /* __SPI_LISTENER_IMPL_H__ */ diff --git a/cspi/spi-listener-impl.c b/cspi/spi-listener-impl.c new file mode 100644 index 0000000..ac1523c --- /dev/null +++ b/cspi/spi-listener-impl.c @@ -0,0 +1,143 @@ +#include +#include + +/* + * Standard event dispatcher + */ + +BONOBO_CLASS_BOILERPLATE (CSpiEventListener, cspi_event_listener, + GObject, spi_event_listener_get_type ()) + +static void +cspi_event (SpiEventListener *listener, + Accessibility_Event *event) +{ + GSList *l; + CSpiEventListener *clistener = (CSpiEventListener *) listener; + AccessibleEvent aevent; + + aevent.type = event->type; + aevent.source = cspi_object_add (event->source); + aevent.detail1 = event->detail1; + aevent.detail2 = event->detail2; + + for (l = clistener->callbacks; l; l = l->next) + { + AccessibleEventListenerCB cb = l->data; + cb (&aevent); + } + + cspi_object_unref (aevent.source); +} + +static void +cspi_event_listener_instance_init (CSpiEventListener *listener) +{ +} + +static void +cspi_event_listener_class_init (CSpiEventListenerClass *klass) +{ + klass->event = cspi_event; +} + +CSpiEventListener * +cspi_event_listener_new (void) +{ + return g_object_new (spi_event_listener_get_type (), NULL); +} + +void +cspi_event_listener_add_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_prepend (listener->callbacks, callback); +} + +void +cspi_event_listener_remove_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_remove (listener->callbacks, callback); +} + +/* + * Key event dispatcher + */ + +static gboolean +cspi_key_event (SpiKeystrokeListener *listener, + const Accessibility_KeyStroke *keystroke) +{ + GSList *l; + CSpiKeystrokeListener *clistener = (CSpiKeystrokeListener *) listener; + AccessibleKeystroke akeystroke; + gboolean handled = FALSE; + + switch (keystroke->type) + { + case Accessibility_KEY_PRESSED: + akeystroke.type = SPI_KEY_PRESSED; + break; + case Accessibility_KEY_RELEASED: + akeystroke.type = SPI_KEY_RELEASED; + break; + default: + akeystroke.type = 0; + break; + } + akeystroke.keyID = keystroke->keyID; + akeystroke.keycode = keystroke->keycode; + akeystroke.timestamp = keystroke->timestamp; + akeystroke.modifiers = keystroke->modifiers; + + for (l = clistener->callbacks; l; l = l->next) + { + AccessibleKeystrokeListenerCB cb = l->data; + if ((handled = cb (&akeystroke))) + { + break; + } + } + + return handled; +} + +static void +cspi_keystroke_listener_init (CSpiKeystrokeListener *listener) +{ +} + +static void +cspi_keystroke_listener_class_init (CSpiKeystrokeListenerClass *klass) +{ + klass->key_event = cspi_key_event; +} + +BONOBO_TYPE_FUNC (CSpiKeystrokeListener, + spi_keystroke_listener_get_type (), + cspi_keystroke_listener); + +CSpiKeystrokeListener * +cspi_keystroke_listener_new (void) +{ + return g_object_new (spi_keystroke_listener_get_type (), NULL); +} + +void +cspi_keystroke_listener_add_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_prepend (listener->callbacks, callback); +} + +void +cspi_keystroke_listener_remove_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback) +{ + g_return_if_fail (IS_CSPI_KEYSTROKE_LISTENER (listener)); + listener->callbacks = g_slist_remove (listener->callbacks, callback); +} diff --git a/cspi/spi-listener-impl.h b/cspi/spi-listener-impl.h new file mode 100644 index 0000000..2dbf7c0 --- /dev/null +++ b/cspi/spi-listener-impl.h @@ -0,0 +1,48 @@ +#ifndef __SPI_LISTENER_IMPL_H__ +#define __SPI_LISTENER_IMP_H__ + +#include +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define CSPI_KEYSTROKE_LISTENER_TYPE (cspi_keystroke_listener_get_type ()) +#define CSPI_KEYSTROKE_LISTENER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CSPI_KEYSTROKE_LISTENER_TYPE, CSpiKeystrokeListener)) +#define CSPI_KEYSTROKE_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), CSPI_KEYSTROKE_LISTENER_TYPE, CSpiKeystrokeListenerClass)) +#define IS_CSPI_KEYSTROKE_LISTENER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CSPI_KEYSTROKE_LISTENER_TYPE)) +#define IS_CSPI_KEYSTROKE_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CSPI_KEYSTROKE_LISTENER_TYPE)) + +typedef struct _CSpiEventListener CSpiEventListener; +struct _CSpiEventListener { + SpiEventListener parent; + GSList *callbacks; +}; +typedef SpiEventListenerClass CSpiEventListenerClass; + +GType cspi_event_listener_get_type (void); +CSpiEventListener *cspi_event_listener_new (void); +void cspi_event_listener_add_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback); +void cspi_event_listener_remove_callback (CSpiEventListener *listener, + AccessibleEventListenerCB callback); + +typedef struct _CSpiKeystrokeListener CSpiKeystrokeListener; +struct _CSpiKeystrokeListener { + SpiKeystrokeListener parent; + GSList *callbacks; +}; +typedef SpiKeystrokeListenerClass CSpiKeystrokeListenerClass; + +GType cspi_keystroke_listener_get_type (void); +CSpiKeystrokeListener *cspi_keystroke_listener_new (void); +void cspi_keystroke_listener_add_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback); +void cspi_keystroke_listener_remove_callback (CSpiKeystrokeListener *listener, + AccessibleKeystrokeListenerCB callback); + +G_END_DECLS + +#endif /* __SPI_LISTENER_IMPL_H__ */