add new files. set the right role. new file.

2003-10-11  Yuedong Du  <yuedong.du@sun.com>

        * gal/a11y/e-table/Makefile.am: add new files.
        * gal/a11y/e-table/gal-a11y-e-cell.c: (gal_a11y_e_cell_construct):
        set the right role.
        * gal/a11y/e-table/gal-a11y-e-table-item-factory.c: new file.
        (gal_a11y_e_table_item_factory_get_accessible_type),
        (gal_a11y_e_table_item_factory_create_accessible),
        (gal_a11y_e_table_item_factory_class_init),
        (gal_a11y_e_table_item_factory_init),
        (gal_a11y_e_table_item_factory_get_type): factory for the table item
        a11y object. in create_accessible, we judge the type of widget
        then set correct role.
        * gal/a11y/e-table/gal-a11y-e-table-item-factory.h: ditto.
        * gal/a11y/e-table/gal-a11y-e-tree-factory.c: new file.
        (gal_a11y_e_tree_factory_get_accessible_type),
        (gal_a11y_e_tree_factory_create_accessible),
        (gal_a11y_e_tree_factory_class_init),
        (gal_a11y_e_tree_factory_init), (gal_a11y_e_tree_factory_get_type):
        factory for a11y object of etree. Mostly copyed from
        gal-a11y-e-table-factory.c.
        * gal/a11y/e-table/gal-a11y-e-tree-factory.h: ditto
        * gal/a11y/e-table/gal-a11y-e-tree.c: (init_child_item),
        (et_ref_accessible_at_point), (et_get_n_children), (et_ref_child),
        (et_class_init), (et_atk_component_iface_init), (et_init),
        (gal_a11y_e_tree_get_type), (gal_a11y_e_tree_new):a11y object for
        etree object, mostly copied from gal-a11y-e-table.c. init_child_item
        set correct role for the table item.
        * gal/a11y/e-table/gal-a11y-e-tree.h: ditto.
        * gal/e-table/e-table-item.c: (eti_class_init): register factory
        for table item a11y object.
        * gal/e-table/e-tree.c: (e_tree_get_item), (e_tree_class_init):
        add new access fuction to get the table item of etree.
        * gal/e-table/e-tree.h: ditto

svn path=/trunk/; revision=22867
This commit is contained in:
Yuedong Du 2003-10-11 03:00:59 +00:00 committed by Yuedong Du
parent 49b3179c74
commit 5bbde1a630
11 changed files with 468 additions and 0 deletions

View File

@ -222,6 +222,7 @@ gal_a11y_e_cell_construct (AtkObject *object,
a11y->model_col = model_col;
a11y->view_col = view_col;
a11y->row = row;
ATK_OBJECT (a11y) ->role = ATK_ROLE_TABLE_CELL;
#if 0
if (parent)

View File

@ -0,0 +1,96 @@
/*
* Authors: Yuedong Du <yuedong.du@sun.com>
*
* Copyright (C) 2003 Ximian, Inc.
*/
#include <config.h>
#include "gal-a11y-e-table-item-factory.h"
#include "gal-a11y-e-table-item.h"
#include "gal-a11y-e-table.h"
#include <gal/e-table/e-table.h>
#include <gal/e-table/e-tree.h>
#include <atk/atk.h>
#define CS_CLASS(factory) (G_TYPE_INSTANCE_GET_CLASS ((factory), C_TYPE_STREAM, GalA11yETableItemFactoryClass))
static AtkObjectFactoryClass *parent_class;
#define PARENT_TYPE (ATK_TYPE_OBJECT_FACTORY)
/* Static functions */
static GType
gal_a11y_e_table_item_factory_get_accessible_type (void)
{
return GAL_A11Y_TYPE_E_TABLE_ITEM;
}
static AtkObject*
gal_a11y_e_table_item_factory_create_accessible (GObject *obj)
{
AtkObject * accessible;
ETableItem * eti;
GnomeCanvas * gc;
GtkWidget * table;
g_return_if_fail (E_IS_TABLE_ITEM(obj));
eti = E_TABLE_ITEM(obj);
gc = GNOME_CANVAS_ITEM(eti)->canvas;
table = gtk_widget_get_parent(GTK_WIDGET(gc));
accessible = gtk_widget_get_accessible (table);
accessible = atk_object_ref_accessible_child (accessible, 0);
return accessible;
}
static void
gal_a11y_e_table_item_factory_class_init (GalA11yETableItemFactoryClass *klass)
{
AtkObjectFactoryClass *factory_class = ATK_OBJECT_FACTORY_CLASS (klass);
parent_class = g_type_class_ref (PARENT_TYPE);
factory_class->create_accessible = gal_a11y_e_table_item_factory_create_accessible;
factory_class->get_accessible_type = gal_a11y_e_table_item_factory_get_accessible_type;
}
static void
gal_a11y_e_table_item_factory_init (GalA11yETableItemFactory *factory)
{
}
/**
* gal_a11y_e_table_factory_get_type:
* @void:
*
* Registers the &GalA11yETableFactory class if necessary, and returns the type ID
* associated to it.
*
* Return value: The type ID of the &GalA11yETableFactory class.
**/
GType
gal_a11y_e_table_item_factory_get_type (void)
{
static GType type = 0;
if (!type) {
GTypeInfo info = {
sizeof (GalA11yETableItemFactoryClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) gal_a11y_e_table_item_factory_class_init,
(GClassFinalizeFunc) NULL,
NULL, /* class_data */
sizeof (GalA11yETableItemFactory),
0,
(GInstanceInitFunc) gal_a11y_e_table_item_factory_init,
NULL /* value_table */
};
type = g_type_register_static (PARENT_TYPE, "GalA11yETableItemFactory", &info, 0);
}
return type;
}

View File

@ -0,0 +1,34 @@
/*
* Authors: * Yuedong Du <yuedong.du@sun.com>
*
* Copyright (C) 2003 Ximian, Inc.
*/
#ifndef __GAL_A11Y_E_TABLE_ITEM_FACTORY_H__
#define __GAL_A11Y_E_TABLE_ITEM_FACTORY_H__
#include <glib-object.h>
#include <atk/atkobjectfactory.h>
#define GAL_A11Y_TYPE_E_TABLE_ITEM_FACTORY (gal_a11y_e_table_item_factory_get_type ())
#define GAL_A11Y_E_TABLE_ITEM_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAL_A11Y_TYPE_E_TABLE_ITEM_FACTORY, GalA11yETableItemFactory))
#define GAL_A11Y_E_TABLE_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GAL_A11Y_TYPE_E_TABLE_ITEM_FACTORY, GalA11yETableItemFactoryClass))
#define GAL_A11Y_IS_E_TABLE_ITEM_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAL_A11Y_TYPE_E_TABLE_ITEM_FACTORY))
#define GAL_A11Y_IS_E_TABLE_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAL_A11Y_TYPE_E_TABLE_ITEM_FACTORY))
typedef struct _GalA11yETableItemFactory GalA11yETableItemFactory;
typedef struct _GalA11yETableItemFactoryClass GalA11yETableItemFactoryClass;
struct _GalA11yETableItemFactory {
AtkObject object;
};
struct _GalA11yETableItemFactoryClass {
AtkObjectClass parent_class;
};
/* Standard Glib function */
GType gal_a11y_e_table_item_factory_get_type (void);
#endif /* ! __GAL_A11Y_E_TABLE_FACTORY_H__ */

View File

@ -34,6 +34,7 @@ init_child_item (GalA11yETable *a11y)
ETable *table = E_TABLE (GTK_ACCESSIBLE (a11y)->widget);
if (priv->child_item == NULL) {
priv->child_item = gal_a11y_e_table_item_new (ATK_OBJECT (a11y), E_TABLE_GROUP_LEAF (table->group)->item, 0);
priv->child_item->role = ATK_ROLE_TABLE;
}
}

View File

@ -0,0 +1,81 @@
/*
* Authors: Yuedong Du <yuedong.du@sun.com>
*
* Copyright (C) 2003 Ximian, Inc.
*/
#include <config.h>
#include "gal-a11y-e-tree-factory.h"
#include "gal-a11y-e-tree.h"
#define CS_CLASS(factory) (G_TYPE_INSTANCE_GET_CLASS ((factory), C_TYPE_STREAM, GalA11yETreeFactoryClass))
static AtkObjectFactoryClass *parent_class;
#define PARENT_TYPE (ATK_TYPE_OBJECT_FACTORY)
/* Static functions */
static GType
gal_a11y_e_tree_factory_get_accessible_type (void)
{
return GAL_A11Y_TYPE_E_TREE;
}
static AtkObject*
gal_a11y_e_tree_factory_create_accessible (GObject *obj)
{
AtkObject *accessible;
accessible = gal_a11y_e_tree_new (obj);
return accessible;
}
static void
gal_a11y_e_tree_factory_class_init (GalA11yETreeFactoryClass *klass)
{
AtkObjectFactoryClass *factory_class = ATK_OBJECT_FACTORY_CLASS (klass);
parent_class = g_type_class_ref (PARENT_TYPE);
factory_class->create_accessible = gal_a11y_e_tree_factory_create_accessible;
factory_class->get_accessible_type = gal_a11y_e_tree_factory_get_accessible_type;
}
static void
gal_a11y_e_tree_factory_init (GalA11yETreeFactory *factory)
{
}
/**
* gal_a11y_e_tree_factory_get_type:
* @void:
*
* Registers the &GalA11yETreeFactory class if necessary, and returns the type ID
* associated to it.
*
* Return value: The type ID of the &GalA11yETreeFactory class.
**/
GType
gal_a11y_e_tree_factory_get_type (void)
{
static GType type = 0;
if (!type) {
GTypeInfo info = {
sizeof (GalA11yETreeFactoryClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) gal_a11y_e_tree_factory_class_init,
(GClassFinalizeFunc) NULL,
NULL, /* class_data */
sizeof (GalA11yETreeFactory),
0,
(GInstanceInitFunc) gal_a11y_e_tree_factory_init,
NULL /* value_tree */
};
type = g_type_register_static (PARENT_TYPE, "GalA11yETreeFactory", &info, 0);
}
return type;
}

View File

@ -0,0 +1,34 @@
/*
* Authors: Yuedong Du <yuedong.du@ximian.com>
*
* Copyright (C) 2003 Ximian, Inc.
*/
#ifndef __GAL_A11Y_E_TREE_FACTORY_H__
#define __GAL_A11Y_E_TREE_FACTORY_H__
#include <glib-object.h>
#include <atk/atkobjectfactory.h>
#define GAL_A11Y_TYPE_E_TREE_FACTORY (gal_a11y_e_table_factory_get_type ())
#define GAL_A11Y_E_TREE_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAL_A11Y_TYPE_E_TREE_FACTORY, GalA11yETreeFactory))
#define GAL_A11Y_E_TREE_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GAL_A11Y_TYPE_E_TREE_FACTORY, GalA11yETreeFactoryClass))
#define GAL_A11Y_IS_E_TREE_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAL_A11Y_TYPE_E_TREE_FACTORY))
#define GAL_A11Y_IS_E_TREE_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAL_A11Y_TYPE_E_TREE_FACTORY))
typedef struct _GalA11yETreeFactory GalA11yETreeFactory;
typedef struct _GalA11yETreeFactoryClass GalA11yETreeFactoryClass;
struct _GalA11yETreeFactory {
AtkObject object;
};
struct _GalA11yETreeFactoryClass {
AtkObjectClass parent_class;
};
/* Standard Glib function */
GType gal_a11y_e_tree_factory_get_type (void);
#endif /* ! __GAL_A11Y_E_TREE_FACTORY_H__ */

View File

@ -0,0 +1,158 @@
/*
* Authors: Yuedong Du <yuedong.du@sun.com>
*
* Copyright (C) 2003 Ximian, Inc.
*/
#include <config.h>
#include "gal-a11y-e-tree.h"
#include "gal-a11y-util.h"
#include <gal/e-table/e-tree.h>
#include <gal/e-table/e-table-item.h>
#define CS_CLASS(a11y) (G_TYPE_INSTANCE_GET_CLASS ((a11y), C_TYPE_STREAM, GalA11yETreeClass))
static AtkObjectClass *parent_class;
static GType parent_type;
static gint priv_offset;
#define GET_PRIVATE(object) ((GalA11yETreePrivate *) (((char *) object) + priv_offset))
#define PARENT_TYPE (parent_type)
struct _GalA11yETreePrivate {
AtkObject *child_item;
};
/* Static functions */
static void
init_child_item (GalA11yETree *a11y)
{
GalA11yETreePrivate *priv = GET_PRIVATE (a11y);
ETree *tree = E_TREE (GTK_ACCESSIBLE (a11y)->widget);
ETableItem * eti;
g_return_if_fail (tree);
eti = e_tree_get_item (tree);
if (priv->child_item == NULL) {
priv->child_item = gal_a11y_e_table_item_new (ATK_OBJECT (a11y),eti, 0);
priv->child_item->role = ATK_ROLE_TREE_TABLE;
}
}
static AtkObject*
et_ref_accessible_at_point (AtkComponent *component,
gint x,
gint y,
AtkCoordType coord_type)
{
GalA11yETree *a11y = GAL_A11Y_E_TREE (component);
init_child_item (a11y);
return GET_PRIVATE (a11y)->child_item;
}
static gint
et_get_n_children (AtkObject *accessible)
{
return 1;
}
static AtkObject*
et_ref_child (AtkObject *accessible,
gint i)
{
GalA11yETree *a11y = GAL_A11Y_E_TREE (accessible);
if (i != 0)
return NULL;
init_child_item (a11y);
g_object_ref (GET_PRIVATE (a11y)->child_item);
return GET_PRIVATE (a11y)->child_item;
}
static void
et_class_init (GalA11yETreeClass *klass)
{
AtkObjectClass *atk_object_class = ATK_OBJECT_CLASS (klass);
parent_class = g_type_class_ref (PARENT_TYPE);
atk_object_class->get_n_children = et_get_n_children;
atk_object_class->ref_child = et_ref_child;
}
static void
et_atk_component_iface_init (AtkComponentIface *iface)
{
iface->ref_accessible_at_point = et_ref_accessible_at_point;
}
static void
et_init (GalA11yETree *a11y)
{
GalA11yETreePrivate *priv;
priv = GET_PRIVATE (a11y);
priv->child_item = NULL;
}
/**
* gal_a11y_e_tree_get_type:
* @void:
*
* Registers the &GalA11yETree class if necessary, and returns the type ID
* associated to it.
*
* Return value: The type ID of the &GalA11yETree class.
**/
GType
gal_a11y_e_tree_get_type (void)
{
static GType type = 0;
if (!type) {
AtkObjectFactory *factory;
GTypeInfo info = {
sizeof (GalA11yETreeClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) et_class_init,
(GClassFinalizeFunc) NULL,
NULL, /* class_data */
sizeof (GalA11yETree),
0,
(GInstanceInitFunc) et_init,
NULL /* value_tree */
};
static const GInterfaceInfo atk_component_info = {
(GInterfaceInitFunc) et_atk_component_iface_init,
(GInterfaceFinalizeFunc) NULL,
NULL
};
factory = atk_registry_get_factory (atk_get_default_registry (), GTK_TYPE_WIDGET);
parent_type = atk_object_factory_get_accessible_type (factory);
type = gal_a11y_type_register_static_with_private (PARENT_TYPE, "GalA11yETree", &info, 0,
sizeof (GalA11yETreePrivate), &priv_offset);
g_type_add_interface_static (type, ATK_TYPE_COMPONENT, &atk_component_info);
}
return type;
}
AtkObject *
gal_a11y_e_tree_new (GObject *widget)
{
GalA11yETree *a11y;
ETree *tree;
AtkObject * item;
tree = E_TREE (widget);
a11y = g_object_new (gal_a11y_e_tree_get_type (), NULL);
GTK_ACCESSIBLE (a11y)->widget = GTK_WIDGET (widget);
return ATK_OBJECT (a11y);
}

View File

@ -0,0 +1,41 @@
/*
* Authors: Yuedong Du <yuedong.du@sun.com>
*
* Copyright (C) 2003 Ximian, Inc.
*/
#ifndef __GAL_A11Y_E_TREE_H__
#define __GAL_A11Y_E_TREE_H__
#include <glib-object.h>
#include <atk/atkobject.h>
#include <atk/atkcomponent.h>
#include <gtk/gtkaccessible.h>
#define GAL_A11Y_TYPE_E_TREE (gal_a11y_e_tree_get_type ())
#define GAL_A11Y_E_TREE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAL_A11Y_TYPE_E_TREE, GalA11yETree))
#define GAL_A11Y_E_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GAL_A11Y_TYPE_E_TREE, GalA11yETreeClass))
#define GAL_A11Y_IS_E_TREE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAL_A11Y_TYPE_E_TREE))
#define GAL_A11Y_IS_E_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAL_A11Y_TYPE_E_TREE))
typedef struct _GalA11yETree GalA11yETree;
typedef struct _GalA11yETreeClass GalA11yETreeClass;
typedef struct _GalA11yETreePrivate GalA11yETreePrivate;
/* This struct should actually be larger as this isn't what we derive from.
* The GalA11yETablePrivate comes right after the parent class structure.
**/
struct _GalA11yETree {
GtkAccessible object;
};
struct _GalA11yETreeClass {
GtkAccessibleClass parent_class;
};
/* Standard Glib function */
GType gal_a11y_e_tree_get_type (void);
AtkObject *gal_a11y_e_tree_new (GObject *tree);
#endif /* ! __GAL_A11Y_E_TREE_H__ */

View File

@ -46,6 +46,7 @@
#include "gal/util/e-i18n.h"
#include <string.h>
#include <stdlib.h>
#include <atk/atk.h>
#define PARENT_OBJECT_TYPE gnome_canvas_item_get_type ()
@ -3068,6 +3069,11 @@ eti_class_init (GObjectClass *object_class)
NULL, NULL,
e_marshal_NONE__OBJECT,
G_TYPE_NONE, 1, GTK_TYPE_STYLE);
atk_registry_set_factory_type (atk_get_default_registry (),
E_TABLE_ITEM_TYPE,
gal_a11y_e_table_item_factory_get_type ());
}
E_MAKE_TYPE (e_table_item,

View File

@ -53,6 +53,7 @@
#include "e-tree.h"
#include "gal/util/e-marshal.h"
#include "gal/a11y/e-table/gal-a11y-e-tree-factory.h"
#define COLUMN_HEADER_HEIGHT 16
@ -2154,6 +2155,15 @@ e_tree_get_table_adapter (ETree *et)
return et->priv->etta;
}
ETableItem *
e_tree_get_item(ETree * et)
{
g_return_val_if_fail (et != NULL, NULL);
g_return_val_if_fail (E_IS_TREE (et), NULL);
return et->priv->item;
}
struct _ETreeDragSourceSite
{
@ -3309,6 +3319,10 @@ e_tree_class_init (ETreeClass *class)
10,
G_PARAM_READABLE));
atk_registry_set_factory_type (atk_get_default_registry (),
E_TREE_TYPE,
gal_a11y_e_tree_factory_get_type ());
}
E_MAKE_TYPE(e_tree, "ETree", ETree, e_tree_class_init, e_tree_init, PARENT_TYPE)

View File

@ -35,6 +35,7 @@
#include <gal/e-table/e-table-state.h>
#include <gal/e-table/e-tree-model.h>
#include <gal/e-table/e-tree-table-adapter.h>
#include <gal/e-table/e-table-item.h>
#define E_TREE_USE_TREE_SELECTION
@ -303,6 +304,7 @@ gboolean e_tree_find_next (ETree *et,
/* This function is only needed in single_selection_mode. */
void e_tree_right_click_up (ETree *et);
ETableItem * e_tree_get_item(ETree * et);
G_END_DECLS