]> Pileus Git - ~andy/gtk/blob - tests/testcolorchooser.c
testcolorchooser: Add more options
[~andy/gtk] / tests / testcolorchooser.c
1 #include <gtk/gtk.h>
2
3 static void
4 color_changed (GObject *o, GParamSpec *pspect, gpointer data)
5 {
6   GdkRGBA color;
7
8   gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (o), &color);
9   g_print ("color changed: %g %g %g %g\n",
10            color.red, color.green, color.blue, color.alpha);
11 }
12
13 static void
14 dialog_response (GtkDialog *dialog, gint response)
15 {
16   GdkRGBA color;
17
18   switch (response)
19     {
20     case GTK_RESPONSE_OK:
21       gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &color);
22       g_print ("color accepted: %g %g %g %g\n",
23            color.red, color.green, color.blue, color.alpha);
24       break;
25     default:
26       g_print ("canceled\n");
27       break;
28     }
29
30   gtk_main_quit ();
31 }
32
33 int
34 main (int argc, char *argv[])
35 {
36   GtkWidget *dialog;
37   gint i;
38
39   gtk_init (NULL, NULL);
40
41   dialog = gtk_color_chooser_dialog_new ("Select a color", NULL);
42
43   for (i = 1; i < argc; i++)
44     {
45       if (g_strcmp0 (argv[i], "--no-alpha") == 0)
46         {
47           g_print ("turning alpha off\n");
48           gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER (dialog), FALSE);
49         }
50       else if (g_strcmp0 (argv[i], "--edit") == 0)
51         {
52           g_print ("starting in edit mode\n");
53           g_object_set (dialog, "show-editor", TRUE, NULL);
54         }
55     }
56
57   g_signal_connect (dialog, "notify::color", G_CALLBACK (color_changed), NULL);
58   g_signal_connect (dialog, "response", G_CALLBACK (dialog_response), NULL);
59
60   gtk_widget_show_all (dialog);
61
62   gtk_main ();
63
64   return 0;
65 }
66