[gtk+] Add a testcase for various dialog headerbar scenarios
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add a testcase for various dialog headerbar scenarios
- Date: Sun, 2 Feb 2014 22:35:24 +0000 (UTC)
commit be60724d087278126cf1db2de74b78fcc1c4ff9e
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Feb 2 17:27:34 2014 -0500
Add a testcase for various dialog headerbar scenarios
tests/Makefile.am | 1 +
tests/testdialog.c | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 315 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7f250bc..ca43e6d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -48,6 +48,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \
testcombo \
testcombochange \
testcellrenderertext \
+ testdialog \
testdnd \
testellipsise \
testentrycompletion \
diff --git a/tests/testdialog.c b/tests/testdialog.c
new file mode 100644
index 0000000..5683d18
--- /dev/null
+++ b/tests/testdialog.c
@@ -0,0 +1,314 @@
+#include <gtk/gtk.h>
+
+static void
+show_color_chooser (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_color_chooser_dialog_new ("Builtin", parent);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static void
+show_color_chooser_generic (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = g_object_new (GTK_TYPE_COLOR_CHOOSER_DIALOG,
+ "title", "Generic Builtin",
+ "transient-for", parent,
+ NULL);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static void
+add_content (GtkWidget *dialog)
+{
+ GtkWidget *label;
+
+ label = gtk_label_new ("content");
+ g_object_set (label, "margin", 50, NULL);
+ gtk_widget_show (label);
+
+ gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), label);
+}
+
+static void
+add_buttons (GtkWidget *dialog)
+{
+ gtk_dialog_add_button (GTK_DIALOG (dialog), "Done", GTK_RESPONSE_OK);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+}
+
+static void
+show_dialog (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_dialog_new_with_buttons ("Simple", parent,
+ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
+ "Close", GTK_RESPONSE_CLOSE,
+ NULL);
+
+ add_content (dialog);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static void
+show_dialog_with_header (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_dialog_new_with_buttons ("With Header", parent,
+
GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT|GTK_DIALOG_USE_HEADER_BAR,
+ "Close", GTK_RESPONSE_CLOSE,
+ NULL);
+
+ add_content (dialog);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static void
+show_dialog_with_buttons (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_dialog_new_with_buttons ("With Buttons", parent,
+ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
+ "Close", GTK_RESPONSE_CLOSE,
+ "Frob", 25,
+ NULL);
+
+ add_content (dialog);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static void
+show_dialog_with_header_buttons (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_dialog_new_with_buttons ("Header & Buttons", parent,
+
GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT|GTK_DIALOG_USE_HEADER_BAR,
+ "Close", GTK_RESPONSE_CLOSE,
+ "Frob", 25,
+ NULL);
+
+ add_content (dialog);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+typedef struct {
+ GtkDialog parent;
+} MyDialog;
+
+typedef struct {
+ GtkDialogClass parent_class;
+} MyDialogClass;
+
+G_DEFINE_TYPE (MyDialog, my_dialog, GTK_TYPE_DIALOG);
+
+static void
+my_dialog_init (MyDialog *dialog)
+{
+ gtk_widget_init_template (GTK_WIDGET (dialog));
+}
+
+static void
+my_dialog_class_init (MyDialogClass *class)
+{
+ gchar *buffer;
+ gsize size;
+ GBytes *bytes;
+
+ g_file_get_contents ("mydialog.ui", &buffer, &size, NULL);
+ bytes = g_bytes_new_static (buffer, size);
+ gtk_widget_class_set_template (GTK_WIDGET_CLASS (class), bytes);
+ g_bytes_unref (bytes);
+}
+
+static void
+show_dialog_from_template (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = g_object_new (my_dialog_get_type (),
+ "title", "Template",
+ "transient-for", parent,
+ NULL);
+
+ add_buttons (dialog);
+ add_content (dialog);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static void
+show_dialog_flex_template (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+ gboolean use_header;
+
+ g_object_get (gtk_settings_get_default (),
+ "gtk-dialogs-use-header", &use_header,
+ NULL);
+ dialog = g_object_new (my_dialog_get_type (),
+ "title", "Flexible Template",
+ "transient-for", parent,
+ "use-header-bar", use_header,
+ NULL);
+
+ add_buttons (dialog);
+ add_content (dialog);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+typedef struct {
+ GtkDialog parent;
+
+ GtkWidget *content;
+} MyDialog2;
+
+typedef struct {
+ GtkDialogClass parent_class;
+} MyDialog2Class;
+
+G_DEFINE_TYPE (MyDialog2, my_dialog2, GTK_TYPE_DIALOG);
+
+static void
+my_dialog2_init (MyDialog2 *dialog)
+{
+ gtk_widget_init_template (GTK_WIDGET (dialog));
+}
+
+static void
+my_dialog2_class_init (MyDialog2Class *class)
+{
+ gchar *buffer;
+ gsize size;
+ GBytes *bytes;
+
+ g_file_get_contents ("mydialog2.ui", &buffer, &size, NULL);
+ bytes = g_bytes_new_static (buffer, size);
+ gtk_widget_class_set_template (GTK_WIDGET_CLASS (class), bytes);
+ g_bytes_unref (bytes);
+
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), MyDialog2, content);
+}
+
+static void
+show_dialog_from_template_with_header (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = g_object_new (my_dialog2_get_type (),
+ "transient-for", parent,
+ "use-header-bar", TRUE,
+ NULL);
+
+ add_buttons (dialog);
+ add_content (dialog);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkWidget *window;
+ GtkWidget *vbox;
+ GtkWidget *box;
+ GtkWidget *button;
+
+ gtk_init (NULL, NULL);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
+
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
+ gtk_widget_set_halign (vbox, GTK_ALIGN_FILL);
+ gtk_widget_set_valign (vbox, GTK_ALIGN_CENTER);
+ gtk_widget_show (vbox);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+
+ box = gtk_flow_box_new ();
+ gtk_flow_box_set_selection_mode (GTK_FLOW_BOX (box), GTK_SELECTION_NONE);
+ gtk_widget_set_hexpand (box, TRUE);
+ gtk_widget_show (box);
+ gtk_container_add (GTK_CONTAINER (vbox), box);
+
+ button = gtk_button_new_with_label ("Builtin");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_color_chooser), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("Generic Builtin");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_color_chooser_generic), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("Simple");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_dialog), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("With Header");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_dialog_with_header), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("With Buttons");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_dialog_with_buttons), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("Header & Buttons");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_dialog_with_header_buttons), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("Template");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_dialog_from_template), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("Template With Header");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_dialog_from_template_with_header), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_button_new_with_label ("Flexible Template");
+ g_signal_connect_swapped (button, "clicked", G_CALLBACK (show_dialog_flex_template), window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (box), button);
+
+ button = gtk_check_button_new_with_label ("Dialogs have headers");
+ g_object_bind_property (gtk_settings_get_default (), "gtk-dialogs-use-header",
+ button, "active",
+ G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE);
+ gtk_widget_show (button);
+ gtk_widget_set_halign (button, GTK_ALIGN_CENTER);
+ gtk_container_add (GTK_CONTAINER (vbox), button);
+
+ gtk_widget_show (window);
+ gtk_main ();
+
+ return 0;
+}
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]