diff options
author | Mike Gorse <mgorse@novell.com> | 2009-11-30 15:12:30 +0800 |
---|---|---|
committer | Li Yuan <li.yuan@sun.com> | 2009-11-30 15:12:30 +0800 |
commit | 86c9c7f27de046049620ab8ebcbfc713d02da38a (patch) | |
tree | a610cbf97c1c6a61ccc4a7a6ff733128c6ce5829 | |
parent | d9d6456d6c807717197ee9b4d120a9149c1f0f0a (diff) | |
download | atk-86c9c7f27de046049620ab8ebcbfc713d02da38a.tar.gz |
Bug #601552. New classes: AtkPlug and AtkSocket.
-rw-r--r-- | atk/Makefile.am | 4 | ||||
-rwxr-xr-x | atk/atk.h | 2 | ||||
-rw-r--r-- | atk/atkplug.c | 74 | ||||
-rw-r--r-- | atk/atkplug.h | 61 | ||||
-rw-r--r-- | atk/atksocket.c | 93 | ||||
-rw-r--r-- | atk/atksocket.h | 65 |
6 files changed, 299 insertions, 0 deletions
diff --git a/atk/Makefile.am b/atk/Makefile.am index 0572324..2459680 100644 --- a/atk/Makefile.am +++ b/atk/Makefile.am @@ -37,10 +37,12 @@ libatk_1_0_la_SOURCES = \ atknoopobjectfactory.c \ atkobject.c \ atkobjectfactory.c \ + atkplug.c \ atkregistry.c \ atkrelation.c \ atkrelationset.c \ atkselection.c \ + atksocket.c \ atkstate.c \ atkstateset.c \ atkstreamablecontent.c \ @@ -67,12 +69,14 @@ atk_headers = \ atknoopobjectfactory.h \ atkobject.h \ atkobjectfactory.h \ + atkplug.h \ atkimage.h \ atkregistry.h \ atkrelation.h \ atkrelationtype.h \ atkrelationset.h \ atkselection.h \ + atksocket.h \ atkstate.h \ atkstateset.h \ atkstreamablecontent.h \ @@ -35,11 +35,13 @@ #include <atk/atknoopobject.h> #include <atk/atknoopobjectfactory.h> #include <atk/atkobjectfactory.h> +#include <atk/atkplug.h> #include <atk/atkregistry.h> #include <atk/atkrelation.h> #include <atk/atkrelationset.h> #include <atk/atkrelationtype.h> #include <atk/atkselection.h> +#include <atk/atksocket.h> #include <atk/atkstate.h> #include <atk/atkstateset.h> #include <atk/atkstreamablecontent.h> diff --git a/atk/atkplug.c b/atk/atkplug.c new file mode 100644 index 0000000..4ceb11d --- /dev/null +++ b/atk/atkplug.c @@ -0,0 +1,74 @@ +/* ATK - Accessibility Toolkit + * Copyright (C) 2009 Novell, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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. + */ + +#include "atk.h" +#include "atkplug.h" + +G_DEFINE_TYPE (AtkPlug, atk_plug, ATK_TYPE_OBJECT); + +static void atk_plug_class_init (AtkPlugClass *klass); + +static void +atk_plug_init (AtkPlug* obj) +{ +} + +static void +atk_plug_class_init (AtkPlugClass* klass) +{ + klass->get_object_id = NULL; +} + +AtkObject* +atk_plug_new (void) +{ + AtkObject* accessible; + + accessible = g_object_new (ATK_TYPE_PLUG, NULL); + g_return_val_if_fail (accessible != NULL, NULL); + + accessible->role = ATK_ROLE_FILLER; + accessible->layer = ATK_LAYER_WIDGET; + + return accessible; +} + +/** + * atk_plug_get_plug_id: + * @obj: an #AtkPlug + * + * Gets the unique ID of an #AtkPlug object, which can be used to embed inside + * of an #AtkSocket using atk_socket_embed(). + * + * Returns: the unique ID for the plug + **/ +gchar* +atk_plug_get_id (AtkPlug* obj) +{ + AtkPlugClass *klass; + + g_return_val_if_fail (ATK_IS_PLUG (obj), NULL); + + klass = g_type_class_peek (ATK_TYPE_PLUG); + + if (klass && klass->get_object_id) + return (klass->get_object_id) (obj); + else + return NULL; +} diff --git a/atk/atkplug.h b/atk/atkplug.h new file mode 100644 index 0000000..7d6efd4 --- /dev/null +++ b/atk/atkplug.h @@ -0,0 +1,61 @@ +/* ATK - Accessibility Toolkit + * Copyright 2009 Novell, 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. + */ + +#if defined(ATK_DISABLE_SINGLE_INCLUDES) && !defined (__ATK_H_INSIDE__) && !defined (ATK_COMPILATION) +#error "Only <atk/atk.h> can be included directly." +#endif + +#ifndef __ATK_PLUG_H__ +#define __ATK_PLUG_H__ + +G_BEGIN_DECLS + +#define ATK_TYPE_PLUG (atk_plug_get_type ()) +#define ATK_PLUG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ATK_TYPE_PLUG, AtkPlug)) +#define ATK_IS_PLUG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ATK_TYPE_PLUG)) +#define ATK_PLUG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ATK_TYPE_PLUG, AtkPlugClass)) +#define ATK_IS_PLUG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ATK_TYPE_PLUG)) +#define ATK_PLUG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ATK_TYPE_PLUG, AtkPlugClass)) + +typedef struct _AtkPlug AtkPlug; +typedef struct _AtkPlugClass AtkPlugClass; + +struct _AtkPlug +{ + AtkObject parent; +}; + +GType atk_plug_get_type (void); + +struct _AtkPlugClass +{ + AtkObjectClass parent_class; + + /* to be subscribed to by atk-bridge */ + + /*< protected >*/ + gchar* (* get_object_id) (AtkPlug* obj); +}; + +AtkObject* atk_plug_new (void); +gchar* atk_plug_get_id (AtkPlug* plug); + +G_END_DECLS + +#endif /* __ATK_PLUG_H__ */ diff --git a/atk/atksocket.c b/atk/atksocket.c new file mode 100644 index 0000000..4fac8be --- /dev/null +++ b/atk/atksocket.c @@ -0,0 +1,93 @@ +/* ATK - Accessibility Toolkit + * Copyright (C) 2009 Novell, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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. + */ + +#include "atk.h" +#include "atksocket.h" + +G_DEFINE_TYPE (AtkSocket, atk_socket, ATK_TYPE_OBJECT); + +static void atk_socket_class_init (AtkSocketClass *klass); + +static void +atk_socket_init (AtkSocket* obj) +{ + obj->embedded_plug_id = NULL; +} + +static void +atk_socket_class_init (AtkSocketClass* klass) +{ + klass->embed = NULL; +} + +AtkObject* +atk_socket_new (void) +{ + AtkObject* accessible; + + accessible = g_object_new (ATK_TYPE_SOCKET, NULL); + g_return_val_if_fail (accessible != NULL, NULL); + + accessible->role = ATK_ROLE_FILLER; + accessible->layer = ATK_LAYER_WIDGET; + + return accessible; +} + +/** + * atk_socket_embed: + * @obj: an #AtkSocket + * @plug_id: the ID of an #AtkPlug + * + * Embeds the children of an #AtkPlug as the children of the #AtkSocket. The + * plug may be in the same process or in a different process. + **/ +void +atk_socket_embed (AtkSocket* obj, gchar* plug_id) +{ + AtkSocketClass *klass; + + g_return_if_fail (plug_id != NULL); + g_return_if_fail (ATK_IS_SOCKET (obj)); + + klass = g_type_class_peek (ATK_TYPE_SOCKET); + if (klass && klass->embed) + { + if (obj->embedded_plug_id) + g_free (obj->embedded_plug_id); + obj->embedded_plug_id = g_strdup (plug_id); + (klass->embed) (obj, plug_id); + } +} + +/** + * atk_socket_is_occupied: + * @obj: an #AtkSocket + * + * Determines whether or not the socket has an embedded plug. + * + * Returns: TRUE if a plug is embedded in the socket + **/ +gboolean +atk_socket_is_occupied (AtkSocket* obj) +{ + g_return_val_if_fail (ATK_IS_SOCKET (obj), FALSE); + + return (obj->embedded_plug_id != NULL); +} diff --git a/atk/atksocket.h b/atk/atksocket.h new file mode 100644 index 0000000..813d4f3 --- /dev/null +++ b/atk/atksocket.h @@ -0,0 +1,65 @@ +/* ATK - Accessibility Toolkit + * Copyright 2009 Novell, 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. + */ + +#if defined(ATK_DISABLE_SINGLE_INCLUDES) && !defined (__ATK_H_INSIDE__) && !defined (ATK_COMPILATION) +#error "Only <atk/atk.h> can be included directly." +#endif + +#ifndef __ATK_SOCKET_H__ +#define __ATK_SOCKET_H__ + +G_BEGIN_DECLS + +#define ATK_TYPE_SOCKET (atk_socket_get_type ()) +#define ATK_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ATK_TYPE_SOCKET, AtkSocket)) +#define ATK_IS_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ATK_TYPE_SOCKET)) +#define ATK_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ATK_TYPE_SOCKET, AtkSocketClass)) +#define ATK_IS_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ATK_TYPE_SOCKET)) +#define ATK_SOCKET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ATK_TYPE_SOCKET, AtkSocketClass)) + +typedef struct _AtkSocket AtkSocket; +typedef struct _AtkSocketClass AtkSocketClass; + +struct _AtkSocket +{ + AtkObject parent; + + /*< private >*/ + gchar* embedded_plug_id; +}; + +GType atk_socket_get_type (void); + +struct _AtkSocketClass +{ + AtkObjectClass parent_class; + + /* to be subscribed to by atk-bridge */ + + /*< protected >*/ + void (* embed) (AtkSocket *obj, gchar* plug_id); +}; + +AtkObject* atk_socket_new (void); +void atk_socket_embed (AtkSocket* obj, gchar* plug_id); +gboolean atk_socket_is_occupied (AtkSocket* obj); + +G_END_DECLS + +#endif /* __ATK_SOCKET_H__ */ |