diff options
author | Mark Doffman <mdoff@altair-voyager.(none)> | 2009-10-07 09:40:11 +0100 |
---|---|---|
committer | Mark Doffman <mdoff@altair-voyager.(none)> | 2009-10-07 09:40:11 +0100 |
commit | 590c185517181d7efc05875084fc8454cc539ee1 (patch) | |
tree | 865483949db0005367fed7704c3c8cd21064a926 /tests/dummyatk | |
parent | 9eb5bf8c3ebea61c1b1907738bc6cc193839326c (diff) | |
download | at-spi2-atk-590c185517181d7efc05875084fc8454cc539ee1.tar.gz |
2009-07-10 Mark Doffman <mark.doffman@codethink.co.uk>
Remove pyatspi and the pyatspi tests that have been moved
out into a separate repository.
Diffstat (limited to 'tests/dummyatk')
28 files changed, 0 insertions, 3864 deletions
diff --git a/tests/dummyatk/Makefile.am b/tests/dummyatk/Makefile.am deleted file mode 100644 index 2e93052..0000000 --- a/tests/dummyatk/Makefile.am +++ /dev/null @@ -1,38 +0,0 @@ -check_LTLIBRARIES = libdummyatk.la - -libdummyatk_la_CFLAGS = $(ATK_CFLAGS) \ - -I$(top_srcdir) - -libdummyatk_la_LDFLAGS = -no-undefined \ - -module \ - -avoid-version - -libdummyatk_la_LIBADD = $(ATK_LIBS) - -libdummyatk_la_SOURCES = my-atk-action.c \ - my-atk-action.h \ - my-atk-component.c \ - my-atk-component.h \ - my-atk-hyperlink.c \ - my-atk-hyperlink.h \ - my-atk-hypertext.c \ - my-atk-hypertext.h \ - my-atk-object.c \ - my-atk-object.h \ - my-atk-selection.c \ - my-atk-selection.h \ - my-atk-streamable-content.c \ - my-atk-streamable-content.h \ - my-atk-table.c \ - my-atk-table.h \ - my-atk-text.c \ - my-atk-text.h \ - my-atk-value.c \ - my-atk-value.h \ - my-atk.h \ - resources_storage.c \ - resources_storage.h \ - useful_functions.c \ - useful_functions.h \ - user_marshal.c \ - user_marshal.h diff --git a/tests/dummyatk/my-atk-action.c b/tests/dummyatk/my-atk-action.c deleted file mode 100644 index 363356a..0000000 --- a/tests/dummyatk/my-atk-action.c +++ /dev/null @@ -1,222 +0,0 @@ -#include <stdio.h> -#include <string.h> -#include <atk/atk.h> - -#include "my-atk-object.h" -#include "my-atk-action.h" - -static GObjectClass *parent_class = NULL; -//implementaion of the interface -static gboolean my_atk_action_do_action(AtkAction *action, gint i) -{ - MyAtkAction *self = (MyAtkAction*)action; - gboolean result = (i>=0) && (i < self->n); - self->last_performed_action = result? i : -1; - return result; -} -static gint my_atk_action_get_n_actions(AtkAction *action) -{ - MyAtkAction *self = (MyAtkAction*)action; - return self->n; -} -static const gchar* my_atk_action_get_description(AtkAction *action, gint i) -{ - MyAtkAction *self = (MyAtkAction*)action; - if((i>=0) && (i<self->n)) - { - return self->actions[i].description; - } - else - { - printf("get_description: Wrong index.\n"); - return NULL; - } -} -static const gchar* my_atk_action_get_name(AtkAction *action, gint i) -{ - MyAtkAction *self = (MyAtkAction*)action; - if((i >= 0) && (i < self->n)) - { - return self->actions[i].name; - } - else - { - printf("get_name: Wrong index.\n"); - return NULL; - } -} -static const gchar* my_atk_action_get_localized_name(AtkAction *action, gint i) -{ - return my_atk_action_get_name(action,i); -} - -static const gchar* my_atk_action_get_keybinding(AtkAction *action, gint i) -{ - MyAtkAction *self = (MyAtkAction*)action; - if((i >= 0) && (i < self->n)) - { - gchar* keyb = self->actions[i].keybinding; - if(keyb == NULL || keybinding_note_define == NULL) - { - //anywhere(if action has keybinding or not) NULL will return - return NULL; - } - else - { - //verify, if string mean "no keybinding" - return strcmp(keyb, keybinding_note_define) != 0 ? keyb : NULL; - } - } - else - { - printf("get_keybinding: Wrong index.\n"); - return NULL; - } -} -static gboolean my_atk_action_set_description(AtkAction *action, gint i, const gchar *desc) -{ - MyAtkAction *self = (MyAtkAction*)action; - - if(!((i >= 0) && (i < self->n)) ) - { - //index out of range, but this is not application error according documentation - return FALSE; - } - //index in correct range - if(self->actions[i].description == desc) - { - //self assignment - return immediately - return TRUE; - } - if(self->actions[i].description != NULL) - { - //free old value of description if it is not NULL - free(self->actions[i].description); - } - if(desc != NULL) - { - //dump new value of description if it is not NULL - self->actions[i].description = (gchar*)strdup((const char*)desc); - } - return TRUE; -} -////////// -static void my_atk_action_instance_init(GTypeInstance *instance, gpointer g_class) -{ - int i; - MyAtkAction *self = (MyAtkAction*)instance; - self->n = DEFAULT_NUMBER_ACTIONS; - self->actions = g_new(struct OneAction, self->n); - if(self->actions == NULL) - { - self->n = 0; - return; - } - //init fields of action 0 with values which differ from others actions - self->actions[0].name = (gchar*)strdup(FIRST_ACTION_NAME); - self->actions[0].description = (gchar*)strdup(FIRST_ACTION_DESCRIPTION); - self->actions[0].keybinding = (gchar*)strdup(FIRST_ACTION_KEYBINDING); - - for(i = 1; i < self->n; i++) - { - self->actions[i].name = (gchar*)strdup(DEFAULT_ACTION_NAME); - self->actions[i].description = (gchar*)strdup(DEFAULT_ACTION_DESCRIPTION); - self->actions[i].keybinding = g_strdup_printf("%d", i); - } - self->disposed = FALSE; - self->last_performed_action = -1; -} - -static void -my_atk_action_interface_init(gpointer g_iface, gpointer iface_data) -{ - AtkActionIface *klass = (AtkActionIface *)g_iface; - - klass->do_action = my_atk_action_do_action; - klass->get_n_actions = my_atk_action_get_n_actions; - klass->get_description = my_atk_action_get_description; - klass->get_name = my_atk_action_get_name; - klass->get_localized_name = my_atk_action_get_localized_name; - klass->get_keybinding = my_atk_action_get_keybinding; - klass->set_description = my_atk_action_set_description; -} - -static void -my_atk_action_dispose(GObject *obj) -{ - MyAtkAction *self = (MyAtkAction*)obj; - - if(self->disposed) - { - return; - } - self->disposed = TRUE; - - G_OBJECT_CLASS(parent_class)->dispose(obj); -} - -static void -my_atk_action_finalize(GObject *obj) -{ - MyAtkAction *self = (MyAtkAction*)obj; - int i; - - for(i = 0; i < self->n; i++) - { - struct OneAction oneAction = self->actions[i]; - if(oneAction.name != NULL) - free(oneAction.name); - if(oneAction.description != NULL) - free(oneAction.description); - if(oneAction.keybinding != NULL) - free(oneAction.keybinding); - } - if(self->actions != NULL) - g_free(self->actions); - - G_OBJECT_CLASS(parent_class)->finalize(obj); -} -static void -my_atk_action_class_init (gpointer g_class, gpointer g_class_data) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS(g_class); - MyAtkActionClass *klass = MY_ATK_ACTION_CLASS (g_class); - - gobject_class->dispose = my_atk_action_dispose; - gobject_class->finalize = my_atk_action_finalize; - - parent_class = g_type_class_peek_parent(klass); -} -GType my_atk_action_get_type(void) -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo info = - { - sizeof (MyAtkActionClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - my_atk_action_class_init, /* class_init */ - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (MyAtkAction), - 0, /* n_preallocs */ - my_atk_action_instance_init /* instance_init */ - }; - - static const GInterfaceInfo iface_info = - { - (GInterfaceInitFunc) my_atk_action_interface_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ - }; - type = g_type_register_static (MY_TYPE_ATK_OBJECT, - "MyAtkAction", - &info, 0); - g_type_add_interface_static (type, - ATK_TYPE_ACTION, - &iface_info); - } - return type; -} diff --git a/tests/dummyatk/my-atk-action.h b/tests/dummyatk/my-atk-action.h deleted file mode 100644 index f33e75d..0000000 --- a/tests/dummyatk/my-atk-action.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef MY_ATK_ACTION_H -#define MY_ATK_ACTION_H -//Object, which implement interface AtkAction(all functions) -#include <glib.h> -#include <glib-object.h> -#include <atk/atk.h> - -#include "my-atk-object.h" - -//declarations -#define MY_TYPE_ATK_ACTION (my_atk_action_get_type ()) -#define MY_ATK_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_ACTION, MyAtkAction)) -#define MY_ATK_ACTION_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_ACTION, MyAtkActionClass)) -#define MY_IS_ATK_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_ACTION)) -#define MY_IS_ATK_ACTION_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_ACTION)) -#define MY_ATK_ACTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_ACTION, MyAtkActionClass)) - -static const gchar* keybinding_note_define = "none"; - -#define FIRST_ACTION_NAME "First action" -#define FIRST_ACTION_DESCRIPTION "First action performed" -#define FIRST_ACTION_KEYBINDING "0" - -#define DEFAULT_NUMBER_ACTIONS 10 -#define DEFAULT_ACTION_NAME "Action" -#define DEFAULT_ACTION_DESCRIPTION "Description of action" -#define DEFAULT_ACTION_KEYBINDING keybinding_note_define - - -//for external using -#define LAST_PERFORMED_ACTION(myAtkAction) (MY_ATK_ACTION(myAtkAction)->last_performed_action) -#define CLEAR_LAST_PERFOMED_ACTION(myAtkAction) (MY_ATK_ACTION(myAtkAction)->last_performed_action = -1 - -typedef struct _MyAtkAction MyAtkAction; -typedef struct _MyAtkActionClass MyAtkActionClass; - -struct _MyAtkAction -{ - MyAtkObject parent; - - gboolean disposed; - struct OneAction - { - gchar *name; - gchar *description; - gchar *keybinding; - }*actions; - gint n; - gint last_performed_action;//this field is changed when perfoms action -}; - -struct _MyAtkActionClass -{ - MyAtkObjectClass parent; -}; -GType my_atk_action_get_type(void); - -#endif /*MY_ATK_ACTION_H*/ diff --git a/tests/dummyatk/my-atk-component.c b/tests/dummyatk/my-atk-component.c deleted file mode 100644 index e304c7d..0000000 --- a/tests/dummyatk/my-atk-component.c +++ /dev/null @@ -1,403 +0,0 @@ -#include <stdio.h> -#include <atk/atk.h> -#include <limits.h> - -#include "my-atk-object.h" -#include "my-atk-component.h" - -//*************************implementation*********************** -static MyAtkObjectClass *component_parent_class = NULL; -//current focus object -static AtkComponent* focus_object = NULL; - -static guint focus_signal_id = 0; -/* - * Because of implementation of AtkUtils, we need to ensure that list of focus_trackers - * is not empty. Otherwise function atk_focus_tracker_notify will not change focus. - */ -static guint focus_tracker_id = 0; -static void my_event_listener(AtkObject* obj) -{ - //simply exist for register as focus_tracker -} -/* - * If this flag is TRUE, then focus cannot be changed until someone clears the flag - * via my_atk_component_set_modal(FALSE). - */ -static gboolean is_modal = FALSE; -//for debug -void print_extent(AtkRectangle *extent) -{ - printf("{%d,%d,%d,%d}", extent->x, extent->y, extent->width, extent->height); -} -//for internal use -static void emit_bounds_changed(MyAtkComponent *component) -{ - static guint bounds_changed_id = 0; - if(bounds_changed_id == 0) - { - bounds_changed_id = g_signal_lookup("bounds-changed", ATK_TYPE_COMPONENT); - } - AtkRectangle *param = g_boxed_copy(ATK_TYPE_RECTANGLE, &(component->extent)); - g_signal_emit(component, bounds_changed_id, 0, param); -} -static void change_focus(AtkComponent* component, gboolean is_gain) -{ - const gchar* state_name = atk_state_type_get_name(ATK_STATE_FOCUSED); - - g_signal_emit_by_name(component, "focus-event", is_gain); - g_signal_emit_by_name(component, "state-change::focused", - state_name, is_gain); - - AtkObject* parent = atk_object_get_parent((AtkObject*)component); - if(parent != NULL) - { - AtkStateSet* stateSet = atk_object_ref_state_set(parent); - if(atk_state_set_contains_state(stateSet, ATK_STATE_MANAGES_DESCENDANTS)) - g_signal_emit_by_name(parent, "active-descendant-changed", - atk_get_focus_object()); - g_object_unref(stateSet); - } -} -//implementation of virtual functions -//******************ref_state_set(AtkObject)***************************** -static AtkStateSet* my_atk_component_ref_state_set(AtkObject *object) -{ - MyAtkComponent *self = (MyAtkComponent*)object; - - AtkStateSet* result = ((AtkObjectClass*)component_parent_class)-> - ref_state_set(object); - if(self->is_manage_descendants) - atk_state_set_add_state(result, ATK_STATE_MANAGES_DESCENDANTS); - return result; -} -//******************get_size******************* -static void my_atk_component_get_size(AtkComponent *component, gint *width, gint *height) -{ - g_return_if_fail(MY_IS_ATK_COMPONENT(component)); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - *width = self->extent.width; - *height = self->extent.height; -} -//*********************get_position******************* -static void my_atk_component_get_position(AtkComponent *component, gint *x, gint *y, AtkCoordType coord_type) -{ - g_return_if_fail(MY_IS_ATK_COMPONENT(component)); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - *x = self->extent.x; - *y = self->extent.y; - -//**********************get_extents******************* -} -static void my_atk_component_get_extents(AtkComponent *component, gint *x, gint *y, - gint *width, gint *height, AtkCoordType coord_type) -{ - g_return_if_fail(MY_IS_ATK_COMPONENT(component)); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - *x = self->extent.x; - *y = self->extent.y; - *width = self->extent.width; - *height = self->extent.height; -} - -//**************************set_size******************* -static gboolean my_atk_component_set_size(AtkComponent *component, gint width, gint height) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component), FALSE); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - if(self->is_extent_may_changed) - { - self->extent.width = width; - self->extent.height = height; - - emit_bounds_changed(self); - - return TRUE; - } - return FALSE; -} -//**************************set_position******************** -static gboolean my_atk_component_set_position(AtkComponent *component, - gint x, gint y, AtkCoordType coord_type) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component), FALSE); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - if(self->is_extent_may_changed) - { - self->extent.x = x; - self->extent.y = y; - - emit_bounds_changed(self); - - return TRUE; - } - return FALSE; -} -//*************************************set_extents*************** -static gboolean my_atk_component_set_extents(AtkComponent *component, - gint x, gint y, gint width, gint height, AtkCoordType coord_type) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component), FALSE); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - - if(self->is_extent_may_changed) - { - self->extent.x = x; - self->extent.y = y; - self->extent.width = width; - self->extent.height = height; - - emit_bounds_changed(self); - - return TRUE; - } - return FALSE; -} -//**************************get_layer**************** -static AtkLayer my_atk_component_get_layer(AtkComponent *component) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component), ATK_LAYER_INVALID); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - return self->layer; -} -//**************************get_mdi_zorder**************** -static gint my_atk_component_get_mdi_zorder(AtkComponent *component) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component), G_MININT); - - MyAtkComponent *self = MY_ATK_COMPONENT(component); - return self->zorder; -} -//***********************contains********************** -static gboolean my_atk_component_contains(AtkComponent *component, - gint x, gint y, AtkCoordType coord_type) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component), FALSE); - //for extract extent - gint x_tmp, y_tmp, width_tmp, height_tmp; - my_atk_component_get_extents(component, &x_tmp, &y_tmp, &width_tmp, &height_tmp, coord_type); - - if( (x >= x_tmp) &&(y >= y_tmp) &&(x < x_tmp + width_tmp) && (y < y_tmp + height_tmp) ) - { - return TRUE; - } - else - { - return FALSE; - } -} -//**********************ref_accessible_at_point*********************** -/* - * Retuns accessible child that implements AtkCOmponent and contains the given point. - */ -static AtkObject* my_atk_component_ref_accessible_at_point(AtkComponent* component, - gint x, gint y, AtkCoordType coord_type) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component), NULL); - gint i; - - gint n_children = atk_object_get_n_accessible_children((AtkObject*)component); - for(i = 0; i < n_children; i++) - { - AtkObject *child = atk_object_ref_accessible_child((AtkObject*)component, i); - if(ATK_IS_COMPONENT(child) - && atk_component_contains((AtkComponent*)child, x, y, coord_type)) - { - return child; - } - g_object_unref(child); - } - return NULL; -} -//*************************************grab_focus********************************* -static gboolean my_atk_component_grab_focus(AtkComponent* component) -{ - if(component == focus_object) - { - //Already has focus - return TRUE; - } - if(is_modal) - { - //cannot grab focus - return FALSE; - } - AtkComponent *focus_object_old = focus_object; - focus_object = component; - - atk_focus_tracker_notify((AtkObject*)component); - - if(focus_object_old != NULL) - { - //signals for object which lost focus - change_focus(focus_object_old, FALSE); - } - if(component != NULL) - { - //signals for object which grab focus - change_focus(component, TRUE); - } - return TRUE; -} -//***********************my_atk_component_add_focus_handler********************* -static guint my_atk_component_add_focus_handler(AtkComponent *component, AtkFocusHandler handler) -{ - g_return_val_if_fail(MY_IS_ATK_COMPONENT(component),0); - //verify whether handler already connect to object - gulong found_handler_id = g_signal_handler_find(component, - G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC, - focus_signal_id, - 0, - NULL, - (gpointer)handler, - NULL); - if(found_handler_id == 0) - { - //handler hasn't been connected yet - return g_signal_connect_closure_by_id(component, - focus_signal_id, - 0, - g_cclosure_new( (GCallback)handler, - NULL, - NULL), - FALSE); - } - else/* found_handler_id != 0*/ - { - //handler has already been connected - return 0; - } - -} -//***********************my_atk_component_remove_focus_handler********************* -static void my_atk_component_remove_focus_handler(AtkComponent *component, guint handler_id) -{ - g_signal_handler_disconnect(component, handler_id); -} -//***********************my_atk_component_set_modal(my function)*************** -void my_atk_component_set_modal(gboolean value) -{ - is_modal = value; -} -//******************my_atk_component_set_manage_descendants(my_function)******* -void my_atk_component_set_manage_descendants(MyAtkComponent* component, gboolean value) -{ - if(component->is_manage_descendants == value)return; - component->is_manage_descendants = value; - g_signal_emit_by_name(component, "state-change::manages-descendants", - "manages-descendants", value); -} -//Others funtions -static void my_atk_component_instance_init(GTypeInstance *obj, gpointer g_class) -{ - MyAtkComponent *self = (MyAtkComponent*)obj; - //set defaults values - self->extent.x = 0; - self->extent.y = 0; - self->extent.width = 10; - self->extent.height = 10; - self->is_extent_may_changed = TRUE; - self->layer = ATK_LAYER_INVALID; - self->zorder = -2147; -} -static void my_atk_component_instance_finalize(GObject* obj) -{ - MyAtkComponent* component = (MyAtkComponent*)obj; - - if(((AtkObject*)component) == atk_get_focus_object()) - { - atk_focus_tracker_notify(NULL); - } -} - -static void my_atk_component_class_init(gpointer g_class, gpointer class_data) -{ - GObjectClass* g_object_class = (GObjectClass*)g_class; - AtkObjectClass* atkObject_class = (AtkObjectClass*)g_class; - //GObject virtual table - g_object_class->finalize = my_atk_component_instance_finalize; - //AtkObject virtual table - atkObject_class->ref_state_set = my_atk_component_ref_state_set; - //parent_class - component_parent_class = g_type_class_peek_parent(g_class); - //make focus_tracker's table not empty. - focus_tracker_id = atk_add_focus_tracker(my_event_listener); - //store "focus-event"-signal id - focus_signal_id = g_signal_lookup("focus-event",MY_TYPE_ATK_COMPONENT); -} -/* - * Though, according to the documentation, this function will never called for - * static-registred types. - * Base_init function doesn't suite for this work, - * because it will called in every derived classes. - */ -/*static void my_atk_component_class_finalize(gpointer g_class, gpointer class_data) -{ - - if(focus_tracker_id != 0) - { - atk_remove_focus_tracker(focus_tracker_id); - focus_tracker_id = 0; - } -}*/ -static void my_atk_component_interface_init(gpointer g_iface, gpointer iface_data) -{ - AtkComponentIface *klass = (AtkComponentIface*)g_iface; - - klass->get_extents = my_atk_component_get_extents; - klass->get_position = my_atk_component_get_position; - klass->get_size = my_atk_component_get_size; - - klass->set_extents = my_atk_component_set_extents; - klass->set_position = my_atk_component_set_position; - klass->set_size = my_atk_component_set_size; - - klass->contains = my_atk_component_contains; - klass->ref_accessible_at_point = my_atk_component_ref_accessible_at_point; - - klass->get_layer = my_atk_component_get_layer; - klass->get_mdi_zorder = my_atk_component_get_mdi_zorder; - - klass->grab_focus = my_atk_component_grab_focus; - klass->add_focus_handler = my_atk_component_add_focus_handler; - klass->remove_focus_handler = my_atk_component_remove_focus_handler; -} - -GType my_atk_component_get_type() -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo typeInfo = - { - sizeof(MyAtkComponentClass), - NULL, //base_init - NULL, //base_finalize - my_atk_component_class_init, //class_init - NULL, //class_finalize - NULL, //class_data - sizeof(MyAtkComponent), - 0, //n_preallocs - my_atk_component_instance_init //instance_init - }; - - static const GInterfaceInfo iface_info = - { - my_atk_component_interface_init, /* interface_init*/ - NULL, /* interface_finalize*/ - NULL /* interface_data */ - }; - type = g_type_register_static(MY_TYPE_ATK_OBJECT, "MyAtkComponent", &typeInfo, 0); - g_type_add_interface_static(type, - ATK_TYPE_COMPONENT, - &iface_info); - } - return type; -} diff --git a/tests/dummyatk/my-atk-component.h b/tests/dummyatk/my-atk-component.h deleted file mode 100644 index 3fa5850..0000000 --- a/tests/dummyatk/my-atk-component.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef MY_ATK_COMPONENT_H -#define MY_ATK_COMPONENT_H -/* - * MyAtkComponent: derives AtkObject(with parent-child accessibilities) - * and implements AtkComponent. - */ -#include <atk/atk.h> - -#include "my-atk-object.h" - -#define MY_TYPE_ATK_COMPONENT (my_atk_component_get_type ()) -#define MY_ATK_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_COMPONENT, MyAtkComponent)) -#define MY_ATK_COMPONENT_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_COMPONENT, MyAtkComponentClass)) -#define MY_IS_ATK_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_COMPONENT)) -#define MY_IS_ATK_COMPONENT_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_COMPONENT)) -#define MY_ATK_COMPONENT_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_COMPONENT, MyAtkComponentClass)) - -typedef struct _MyAtkComponent MyAtkComponent; -typedef struct _MyAtkComponentClass MyAtkComponentClass; - -struct _MyAtkComponent -{ - MyAtkObject parent; - //relative coordinates, which coincides with absolute ones - AtkRectangle extent; - //whether component may be relocated - gboolean is_extent_may_changed; - //for emit "active-descendant-changed" signal - gboolean is_manage_descendants; - // - AtkLayer layer; - gint zorder; -}; - -struct _MyAtkComponentClass -{ - MyAtkObjectClass parent; -}; - -GType my_atk_component_get_type(); -#endif /*MY_ATK_COMPONENT_H*/ diff --git a/tests/dummyatk/my-atk-hyperlink.c b/tests/dummyatk/my-atk-hyperlink.c deleted file mode 100644 index cb6b435..0000000 --- a/tests/dummyatk/my-atk-hyperlink.c +++ /dev/null @@ -1,137 +0,0 @@ -#include <atk/atk.h> - -#include "my-atk-text.h" -#include "my-atk-hyperlink.h" -#include "resources_storage.h" - -//***************************implementation**************************************** -static MyAtkTextClass *parent_class_atk_hyperlink = NULL; - -// Implementation of virtual functions -//***************************my_atk_hyperlink_get_uri************** -gchar* my_atk_hyperlink_get_uri(AtkHyperlink* link_, gint index) -{ - MyAtkHyperlink* self = (MyAtkHyperlink*)link_; - - if(index < 0 || index >= self->number_of_anchors) return NULL; - return g_strdup(self->uri); -} -//**************************my_atk_hyperlink_is_valid************************** -gboolean my_atk_hyperlink_is_valid(AtkHyperlink* link_) -{ - MyAtkHyperlink* self = (MyAtkHyperlink*)link_; - - return (resource_storage_get(self->uri) != NULL); -} -//*************************my_atk_hyperlink_get_object************************ -AtkObject* my_atk_hyperlink_get_object(AtkHyperlink* link_, gint index) -{ - MyAtkHyperlink* self = (MyAtkHyperlink*)link_; - - if(index < 0 || index >= self->number_of_anchors) return NULL; - return resource_storage_get(self->uri); -} -//***************************my_atk_hyperlink_get_start_index************** -gint my_atk_hyperlink_get_start_index(AtkHyperlink* link_) -{ - MyAtkHyperlink* self = (MyAtkHyperlink*)link_; - - return self->start_index; -} -//***************************my_atk_hyperlink_get_end_index************** -gint my_atk_hyperlink_get_end_index(AtkHyperlink* link_) -{ - MyAtkHyperlink* self = (MyAtkHyperlink*)link_; - - return self->end_index; -} -//***************************my_atk_hyperlink_link_state******************* -guint my_atk_hyperlink_link_state(AtkHyperlink* link_) -{ - return 0; -} -//***************************my_atk_hyperlink_get_n_anchors******************* -gboolean my_atk_hyperlink_get_n_anchors(AtkHyperlink* link_) -{ - return ((MyAtkHyperlink*)link_)->number_of_anchors; -} -//***************************my_atk_hypertlink_is_selected_link*********** -gboolean my_atk_hyperlink_is_selected_link(AtkHyperlink* link_) -{ - MyAtkHyperlink* self = (MyAtkHyperlink*)link_; - - return self->is_selected; -} -//others functions -MyAtkHyperlink* my_atk_hyperlink_new(gint start_index, gint end_index,const gchar* uri) -{ - MyAtkHyperlink* result = g_object_new(MY_TYPE_ATK_HYPERLINK, NULL); - if(result == NULL) return NULL; - result->start_index = start_index; - result->end_index = end_index; - result->uri = g_strdup(uri); - result->number_of_anchors = 1; - return result; -} -void my_atk_hyperlink_activate(MyAtkHyperlink* hyperlink) -{ - g_signal_emit_by_name(hyperlink, "link-activated"); -} -//initialize/finalize functions -static void my_atk_hyperlink_instance_init(GTypeInstance *obj, gpointer g_class) -{ - MyAtkHyperlink *self = (MyAtkHyperlink*)obj; - - self->start_index = self->end_index = 0; - self->uri = NULL; - self->is_selected = FALSE; - self->number_of_anchors = 0; -} -static void my_atk_hyperlink_instance_finalize(GObject* obj) -{ - MyAtkHyperlink *self = (MyAtkHyperlink*)obj; - - g_free(self->uri); -} - -static void my_atk_hyperlink_class_init(gpointer g_class, gpointer class_data) -{ - GObjectClass* g_object_class = (GObjectClass*)g_class; - //GObject virtual table - g_object_class->finalize = my_atk_hyperlink_instance_finalize; - //parent_class - parent_class_atk_hyperlink = g_type_class_peek_parent(g_class); - // - AtkHyperlinkClass* atkHyperlinkClass = (AtkHyperlinkClass*)g_class; - - atkHyperlinkClass->get_uri = my_atk_hyperlink_get_uri; - atkHyperlinkClass->get_object = my_atk_hyperlink_get_object; - atkHyperlinkClass->get_start_index = my_atk_hyperlink_get_start_index; - atkHyperlinkClass->get_end_index = my_atk_hyperlink_get_end_index; - atkHyperlinkClass->is_valid = my_atk_hyperlink_is_valid; - atkHyperlinkClass->link_state = my_atk_hyperlink_link_state; - atkHyperlinkClass->get_n_anchors = my_atk_hyperlink_get_n_anchors; - atkHyperlinkClass->is_selected_link = my_atk_hyperlink_is_selected_link; -} - -GType my_atk_hyperlink_get_type() -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo typeInfo = - { - sizeof(MyAtkHyperlinkClass), - NULL, //base_init - NULL, //base_finalize - my_atk_hyperlink_class_init, //class_init - NULL, //class_finalize - NULL, //class_data - sizeof(MyAtkHyperlink), - 0, //n_preallocs - my_atk_hyperlink_instance_init //instance_init - }; - type = g_type_register_static(ATK_TYPE_HYPERLINK, "MyAtkHyperlink", &typeInfo, 0); - } - return type; -} diff --git a/tests/dummyatk/my-atk-hyperlink.h b/tests/dummyatk/my-atk-hyperlink.h deleted file mode 100644 index 026ba54..0000000 --- a/tests/dummyatk/my-atk-hyperlink.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef MY_ATK_HYPERLINK_H -#define MY_ATK_HYPERLINK_H -/* - * MyAtkHyperlink: implements AtkHyperlink - */ -#include <atk/atk.h> - -#define MY_TYPE_ATK_HYPERLINK (my_atk_hyperlink_get_type ()) -#define MY_ATK_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_HYPERLINK, MyAtkHyperlink)) -#define MY_ATK_HYPERLINK_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_HYPERLINK, MyAtkHyperlinkClass)) -#define MY_IS_ATK_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_HYPERLINK)) -#define MY_IS_ATK_HYPERLINK_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_HYPERLINK)) -#define MY_ATK_HYPERLINK_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_HYPERLINK, MyAtkHyperlinkClass)) - -typedef struct _MyAtkHyperlink MyAtkHyperlink; -typedef struct _MyAtkHyperlinkClass MyAtkHyperlinkClass; - -struct _MyAtkHyperlink -{ - AtkHyperlink parent; - - gint start_index, end_index; - - gchar* uri; - gint number_of_anchors;//0 on "clear" hyperlink and 1 after set it - gboolean is_selected; -}; - -struct _MyAtkHyperlinkClass -{ - AtkHyperlinkClass parent; -}; - -GType my_atk_hyperlink_get_type(); -#endif /*MY_ATK_HYPERLINK_H*/ diff --git a/tests/dummyatk/my-atk-hypertext.c b/tests/dummyatk/my-atk-hypertext.c deleted file mode 100644 index 1bba620..0000000 --- a/tests/dummyatk/my-atk-hypertext.c +++ /dev/null @@ -1,172 +0,0 @@ -#include <atk/atk.h> - -#include "my-atk-text.h" -#include "my-atk-hyperlink.h" -#include "my-atk-hypertext.h" - -//***************************implementation**************************************** -static MyAtkTextClass *parent_class_atk_text = NULL; - -typedef struct -{ - gint start_offset, end_offset; - gint index; -}HyperlinkRange; -// Implementation of virtual functions - -//***************************my_atk_hypertext_get_n_links************************* -gint my_atk_hypertext_get_n_links(AtkHypertext* hypertext) -{ - MyAtkHypertext* self = (MyAtkHypertext*)hypertext; - - return self->hyperlinks->len; -} -//***************************my_atk_hypertext_get_link*********************** -AtkHyperlink* my_atk_hypertext_get_link(AtkHypertext* hypertext, gint link_index) -{ - MyAtkHypertext* self = (MyAtkHypertext*)hypertext; - - if(link_index < 0 || link_index >= self->hyperlinks->len) - return NULL; - return g_ptr_array_index(self->hyperlinks, link_index); -} -//*************************my_atk_hypertext_get_link_index******************* -gint my_atk_hypertext_get_link_index(AtkHypertext* hypertext, gint char_index) -{ - gint i; - MyAtkHypertext* self = (MyAtkHypertext*)hypertext; - GArray* ranges = self->hyperlink_ranges; - for(i = ranges->len - 1; i >= 0; i--) - { - HyperlinkRange *range = &g_array_index(ranges, HyperlinkRange, i); - if(range->start_offset <= char_index) - { - if(range->end_offset > char_index)return range->index; - break; - } - } - return -1; -} -//others functions -gboolean my_atk_hypertext_add_hyperlink(MyAtkHypertext* hypertext, - gint start_index, gint end_index, const gchar* uri) -{ - MyAtkHyperlink* new_hyperlink; - GArray* ranges = hypertext->hyperlink_ranges; - gint i; - for(i = 0; i < ranges->len; i++) - { - HyperlinkRange *range = &g_array_index(ranges, HyperlinkRange, i); - if(range->end_offset <= start_index) continue; - if(range->start_offset < end_index) return FALSE; - break; - } - new_hyperlink = my_atk_hyperlink_new(start_index, end_index, uri); - g_ptr_array_add(hypertext->hyperlinks, new_hyperlink); - HyperlinkRange new_range; - new_range.start_offset = start_index; - new_range.end_offset = end_index; - new_range.index = hypertext->hyperlinks->len - 1; - g_array_insert_val(ranges, i, new_range); - return TRUE; -} -// -void my_atk_hypertext_select_link(MyAtkHypertext* hypertext, gint index) -{ - if(index < 0 || index >= my_atk_hypertext_get_n_links((AtkHypertext*)hypertext)) - return; - - if(hypertext->current_selected_link != -1) - { - MyAtkHyperlink *selected_link_old = - (MyAtkHyperlink*)my_atk_hypertext_get_link( - (AtkHypertext*)hypertext, hypertext->current_selected_link); - selected_link_old->is_selected = FALSE; - } - - hypertext->current_selected_link = index; - MyAtkHyperlink *selected_link_new = (MyAtkHyperlink*)my_atk_hypertext_get_link( - (AtkHypertext*)hypertext, hypertext->current_selected_link); - selected_link_new->is_selected = TRUE; - - g_signal_emit_by_name(hypertext, - "link-selected", hypertext->current_selected_link); -} -//initialize/finalize functions -static void my_atk_hypertext_instance_init(GTypeInstance *obj, gpointer g_class) -{ - MyAtkHypertext *self = (MyAtkHypertext*)obj; - - self->hyperlink_ranges = g_array_new(FALSE, FALSE, sizeof(HyperlinkRange)); - self->hyperlinks = g_ptr_array_new(); - - self->current_selected_link = -1; -} -static void my_atk_hypertext_instance_finalize(GObject* obj) -{ - MyAtkHypertext *self = (MyAtkHypertext*)obj; - - g_array_free(self->hyperlink_ranges, FALSE); - - g_ptr_array_foreach(self->hyperlinks,(GFunc)g_object_unref, NULL); - g_ptr_array_free(self->hyperlinks, FALSE); -} - -static void my_atk_hypertext_class_init(gpointer g_class, gpointer class_data) -{ - GObjectClass* g_object_class = (GObjectClass*)g_class; - //GObject virtual table - g_object_class->finalize = my_atk_hypertext_instance_finalize; - //parent_class - parent_class_atk_text = g_type_class_peek_parent(g_class); -} -static void my_atk_hypertext_interface_init(gpointer g_iface, gpointer iface_data) -{ - AtkHypertextIface *klass = (AtkHypertextIface*)g_iface; - - klass->get_link = my_atk_hypertext_get_link; - klass->get_n_links = my_atk_hypertext_get_n_links; - klass->get_link_index = my_atk_hypertext_get_link_index; -} - -GType my_atk_hypertext_get_type() -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo typeInfo = - { - sizeof(MyAtkHypertextClass), - NULL, //base_init - NULL, //base_finalize - my_atk_hypertext_class_init, //class_init - NULL, //class_finalize - NULL, //class_data - sizeof(MyAtkHypertext), - 0, //n_preallocs - my_atk_hypertext_instance_init //instance_init - }; - - static const GInterfaceInfo AtkTextIface_info = - { - my_atk_text_interface_init, /* interface_init*/ - NULL, /* interface_finalize*/ - NULL /* interface_data */ - }; - static const GInterfaceInfo AtkHypertextIface_info = - { - my_atk_hypertext_interface_init,/* interface_init*/ - NULL, /* interface_finalize*/ - NULL /* interface_data */ - }; - type = g_type_register_static(MY_TYPE_ATK_TEXT, "MyAtkHypertext", &typeInfo, 0); - g_type_add_interface_static(type, - ATK_TYPE_TEXT, - &AtkTextIface_info); - - g_type_add_interface_static(type, - ATK_TYPE_HYPERTEXT, - &AtkHypertextIface_info); - } - return type; -} diff --git a/tests/dummyatk/my-atk-hypertext.h b/tests/dummyatk/my-atk-hypertext.h deleted file mode 100644 index 50d02cf..0000000 --- a/tests/dummyatk/my-atk-hypertext.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef MY_ATK_HYPERTEXT_H -#define MY_ATK_HYPERTEXT_H -/* - * MyAtkHypertext: implements AtkHypertext - */ -#include <atk/atk.h> -#include <my-atk-text.h> - -#define MY_TYPE_ATK_HYPERTEXT (my_atk_hypertext_get_type ()) -#define MY_ATK_HYPERTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_HYPERTEXT, MyAtkHypertext)) -#define MY_ATK_HYPERTEXT_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_HYPERTEXT, MyAtkHypertextClass)) -#define MY_IS_ATK_HYPERTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_HYPERTEXT)) -#define MY_IS_ATK_HYPERTEXT_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_HYPERTEXT)) -#define MY_ATK_HYPERTEXT_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_HYPERTEXT, MyAtkHypertextClass)) - -typedef struct _MyAtkHypertext MyAtkHypertext; -typedef struct _MyAtkHypertextClass MyAtkHypertextClass; - -struct _MyAtkHypertext -{ - MyAtkText parent; - - GArray* hyperlink_ranges; - GPtrArray* hyperlinks; - - gint current_selected_link; -}; - -struct _MyAtkHypertextClass -{ - MyAtkTextClass parent; -}; -#endif /*MY_ATK_HYPERTEXT_H*/ diff --git a/tests/dummyatk/my-atk-object.c b/tests/dummyatk/my-atk-object.c deleted file mode 100644 index 4029424..0000000 --- a/tests/dummyatk/my-atk-object.c +++ /dev/null @@ -1,186 +0,0 @@ - -#include <stdio.h> -#include <atk/atk.h> - -#include "my-atk-object.h" - -static AtkObjectClass *atk_object_parent_class = NULL; - -void my_atk_object_add_child(MyAtkObject* parent, MyAtkObject* child) -{ - g_ptr_array_add(parent->children, child); - g_object_ref_sink(child); - - atk_object_set_parent(ATK_OBJECT(child), ATK_OBJECT(parent)); - - g_signal_emit_by_name(parent, "children-changed::add", - parent->children->len - 1, child); -} - -void my_atk_object_remove_child(MyAtkObject* parent, MyAtkObject* child) -{ - gint i; - for(i = parent->children->len - 1; i >= 0; i--) - { - if(g_ptr_array_index(parent->children, i) == child) break; - } - if(i < 0)return; - - g_ptr_array_remove_index(parent->children, i); - g_object_unref(child); - g_signal_emit_by_name(parent, "children-changed::remove", - i, child); -} - -static void my_atk_object_set_parent(AtkObject *accessible, AtkObject *parent) -{ - g_return_if_fail(parent != NULL); - - MyAtkObject *self = MY_ATK_OBJECT(accessible); - AtkObject *parent_old = (atk_object_get_parent(accessible)); - - if(parent_old == parent) - { - //nothing to do because parent does not change - return; - } - - //set field 'parent' in child using 'base-method' - atk_object_parent_class->set_parent(accessible, parent); - - if(parent_old != NULL) - { - my_atk_object_remove_child((MyAtkObject*)parent_old, self); - } -} - -static gint my_atk_object_get_n_children(AtkObject *accessible) -{ - return MY_ATK_OBJECT(accessible)->children->len; -} - -static AtkObject* my_atk_object_ref_child(AtkObject *accessible, gint i) -{ - MyAtkObject *self = MY_ATK_OBJECT(accessible); - if(i < 0 || i >= self->children->len) - { - printf("ref_child: Incorrect index of child.\n"); - return NULL; - } - - AtkObject* child = (AtkObject*) - g_ptr_array_index(self->children, i); - - return (child == NULL) ? NULL : g_object_ref(child); -} - -static gint my_atk_object_get_index_in_parent(AtkObject *accessible) -{ - AtkObject *parent = atk_object_get_parent(accessible); - if(parent == NULL) return -1;//no parent - - MyAtkObject *parent_my = MY_ATK_OBJECT(parent); - - int i = parent_my->children->len; - for(; i>=0; i--) - { - if(g_ptr_array_index(parent_my->children,i) == accessible) - break; - } - if(i < 0)printf("Something wrong in parent-child strucutre.\n"); - return i;//if error, i will be equal to -1 -} - -static AtkStateSet *my_atk_object_ref_state_set(AtkObject *accessible) -{ - MyAtkObject *obj = MY_ATK_OBJECT(accessible); - - if (obj->state_set == NULL) - obj->state_set = atk_state_set_new(); - return g_object_ref(G_OBJECT(obj->state_set)); -} - -static AtkAttributeSet *my_atk_object_get_attributes (AtkObject *accessible) -{ - MyAtkObject *obj = MY_ATK_OBJECT(accessible); - AtkAttributeSet *rs = obj->attributes = NULL; - AtkAttribute *a, *b, *c; - - a = g_new(AtkAttribute, 1); - b = g_new(AtkAttribute, 1); - c = g_new(AtkAttribute, 1); - - a->name = g_strdup("foo"); - a->value = g_strdup("bar"); - b->name = g_strdup("baz"); - b->value = g_strdup("qux"); - c->name = g_strdup("quux"); - c->value = g_strdup("corge"); - - rs = g_slist_append(rs, (gpointer) a); - rs = g_slist_append(rs, (gpointer) b); - rs = g_slist_append(rs, (gpointer) c); -} - -//function, needed in instance_finalize() -static void my_unref1(gpointer data, gpointer user_data) -{ - g_object_unref(data); -} - -static void my_atk_object_instance_finalize(GObject *obj) -{ - MyAtkObject *self = (MyAtkObject*) obj; - //unrefs all children - g_ptr_array_foreach(self->children, my_unref1, NULL); - //then free array (without frees pointers) - g_ptr_array_free(self->children, FALSE); - //chain to parent class - G_OBJECT_CLASS(atk_object_parent_class)->finalize(obj); -} - -void my_atk_object_class_init(gpointer g_class, gpointer g_class_data) -{ - AtkObjectClass *atkObjectClass = (AtkObjectClass*)g_class; - - ((GObjectClass*)g_class)->finalize = my_atk_object_instance_finalize; - //set pointers to new functions in table of virtuals functions - atkObjectClass->set_parent = my_atk_object_set_parent; - atkObjectClass->get_n_children = my_atk_object_get_n_children; - atkObjectClass->ref_child = my_atk_object_ref_child; - atkObjectClass->get_index_in_parent = my_atk_object_get_index_in_parent; - atkObjectClass->ref_state_set = my_atk_object_ref_state_set; - atkObjectClass->get_attributes = my_atk_object_get_attributes; - - atk_object_parent_class = g_type_class_peek_parent(g_class); -} - -static void my_atk_object_instance_init(GTypeInstance *obj, gpointer g_class) -{ - MyAtkObject *self = (MyAtkObject*)obj; - - self->children = g_ptr_array_sized_new(10); - self->attributes = g_slist_alloc(); -} - -GType my_atk_object_get_type() -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo typeInfo = - { - sizeof(MyAtkObjectClass), - NULL, //base_init - NULL, //base_finalize - my_atk_object_class_init, //class_init - NULL, //class_finalize - NULL, //class_data - sizeof(MyAtkObject), - 0, //n_preallocs - my_atk_object_instance_init //instance_init - }; - type = g_type_register_static(ATK_TYPE_OBJECT,"MyAtkObject",&typeInfo,0); - } - return type; -} diff --git a/tests/dummyatk/my-atk-object.h b/tests/dummyatk/my-atk-object.h deleted file mode 100644 index 72a4aea..0000000 --- a/tests/dummyatk/my-atk-object.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef MY_ATK_OBJECT_H -#define MY_ATK_OBJECT_H - -#include <atk/atk.h> - -#define MY_TYPE_ATK_OBJECT (my_atk_object_get_type ()) -#define MY_ATK_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_OBJECT, MyAtkObject)) -#define MY_ATK_OBJECT_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_OBJECT, MyAtkObjectClass)) -#define MY_IS_ATK_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_OBJECT)) -#define MY_IS_ATK_OBJECT_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_OBJECT)) -#define MY_ATK_OBJECT_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_OBJECT, MyAtkObjectClass)) - -typedef struct _MyAtkObject MyAtkObject; -typedef struct _MyAtkObjectClass MyAtkObjectClass; - -struct _MyAtkObject -{ - AtkObject parent; - //array of children - AtkStateSet *state_set; - AtkAttributeSet *attributes; - GPtrArray* children; - gint id; -}; - -struct _MyAtkObjectClass -{ - AtkObjectClass parent; -}; - -GType my_atk_object_get_type(); - -void my_atk_object_add_child(MyAtkObject* parent, MyAtkObject* child); - -void my_atk_object_remove_child(MyAtkObject* parent, MyAtkObject* child); - -#endif /*MY_ATK_OBJECT_H*/ diff --git a/tests/dummyatk/my-atk-selection.c b/tests/dummyatk/my-atk-selection.c deleted file mode 100644 index e3f386f..0000000 --- a/tests/dummyatk/my-atk-selection.c +++ /dev/null @@ -1,332 +0,0 @@ -/* This file contains both declaration and definition of the MyAtkSelection, - * a GObject that implements the AtkSelectionIface interface. - */ - -#include <glib-object.h> -#include <atk/atk.h> - -#include "my-atk-object.h" -#include "my-atk-selection.h" - -/******************************************************************/ -/* Implementation */ -/******************************************************************/ -static GObjectClass *parent_class_simple_selection = NULL; - -/* Implementation of the AtkSelectionIface interface. */ -static gboolean -simple_selection_add_selection (AtkSelection *selection, gint i) -{ - MyAtkSelection* self = (MyAtkSelection*)selection; - if ((!self) || self->disposed) - { - return FALSE; - } - - if ((i >= 0) && (i < TEST_SELECTION_NCHILDREN)) - { - /* If the child is not selected, select it and send the signal */ - if (!self->is_selected[i]) - { - self->is_selected[i] = TRUE; - g_signal_emit_by_name ((gpointer)self, "selection-changed"); - } - - return TRUE; - } - else - { - return FALSE; - } - -} - -static gboolean -simple_selection_clear_selection (AtkSelection *selection) -{ - MyAtkSelection* self = (MyAtkSelection*)selection; - if ((!self) || self->disposed) - { - return FALSE; - } - - /* clear selection */ - { - gboolean changed = FALSE; - int i; - for (i = 0; i < TEST_SELECTION_NCHILDREN; ++i) - { - changed |= self->is_selected[i]; - self->is_selected[i] = FALSE; - } - - if (changed) - { - g_signal_emit_by_name ((gpointer)self, "selection-changed"); - } - } - - return TRUE; -} - -static AtkObject* -simple_selection_ref_selection (AtkSelection *selection, gint i) -{ - int pos; - int nsel; - MyAtkSelection* self = (MyAtkSelection*)selection; - if ((!self) || self->disposed) - { - return NULL; - } - - nsel = 0; - for (pos = 0; pos < TEST_SELECTION_NCHILDREN; ++pos) - { - if (self->is_selected[pos]) - { - if (i == nsel) - { - g_object_ref (G_OBJECT (self->child[pos])); - return ATK_OBJECT(self->child[pos]); - } - ++nsel; - } - } - - return NULL; -} - -static gint -simple_selection_get_selection_count (AtkSelection *selection) -{ - MyAtkSelection* self = (MyAtkSelection*)selection; - - int cnt = 0; - int i; - - if ((!self) || self->disposed) - { - return 0; - } - - for (i = 0; i < TEST_SELECTION_NCHILDREN; ++i) - { - if (self->is_selected[i]) - { - ++cnt; - } - } - - return cnt; -} - -static gboolean -simple_selection_is_child_selected (AtkSelection *selection, gint i) -{ - MyAtkSelection* self = (MyAtkSelection*)selection; - if ((!self) || self->disposed) - { - return FALSE; - } - - if ((i >= 0) && (i < TEST_SELECTION_NCHILDREN)) - { - return (self->is_selected[i]); - } - else - { - return FALSE; - } -} - -static gboolean -simple_selection_remove_selection (AtkSelection *selection, gint i) -{ - int pos; - int nsel; - - MyAtkSelection* self = (MyAtkSelection*)selection; - if ((!self) || self->disposed) - { - return FALSE; - } - - nsel = 0; - for (pos = 0; pos < TEST_SELECTION_NCHILDREN; ++pos) - { - if (self->is_selected[pos]) - { - if (i == nsel) - { - self->is_selected[pos] = FALSE; - g_signal_emit_by_name ((gpointer)self, "selection-changed"); - return TRUE; - } - ++nsel; - } - } - - return TRUE; -} - -static gboolean -simple_selection_select_all_selection (AtkSelection *selection) -{ - MyAtkSelection* self = (MyAtkSelection*)selection; - if ((!self) || self->disposed) - { - return FALSE; - } - - if (!self->multisel_supported) - { - return FALSE; - } - - /* select all */ - { - gboolean changed = FALSE; - int i; - for (i = 0; i < TEST_SELECTION_NCHILDREN; ++i) - { - changed |= !self->is_selected[i]; - self->is_selected[i] = TRUE; - } - - if (changed) - { - g_signal_emit_by_name ((gpointer)self, "selection-changed"); - } - } - - return TRUE; -} - -/******************************************************************/ -static void -simple_selection_interface_init (gpointer g_iface, gpointer iface_data) -{ - AtkSelectionIface *klass = (AtkSelectionIface *)g_iface; - - /* set up overrides here */ - klass->add_selection = - (gboolean (*) (AtkSelection *selection, gint i)) simple_selection_add_selection; - - klass->clear_selection = - (gboolean (*) (AtkSelection *selection)) simple_selection_clear_selection; - - klass->ref_selection = - (AtkObject* (*) (AtkSelection *selection, gint i)) simple_selection_ref_selection; - - klass->get_selection_count = - (gint (*) (AtkSelection *selection)) simple_selection_get_selection_count; - - klass->is_child_selected = - (gboolean (*) (AtkSelection *selection, gint i)) simple_selection_is_child_selected; - - klass->remove_selection = - (gboolean (*) (AtkSelection *selection, gint i)) simple_selection_remove_selection; - - klass->select_all_selection = - (gboolean (*) (AtkSelection *selection)) simple_selection_select_all_selection; -} - -static void -simple_selection_instance_init (GTypeInstance *instance, gpointer g_class) -{ - MyAtkSelection *self = (MyAtkSelection *)instance; - int i; - - self->disposed = FALSE; - self->multisel_supported = TRUE; - for (i = 0; i < TEST_SELECTION_NCHILDREN; ++i) - { - self->child[i] = MY_ATK_OBJECT (g_object_new (MY_TYPE_ATK_OBJECT, NULL)); - self->child[i]->id = i; - self->is_selected[i] = FALSE; /* not selected by default */ - } -} - -static void -my_atk_selection_dispose (GObject *obj) -{ - MyAtkSelection *self = (MyAtkSelection *)obj; - int i; - - if (self->disposed) - { - return; - } - - /* Make sure dispose does not run twice. */ - self->disposed = TRUE; - - for (i = 0; i < TEST_SELECTION_NCHILDREN; ++i) - { - g_object_unref (G_OBJECT (self->child[i])); - } - - /* Chain up to the parent class */ - G_OBJECT_CLASS (parent_class_simple_selection)->dispose (obj); -} - -static void -my_atk_selection_finalize (GObject *obj) -{ - /*MyAtkSelection *self = (MyAtkSelection *)obj; - if (self) - { - }*/ - - /* Chain up to the parent class */ - G_OBJECT_CLASS (parent_class_simple_selection)->finalize (obj); -} - -static void -my_atk_selection_class_init (gpointer g_class, gpointer g_class_data) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (g_class); - MyAtkSelectionClass *klass = MY_ATK_SELECTION_CLASS (g_class); - - gobject_class->dispose = my_atk_selection_dispose; - gobject_class->finalize = my_atk_selection_finalize; - - parent_class_simple_selection = g_type_class_peek_parent (klass); -} - -GType -my_atk_selection_get_type (void) -{ - static GType type = 0; - if (type == 0) - { - static const GTypeInfo info = - { - sizeof (MyAtkSelectionClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - my_atk_selection_class_init, /* class_init */ - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (MyAtkSelection), - 0, /* n_preallocs */ - simple_selection_instance_init /* instance_init */ - }; - - static const GInterfaceInfo iface_info = - { - (GInterfaceInitFunc) simple_selection_interface_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ - }; - type = g_type_register_static (MY_TYPE_ATK_OBJECT, - "MyAtkSelectionType", - &info, 0); - g_type_add_interface_static (type, - ATK_TYPE_SELECTION, - &iface_info); - } - return type; -} - diff --git a/tests/dummyatk/my-atk-selection.h b/tests/dummyatk/my-atk-selection.h deleted file mode 100644 index 8e8fcf5..0000000 --- a/tests/dummyatk/my-atk-selection.h +++ /dev/null @@ -1,55 +0,0 @@ -/* This file contains both declaration and definition of the MyAtkSelection, - * a GObject that implements the AtkSelectionIface interface. - */ - -#ifndef MY_ATK_SELECTION_H -#define MY_ATK_SELECTION_H - -#include <glib-object.h> -#include <atk/atk.h> - -#include <my-atk-object.h> - -#define MY_TYPE_ATK_SELECTION (my_atk_selection_get_type ()) -#define MY_ATK_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_SELECTION, MyAtkSelection)) -#define MY_ATK_SELECTION_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_SELECTION, MyAtkSelectionClass)) -#define MY_IS_ATK_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_SELECTION)) -#define MY_IS_ATK_SELECTION_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_SELECTION)) -#define MY_ATK_SELECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_SELECTION, MyAtkSelectionClass)) - -/* Number of child objects for the MyAtkSelection instance */ -#define TEST_SELECTION_NCHILDREN 10 - -typedef struct _MyAtkSelection MyAtkSelection; -typedef struct _MyAtkSelectionClass MyAtkSelectionClass; - -struct _MyAtkSelection -{ - MyAtkObject parent; - - gboolean disposed; - - /* TRUE if multiple selection is supported, FALSE otherwise. - * default - TRUE. - */ - gboolean multisel_supported; - - /* Children of this object */ - MyAtkObject* child[TEST_SELECTION_NCHILDREN]; - - /* is_selected[i] == TRUE means the ith child is selected, == FALSE - - * it is not. - */ - gboolean is_selected[TEST_SELECTION_NCHILDREN]; -}; - -struct _MyAtkSelectionClass -{ - MyAtkObjectClass parent; -}; - -GType -my_atk_selection_get_type (void); - -#endif /*MY_ATK_SELECTION_H*/ - diff --git a/tests/dummyatk/my-atk-streamable-content.c b/tests/dummyatk/my-atk-streamable-content.c deleted file mode 100644 index 460dd9a..0000000 --- a/tests/dummyatk/my-atk-streamable-content.c +++ /dev/null @@ -1,96 +0,0 @@ -#include <atk/atk.h> - -#include "my-atk-object.h" -#include "my-atk-streamable-content.h" - -//*************************implementation*********************** -//implementation of virtual functions -//*****************get_n_mime_types************ -static gint my_atk_streamable_content_get_n_mime_types( - AtkStreamableContent *streamable) -{ - g_return_val_if_fail(MY_IS_ATK_STREAMABLE_CONTENT(streamable), 0); - - return sizeof(mime_types) / sizeof(mime_types[0]); -} -//*****************get_mime_type**************** -static const gchar* my_atk_streamable_content_get_mime_type( - AtkStreamableContent *streamable, - gint i) -{ - g_return_val_if_fail(MY_IS_ATK_STREAMABLE_CONTENT(streamable), NULL); - - if((i < 0) || (i >= sizeof(mime_types) / sizeof(mime_types[0]))) - { - return NULL; - } - return mime_types[i]; -} -//**********************get_stream******************* -static GIOChannel* my_atk_streamable_content_get_stream( - AtkStreamableContent *streamable, - const gchar* mime_type) -{ - gint i; - g_return_val_if_fail(MY_IS_ATK_STREAMABLE_CONTENT(streamable), NULL); - - for(i = 0; i < sizeof(mime_types) / sizeof(mime_types[0]); i++) - { - if(strcmp(mime_type, mime_types[i]) == 0) - { - GError *error = NULL; - gchar* full_filename = T2C_GET_DATA_PATH(file_names[i]); - GIOChannel* channel = g_io_channel_new_file(full_filename, "r", &error); - if(error != NULL) - { - TRACE("Cannot open file '%s' for read: %s", full_filename, - error->message); - g_error_free(error); - } - g_free(full_filename); - return channel; - } - } - return NULL; -} -//others functions -static void my_atk_streamable_content_interface_init(gpointer g_iface, gpointer iface_data) -{ - AtkStreamableContentIface *klass = (AtkStreamableContentIface*)g_iface; - - klass->get_n_mime_types = my_atk_streamable_content_get_n_mime_types; - klass->get_mime_type = my_atk_streamable_content_get_mime_type; - klass->get_stream = my_atk_streamable_content_get_stream; -} - -GType my_atk_streamable_content_get_type() -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo typeInfo = - { - sizeof(MyAtkStreamableContentClass), - NULL, //base_init - NULL, //base_finalize - NULL, //class_init - NULL, //class_finalize - NULL, //class_data - sizeof(MyAtkStreamableContent), - 0, //n_preallocs - NULL //instance_init - }; - - static const GInterfaceInfo iface_info = - { - my_atk_streamable_content_interface_init, /* interface_init*/ - NULL, /* interface_finalize*/ - NULL /* interface_data */ - }; - type = g_type_register_static(MY_TYPE_ATK_OBJECT, "MyAtkStreamableContent", &typeInfo, 0); - g_type_add_interface_static(type, - ATK_TYPE_STREAMABLE_CONTENT, - &iface_info); - } - return type; -} diff --git a/tests/dummyatk/my-atk-streamable-content.h b/tests/dummyatk/my-atk-streamable-content.h deleted file mode 100644 index 7a476ac..0000000 --- a/tests/dummyatk/my-atk-streamable-content.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef MY_ATK_STREAMABLE_CONTENT_H -#define MY_ATK_STREAMABLE_CONTENT_H - -/* - * MyAtkStreamableContent: derives GObject and implements AtkStreamableContent - */ - -#include <atk/atk.h> - -#include "my-atk-object.h" - -#define MY_TYPE_ATK_STREAMABLE_CONTENT (my_atk_streamable_content_get_type ()) -#define MY_ATK_STREAMABLE_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_STREAMABLE_CONTENT, MyAtkStreamableContent)) -#define MY_ATK_STREAMABLE_CONTENT_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_STREAMABLE_CONTENT, MyAtkStreamableContentClass)) -#define MY_IS_ATK_STREAMABLE_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_STREAMABLE_CONTENT)) -#define MY_IS_ATK_STREAMABLE_CONTENT_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_STREAMABLE_CONTENT)) -#define MY_ATK_STREAMABLE_CONTENT_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_STREAMABLE_CONTENT, MyAtkStreamableContentClass)) - -typedef struct _MyAtkStreamableContent MyAtkStreamableContent; -typedef struct _MyAtkStreamableContentClass MyAtkStreamableContentClass; - -static const gchar* mime_types[]={"text/plain", "text/richtext"}; -static const gchar* file_names[]={"file1", "file2"}; -struct _MyAtkStreamableContent -{ - MyAtkObject parent; -}; - -struct _MyAtkStreamableContentClass -{ - MyAtkObjectClass parent; -}; - -GType my_atk_streamable_content_get_type(); -#endif /*MY_ATK_STREAMABLE_CONTENT_H*/ diff --git a/tests/dummyatk/my-atk-table.c b/tests/dummyatk/my-atk-table.c deleted file mode 100644 index a76c70e..0000000 --- a/tests/dummyatk/my-atk-table.c +++ /dev/null @@ -1,177 +0,0 @@ -/* This file contains both declaration and definition of the MyAtkTable, - * a GObject that pretends to implement the AtkTableIface interface (it - * registers appropriate interface), but provides no implementation for any of the - * methods of this interface (NULL-filled vftbl). - */ - -#include <glib-object.h> -#include <atk/atk.h> - -#include "my-atk-object.h" -#include "my-atk-table.h" - -/////////////////////////////////////////////////////////////////////////// -// Helper functions and data -/////////////////////////////////////////////////////////////////////////// -void -my_atk_table_select_rows (MyAtkTable* table, gboolean sel_scheme[]) -{ - // the function does nothing -} - -void -my_atk_table_select_columns (MyAtkTable* table, gboolean sel_scheme[]) -{ - // the function does nothing -} - -/////////////////////////////////////////////////////////////////////////// -// Implementation -/////////////////////////////////////////////////////////////////////////// -static GObjectClass *parent_class_table = NULL; - -/******************************************************************/ -static void -table_interface_init (gpointer g_iface, gpointer iface_data) -{ - AtkTableIface *klass = (AtkTableIface *)g_iface; - - /* set up overrides here */ - klass-> ref_at = - (AtkObject* (*) (AtkTable *table, gint row, gint column)) NULL; - klass-> get_index_at = - (gint (*) (AtkTable *table, gint row, gint column)) NULL; - klass-> get_column_at_index = - (gint (*) (AtkTable *table, gint index_)) NULL; - klass-> get_row_at_index = - (gint (*) (AtkTable *table, gint index_)) NULL; - klass-> get_n_columns = - (gint (*) (AtkTable *table)) NULL; - klass-> get_n_rows = - (gint (*) (AtkTable *table)) NULL; - klass-> get_column_extent_at = - (gint (*) (AtkTable *table, gint row, gint column)) NULL; - klass-> get_row_extent_at = - (gint (*) (AtkTable *table, gint row, gint column)) NULL; - klass-> get_caption = - (AtkObject* (*) (AtkTable *table)) NULL; - klass-> get_column_description = - (const gchar* (*) (AtkTable *table, gint column)) NULL; - klass-> get_column_header = - (AtkObject* (*) (AtkTable *table, gint column)) NULL; - klass-> get_row_description = - (const gchar* (*) (AtkTable *table, gint row)) NULL; - klass-> get_row_header = - (AtkObject* (*) (AtkTable *table, gint row)) NULL; - klass-> get_summary = - (AtkObject* (*) (AtkTable *table)) NULL; - klass-> set_caption = - (void (*) (AtkTable *table, AtkObject *caption)) NULL; - klass-> set_column_description = - (void (*) (AtkTable *table, gint column, const gchar *description)) NULL; - klass-> set_column_header = - (void (*) (AtkTable *table, gint column, AtkObject *header)) NULL; - klass-> set_row_description = - (void (*) (AtkTable *table, gint row, const gchar *description)) NULL; - klass-> set_row_header = - (void (*) (AtkTable *table, gint row, AtkObject *header)) NULL; - klass-> set_summary = - (void (*) (AtkTable *table, AtkObject *accessible)) NULL; - klass-> get_selected_columns = - (gint (*) (AtkTable *table, gint **selected)) NULL; - klass-> get_selected_rows = - (gint (*) (AtkTable *table, gint **selected)) NULL; - klass-> is_column_selected = - (gboolean (*) (AtkTable *table, gint column)) NULL; - klass-> is_row_selected = - (gboolean (*) (AtkTable *table, gint row)) NULL; - klass-> is_selected = - (gboolean (*) (AtkTable *table, gint row, gint column)) NULL; - klass-> add_row_selection = - (gboolean (*) (AtkTable *table, gint row)) NULL; - klass-> remove_row_selection = - (gboolean (*) (AtkTable *table, gint row)) NULL; - klass-> add_column_selection = - (gboolean (*) (AtkTable *table, gint column)) NULL; - klass-> remove_column_selection = - (gboolean (*) (AtkTable *table, gint column)) NULL; -} - -static void -table_instance_init (GTypeInstance *instance, gpointer g_class) -{ - MyAtkTable *self = (MyAtkTable *)instance; - - self->disposed = FALSE; -} - -static void -my_atk_table_dispose (GObject *obj) -{ - MyAtkTable *self = (MyAtkTable *)obj; - - if (self->disposed) - { - return; - } - - /* Make sure dispose does not run twice. */ - self->disposed = TRUE; - - /* Chain up to the parent class */ - G_OBJECT_CLASS (parent_class_table)->dispose (obj); -} - -static void -my_atk_table_finalize (GObject *obj) -{ - /* Chain up to the parent class */ - G_OBJECT_CLASS (parent_class_table)->finalize (obj); -} - -static void -my_atk_table_class_init (gpointer g_class, gpointer g_class_data) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (g_class); - MyAtkTableClass *klass = MY_ATK_TABLE_CLASS (g_class); - - gobject_class->dispose = my_atk_table_dispose; - gobject_class->finalize = my_atk_table_finalize; - - parent_class_table = g_type_class_peek_parent (klass); -} - -GType -my_atk_table_get_type (void) -{ - static GType type = 0; - if (type == 0) - { - static const GTypeInfo info = - { - sizeof (MyAtkTableClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - my_atk_table_class_init, /* class_init */ - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (MyAtkTable), - 0, /* n_preallocs */ - table_instance_init /* instance_init */ - }; - - static const GInterfaceInfo iface_info = - { - (GInterfaceInitFunc) table_interface_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ - }; - type = g_type_register_static (MY_TYPE_ATK_OBJECT, - "MyAtkTableType", - &info, 0); - g_type_add_interface_static (type, - ATK_TYPE_TABLE, - &iface_info); - } - return type; -} diff --git a/tests/dummyatk/my-atk-table.h b/tests/dummyatk/my-atk-table.h deleted file mode 100644 index 7860a2d..0000000 --- a/tests/dummyatk/my-atk-table.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef MY_ATK_TABLE_H -#define MY_ATK_TABLE_H - -#include <glib-object.h> -#include <atk/atk.h> -#include <my-atk-object.h> - -#define MY_TYPE_ATK_TABLE (my_atk_table_get_type ()) -#define MY_ATK_TABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_TABLE, MyAtkTable)) -#define MY_ATK_TABLE_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_TABLE, MyAtkTableClass)) -#define MY_IS_ATK_TABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_TABLE)) -#define MY_IS_ATK_TABLE_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_TABLE)) -#define MY_ATK_TABLE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_TABLE, MyAtkTableClass)) - -#define NROWS 4 /* row count */ -#define NCOLS 5 /* column count */ - -static gint ids[NROWS][NCOLS] = - { {0, 1, 2, 2, 3}, - {4, 5, 6, 7, 8}, - {9, 9, 10, 11, 12}, - {9, 9, 13, 14, -1} }; - -static gint row_ext[NROWS][NCOLS] = - { {1, 1, 1, 1, 1}, - {1, 1, 1, 1, 1}, - {2, 2, 1, 1, 1}, - {2, 2, 1, 1, 1} }; - -static gint col_ext[NROWS][NCOLS] = - { {1, 1, 2, 2, 1}, - {1, 1, 1, 1, 1}, - {2, 2, 1, 1, 1}, - {2, 2, 1, 1, 1} }; - -#define NCHILDREN 16 /* child object count */ - -// default string values -#define DEF_CAPTION_TEXT "Default table caption" -#define DEF_SUMMARY_TEXT "Default table summary" -#define DEF_ROW_DESCR_TPL "Row No%d" -#define DEF_COL_DESCR_TPL "Column No%d" - -/* row and column headers */ -typedef struct -{ - AtkObject* hdr; - gboolean selected; /* TRUE if the row/column is selected, FALSE otherwise */ -} TestSimpleHeaderStruct; - -/* This struct represents a table cell */ -typedef struct -{ - MyAtkObject* elem; /* the element */ - guint ext_row; /* its row extent */ - guint ext_col; /* its column extent */ -} TestSimpleCell; - -typedef struct _MyAtkTable MyAtkTable; -typedef struct _MyAtkTableClass MyAtkTableClass; - -struct _MyAtkTable -{ - MyAtkObject parent; - - gboolean disposed; - - MyAtkObject* child[NCHILDREN]; - MyAtkObject* not_a_child; - TestSimpleHeaderStruct row[NROWS]; - TestSimpleHeaderStruct col[NCOLS]; - guint nrows; - guint ncols; - AtkObject* caption; - AtkObject* summary; -}; - -struct _MyAtkTableClass -{ - MyAtkObjectClass parent; -}; - -GType -my_atk_table_get_type (void); - -#endif /*MY_ATK_TABLE_H*/ diff --git a/tests/dummyatk/my-atk-text.c b/tests/dummyatk/my-atk-text.c deleted file mode 100644 index 6729c4b..0000000 --- a/tests/dummyatk/my-atk-text.c +++ /dev/null @@ -1,1290 +0,0 @@ - -#include <atk/atk.h> -#include <string.h> -#include <limits.h> -#include <useful_functions.h> - -#include "my-atk-text.h" -//*************************implementation*********************** - -//Attributes -/* - * Auxiliary functions create/copy/print/free structures - * Use the same naming principe, as atk, but without 'atk' prefix - */ - //AtkAttribute -AtkAttribute* attribute_new(const gchar* name, const gchar* value) -{ - AtkAttribute* attr = g_malloc(sizeof(AtkAttribute)); - if(attr == NULL) return NULL; - attr->name = g_strdup(name); - attr->value = g_strdup(value); - return attr; -} -AtkAttribute* attribute_copy(AtkAttribute* attr) -{ - return attribute_new(attr->name, attr->value); -} -void attribute_print(AtkAttribute* attr) -{ - TRACE("name=%s, value=%s", attr->name, attr->value); -} - -//AtkAttributeSet -AtkAttributeSet* attribute_set_copy(AtkAttributeSet* attr) -{ - GSList *tmp; - AtkAttributeSet* result = g_slist_copy(attr); - for(tmp = result; tmp != NULL; tmp = tmp->next) - tmp->data = attribute_copy((AtkAttribute*)tmp->data); - return result; -} -void attribute_set_print(AtkAttributeSet *set) -{ - if(set == NULL) - TRACE0("(empty)"); - else - g_slist_foreach(set, (GFunc)attribute_print, NULL); -} - -// STATIC FUNCTIONS -// -//auxiliary functions for search tokens -//Number of different characters -#define TABLE_SIZE 256 -//modificator static isn't used because this tables will be use in tests -/*static*/ gboolean table_word_symbols[TABLE_SIZE], - table_sentence_symbols[TABLE_SIZE], - table_line_symbols[TABLE_SIZE]; -static gboolean *tables[7]={NULL, - table_word_symbols, - table_word_symbols, - table_sentence_symbols, - table_sentence_symbols, - table_line_symbols, - table_line_symbols - }; - -static gboolean current_token(const gchar* str, gint offset, gint *token_start, gint *token_end, - const gboolean table_token_symbols[TABLE_SIZE]) -{ - const gchar *current = str + offset; - if(!table_token_symbols[(guchar)*current]) - { - return FALSE; - } - for( --current; (current >= str) && table_token_symbols[(guchar)*current]; --current); - *token_start = current - str + 1; - for(current = str + offset + 1; - (*current != 0) && table_token_symbols[(guchar)*current]; ++current); - *token_end = current - str; - return TRUE; -} -static gboolean next_token(const gchar* str, gint offset, gint *token_start, gint *token_end, - const gboolean table_token_symbols[TABLE_SIZE]) -{ - const gchar *current = str + offset; - for( ; (*current != 0) && table_token_symbols[(guchar)*current]; ++current); - if(*current == 0) - return FALSE; - for(++current ; (*current != 0) && !table_token_symbols[(guchar)*current]; ++current); - if(!table_token_symbols[(guchar)*current]) - return FALSE; - return current_token(str, current - str, token_start, token_end, table_token_symbols); -} -static gboolean previous_token(const gchar* str, gint offset, gint *token_start, gint *token_end, - const gboolean table_token_symbols[TABLE_SIZE]) -{ - const gchar *current = str + offset; - for( ; (current > str) && table_token_symbols[(guchar)*current]; --current); - if(current == str) - return FALSE; - for( ; (current > str) && !table_token_symbols[(guchar)*current]; --current); - if(!table_token_symbols[(guchar)*current]) - return FALSE; - return current_token(str, current - str, token_start, token_end, table_token_symbols); -} - - -//Range: type of data, containing in list of attributes -typedef struct -{ - gint start,end;//range, containing this attributes - AtkAttributeSet* attributeSet; -} Range; -//auxiliary functions for ranges -Range* range_new(gint start, gint end) -{ - Range *range = g_malloc(sizeof(Range)); - range->start = start; - range->end = end; - range->attributeSet = NULL; - return range; -} - -void range_free(Range* range) -{ - atk_attribute_set_free(range->attributeSet); - g_free(range); -} -void range_print(const Range*range) -{ - TRACE("[%d,%d):", range->start, range->end); - attribute_set_print(range->attributeSet); -} -//only for correct list of ranges - ranges shouldn't intersect -gint range_compare(const Range* range1, const Range* range2) -{ - return range1->start - range2->start;//never equal -} -//Bounds of text -void text_bounds_init(TextBounds *bounds) -{ - bounds->base_x = 0; - bounds->base_y = 0; - bounds->pixels_above_line = 2; - bounds->pixels_below_line = 3; - bounds->size = 8; - bounds->pixels_between_characters = 1; - bounds->width = 3; -} - -//auxiliary function - create new range according to start_offset and end_offset -AtkTextRange* text_range_new(AtkText* text, - gint start_offset, gint end_offset, AtkCoordType coord_type) -{ - AtkTextRange* range = g_malloc(sizeof(AtkTextRange)); - if(range == NULL) return NULL; - range->start_offset = start_offset; - range->end_offset = end_offset; - range->content = atk_text_get_text(text, start_offset, end_offset); - atk_text_get_range_extents(text, start_offset, end_offset, coord_type, &range->bounds); - return range; -} -// Returns number of line, which contain given character. -// Also return relative offset - offset of this character from start of the line -gint get_character_line(MyAtkText *text, gint offset, gint *relative_offset) -{ - gint result = 0; - //simple realization - counts lines from start of the text, until reaches offset - const guchar *text_str = (guchar*)text->str; - gboolean state_FSM = table_line_symbols[text_str[0]]; - gint i, last_line_start = 0; - for(i = 1; i <= offset; state_FSM = table_line_symbols[text_str[i++]]) - { - if(state_FSM)continue; - result++; - last_line_start = i; - } - if(relative_offset != NULL) *relative_offset = offset - last_line_start; - return result; -} -// Compute extent of character, -// as it was at line 'line' and at offset 'relative_offset' in that line -//(geometry) -void get_extents(MyAtkText *text, gint line, gint relative_offset, AtkTextRectangle *rect) -{ - rect->x = text->bounds.base_x + relative_offset * - (text->bounds.width + text->bounds.pixels_between_characters); - rect->y = text->bounds.base_y + text->bounds.pixels_above_line + line * - (text->bounds.size + text->bounds.pixels_below_line + text->bounds.pixels_above_line); - rect->width = text->bounds.width; - rect->height = text->bounds.size; -} -//return line, corresponding to given y-coordinate -gint get_point_line(MyAtkText *text, gint y) -{ - //slightly differ from invers operation - if(y - text->bounds.base_y < 0)return -1; - return (y - text->bounds.base_y) - /(text->bounds.size + text->bounds.pixels_below_line + text->bounds.pixels_above_line); -} -// Returns offset from left boundary of text, correspondind to x-coordinate -gint get_point_relative_offset(MyAtkText *text, gint x) -{ - //slightly differ from invers operation - if(x - text->bounds.base_x < 0)return -1; - return (x - text->bounds.base_x) - /(text->bounds.width + text->bounds.pixels_between_characters); -} -// Returns offset where given line start(even if this line is empty) -// If line number too small(<0)return -1, if too big - return length of the text -gint get_offset_at_line_start(MyAtkText *text, gint line) -{ - gint i; - if(line < 0)return -1; - if(line == 0)return 0; - gint len = my_strlen(text->str); - guchar *str = (guchar*)text->str; - gint current_line = 0; - gboolean state_FSM = table_line_symbols[str[0]]; - for(i = 1; i < len; state_FSM = table_line_symbols[str[i++]]) - { - if(state_FSM || ++current_line != line)continue; - return i; - } - return len; - -} -// Return offset of character at the given line and at the given offset at this line -// If such character doesn't exist, return -1 -gint get_offset_at_line(MyAtkText *text, gint line, gint relative_offset) -{ - gint j; - if(line < 0 || relative_offset < 0)return -1; - const guchar* str = (guchar*)text->str; - gint len = my_strlen(text->str); - gint offset_at_line_start = get_offset_at_line_start(text, line); - if(offset_at_line_start + relative_offset >= len)return -1; - for(j = 0; j <= relative_offset; j++) - if(!table_line_symbols[str[offset_at_line_start + j]]) - return -1; - return offset_at_line_start + relative_offset; -} -/* - * Count ranges of text, which clipping by rel_start_offset and relative_end_offset. - * 'offset' stands start of search(start of first line), - * number_of_lines - maximum number of lines for search. - * If 'ranges' not NULL, writes ranges to it. 'coord_type' used only in this case. - */ -gint count_ranges(MyAtkText *text, gint offset, gint rel_start_offset, gint rel_end_offset, - gint number_of_lines, AtkTextRange** ranges, AtkCoordType coord_type) -{ - guchar *str = (guchar*)text->str; - gint len = my_strlen(text->str); - - gint number_of_ranges = 0; - gint current_line = 0; - gint current_line_start = offset; - for(;(current_line < number_of_lines) && (current_line_start < len); current_line ++) - { - if(!table_line_symbols[str[current_line_start]]) - { - current_line_start++; - continue; - } - gint start_offset,end_offset; - gchar *tmp_str = atk_text_get_text_at_offset((AtkText*)text, current_line_start, - ATK_TEXT_BOUNDARY_LINE_END, &start_offset, &end_offset); - g_free(tmp_str); - if(end_offset - current_line_start > rel_start_offset) - { - if(ranges != NULL) - { - gint range_start_offset = current_line_start + rel_start_offset; - gint range_end_offset = current_line_start + rel_end_offset + 1; - if(range_end_offset > end_offset) - range_end_offset = end_offset; - //add element - ranges[number_of_ranges] = text_range_new((AtkText*)text, - range_start_offset, range_end_offset, coord_type); - } - number_of_ranges++; - } - current_line_start = end_offset + 1; - } - if(ranges != NULL) ranges[number_of_ranges] = NULL; - return number_of_ranges; -} - -//"free"-functions(for internal using, because them don't emit signals) -void my_atk_text_free_run_attributes(MyAtkText *text) -{ - g_list_foreach(text->attributes, (GFunc)range_free, NULL); - g_list_free(text->attributes); - text->attributes = NULL; -} -void my_atk_text_free_default_attributes(MyAtkText *text) -{ - atk_attribute_set_free(text->default_attributes); - text->default_attributes = NULL; -} -void my_atk_text_clear_selections(MyAtkText *text) -{ - if(text->selections->len != 0) - g_array_remove_range(text->selections, 0, text->selections->len); -} -void table_symbols_init() -{ - //word - gint i; - for(i = TABLE_SIZE - 1;i > 0 ; --i) - table_word_symbols[i] = g_ascii_isalnum(i); - table_word_symbols['\0'] = FALSE; - //sentence - for(i = TABLE_SIZE - 1;i >= 0x20; --i) - table_sentence_symbols[i] = TRUE; - table_sentence_symbols['.'] = FALSE; - table_sentence_symbols['!'] = FALSE; - table_sentence_symbols['?'] = FALSE; - for(i = 0x1f;i > 0; --i) - table_sentence_symbols[i] = FALSE; - table_sentence_symbols['\0'] = FALSE; - //line - for(i = TABLE_SIZE - 1;i > 0 ; --i) - table_line_symbols[i] = TRUE; - table_line_symbols['\n'] = FALSE; - table_line_symbols['\0'] = FALSE; -} -void correct_selections_after_insert(MyAtkText *text, gint position, gint length) -{ - gint i; - GArray* selections = text->selections; - for(i = selections->len - 1; i >=0; i--) - { - TextSelection* sel = &g_array_index(selections, TextSelection, i); - if(sel->end_offset >= position) sel->end_offset+= length; - if(sel->start_offset >= position) sel->start_offset+= length; - else break; - } -} -void correct_selections_after_delete(MyAtkText *text, gint position, gint length) -{ - gint i; - GArray* selections = text->selections; - for(i = selections->len - 1; i >=0; i--) - { - TextSelection* sel = &g_array_index(selections, TextSelection, i); - if(sel->start_offset >= position) - { - if(sel->start_offset >= position + length) - { - sel->start_offset-= length; - sel->end_offset-= length; - } - //position <= sel->start_offset < position + length - else if(sel->end_offset > position + length) - { - sel->start_offset = position; - sel->end_offset -= length; - } - else - { - g_array_remove_index(selections, i); - } - continue; - } - /*sel->start_offset < position*/ - if(sel->end_offset > position + length) sel->end_offset-= length; - else if(sel->end_offset > position) sel->end_offset = position; - break; - } -} -void correct_attributes_after_insert(MyAtkText* text, gint position, gint length) -{ - GList *attributes = text->attributes; - GList *tmp; - //before inserted position - for(tmp = attributes; tmp != NULL; tmp = tmp -> next) - { - Range* range = (Range*)tmp->data; - if(range->end <= position)continue; - //range->end > position - if(range->start < position) - range->start -= length;//will be restore in the next loop - break; - } - //after inserted position - for(; tmp != NULL; tmp = tmp -> next) - { - Range* range = (Range*)tmp->data; - range->end += length; - range->start += length; - } -} -void correct_attributes_after_delete(MyAtkText* text, gint position, gint length) -{ - GList *attributes = text->attributes; - GList *tmp = attributes; - //before deleting range - for(tmp = attributes; tmp != NULL; tmp = tmp->next) - { - Range* range = (Range*)tmp->data; - if(range->end <= position) continue; - if(range->start < position) - { - if(range->end > position + length) range->end -= length; - else range->end = position; - tmp = tmp->next; - } - break; - } - //at deleting range - while(tmp != NULL) - { - Range* range = (Range*)tmp->data; - if(range->start >= position + length) break; - if(range->end <= position + length) - { - GList *tmp1 = tmp->next; - range_free(range); - attributes = g_list_remove_link(attributes, tmp); - tmp = tmp1; - continue; - } - //range->end > position + length - //range->start < position + length - range->start = position + length;//will be restored in next loop - break; - } - //after deleting range - for(;tmp != NULL; tmp = tmp->next) - { - Range* range = (Range*)tmp->data; - range->end -= length; - range->start -= length; - } - text->attributes = attributes; -} -void correct_caret_after_insert(MyAtkText* text, gint position, gint length) -{ - if(text->caret_offset > position)text->caret_offset += length; -} -void correct_caret_after_delete(MyAtkText* text, gint position, gint length) -{ - if(text->caret_offset >= position + length)text->caret_offset -= length; - else if(text->caret_offset > position) text->caret_offset = position; -} - -// Implementation of virtual functions -//******************************my_atk_text_get_character_count************************* -static gint my_atk_text_get_character_count(AtkText *text) -{ - MyAtkText *self = (MyAtkText*)text; - return my_strlen(self->str); -} -//**************************************my_atk_text_get_text***************************** -static gchar* my_atk_text_get_text(AtkText *text, gint start_offset, gint end_offset) -{ - gchar *str = ((MyAtkText*)text)->str; - if((start_offset < 0) || (end_offset > my_strlen(str)) || (end_offset <= start_offset)) - { - //incorrect bounds - return NULL; - } - return g_strndup(str + start_offset, end_offset - start_offset); - -} -//*******************************my_atk_text_get_character_at_offset************************ -static gunichar my_atk_text_get_character_at_offset(AtkText *text, gint offset) -{ - gchar *str = ((MyAtkText*)text)->str; - if(offset < 0 || offset >= my_strlen(str)) - { - return 0; - } - return (gunichar)str[offset]; -} -// In the next 3 functions some code is commented for verify tests themselves on 'mutants' -// in realization. -//******************************my_atk_text_get_text_after_offset*************************** -static gchar* my_atk_text_get_text_after_offset(AtkText *text, gint offset, - AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset) -{ - gchar *str = ((MyAtkText*)text)->str; - gint len = my_strlen(str); - if((offset < 0) || (offset >= len)) - { - return NULL;//incorrect offset - } - - // This variable is set in switch statement. If after that statement variable is TRUE, - // then return text from 'strat_offset' to 'end_offset'. Otherwise NULL will be returned. - gboolean is_successed = TRUE; - - gint start_tmp; - gint end_tmp; - - switch(boundary_type) - { - case ATK_TEXT_BOUNDARY_CHAR: - if(offset + 1 == len) - { - is_successed = FALSE; - break; - } - *start_offset = offset + 1; - *end_offset = offset + 2; - is_successed = TRUE; - break; - case ATK_TEXT_BOUNDARY_WORD_START: - case ATK_TEXT_BOUNDARY_SENTENCE_START: - case ATK_TEXT_BOUNDARY_LINE_START: - if(!next_token(str, offset, start_offset, &end_tmp, tables[boundary_type])) - { - //debug -// if(current_token(str, offset, start_offset, end_offset, tables[boundary_type])) -// { -// is_successed = TRUE; -// break; -// } - is_successed = FALSE; - break; - } - if(!next_token(str, end_tmp, end_offset, &end_tmp, tables[boundary_type])) - { - *end_offset = len; - } - is_successed = TRUE; - //debug -// (*start_offset)++; -// if(*start_offset > 10) ++(*start_offset); - break; - case ATK_TEXT_BOUNDARY_WORD_END: - case ATK_TEXT_BOUNDARY_SENTENCE_END: - case ATK_TEXT_BOUNDARY_LINE_END: - if(!current_token(str, offset, &start_tmp, start_offset, tables[boundary_type])) - { - if(!next_token(str, offset, &start_tmp, start_offset, tables[boundary_type])) - { - is_successed = FALSE; - break; - } - } - //debug -// else if(*start_offset > strlen(str) - 7) -// { -// *end_offset = *start_offset + 3; -// is_successed = TRUE; -// break; -// } - if(!next_token(str, *start_offset, &start_tmp, end_offset, tables[boundary_type])) - { - is_successed = FALSE; - break; - } - //debug -// --(*start_offset); - is_successed = TRUE; - - break; - default: - is_successed = FALSE; - } - - if(is_successed) - { - return my_atk_text_get_text(text, *start_offset, *end_offset); - } - else - { - return NULL; - } -} -//*******************************my_atk_text_get_text_at_offset******************************* -static gchar* my_atk_text_get_text_at_offset(AtkText *text, gint offset, - AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset) -{ - gchar *str = ((MyAtkText*)text)->str; - gint len = my_strlen(str); - if((offset < 0) || (offset >= len)) - { - return NULL; - } - - // This variable is set in switch statement. If after that statement variable is TRUE, - // then return text from 'strat_offset' to 'end_offset'. Otherwise NULL will be returned. - gboolean is_successed = TRUE; - - gint start_tmp; - gint end_tmp; - - switch(boundary_type) - { - case ATK_TEXT_BOUNDARY_CHAR: - *start_offset = offset; - *end_offset = offset + 1; - is_successed = TRUE; - break; - case ATK_TEXT_BOUNDARY_WORD_START: - case ATK_TEXT_BOUNDARY_SENTENCE_START: - case ATK_TEXT_BOUNDARY_LINE_START: - if(!current_token(str, offset, start_offset, &end_tmp, tables[boundary_type])) - { - if(!previous_token(str, offset, start_offset, &end_tmp, tables[boundary_type])) - { - is_successed = FALSE; - break; - } - } - if(!next_token(str, offset, end_offset, &end_tmp, tables[boundary_type])) - { - *end_offset = len; - } - is_successed = TRUE; - break; - case ATK_TEXT_BOUNDARY_WORD_END: - case ATK_TEXT_BOUNDARY_SENTENCE_END: - case ATK_TEXT_BOUNDARY_LINE_END: - if(!current_token(str, offset, &start_tmp, end_offset, tables[boundary_type])) - { - if(!next_token(str, offset, &start_tmp, end_offset, tables[boundary_type])) - { - is_successed = FALSE; - break; - } - } - if(!previous_token(str, start_tmp, &start_tmp, start_offset, tables[boundary_type])) - { - *start_offset = 0; - } - is_successed = TRUE; - //debug -// ++(*start_offset); - break; - default: - is_successed = FALSE; - } - - if(is_successed) - { - //debug -// if(boundary_type == ATK_TEXT_BOUNDARY_LINE_START) -// return my_atk_text_get_text(text, ++(*start_offset), *end_offset); - return my_atk_text_get_text(text, *start_offset, *end_offset); - } - else - { - return NULL; - } -} -//***********************************my_atk_text_get_text_before_offset****************** -static gchar* my_atk_text_get_text_before_offset(AtkText *text, gint offset, - AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset) -{ - gchar *str = ((MyAtkText*)text)->str; - gint len = my_strlen(str); - if((offset < 0) || (offset >= len)) - { - return NULL; - } - - // This variable is set in switch statement. If after that statement variable is TRUE, - // then return text from 'strat_offset' to 'end_offset'. Otherwise NULL will be returned. - gboolean is_successed = TRUE; - - gint start_tmp; - gint end_tmp; - - switch(boundary_type) - { - case ATK_TEXT_BOUNDARY_CHAR: - if(offset == 0) - { - is_successed = FALSE; - break; - } - *start_offset = offset - 1; - *end_offset = offset; - is_successed = TRUE; - break; - case ATK_TEXT_BOUNDARY_WORD_START: - case ATK_TEXT_BOUNDARY_SENTENCE_START: - case ATK_TEXT_BOUNDARY_LINE_START: - if(!current_token(str, offset, end_offset, &end_tmp, tables[boundary_type])) - { - if(!previous_token(str, offset, end_offset, &end_tmp, tables[boundary_type])) - { - is_successed = FALSE; - break; - } - } - if(!previous_token(str, *end_offset, start_offset, &end_tmp, tables[boundary_type])) - { - is_successed = FALSE; - break; - } - is_successed = TRUE; - //debug -// ++(*start_offset); - break; - case ATK_TEXT_BOUNDARY_WORD_END: - case ATK_TEXT_BOUNDARY_SENTENCE_END: - case ATK_TEXT_BOUNDARY_LINE_END: - if(!previous_token(str, offset, &start_tmp, end_offset, tables[boundary_type])) - { - is_successed = FALSE; - break; - } - if(!previous_token(str, start_tmp, &start_tmp, start_offset, tables[boundary_type])) - { - *start_offset = 0; - } - is_successed = TRUE; - break; - default: - is_successed = FALSE; - } - - if(is_successed) - { - return my_atk_text_get_text(text, *start_offset, *end_offset); - } - else - { - return NULL; - } -} -//*********************************my_atk_text_get_run_attributes***************** -AtkAttributeSet* my_atk_text_get_run_attributes(AtkText* text, gint offset, - gint *start_offset, gint *end_offset) -{ - GList *tmp; - GList *attributes = ((MyAtkText*)text)->attributes; - if(offset < 0 || offset >= my_atk_text_get_character_count(text)) - { - TRACE0("Incorrect value of offset."); - return NULL; - } - gint start = -1, end = -1; - for(tmp = attributes; tmp != NULL; tmp = tmp->next) - { - Range* range = (Range*)(tmp->data); - if(range->end <= offset) - { - start = range->end; - continue; - } - if(range->start > offset) - { - end = range->start; - break; - } - - *start_offset = range->start; - *end_offset = range->end; - return attribute_set_copy(range->attributeSet); - } - *start_offset = (start == -1) ? 0 : start; - *end_offset = (end == -1) ? my_atk_text_get_character_count(text) : end; - return NULL; -} -//*********************************my_atk_text_get_default_attributes***************** -AtkAttributeSet* my_atk_text_get_default_attributes(AtkText* text) -{ - return attribute_set_copy(((MyAtkText*)text)->default_attributes); -} -//*********************************my_atk_text_get_character_extents***************** -void my_atk_text_get_character_extents(AtkText* text, gint offset, gint *x, gint *y, - gint *width, gint *height, AtkCoordType coord_type) -{ - AtkTextRectangle result; - gint relative_offset, line; - line = get_character_line((MyAtkText*)text, offset, &relative_offset); - get_extents((MyAtkText*)text, line, relative_offset, &result); - *x = result.x; - *y = result.y; - *width = result.width; - *height = result.height; -} -//*******************************my_atk_text_get_range_extents************************ -void my_atk_text_get_range_extents(AtkText *text, gint start_offset, gint end_offset, - AtkCoordType coord_type, AtkTextRectangle *rect) -{ - //simple - union of extents of the characters, contained in this range - AtkTextRectangle result, bounds_tmp; - gint i; - - atk_text_get_character_extents (text, start_offset, - &result.x, &result.y, - &result.width, &result.height, - coord_type); - - for (i = start_offset + 1; i < end_offset; i++) - { - my_atk_text_get_character_extents (text, i,&bounds_tmp.x, &bounds_tmp.y, - &bounds_tmp.width, &bounds_tmp.height, coord_type); - - if(bounds_tmp.x < result.x) - { - //corrects left boundary - result.width += result.x - bounds_tmp.x; - result.x = bounds_tmp.x; - } - if(bounds_tmp.x + bounds_tmp.width > result.x + result.width) - { - //corrects right boundary - result.width = bounds_tmp.x + bounds_tmp.width - result.x; - } - if(bounds_tmp.y < result.y) - { - //corrects top boundary - result.height += result.y - bounds_tmp.y; - result.y = bounds_tmp.y; - } - if(bounds_tmp.y + bounds_tmp.height > result.y + result.height) - { - //corrects buttom boundary - result.height = bounds_tmp.y + bounds_tmp.height - result.y; - } - } - *rect = result; -} -//**********************************my_atk_text_get_offset_at_point********************* -gint my_atk_text_get_offset_at_point(AtkText* text, gint x, gint y, AtkCoordType coord_type) -{ - gint line, relative_offset; - - line = get_point_line((MyAtkText*)text, y); - relative_offset = get_point_relative_offset((MyAtkText*)text, x); - - return get_offset_at_line((MyAtkText*)text, line, relative_offset); -} -//*****************************my_atk_text_get_bounded_ranges****************************** -AtkTextRange** my_atk_text_get_bounded_ranges(AtkText *text, AtkTextRectangle *rect, - AtkCoordType coord_type, AtkTextClipType x_clip_type, AtkTextClipType y_clip_type) -{ - MyAtkText *self = (MyAtkText*)text; - - gint start_line, end_line, start_rel_offset, end_rel_offset; - AtkTextRange** result; - gint len = my_strlen(self->str); -//macro for simplify return empty ranges when fail to do smth -#define RETURN_EMTPY_RANGES {result = g_malloc(sizeof(AtkTextRange*));result[0] = NULL;return result;} - //start line - start_line = (y_clip_type == ATK_TEXT_CLIP_NONE) || (y_clip_type == ATK_TEXT_CLIP_MAX) - ? 0 : get_point_line(self, rect->y); - if(start_line < 0) start_line = 0; - //end line - end_line = (y_clip_type == ATK_TEXT_CLIP_NONE) || (y_clip_type == ATK_TEXT_CLIP_MIN) - ? G_MAXINT/2 : get_point_line(self, rect->y + rect->height); - if(end_line < 0) RETURN_EMTPY_RANGES; - //start relative offset - start_rel_offset = (x_clip_type == ATK_TEXT_CLIP_NONE) || (x_clip_type == ATK_TEXT_CLIP_MAX) - ? 0 : get_point_relative_offset(self, rect->x); - if(start_rel_offset < 0) start_rel_offset = 0; - //end relative offset - end_rel_offset = (x_clip_type == ATK_TEXT_CLIP_NONE) || (x_clip_type == ATK_TEXT_CLIP_MIN) - ? G_MAXINT/2 : get_point_relative_offset(self, rect->x + rect->width); - if(end_rel_offset < 0) RETURN_EMTPY_RANGES; - //start offset(at the start of 'start_line') - gint start_offset = get_offset_at_line_start(self, start_line); - if(start_offset + start_rel_offset >= len) RETURN_EMTPY_RANGES; - - //count ranges - gint number_of_ranges = count_ranges(self, start_offset, - start_rel_offset, end_rel_offset, end_line - start_line + 1, NULL, coord_type); - //create array(with just getting size) - result = g_malloc(sizeof(AtkTextRange*) * (number_of_ranges + 1)); - //write ranges - count_ranges(self, start_offset, - start_rel_offset, end_rel_offset, end_line - start_line + 1, result, coord_type); -#undef RETURN_EMPTY_RANGES - return result; -} - -//********************************my_atk_text_get_n_selections******************************* -gint my_atk_text_get_n_selections(AtkText *text) -{ - MyAtkText *self = (MyAtkText*)text; - return self->selections->len; -} - -//********************************my_atk_text_get_selection******************************* -gchar* my_atk_text_get_selection(AtkText *text, - gint selection_num, gint *start_offset, gint *end_offset) -{ - MyAtkText *self = (MyAtkText*)text; - GArray *selections = self->selections; - if(selection_num < 0 || selection_num >= selections->len) return NULL; - *start_offset = g_array_index(selections, TextSelection, selection_num).start_offset; - *end_offset = g_array_index(selections, TextSelection, selection_num).end_offset; - return my_atk_text_get_text(text, *start_offset, *end_offset); -} -//********************************my_atk_text_remove_selection******************************* -gboolean my_atk_text_remove_selection(AtkText *text, gint selection_num) -{ - MyAtkText *self = (MyAtkText*)text; - GArray *selections = self->selections; - if(selection_num < 0 || selection_num >= selections->len) return FALSE; - g_array_remove_index(selections, selection_num); - - g_signal_emit_by_name(text, "text-selection-changed"); - return TRUE; -} -//********************************my_atk_text_add_selection******************************* -gboolean my_atk_text_add_selection(AtkText *text, gint start_offset, gint end_offset) -{ - if(start_offset < 0 || end_offset > my_atk_text_get_character_count(text) - || start_offset >= end_offset) return FALSE; - - MyAtkText *self = (MyAtkText*)text; - GArray *selections = self->selections; - gint i; - for(i = 0; i < selections->len; i++) - { - if(g_array_index(selections, TextSelection, i).start_offset >= start_offset) - { - if(g_array_index(selections, TextSelection, i).start_offset < end_offset) - return FALSE; - break; - } - } - TextSelection new_selection; - new_selection.start_offset = start_offset; - new_selection.end_offset = end_offset; - g_array_insert_val(selections, i, new_selection); - - g_signal_emit_by_name(text, "text-selection-changed"); - return TRUE; -} -//********************************my_atk_text_set_selection******************************* -gboolean my_atk_text_set_selection(AtkText *text, - gint selection_num, gint start_offset, gint end_offset) -{ - MyAtkText *self = (MyAtkText*)text; - GArray *selections = self->selections; - if(selection_num < 0 || selection_num >= selections->len) return NULL; - - if((selection_num == 0 - || g_array_index(selections, TextSelection, selection_num - 1).end_offset <= start_offset) - && (selection_num == selections->len - 1 - || g_array_index(selections, TextSelection, selection_num + 1).start_offset >= end_offset) - ) - { - //Arrange of selections won't change - g_array_index(selections, TextSelection, selection_num).start_offset = - start_offset; - g_array_index(selections, TextSelection, selection_num).end_offset = - end_offset; - g_signal_emit_by_name(text, "text-selection-changed"); - return TRUE; - } - gint start_offset_old = - g_array_index(selections, TextSelection, selection_num).start_offset; - gint end_offset_old = - g_array_index(selections, TextSelection, selection_num).end_offset; - - my_atk_text_remove_selection(text, selection_num); - if(!my_atk_text_add_selection(text, start_offset, end_offset)) - { - //fail when adding selection. Restore initial state. - my_atk_text_add_selection(text, start_offset_old, end_offset_old); - return FALSE; - } - g_signal_emit_by_name(text, "text-selection-changed"); - return TRUE; - -} - -//************************************my_atk_text_get_caret_offset****************** -gint my_atk_text_get_caret_offset(AtkText *text) -{ - MyAtkText *self = (MyAtkText*)text; - return self->caret_offset; -} -//************************************my_atk_text_set_caret_offset****************** -gboolean my_atk_text_set_caret_offset(AtkText *text, gint offset) -{ - MyAtkText *self = (MyAtkText*)text; - //caret may be set just after the last character - if(offset < 0 || offset > my_atk_text_get_character_count(text))return FALSE; - self->caret_offset = offset; - g_signal_emit_by_name(self, "text-caret-moved", offset); - return TRUE; -} - -//***********************my_atk_text_insert_text******************************* -void my_atk_text_insert_text(AtkEditableText* text, const gchar* string, - gint length, gint *position) -{ - gint i; - MyAtkText* myAtkText = (MyAtkText*)text; - gchar *str = myAtkText->str; - gint strlen_old = my_strlen(str); - - if(string == NULL) return; - //correct length - for(i = 0; i < length; i ++) - { - if(string[i] == '\0') {length = i; break;} - } - - if(*position < 0 || *position > strlen_old || length <= 0 )return; - - - gchar *new_str = g_malloc(strlen_old + length + 1); - if(new_str == NULL)return; - - if(*position != 0) - memcpy(new_str, str, (size_t)*position); - memcpy(new_str + *position, string, (size_t)length); - if(strlen_old != *position) - memcpy(new_str + *position + length, str + *position, - (size_t)(strlen_old - *position)); - new_str[strlen_old + length] = '\0'; - - g_free(str); - myAtkText->str = new_str; - correct_selections_after_insert(myAtkText, *position, length); - correct_attributes_after_insert(myAtkText, *position, length); - correct_caret_after_insert(myAtkText, *position, length); - g_signal_emit_by_name(text, "text-changed::insert", *position, length); - g_signal_emit_by_name(text, "text-selection-changed"); - g_signal_emit_by_name(text, "text-attributes-changed"); - g_signal_emit_by_name(text, "text-caret-moved", myAtkText->caret_offset); - - (*position) += length; -} -//*************************my_atk_text_delete_text******************* -void my_atk_text_delete_text(AtkEditableText* text, gint start_pos, gint end_pos) -{ - MyAtkText* myAtkText = (MyAtkText*)text; - gchar *str = myAtkText->str; - gint strlen_old = my_strlen(str); - - if(start_pos < 0 || end_pos > strlen_old || start_pos >= end_pos )return; - if(strlen_old != end_pos) - memmove(str + start_pos, str + end_pos, strlen_old - end_pos); - str[start_pos - end_pos + strlen_old] = '\0'; - - correct_selections_after_delete(myAtkText, start_pos, end_pos - start_pos); - correct_attributes_after_delete(myAtkText, start_pos, end_pos - start_pos); - correct_caret_after_delete(myAtkText, start_pos, end_pos - start_pos); - g_signal_emit_by_name(text, "text-changed::delete", start_pos, end_pos - start_pos); - g_signal_emit_by_name(text, "text-selection-changed"); - g_signal_emit_by_name(text, "text-attributes-changed"); - g_signal_emit_by_name(text, "text-caret-moved", myAtkText->caret_offset); -} -//***********************my_atk_text_set_text_contents************************* -void my_atk_text_set_text_contents(AtkEditableText* text, const gchar* string) -{ - my_atk_text_delete_text(text, 0, my_atk_text_get_character_count((AtkText*)text)); - gint position = 0; - my_atk_text_insert_text(text, string, my_strlen(string), &position); -} -//**********************my_atk_text_copy_text*************************** -void my_atk_text_copy_text(AtkEditableText* text, gint start_pos, gint end_pos) -{ - MyAtkText* myAtkText = (MyAtkText*)text; - const gchar *str = myAtkText->str; - gint strlen_old = my_strlen(str); - if(start_pos < 0 || end_pos > strlen_old || start_pos >= end_pos )return; - - MyAtkTextClass *parent = MY_ATK_TEXT_GET_CLASS(text); - g_free(parent->clipboard); - /*parent->clipboard = g_malloc(end_pos - start_pos + 1); - - strncpy(parent->clipboard, str + start_pos, end_pos - start_pos); - parent->clipboard[end_pos - start_pos] = '\0';*/ - parent->clipboard = g_strndup(str + start_pos, end_pos - start_pos); -} -//**********************my_atk_text_paste_text*************************** -void my_atk_text_paste_text(AtkEditableText *text, gint position) -{ - //NULL-clipboard process corretly - MyAtkTextClass* parent = MY_ATK_TEXT_GET_CLASS(text); - my_atk_text_insert_text(text, parent->clipboard, my_strlen(parent->clipboard), &position); -} -//**********************my_atk_text_cut_text*************************** -void my_atk_text_cut_text(AtkEditableText* text, gint start_pos, gint end_pos) -{ - my_atk_text_copy_text(text, start_pos, end_pos); - my_atk_text_delete_text(text, start_pos, end_pos); -} -//*********************my_atk_text_set_run_attributes************************ -gboolean my_atk_text_set_run_attributes(AtkEditableText* text, AtkAttributeSet* attrib_set, - gint start_offset, gint end_offset) -{ - MyAtkText* self = (MyAtkText*)text; - gint len = atk_text_get_character_count((AtkText*)text); - if(start_offset < 0 || start_offset >= end_offset || end_offset > len) - return FALSE; - GList *attributes = self->attributes; - GList *tmp = attributes; - - while(tmp != NULL) - { - Range *range = (Range*)tmp->data; - if(range->start < start_offset) - { - if(range->end <= end_offset) - { - if(range->end > start_offset) range->end = start_offset; - tmp = tmp->next; - continue; - } - /*range->end > end_offset*/ - Range* additional_range = range_new(end_offset, range->end); - additional_range->attributeSet = attribute_set_copy(range->attributeSet); - range->end = start_offset; - attributes = g_list_insert_before(attributes, tmp->next, additional_range); - tmp = tmp->next; - break; - } - else/*range->start >= start_offset*/ - { - if(range->end <= end_offset) - { - GList *tmp1 = tmp->next; - attributes = g_list_remove_link(attributes, tmp); - tmp = tmp1; - continue; - } - /*range->end > end_offset*/ - if(range->start < end_offset) range->start = end_offset; - break; - } - } - Range *new_range = range_new(start_offset, end_offset); - new_range->attributeSet = attribute_set_copy(attrib_set); - if(tmp == NULL)attributes = g_list_append(attributes, new_range); - else attributes = g_list_insert_before(attributes, tmp, new_range); - - self->attributes = attributes; - g_signal_emit_by_name(self, "text_attributes_changed"); - return TRUE; -} - -//others functions -//sets default attributes -void my_atk_text_set_default_attributes(MyAtkText* text, AtkAttributeSet *set) -{ - atk_attribute_set_free(text->default_attributes); - text->default_attributes = attribute_set_copy(set); - g_signal_emit_by_name(text, "text-attributes-changed"); -} - -void my_atk_text_print_run_attributes(MyAtkText *text) -{ - g_list_foreach(text->attributes, (GFunc)range_print, NULL); -} -void my_atk_text_print_default_attributes(MyAtkText *text) -{ - attribute_set_print(text->default_attributes); -} -//need for separate testing interfaces -void auxiliary_atk_text_set_text_contents(MyAtkText* text, const gchar* string) -{ - my_atk_text_set_text_contents((AtkEditableText*)text, string); -} -void auxiliary_atk_text_set_run_attributes(MyAtkText* text, AtkAttributeSet* attrib_set, - gint start_offset, gint end_offset) -{ - my_atk_text_set_run_attributes((AtkEditableText*)text, attrib_set, start_offset, end_offset); -} - -//initialize/finalize functions -static void my_atk_text_instance_init(GTypeInstance *obj, gpointer g_class) -{ - MyAtkText *self = (MyAtkText*)obj; - - self->str = NULL; - self->attributes = NULL; - self->default_attributes = NULL; - text_bounds_init(&self->bounds); - - self->selections = g_array_new(FALSE, FALSE, sizeof(TextSelection)); - - self->caret_offset = 0; -} -static void my_atk_text_instance_finalize(GObject* obj) -{ - MyAtkText *self = (MyAtkText*)obj; - g_free(self->str); - my_atk_text_free_run_attributes(self); - my_atk_text_free_default_attributes(self); - if(self->selections != NULL)g_array_free(self->selections, FALSE); -} - -static void my_atk_text_class_init(gpointer g_class, gpointer class_data) -{ - GObjectClass* g_object_class = (GObjectClass*)g_class; - //GObject virtual table - g_object_class->finalize = my_atk_text_instance_finalize; - //Fills tables of symbols - table_symbols_init(); - //initialize clipboard - ((MyAtkTextClass*)g_class)->clipboard = NULL; -} -//Because of static registration of type, finalization function will never been called -//And glib prints warning if use it in registration. -/*static void my_atk_text_class_finalize(gpointer g_class, gpointer class_data) -{ - MyAtkTextClass *self = (MyAtkTextClass*)g_class; - - g_free(self->clipboard); - self->clipboard = NULL; -}*/ -void my_atk_text_interface_init(gpointer g_iface, gpointer iface_data) -{ - AtkTextIface *klass = (AtkTextIface*)g_iface; - //"get_text" - klass->get_character_count = my_atk_text_get_character_count; - klass->get_text = my_atk_text_get_text; - klass->get_character_at_offset = my_atk_text_get_character_at_offset; - klass->get_text_after_offset = my_atk_text_get_text_after_offset; - klass->get_text_at_offset = my_atk_text_get_text_at_offset; - klass->get_text_before_offset = my_atk_text_get_text_before_offset; - //"attributes" - klass->get_run_attributes = my_atk_text_get_run_attributes; - klass->get_default_attributes = my_atk_text_get_default_attributes; - //"bounds" - klass->get_character_extents = my_atk_text_get_character_extents; - klass->get_range_extents = my_atk_text_get_range_extents; - klass->get_offset_at_point = my_atk_text_get_offset_at_point; - klass->get_bounded_ranges = my_atk_text_get_bounded_ranges; - //"selection" - klass->get_n_selections = my_atk_text_get_n_selections; - klass->get_selection = my_atk_text_get_selection; - klass->remove_selection = my_atk_text_remove_selection; - klass->add_selection = my_atk_text_add_selection; - klass->set_selection = my_atk_text_set_selection; - //"caret" - klass->get_caret_offset = my_atk_text_get_caret_offset; - klass->set_caret_offset = my_atk_text_set_caret_offset; -} - -static void my_atk_editable_text_interface_init(gpointer g_iface, gpointer iface_data) -{ - AtkEditableTextIface *klass = (AtkEditableTextIface*)g_iface; - - klass->set_text_contents = my_atk_text_set_text_contents; - klass->set_run_attributes = my_atk_text_set_run_attributes; - klass->copy_text = my_atk_text_copy_text; - klass->insert_text = my_atk_text_insert_text; - klass->paste_text = my_atk_text_paste_text; - klass->cut_text = my_atk_text_cut_text; - klass->delete_text = my_atk_text_delete_text; -} -GType my_atk_text_get_type() -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo typeInfo = - { - sizeof(MyAtkTextClass), - NULL, //base_init - NULL, //base_finalize - my_atk_text_class_init, //class_init - NULL, //class_finalize - NULL, //class_data - sizeof(MyAtkText), - 0, //n_preallocs - my_atk_text_instance_init //instance_init - }; - - static const GInterfaceInfo AtkTextIface_info = - { - my_atk_text_interface_init, /* interface_init*/ - NULL, /* interface_finalize*/ - NULL /* interface_data */ - }; - static const GInterfaceInfo AtkEditableTextIface_info = - { - my_atk_editable_text_interface_init,/* interface_init*/ - NULL, /* interface_finalize*/ - NULL /* interface_data */ - }; - type = g_type_register_static(MY_TYPE_ATK_OBJECT, "MyAtkText", &typeInfo, 0); - g_type_add_interface_static(type, - ATK_TYPE_TEXT, - &AtkTextIface_info); - - g_type_add_interface_static(type, - ATK_TYPE_EDITABLE_TEXT, - &AtkEditableTextIface_info); - } - return type; -} diff --git a/tests/dummyatk/my-atk-text.h b/tests/dummyatk/my-atk-text.h deleted file mode 100644 index 7a6a73e..0000000 --- a/tests/dummyatk/my-atk-text.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef MY_ATK_TEXT_H -#define MY_ATK_TEXT_H -/* - * MyAtkText: implements AtkText and AtkEditableText - */ -#include <atk/atk.h> - -#include "my-atk-object.h" - -#define MY_TYPE_ATK_TEXT (my_atk_text_get_type ()) -#define MY_ATK_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_TEXT, MyAtkText)) -#define MY_ATK_TEXT_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_TEXT, MyAtkTextClass)) -#define MY_IS_ATK_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_TEXT)) -#define MY_IS_ATK_TEXT_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_TEXT)) -#define MY_ATK_TEXT_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_TEXT, MyAtkTextClass)) - -typedef struct _MyAtkText MyAtkText; -typedef struct _MyAtkTextClass MyAtkTextClass; - -//Struct, describing bounds of one selection. -typedef struct -{ - gint start_offset, end_offset; -}TextSelection; -//Struct, describing values, needed for determine extent of characters -typedef struct -{ - gint base_x, base_y;//coordinates of the top-left corner of text - gint pixels_above_line; - gint pixels_below_line; - gint size;//size of the character(height in pixels) - gint pixels_between_characters;//monoscaped font - gint width;//width of character -}TextBounds; - -struct _MyAtkText -{ - MyAtkObject parent; - - gchar* str;//string, containing text - GList* attributes;//running atributes - AtkAttributeSet *default_attributes;//default attributes - - TextBounds bounds; - - GArray* selections; - - gint caret_offset; -}; - -struct _MyAtkTextClass -{ - MyAtkObjectClass parent; - gchar* clipboard; -}; - -GType my_atk_text_get_type(); - -void my_atk_text_interface_init(gpointer g_iface, gpointer iface_data); -#endif /*MY_ATK_TEXT_H*/ diff --git a/tests/dummyatk/my-atk-value.c b/tests/dummyatk/my-atk-value.c deleted file mode 100644 index 3530d4f..0000000 --- a/tests/dummyatk/my-atk-value.c +++ /dev/null @@ -1,113 +0,0 @@ -#include <atk/atk.h> -#include <limits.h> - -#include "my-atk-object.h" -#include "my-atk-value.h" - -//*************************implementation*********************** -//implementation of virtual functions -//******************get_current_value******************* -static void my_atk_value_get_current_value(AtkValue *obj, GValue *value) -{ - g_return_if_fail(MY_IS_ATK_VALUE(obj)); - MyAtkValue* self = (MyAtkValue*)obj; - - g_value_init(value, G_TYPE_INT); - g_value_set_int(value, self->current); -} -//******************get_maximum_value******************* -static void my_atk_value_get_maximum_value(AtkValue *obj, GValue *value) -{ - g_return_if_fail(MY_IS_ATK_VALUE(obj)); - MyAtkValue* self = (MyAtkValue*)obj; - - g_value_init(value, G_TYPE_INT); - g_value_set_int(value, self->maximum); -} -//******************get_minimum_value******************* -static void my_atk_value_get_minimum_value(AtkValue *obj, GValue *value) -{ - g_return_if_fail(MY_IS_ATK_VALUE(obj)); - MyAtkValue* self = (MyAtkValue*)obj; - - g_value_init(value, G_TYPE_INT); - g_value_set_int(value, self->minimum); -} -//******************set_current_value******************* -static gboolean my_atk_value_set_current_value(AtkValue *obj, const GValue *value) -{ - g_return_val_if_fail(MY_IS_ATK_VALUE(obj), FALSE); - MyAtkValue* self = (MyAtkValue*)obj; - - if(self->readonly) return FALSE; - - gint new_value = g_value_get_int(value); - if(new_value < self->minimum || new_value > self->maximum) return FALSE; - - self->current = new_value; - return TRUE; -} - -//others -MyAtkValue* my_atk_value_new(gint minimum, gint maximum, gint current) -{ - MyAtkValue* result = g_object_new(MY_TYPE_ATK_VALUE, NULL); - if(result == NULL) return NULL; - result->minimum = minimum; - result->maximum = maximum; - result->current = current; - - return result; -} -static void my_atk_value_instance_init(GTypeInstance *obj, gpointer g_class) -{ - MyAtkValue *self = (MyAtkValue*)obj; - - self->minimum = 0; - self->maximum = 0; - self->current = 0; - - self->readonly = FALSE; -} -static void my_atk_value_interface_init(gpointer g_iface, gpointer iface_data) -{ - AtkValueIface *klass = (AtkValueIface*)g_iface; - - klass->get_current_value = my_atk_value_get_current_value; - klass->get_minimum_value = my_atk_value_get_minimum_value; - klass->get_maximum_value = my_atk_value_get_maximum_value; - - klass->set_current_value = my_atk_value_set_current_value; -} - -GType my_atk_value_get_type() -{ - static GType type = 0; - if(type == 0) - { - static const GTypeInfo typeInfo = - { - sizeof(MyAtkValueClass), - NULL, //base_init - NULL, //base_finalize - NULL, //class_init - NULL, //class_finalize - NULL, //class_data - sizeof(MyAtkValue), - 0, //n_preallocs - my_atk_value_instance_init //instance_init - }; - - static const GInterfaceInfo iface_info = - { - my_atk_value_interface_init, /* interface_init*/ - NULL, /* interface_finalize*/ - NULL /* interface_data */ - }; - type = g_type_register_static(MY_TYPE_ATK_OBJECT, "MyAtkValue", &typeInfo, 0); - g_type_add_interface_static(type, - ATK_TYPE_VALUE, - &iface_info); - } - return type; -} diff --git a/tests/dummyatk/my-atk-value.h b/tests/dummyatk/my-atk-value.h deleted file mode 100644 index 03ed6d1..0000000 --- a/tests/dummyatk/my-atk-value.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef MY_ATK_VALUE_H -#define MY_ATK_VALUE_H -/* - * MyAtkValue: derives AtkObject - * and implements AtkValue - */ -#include <atk/atk.h> - -#define MY_TYPE_ATK_VALUE (my_atk_value_get_type ()) -#define MY_ATK_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_VALUE, MyAtkValue)) -#define MY_ATK_VALUE_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_VALUE, MyAtkValueClass)) -#define MY_IS_ATK_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_VALUE)) -#define MY_IS_ATK_VALUE_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_VALUE)) -#define MY_ATK_VALUE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_VALUE, MyAtkValueClass)) - -typedef struct _MyAtkValue MyAtkValue; -typedef struct _MyAtkValueClass MyAtkValueClass; - -struct _MyAtkValue -{ - MyAtkObject parent; - - gint minimum, maximum, current; - gboolean readonly; -}; - -struct _MyAtkValueClass -{ - MyAtkObjectClass parent; -}; - -MyAtkValue* my_atk_value_new(gint minimum, gint maximium, gint current); -GType my_atk_value_get_type(); -#endif /*MY_ATK_VALUE_H*/ diff --git a/tests/dummyatk/my-atk.h b/tests/dummyatk/my-atk.h deleted file mode 100644 index 935d3d8..0000000 --- a/tests/dummyatk/my-atk.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef MY_ATK_H -#define MY_ATK_H - -#include <my-atk-action.h> -#include <my-atk-component.h> -#include <my-atk.h> -#include <my-atk-hyperlink.h> -#include <my-atk-hypertext.h> -#include <my-atk-object.h> -#include <my-atk-streamable-content.h> -#include <my-atk-text.h> -#include <my-atk-value.h> - -#endif /*MY_ATK_H*/ diff --git a/tests/dummyatk/resources_storage.c b/tests/dummyatk/resources_storage.c deleted file mode 100644 index e86051d..0000000 --- a/tests/dummyatk/resources_storage.c +++ /dev/null @@ -1,34 +0,0 @@ -#include <atk/atk.h> - -GHashTable* resources = NULL; - -void resource_storage_init() -{ - if(resources == NULL) - resources = g_hash_table_new_full(g_str_hash, g_str_equal, - (GDestroyNotify)g_free, (GDestroyNotify)g_object_unref); -} - -void resource_storage_free() -{ - if(resources == NULL) return; - g_hash_table_destroy(resources); - resources = NULL; -} - -void resource_storage_add(const gchar* name, AtkObject* resource) -{ - if(resources == NULL) return; - g_hash_table_insert(resources, g_strdup(name), g_object_ref(resource)); -} - -AtkObject* resource_storage_get(const gchar* name) -{ - if(resources == NULL) return NULL; - return g_hash_table_lookup(resources, name); -} -void resources_storage_remove(const gchar* name) -{ - if(resources == NULL) return; - g_hash_table_remove(resources, name); -} diff --git a/tests/dummyatk/resources_storage.h b/tests/dummyatk/resources_storage.h deleted file mode 100644 index 3decd86..0000000 --- a/tests/dummyatk/resources_storage.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef RESOURCES_STORAGE_H -#define RESOURCES_STORAGE_H - -#include <glib.h> - -void resource_storage_init(); - -void resource_storage_free(); - -void resource_storage_add(const gchar* name, AtkObject* resource); - -AtkObject* resource_storage_get(const gchar* name); - -void resources_storage_remove(const gchar* name); - -#endif /*RESOURCES_STORAGE_H*/ diff --git a/tests/dummyatk/useful_functions.c b/tests/dummyatk/useful_functions.c deleted file mode 100644 index 49b6a82..0000000 --- a/tests/dummyatk/useful_functions.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <string.h> -#include <glib.h> -/* - * Functions and macros widely used in the tests. - */ - -//same as strcmp() == 0 but works properly for NULL pointers -gboolean my_strcmp(const gchar* str1, const gchar* str2) -{ - if(str1 == str2) return TRUE; - if(str1 == NULL || str2 == NULL) return FALSE; - - return strcmp(str1,str2) == 0; -} -//same as strlen but works properly for NULL pointer and returns gint instead of guint -gint my_strlen(const gchar* str) -{ - if(str == NULL)return 0; - return (gint)strlen(str); -} -//same as strncmp() == 0 but works properly for NULL pointers -gboolean my_strncmp(const gchar* str1, const gchar* str2, gint n) -{ - if(n <= 0)return TRUE; - if(str1 == str2)return TRUE; - if(str1 == NULL || str2 == NULL)return FALSE; - - return strncmp(str1, str2, n) == 0; -} diff --git a/tests/dummyatk/useful_functions.h b/tests/dummyatk/useful_functions.h deleted file mode 100644 index 4fbce6c..0000000 --- a/tests/dummyatk/useful_functions.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef USEFUL_FUNCTIONS_H -#define USEFUL_FUNCTIONS_H -/* - * Functions and macros widely used in the tests. - */ - -//macro for creating objects in startup section -#define OBJECT_NEW(obj, type, type_str) obj = g_object_new(type,NULL);\ - if(obj == NULL)\ - {\ - INIT_FAILED("Cannot create instance of type" type_str ".\n");\ - } -//macro for destroying object -#define OBJECT_UNREF(obj) if(obj != NULL)\ - {\ - g_object_unref((gpointer)obj);\ - } -//for testing signals -#define HANDLER_DISCONNECT(obj, h) if((h) != 0)\ - {\ - g_signal_handler_disconnect(obj, h);\ - } - -gboolean my_strcmp(const gchar* str1, const gchar* str2); - -gint my_strlen(const gchar* str); - -gboolean my_strncmp(const gchar* str1, const gchar* str2, gint n); - -#endif /*USEFUL_FUNCTIONS_H*/ diff --git a/tests/dummyatk/user_marshal.c b/tests/dummyatk/user_marshal.c deleted file mode 100644 index 1f8ecf0..0000000 --- a/tests/dummyatk/user_marshal.c +++ /dev/null @@ -1,41 +0,0 @@ -#include <glib-object.h> - -/* INT:BOXED (marshal.list:1) */ -void -g_cclosure_user_marshal_INT__BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data) -{ - typedef gint (*GMarshalFunc_INT__BOXED) (gpointer data1, - gpointer arg_1, - gpointer data2); - register GMarshalFunc_INT__BOXED callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - gint v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 2); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_INT__BOXED) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_boxed (param_values + 1), - data2); - - g_value_set_int (return_value, v_return); -} - diff --git a/tests/dummyatk/user_marshal.h b/tests/dummyatk/user_marshal.h deleted file mode 100644 index a845925..0000000 --- a/tests/dummyatk/user_marshal.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef USER_MARSHAL_H -#define USER_MARSHAL_H - -#include <glib-object.h> - - -#ifdef G_ENABLE_DEBUG -#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) -#define g_marshal_value_peek_char(v) g_value_get_char (v) -#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) -#define g_marshal_value_peek_int(v) g_value_get_int (v) -#define g_marshal_value_peek_uint(v) g_value_get_uint (v) -#define g_marshal_value_peek_long(v) g_value_get_long (v) -#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) -#define g_marshal_value_peek_int64(v) g_value_get_int64 (v) -#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) -#define g_marshal_value_peek_enum(v) g_value_get_enum (v) -#define g_marshal_value_peek_flags(v) g_value_get_flags (v) -#define g_marshal_value_peek_float(v) g_value_get_float (v) -#define g_marshal_value_peek_double(v) g_value_get_double (v) -#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) -#define g_marshal_value_peek_param(v) g_value_get_param (v) -#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) -#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) -#define g_marshal_value_peek_object(v) g_value_get_object (v) -#else /* !G_ENABLE_DEBUG */ -/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. - * Do not access GValues directly in your code. Instead, use the - * g_value_get_*() functions - */ -#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int -#define g_marshal_value_peek_char(v) (v)->data[0].v_int -#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint -#define g_marshal_value_peek_int(v) (v)->data[0].v_int -#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint -#define g_marshal_value_peek_long(v) (v)->data[0].v_long -#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 -#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 -#define g_marshal_value_peek_enum(v) (v)->data[0].v_long -#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_float(v) (v)->data[0].v_float -#define g_marshal_value_peek_double(v) (v)->data[0].v_double -#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer -#endif /* !G_ENABLE_DEBUG */ - - -void -g_cclosure_user_marshal_INT__BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -#endif /*USER_MARSHAL_H*/ |