]> Pileus Git - ~andy/gtk/blob - examples/buttonbox/buttonbox.c
initialize anchor_path to NULL.
[~andy/gtk] / examples / buttonbox / buttonbox.c
1
2 #include <gtk/gtk.h>
3
4 /* Create a Button Box with the specified parameters */
5 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_hbutton_box_new ();
20   else
21     bbox = gtk_vbutton_box_new ();
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   /*gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), child_w, child_h);*/
30
31   button = gtk_button_new_from_stock (GTK_STOCK_OK);
32   gtk_container_add (GTK_CONTAINER (bbox), button);
33
34   button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
35   gtk_container_add (GTK_CONTAINER (bbox), button);
36
37   button = gtk_button_new_from_stock (GTK_STOCK_HELP);
38   gtk_container_add (GTK_CONTAINER (bbox), button);
39
40   return frame;
41 }
42
43 int main( int   argc,
44           char *argv[] )
45 {
46   GtkWidget *window;
47   GtkWidget *main_vbox;
48   GtkWidget *vbox;
49   GtkWidget *hbox;
50   GtkWidget *frame_horz;
51   GtkWidget *frame_vert;
52
53   /* Initialize GTK */
54   gtk_init (&argc, &argv);
55
56   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
57   gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
58
59   g_signal_connect (G_OBJECT (window), "destroy",
60                     G_CALLBACK (gtk_main_quit),
61                     NULL);
62
63   gtk_container_set_border_width (GTK_CONTAINER (window), 10);
64
65   main_vbox = gtk_vbox_new (FALSE, 0);
66   gtk_container_add (GTK_CONTAINER (window), main_vbox);
67
68   frame_horz = gtk_frame_new ("Horizontal Button Boxes");
69   gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
70
71   vbox = gtk_vbox_new (FALSE, 0);
72   gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
73   gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
74
75   gtk_box_pack_start (GTK_BOX (vbox),
76            create_bbox (TRUE, "Spread (spacing 40)", 40, 85, 20, GTK_BUTTONBOX_SPREAD),
77                       TRUE, TRUE, 0);
78
79   gtk_box_pack_start (GTK_BOX (vbox),
80            create_bbox (TRUE, "Edge (spacing 30)", 30, 85, 20, GTK_BUTTONBOX_EDGE),
81                       TRUE, TRUE, 5);
82
83   gtk_box_pack_start (GTK_BOX (vbox),
84            create_bbox (TRUE, "Start (spacing 20)", 20, 85, 20, GTK_BUTTONBOX_START),
85                       TRUE, TRUE, 5);
86
87   gtk_box_pack_start (GTK_BOX (vbox),
88            create_bbox (TRUE, "End (spacing 10)", 10, 85, 20, GTK_BUTTONBOX_END),
89                       TRUE, TRUE, 5);
90
91   frame_vert = gtk_frame_new ("Vertical Button Boxes");
92   gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
93
94   hbox = gtk_hbox_new (FALSE, 0);
95   gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
96   gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
97
98   gtk_box_pack_start (GTK_BOX (hbox),
99            create_bbox (FALSE, "Spread (spacing 5)", 5, 85, 20, GTK_BUTTONBOX_SPREAD),
100                       TRUE, TRUE, 0);
101
102   gtk_box_pack_start (GTK_BOX (hbox),
103            create_bbox (FALSE, "Edge (spacing 30)", 30, 85, 20, GTK_BUTTONBOX_EDGE),
104                       TRUE, TRUE, 5);
105
106   gtk_box_pack_start (GTK_BOX (hbox),
107            create_bbox (FALSE, "Start (spacing 20)", 20, 85, 20, GTK_BUTTONBOX_START),
108                       TRUE, TRUE, 5);
109
110   gtk_box_pack_start (GTK_BOX (hbox),
111            create_bbox (FALSE, "End (spacing 20)", 20, 85, 20, GTK_BUTTONBOX_END),
112                       TRUE, TRUE, 5);
113
114   gtk_widget_show_all (window);
115
116   /* Enter the event loop */
117   gtk_main ();
118     
119   return 0;
120 }