]> Pileus Git - ~andy/gtk/blob - tests/testswitch.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / tests / testswitch.c
1 #include <stdlib.h>
2 #include <gtk/gtk.h>
3
4 static gboolean
5 boolean_to_text (GBinding *binding,
6                  const GValue *source,
7                  GValue *target,
8                  gpointer dummy G_GNUC_UNUSED)
9 {
10   if (g_value_get_boolean (source))
11     g_value_set_string (target, "Enabled");
12   else
13     g_value_set_string (target, "Disabled");
14
15   return TRUE;
16 }
17
18 static GtkWidget *
19 make_switch (gboolean is_on,
20              gboolean is_sensitive)
21 {
22   GtkWidget *hbox;
23   GtkWidget *sw, *label;
24
25   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
26
27   sw = gtk_switch_new ();
28   gtk_switch_set_active (GTK_SWITCH (sw), is_on);
29   gtk_box_pack_start (GTK_BOX (hbox), sw, FALSE, FALSE, 0);
30   gtk_widget_set_sensitive (sw, is_sensitive);
31   gtk_widget_show (sw);
32
33   label = gtk_label_new (is_on ? "Enabled" : "Disabled");
34   gtk_box_pack_end (GTK_BOX (hbox), label, TRUE, TRUE, 0);
35   gtk_widget_show (label);
36
37   g_object_bind_property_full (sw, "active",
38                                label, "label",
39                                G_BINDING_DEFAULT,
40                                boolean_to_text,
41                                NULL,
42                                NULL, NULL);
43
44   return hbox;
45 }
46
47 int
48 main (int   argc,
49       char *argv[])
50 {
51   GtkWidget *window;
52   GtkWidget *vbox, *hbox;
53
54   gtk_init (&argc, &argv);
55
56   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
57   gtk_window_set_title (GTK_WINDOW (window), "GtkSwitch");
58   gtk_window_set_default_size (GTK_WINDOW (window), 400, -1);
59   gtk_container_set_border_width (GTK_CONTAINER (window), 6);
60   g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
61   gtk_widget_show (window);
62
63   vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
64   gtk_container_add (GTK_CONTAINER (window), vbox);
65   gtk_widget_show (vbox);
66
67   hbox = make_switch (FALSE, TRUE);
68   gtk_container_add (GTK_CONTAINER (vbox), hbox);
69   gtk_widget_show (hbox);
70
71   hbox = make_switch (TRUE, TRUE);
72   gtk_container_add (GTK_CONTAINER (vbox), hbox);
73   gtk_widget_show (hbox);
74
75   hbox = make_switch (FALSE, FALSE);
76   gtk_container_add (GTK_CONTAINER (vbox), hbox);
77   gtk_widget_show (hbox);
78
79   hbox = make_switch (TRUE, FALSE);
80   gtk_container_add (GTK_CONTAINER (vbox), hbox);
81   gtk_widget_show (hbox);
82
83   gtk_main ();
84
85   return EXIT_SUCCESS;
86 }