Blame modules/other/gail/tests/testimage.c

Packit Service fb6fa5
#include <gtk/gtk.h>
Packit Service fb6fa5
#include "testlib.h"
Packit Service fb6fa5
#include <stdlib.h>
Packit Service fb6fa5
Packit Service fb6fa5
/*
Packit Service fb6fa5
 * This test modules tests the AtkImage interface. When the module is loaded
Packit Service fb6fa5
 * with testgtk , it also creates a dialog that contains GtkArrows and a 
Packit Service fb6fa5
 * GtkImage. 
Packit Service fb6fa5
 *
Packit Service fb6fa5
 */
Packit Service fb6fa5
Packit Service fb6fa5
typedef struct
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkWidget *dialog;
Packit Service fb6fa5
  GtkWidget *arrow1;
Packit Service fb6fa5
  GtkWidget *arrow2;
Packit Service fb6fa5
  GtkWidget *arrow3;
Packit Service fb6fa5
  GtkWidget *arrow4;
Packit Service fb6fa5
  GtkWidget *close_button;
Packit Service fb6fa5
  GtkImage  *image;
Packit Service fb6fa5
}MainDialog;
Packit Service fb6fa5
Packit Service fb6fa5
static void destroy (GtkWidget *widget, gpointer data)
Packit Service fb6fa5
{
Packit Service fb6fa5
  gtk_widget_destroy(GTK_WIDGET(data));
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void _check_arrows (AtkObject *obj)
Packit Service fb6fa5
{
Packit Service fb6fa5
  AtkRole role;
Packit Service fb6fa5
  MainDialog *md;
Packit Service fb6fa5
  static gint visibleDialog = 0;
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
  role = atk_object_get_role(obj);
Packit Service fb6fa5
  if(role == ATK_ROLE_FRAME) {
Packit Service fb6fa5
Packit Service fb6fa5
	md = (MainDialog *) malloc (sizeof(MainDialog));
Packit Service fb6fa5
	if (visibleDialog == 0)
Packit Service fb6fa5
    {
Packit Service fb6fa5
		md->arrow1 = gtk_arrow_new(GTK_ARROW_UP,GTK_SHADOW_IN);
Packit Service fb6fa5
		md->arrow2 = gtk_arrow_new(GTK_ARROW_DOWN,GTK_SHADOW_IN);
Packit Service fb6fa5
		md->arrow3 = gtk_arrow_new(GTK_ARROW_LEFT,GTK_SHADOW_OUT);
Packit Service fb6fa5
		md->arrow4 = gtk_arrow_new(GTK_ARROW_RIGHT,GTK_SHADOW_OUT);
Packit Service fb6fa5
		md->dialog = gtk_dialog_new();
Packit Service fb6fa5
		gtk_window_set_modal(GTK_WINDOW(md->dialog), TRUE);
Packit Service fb6fa5
                gtk_box_pack_start(GTK_BOX (GTK_DIALOG (md->dialog)->vbox),
Packit Service fb6fa5
                                   md->arrow1, TRUE,TRUE, 0);
Packit Service fb6fa5
		gtk_box_pack_start(GTK_BOX (GTK_DIALOG (md->dialog)->vbox),
Packit Service fb6fa5
                                   md->arrow2, TRUE,TRUE, 0);
Packit Service fb6fa5
		gtk_box_pack_start(GTK_BOX (GTK_DIALOG (md->dialog)->vbox),
Packit Service fb6fa5
                                   md->arrow3, TRUE,TRUE, 0);
Packit Service fb6fa5
		gtk_box_pack_start(GTK_BOX (GTK_DIALOG (md->dialog)->vbox),
Packit Service fb6fa5
                                   md->arrow4, TRUE,TRUE, 0);
Packit Service fb6fa5
		g_signal_connect(GTK_OBJECT(md->dialog), "destroy",
Packit Service fb6fa5
                                 G_CALLBACK (destroy), md->dialog);
Packit Service fb6fa5
Packit Service fb6fa5
	        md->image = GTK_IMAGE(gtk_image_new_from_file("circles.xbm"));
Packit Service fb6fa5
		gtk_box_pack_start(GTK_BOX (GTK_DIALOG (md->dialog)->vbox),
Packit Service fb6fa5
                                   GTK_WIDGET(md->image), TRUE,TRUE, 0);
Packit Service fb6fa5
		md->close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
Packit Service fb6fa5
		g_signal_connect(GTK_OBJECT(md->close_button), "clicked",
Packit Service fb6fa5
                                 G_CALLBACK (destroy), md->dialog);
Packit Service fb6fa5
Packit Service fb6fa5
		gtk_box_pack_start(GTK_BOX (GTK_DIALOG (md->dialog)->action_area),
Packit Service fb6fa5
                                   md->close_button, TRUE,TRUE, 0);
Packit Service fb6fa5
Packit Service fb6fa5
		gtk_widget_show_all(md->dialog);
Packit Service fb6fa5
		visibleDialog = 1;
Packit Service fb6fa5
    }
Packit Service fb6fa5
 }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static void 
Packit Service fb6fa5
_print_image_info(AtkObject *obj) {
Packit Service fb6fa5
Packit Service fb6fa5
  gint height, width;
Packit Service fb6fa5
  const gchar *desc;
Packit Service fb6fa5
  const gchar *name = atk_object_get_name (obj);
Packit Service fb6fa5
  const gchar *type_name = g_type_name(G_TYPE_FROM_INSTANCE (obj));
Packit Service fb6fa5
Packit Service fb6fa5
  height = width = 0;
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
  if(!ATK_IS_IMAGE(obj)) 
Packit Service fb6fa5
	return;
Packit Service fb6fa5
Packit Service fb6fa5
  g_print("atk_object_get_name : %s\n", name ? name : "<NULL>");
Packit Service fb6fa5
  g_print("atk_object_get_type_name : %s\n",type_name ?type_name :"<NULL>");
Packit Service fb6fa5
  g_print("*** Start Image Info ***\n");
Packit Service fb6fa5
  desc = atk_image_get_image_description(ATK_IMAGE(obj));
Packit Service fb6fa5
  g_print ("atk_image_get_image_desc returns : %s\n",desc ? desc:"<NULL>");
Packit Service fb6fa5
  atk_image_get_image_size(ATK_IMAGE(obj), &height ,&width);
Packit Service fb6fa5
  g_print("atk_image_get_image_size returns: height %d width %d\n",
Packit Service fb6fa5
											height,width);
Packit Service fb6fa5
  if(atk_image_set_image_description(ATK_IMAGE(obj),"New image Description")){
Packit Service fb6fa5
	desc = atk_image_get_image_description(ATK_IMAGE(obj));
Packit Service fb6fa5
	g_print ("atk_image_get_image_desc now returns : %s\n",desc?desc:"<NULL>");
Packit Service fb6fa5
  }
Packit Service fb6fa5
  g_print("*** End Image Info ***\n");
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
}
Packit Service fb6fa5
static void _traverse_children (AtkObject *obj)
Packit Service fb6fa5
{
Packit Service fb6fa5
  gint n_children, i;
Packit Service fb6fa5
Packit Service fb6fa5
  n_children = atk_object_get_n_accessible_children (obj);
Packit Service fb6fa5
  for (i = 0; i < n_children; i++)
Packit Service fb6fa5
  {
Packit Service fb6fa5
    AtkObject *child;
Packit Service fb6fa5
Packit Service fb6fa5
    child = atk_object_ref_accessible_child (obj, i);
Packit Service fb6fa5
	_print_image_info(child);
Packit Service fb6fa5
    _traverse_children (child);
Packit Service fb6fa5
    g_object_unref (G_OBJECT (child));
Packit Service fb6fa5
  }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static void _check_objects (AtkObject *obj)
Packit Service fb6fa5
{
Packit Service fb6fa5
  AtkRole role;
Packit Service fb6fa5
Packit Service fb6fa5
  g_print ("Start of _check_values\n");
Packit Service fb6fa5
Packit Service fb6fa5
  _check_arrows(obj);
Packit Service fb6fa5
  role = atk_object_get_role (obj);
Packit Service fb6fa5
Packit Service fb6fa5
  if (role == ATK_ROLE_FRAME || role == ATK_ROLE_DIALOG)
Packit Service fb6fa5
  {
Packit Service fb6fa5
    /*
Packit Service fb6fa5
     * Add handlers to all children.
Packit Service fb6fa5
     */
Packit Service fb6fa5
    _traverse_children (obj);
Packit Service fb6fa5
  }
Packit Service fb6fa5
  g_print ("End of _check_values\n");
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
_create_event_watcher (void)
Packit Service fb6fa5
{
Packit Service fb6fa5
  atk_add_focus_tracker (_check_objects);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
int
Packit Service fb6fa5
gtk_module_init(gint argc, char* argv[])
Packit Service fb6fa5
{
Packit Service fb6fa5
  g_print("testimages Module loaded\n");
Packit Service fb6fa5
Packit Service fb6fa5
  _create_event_watcher();
Packit Service fb6fa5
Packit Service fb6fa5
  return 0;
Packit Service fb6fa5
}