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

Packit 98cdb6
#include <string.h>
Packit 98cdb6
#include <stdlib.h>
Packit 98cdb6
#include <gtk/gtk.h>
Packit 98cdb6
#include <testlib.h>
Packit 98cdb6
Packit 98cdb6
static gint _test_paned (gpointer data);
Packit 98cdb6
static void _check_paned (AtkObject *obj);
Packit 98cdb6
Packit 98cdb6
static void _property_change_handler (AtkObject   *obj,
Packit 98cdb6
                                      AtkPropertyValues *values);
Packit 98cdb6
Packit 98cdb6
#define NUM_VALID_ROLES 1
Packit 98cdb6
static gint last_position;
Packit 98cdb6
Packit 98cdb6
static void _property_change_handler (AtkObject   *obj,
Packit 98cdb6
                                      AtkPropertyValues   *values)
Packit 98cdb6
{
Packit 98cdb6
  const gchar *type_name = g_type_name (G_TYPE_FROM_INSTANCE (obj));
Packit 98cdb6
  const gchar *name = atk_object_get_name (obj);
Packit 98cdb6
Packit 98cdb6
  g_print ("_property_change_handler: Accessible Type: %s\n",
Packit 98cdb6
           type_name ? type_name : "NULL");
Packit 98cdb6
  g_print ("_property_change_handler: Accessible name: %s\n",
Packit 98cdb6
           name ? name : "NULL");
Packit 98cdb6
  g_print ("_property_change_handler: PropertyName: %s\n",
Packit 98cdb6
           values->property_name ? values->property_name: "NULL");
Packit 98cdb6
  if (strcmp (values->property_name, "accessible-value") == 0)
Packit 98cdb6
  {
Packit 98cdb6
    GValue *value, val;
Packit 98cdb6
    int position;
Packit 98cdb6
    value = &val;
Packit 98cdb6
Packit 98cdb6
    memset (value, 0, sizeof (GValue));
Packit 98cdb6
    atk_value_get_current_value (ATK_VALUE (obj), value);
Packit 98cdb6
    g_return_if_fail (G_VALUE_HOLDS_INT (value));
Packit 98cdb6
    position = g_value_get_int (value); 
Packit 98cdb6
    g_print ("Position is  %d previous position was %d\n", 
Packit 98cdb6
             position, last_position);
Packit 98cdb6
    last_position = position;
Packit 98cdb6
    atk_value_get_minimum_value (ATK_VALUE (obj), value);
Packit 98cdb6
    g_return_if_fail (G_VALUE_HOLDS_INT (value));
Packit 98cdb6
    position = g_value_get_int (value); 
Packit 98cdb6
    g_print ("Minimum Value is  %d\n", position); 
Packit 98cdb6
    atk_value_get_maximum_value (ATK_VALUE (obj), value);
Packit 98cdb6
    g_return_if_fail (G_VALUE_HOLDS_INT (value));
Packit 98cdb6
    position = g_value_get_int (value); 
Packit 98cdb6
    g_print ("Maximum Value is  %d\n", position); 
Packit 98cdb6
  }
Packit 98cdb6
}
Packit 98cdb6
 
Packit 98cdb6
static gint _test_paned (gpointer data)
Packit 98cdb6
{
Packit 98cdb6
  AtkObject *obj = ATK_OBJECT (data);
Packit 98cdb6
  AtkRole role = atk_object_get_role (obj);
Packit 98cdb6
  GtkWidget *widget;
Packit 98cdb6
  static gint times = 0;
Packit 98cdb6
Packit 98cdb6
  widget = GTK_ACCESSIBLE (obj)->widget;
Packit 98cdb6
Packit 98cdb6
  if (role == ATK_ROLE_SPLIT_PANE)
Packit 98cdb6
  {
Packit 98cdb6
    GValue *value, val;
Packit 98cdb6
    int position;
Packit 98cdb6
    value = &val;
Packit 98cdb6
Packit 98cdb6
    memset (value, 0, sizeof (GValue));
Packit 98cdb6
    atk_value_get_current_value (ATK_VALUE (obj), value);
Packit 98cdb6
    g_return_val_if_fail (G_VALUE_HOLDS_INT (value), FALSE);
Packit 98cdb6
    position = g_value_get_int (value); 
Packit 98cdb6
    g_print ("Position is : %d\n", position);
Packit 98cdb6
    last_position = position;
Packit 98cdb6
    position *= 2;
Packit 98cdb6
    g_value_set_int (value, position);
Packit 98cdb6
    atk_value_set_current_value (ATK_VALUE (obj), value);
Packit 98cdb6
    times++;
Packit 98cdb6
  }
Packit 98cdb6
  if (times < 4)
Packit 98cdb6
    return TRUE;
Packit 98cdb6
  else
Packit 98cdb6
    return FALSE;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void _check_paned (AtkObject *obj)
Packit 98cdb6
{
Packit 98cdb6
  static gboolean done_paned = FALSE;
Packit 98cdb6
  AtkRole role;
Packit 98cdb6
Packit 98cdb6
  role = atk_object_get_role (obj);
Packit 98cdb6
Packit 98cdb6
  if (role == ATK_ROLE_FRAME)
Packit 98cdb6
  {
Packit 98cdb6
    AtkRole roles[NUM_VALID_ROLES];
Packit 98cdb6
    AtkObject *paned_obj;
Packit 98cdb6
Packit 98cdb6
    if (done_paned)
Packit 98cdb6
      return;
Packit 98cdb6
Packit 98cdb6
    roles[0] = ATK_ROLE_SPLIT_PANE;
Packit 98cdb6
Packit 98cdb6
    paned_obj = find_object_by_role (obj, roles, NUM_VALID_ROLES);
Packit 98cdb6
Packit 98cdb6
    if (paned_obj)
Packit 98cdb6
    {
Packit 98cdb6
      if (!done_paned)
Packit 98cdb6
      {
Packit 98cdb6
        done_paned = TRUE;
Packit 98cdb6
      }
Packit 98cdb6
      atk_object_connect_property_change_handler (paned_obj,
Packit 98cdb6
                   (AtkPropertyChangeHandler*) _property_change_handler);
Packit 98cdb6
      g_timeout_add (2000, _test_paned, paned_obj);
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
    return;
Packit 98cdb6
  }
Packit 98cdb6
  if (role != ATK_ROLE_COMBO_BOX)
Packit 98cdb6
    return;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
_create_event_watcher (void)
Packit 98cdb6
{
Packit 98cdb6
  atk_add_focus_tracker (_check_paned);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
int
Packit 98cdb6
gtk_module_init(gint argc, char* argv[])
Packit 98cdb6
{
Packit 98cdb6
  g_print("testpaned Module loaded\n");
Packit 98cdb6
Packit 98cdb6
  _create_event_watcher();
Packit 98cdb6
Packit 98cdb6
  return 0;
Packit 98cdb6
}