-#ifndef REGISTRY_H_
-#define REGISTRY_H_
+/*
+ * AT-SPI - Assistive Technology Service Provider Interface
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 2001, 2002 Sun Microsystems Inc.,
+ * Copyright 2001, 2002 Ximian, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+#ifndef SPI_REGISTRY_H_
+#define SPI_REGISTRY_H_
+
+#include <glib/gmain.h>
+#include <droute/droute.h>
+
+typedef struct _SpiRegistry SpiRegistry;
-#include <Registry.h>
-#include "listener.h"
#include "desktop.h"
+#include "deviceeventcontroller.h"
-#define REGISTRY_TYPE (registry_get_type ())
-#define REGISTRY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), REGISTRY_TYPE, Registry))
-#define REGISTRY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), REGISTRY_TYPE, RegistryClass))
-#define IS_REGISTRY(o) (G_TYPE_CHECK__INSTANCE_TYPE ((o), REGISTRY_TYPE))
-#define IS_REGISTRY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), REGISTRY_TYPE))
+G_BEGIN_DECLS
-typedef struct {
- Listener parent;
- GList *listeners;
- GList *applications;
- Desktop *desktop;
-} Registry;
+#define SPI_REGISTRY_TYPE (spi_registry_get_type ())
+#define SPI_REGISTRY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SPI_REGISTRY_TYPE, SpiRegistry))
+#define SPI_REGISTRY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SPI_REGISTRY_TYPE, SpiRegistryClass))
+#define SPI_IS_REGISTRY(o) (G_TYPE_CHECK__INSTANCE_TYPE ((o), SPI_REGISTRY_TYPE))
+#define SPI_IS_REGISTRY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SPI_REGISTRY_TYPE))
+
+struct _SpiRegistry {
+ GObject parent;
+
+ GList *object_listeners;
+ GList *window_listeners;
+ GList *toolkit_listeners;
+ GQueue *deferred_event_queue;
+ gboolean is_queueing;
+ guint exit_notify_timeout;
+ guint queue_handler_id;
+ char *focus_object_bus;
+ char *focus_object_path;
+ SpiDEController *de_controller;
+ SpiDesktop *desktop;
+ DRouteData droute;
+};
typedef struct {
- ListenerClass parent_class;
- POA_Accessibility_Registry__epv epv;
-} RegistryClass;
+ GObjectClass parent_class;
+} SpiRegistryClass;
+
+GType spi_registry_get_type (void);
+SpiRegistry *spi_registry_new (void);
-GType registry_get_type (void);
-Registry *registry_new (void);
+void spi_registry_emit(SpiRegistry *registry, const char *name, int first_arg_type, ...);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+void spi_registry_initialize_registry_interface (DRouteData * data);
+void spi_registry_initialize_dec_interface (DRouteData * data);
+void spi_registry_initialize_desktop_interface (DRouteData * data);
+G_END_DECLS
-#endif /* REGISTRY_H_ */
+#endif /* SPI_REGISTRY_H_ */