summaryrefslogtreecommitdiff
path: root/eel/eel-accessibility.h
diff options
context:
space:
mode:
Diffstat (limited to 'eel/eel-accessibility.h')
-rw-r--r--eel/eel-accessibility.h153
1 files changed, 153 insertions, 0 deletions
diff --git a/eel/eel-accessibility.h b/eel/eel-accessibility.h
new file mode 100644
index 00000000..3ca24a0f
--- /dev/null
+++ b/eel/eel-accessibility.h
@@ -0,0 +1,153 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/* eel-accessibility.h - Utility functions for accessibility
+
+ Copyright (C) 2002 Anders Carlsson
+
+ The Eel 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.
+
+ The Eel 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 the Eel Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+ Authors: Anders Carlsson <[email protected]>
+*/
+
+#ifndef EEL_ACCESSIBILITY_H
+#define EEL_ACCESSIBILITY_H
+
+#include <glib-object.h>
+#include <atk/atkobject.h>
+#include <atk/atkregistry.h>
+#include <atk/atkobjectfactory.h>
+#include <gtk/gtk.h>
+#include <libgail-util/gailtextutil.h>
+
+void eel_accessibility_set_up_label_widget_relation (GtkWidget *label, GtkWidget *widget);
+
+typedef void (*EelAccessibilityClassInitFn) (AtkObjectClass *klass);
+
+AtkObject *eel_accessibility_get_atk_object (gpointer object);
+AtkObject *eel_accessibility_for_object (gpointer object);
+gpointer eel_accessibility_get_gobject (AtkObject *object);
+AtkObject *eel_accessibility_set_atk_object_return (gpointer object,
+ AtkObject *atk_object);
+GType eel_accessibility_create_derived_type (const char *type_name,
+ GType existing_gobject_with_proxy,
+ EelAccessibilityClassInitFn class_init);
+void eel_accessibility_set_name (gpointer object,
+ const char *name);
+void eel_accessibility_set_description (gpointer object,
+ const char *description);
+
+char* eel_accessibility_text_get_text (AtkText *text,
+ gint start_pos,
+ gint end_pos);
+gunichar eel_accessibility_text_get_character_at_offset
+(AtkText *text,
+ gint offset);
+char* eel_accessibility_text_get_text_before_offset
+(AtkText *text,
+ gint offset,
+ AtkTextBoundary boundary_type,
+ gint *start_offset,
+ gint *end_offset);
+char* eel_accessibility_text_get_text_at_offset
+(AtkText *text,
+ gint offset,
+ AtkTextBoundary boundary_type,
+ gint *start_offset,
+ gint *end_offset);
+char* eel_accessibility_text_get_text_after_offset
+(AtkText *text,
+ gint offset,
+ AtkTextBoundary boundary_type,
+ gint *start_offset,
+ gint *end_offset);
+gint eel_accessibility_text_get_character_count
+(AtkText *text);
+
+
+#define EEL_TYPE_ACCESSIBLE_TEXT (eel_accessible_text_get_type ())
+#define EEL_IS_ACCESSIBLE_TEXT(obj) G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEL_TYPE_ACCESSIBLE_TEXT)
+#define EEL_ACCESSIBLE_TEXT(obj) G_TYPE_CHECK_INSTANCE_CAST ((obj), EEL_TYPE_ACCESSIBLE_TEXT, EelAccessibleText)
+#define EEL_ACCESSIBLE_TEXT_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), EEL_TYPE_ACCESSIBLE_TEXT, EelAccessibleTextIface))
+
+/* Instead of implementing the AtkText interface, implement this */
+typedef struct _EelAccessibleText EelAccessibleText;
+
+typedef struct
+{
+ GTypeInterface parent;
+
+ GailTextUtil *(*get_text) (GObject *text);
+ PangoLayout *(*get_layout) (GObject *text);
+} EelAccessibleTextIface;
+
+GType eel_accessible_text_get_type (void);
+void eel_accessibility_add_simple_text (GType type);
+
+/* From gail - should be unneccessary when AtkObjectFactory is fixed */
+#define EEL_ACCESSIBLE_FACTORY(type, factory_name, type_as_function, opt_create_accessible) \
+ \
+static GType \
+type_as_function ## _factory_get_accessible_type (void) \
+{ \
+ return type; \
+} \
+ \
+static AtkObject* \
+type_as_function ## _factory_create_accessible (GObject *obj) \
+{ \
+ AtkObject *accessible; \
+ \
+ g_assert (G_IS_OBJECT (obj)); \
+ \
+ accessible = opt_create_accessible (obj); \
+ \
+ return accessible; \
+} \
+ \
+static void \
+type_as_function ## _factory_class_init (AtkObjectFactoryClass *klass) \
+{ \
+ klass->create_accessible = type_as_function ## _factory_create_accessible; \
+ klass->get_accessible_type = type_as_function ## _factory_get_accessible_type;\
+} \
+ \
+static GType \
+type_as_function ## _factory_get_type (void) \
+{ \
+ static GType t = 0; \
+ \
+ if (!t) \
+ { \
+ static const GTypeInfo tinfo = \
+ { \
+ sizeof (AtkObjectFactoryClass), \
+ NULL, NULL, (GClassInitFunc) type_as_function ## _factory_class_init, \
+ NULL, NULL, sizeof (AtkObjectFactory), 0, NULL, NULL \
+ }; \
+ \
+ t = g_type_register_static ( \
+ ATK_TYPE_OBJECT_FACTORY, factory_name, &tinfo, 0); \
+ } \
+ \
+ return t; \
+}
+
+#define EEL_OBJECT_SET_FACTORY(object_type, type_as_function) \
+ atk_registry_set_factory_type (atk_get_default_registry (), \
+ object_type, \
+ type_as_function ## _factory_get_type ())
+
+
+#endif /* EEL_ACCESSIBILITY_H */