Exemple #1
0
/**
 * gtk_test_display_button_window:
 * @window_title:       Title of the window to be displayed.
 * @dialog_text:        Text inside the window to be displayed.
 * @...:                %NULL terminated list of (const char *label, int *nump) pairs.
 *
 * Create a window with window title @window_title, text contents @dialog_text,
 * and a number of buttons, according to the paired argument list given
 * as @... parameters.
 * Each button is created with a @label and a ::clicked signal handler that
 * incremrents the integer stored in @nump.
 * The window will be automatically shown with gtk_widget_show_now() after
 * creation, so when this function returns it has already been mapped,
 * resized and positioned on screen.
 * The window will quit any running gtk_main()-loop when destroyed, and it
 * will automatically be destroyed upon test function teardown.
 *
 * Returns: (transfer full): a widget pointer to the newly created GtkWindow.
 *
 * Since: 2.14
 **/
GtkWidget*
gtk_test_display_button_window (const gchar *window_title,
                                const gchar *dialog_text,
                                ...) /* NULL terminated list of (label, &int) pairs */
{
    va_list var_args;
    GtkWidget *window = gtk_test_create_widget (GTK_TYPE_WINDOW, "title", window_title, NULL);
    GtkWidget *vbox = gtk_test_create_widget (GTK_TYPE_BOX, "parent", window, "orientation", GTK_ORIENTATION_VERTICAL, NULL);
    const char *arg1;
    gtk_test_create_widget (GTK_TYPE_LABEL, "label", dialog_text, "parent", vbox, NULL);
    g_signal_connect (window, "destroy", G_CALLBACK (try_main_quit), NULL);
    va_start (var_args, dialog_text);
    arg1 = va_arg (var_args, const char*);
    while (arg1)
    {
        int *arg2 = va_arg (var_args, int*);
        GtkWidget *button = gtk_test_create_widget (GTK_TYPE_BUTTON, "label", arg1, "parent", vbox, NULL);
        g_signal_connect_swapped (button, "clicked", G_CALLBACK (test_increment_intp), arg2);
        arg1 = va_arg (var_args, const char*);
    }
    va_end (var_args);
    gtk_widget_show_all (vbox);
    gtk_widget_show_now (window);
    while (gtk_events_pending ())
        gtk_main_iteration ();
    return window;
}
Exemple #2
0
static void
test_widget_windows (gpointer  data)
{
  GType      type = GPOINTER_TO_SIZE (data);
  GtkWidget* window = gtk_test_create_widget (GTK_TYPE_WINDOW, NULL);
  GtkWidget* widget = gtk_test_create_widget (type, NULL);
  GList    * windows;

  gtk_container_add (GTK_CONTAINER (window), widget);

  gtk_widget_show_all (window);

  windows = g_list_prepend (NULL, gtk_widget_get_window (window));
  while (windows)
    {
      gpointer  user_data = NULL;
      GList   * children = gdk_window_get_children (windows->data);

      if (!gdk_window_is_visible (windows->data))
        {
          g_error ("the GdkWindow %p wasn't shown in map()", windows->data);
        }

      gdk_window_get_user_data (windows->data, &user_data);
      if (!user_data)
        {
          /* at some point provide a better message (e.g. with the window tree and the data) */
          g_error ("the GdkWindow %p doesn't have user data set", windows->data);
        }

      windows = g_list_delete_link (windows, windows);
      windows = g_list_concat (windows, children);
    }
}
Exemple #3
0
static void
test_text_access (void)
{
  const int N_WIDGETS = 4;
  GtkWidget *widgets[N_WIDGETS];
  int i = 0;
  widgets[i++] = gtk_test_create_widget (GTK_TYPE_LABEL, NULL);
  widgets[i++] = gtk_test_create_widget (GTK_TYPE_ENTRY, NULL);
  widgets[i++] = gtk_test_create_widget (GTK_TYPE_TEXT_VIEW, NULL);
  widgets[i++] = gtk_test_create_widget (g_type_from_name ("GtkText"), NULL);
  g_assert (i == N_WIDGETS);
  for (i = 0; i < N_WIDGETS; i++)
    gtk_test_text_set (widgets[i], "foobar");
  for (i = 0; i < N_WIDGETS; i++)
    {
      gchar *text  = gtk_test_text_get (widgets[i]);
      g_assert (strcmp (text, "foobar") == 0);
      g_free (text);
    }
  for (i = 0; i < N_WIDGETS; i++)
    gtk_test_text_set (widgets[i], "");
  for (i = 0; i < N_WIDGETS; i++)
    {
      gchar *text  = gtk_test_text_get (widgets[i]);
      g_assert (strcmp (text, "") == 0);
      g_free (text);
    }
}
Exemple #4
0
/**
 * gtk_test_create_simple_window:
 * @window_title:       Title of the window to be displayed.
 * @dialog_text:        Text inside the window to be displayed.
 *
 * Create a simple window with window title @window_title and
 * text contents @dialog_text.
 * The window will quit any running gtk_main()-loop when destroyed, and it
 * will automatically be destroyed upon test function teardown.
 *
 * Returns: (transfer none): a widget pointer to the newly created GtkWindow.
 *
 * Since: 2.14
 **/
GtkWidget*
gtk_test_create_simple_window (const gchar *window_title,
                               const gchar *dialog_text)
{
    GtkWidget *window = gtk_test_create_widget (GTK_TYPE_WINDOW, "title", window_title, NULL);
    GtkWidget *vbox = gtk_test_create_widget (GTK_TYPE_BOX, "parent", window, "orientation", GTK_ORIENTATION_VERTICAL, NULL);
    gtk_test_create_widget (GTK_TYPE_LABEL, "label", dialog_text, "parent", vbox, NULL);
    g_signal_connect (window, "destroy", G_CALLBACK (try_main_quit), NULL);
    gtk_widget_show_all (vbox);
    return window;
}
Exemple #5
0
static void
test_widget_life_cycle (gpointer  data)
{
  GType      type = GPOINTER_TO_SIZE (data);
  GtkWidget* window = gtk_test_create_widget (GTK_TYPE_WINDOW, NULL);
  GtkWidget* widget = gtk_test_create_widget (type, NULL);

  gtk_container_add (GTK_CONTAINER (window), widget);

  gtk_widget_show_all (window);
}
Exemple #6
0
static void
test_container_add (gpointer  data)
{
  GType      type = GPOINTER_TO_SIZE (data);
  GtkWidget* window = gtk_test_create_widget (GTK_TYPE_WINDOW, NULL);
  GtkWidget* container = gtk_test_create_widget (type, NULL);
  int i;

  for (i = 0; i < 5; i++)
    {
      gchar    * text = g_strdup_printf ("%d", 1 + i);
      GtkWidget* child = gtk_label_new (text);

      gtk_container_add (GTK_CONTAINER (container), child);
    }

  gtk_container_add (GTK_CONTAINER (window), container);
  gtk_widget_show (window);
}