]> Pileus Git - ~andy/gtk/blob - examples/buttonbox/buttonbox.c
Use gtk_box_new() instead gtk_[v|h]box_new()
[~andy/gtk] / examples / buttonbox / buttonbox.c
1
2 #include <gtk/gtk.h>
3
4 /* Create a Button Box with the specified parameters */
5 static GtkWidget *create_bbox( gint  horizontal,
6                                char *title,
7                                gint  spacing,
8                                gint  child_w,
9                                gint  child_h,
10                                gint  layout )
11 {
12   GtkWidget *frame;
13   GtkWidget *bbox;
14   GtkWidget *button;
15
16   frame = gtk_frame_new (title);
17
18   if (horizontal)
19     bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
20   else
21     bbox = gtk_button_box_new (GTK_ORIENTATION_VERTICAL);
22
23   gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);
24   gtk_container_add (GTK_CONTAINER (frame), bbox);
25
26   /* Set the appearance of the Button Box */
27   gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
28   gtk_box_set_spacing (GTK_BOX (bbox), spacing);
29
30   button = gtk_button_new_from_stock (GTK_STOCK_OK);
31   gtk_container_add (GTK_CONTAINER (bbox), button);
32
33   button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
34   gtk_container_add (GTK_CONTAINER (bbox), button);
35
36   button = gtk_button_new_from_stock (GTK_STOCK_HELP);
37   gtk_container_add (GTK_CONTAINER (bbox), button);
38
39   return frame;
40 }
41
42 int main( int   argc,
43           char *argv[] )
44 {
45   static GtkWidget* window = NULL;
46   GtkWidget *main_vbox;
47   GtkWidget *vbox;
48   GtkWidget *hbox;
49   GtkWidget *frame_horz;
50   GtkWidget *frame_vert;
51
52   /* Initialize GTK */
53   gtk_init (&argc, &argv);
54
55   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
56   gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
57
58   g_signal_connect (G_OBJECT (window), "destroy",
59                     G_CALLBACK (gtk_main_quit),
60                     NULL);
61
62   gtk_container_set_border_width (GTK_CONTAINER (window), 10);
63
64   main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
65   gtk_container_add (GTK_CONTAINER (window), main_vbox);
66
67   frame_horz = gtk_frame_new ("Horizontal Button Boxes");
68   gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
69
70   vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
71   gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
72   gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
73
74   gtk_box_pack_start (GTK_BOX (vbox),
75            create_bbox (TRUE, "Spread (spacing 40)", 40, 85, 20, GTK_BUTTONBOX_SPREAD),
76                       TRUE, TRUE, 0);
77
78   gtk_box_pack_start (GTK_BOX (vbox),
79            create_bbox (TRUE, "Edge (spacing 30)", 30, 85, 20, GTK_BUTTONBOX_EDGE),
80                       TRUE, TRUE, 5);
81
82   gtk_box_pack_start (GTK_BOX (vbox),
83            create_bbox (TRUE, "Start (spacing 20)", 20, 85, 20, GTK_BUTTONBOX_START),
84                       TRUE, TRUE, 5);
85
86   gtk_box_pack_start (GTK_BOX (vbox),
87            create_bbox (TRUE, "End (spacing 10)", 10, 85, 20, GTK_BUTTONBOX_END),
88                       TRUE, TRUE, 5);
89
90   frame_vert = gtk_frame_new ("Vertical Button Boxes");
91   gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
92
93   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 0);
94   gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
95   gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
96
97   gtk_box_pack_start (GTK_BOX (hbox),
98            create_bbox (FALSE, "Spread (spacing 5)", 5, 85, 20, GTK_BUTTONBOX_SPREAD),
99                       TRUE, TRUE, 0);
100
101   gtk_box_pack_start (GTK_BOX (hbox),
102            create_bbox (FALSE, "Edge (spacing 30)", 30, 85, 20, GTK_BUTTONBOX_EDGE),
103                       TRUE, TRUE, 5);
104
105   gtk_box_pack_start (GTK_BOX (hbox),
106            create_bbox (FALSE, "Start (spacing 20)", 20, 85, 20, GTK_BUTTONBOX_START),
107                       TRUE, TRUE, 5);
108
109   gtk_box_pack_start (GTK_BOX (hbox),
110            create_bbox (FALSE, "End (spacing 20)", 20, 85, 20, GTK_BUTTONBOX_END),
111                       TRUE, TRUE, 5);
112
113   gtk_widget_show_all (window);
114
115   /* Enter the event loop */
116   gtk_main ();
117     
118   return 0;
119 }