#include <gtk/gtk.h>
/* создаём контейнер кнопок со специфическими параметрами */
gtkwidget *create_bbox( gint horizontal,
char *title,
gint spacing,
gint child_w,
gint child_h,
gint layout )
{
gtkwidget *frame;
gtkwidget *bbox;
gtkwidget *button;
frame = gtk_frame_new (title);
if (horizontal)
bbox = gtk_hbutton_box_new ();
else
bbox = gtk_vbutton_box_new ();
gtk_container_set_border_width (gtk_container (bbox), 5);
gtk_container_add (gtk_container (frame), bbox);
/* установка внешнего вида контейнера */
gtk_button_box_set_layout (gtk_button_box (bbox), layout);
gtk_box_set_spacing (gtk_box (bbox), spacing);
/*gtk_button_box_set_child_size (gtk_button_box (bbox), child_w, child_h);*/
button = gtk_button_new_from_stock (gtk_stock_ok);
gtk_container_add (gtk_container (bbox), button);
button = gtk_button_new_from_stock (gtk_stock_cancel);
gtk_container_add (gtk_container (bbox), button);
button = gtk_button_new_from_stock (gtk_stock_help);
gtk_container_add (gtk_container (bbox), button);
return frame;
}
int main( int argc,
char *argv[] )
{
static gtkwidget* window = null;
gtkwidget *main_vbox;
gtkwidget *vbox;
gtkwidget *hbox;
gtkwidget *frame_horz;
gtkwidget *frame_vert;
/* инициализируем gtk */
gtk_init (&argc, &argv);
window = gtk_window_new (gtk_window_toplevel);
gtk_window_set_title (gtk_window (window), "button boxes");
g_signal_connect (g_object (window), "destroy",
g_callback (gtk_main_quit),
null);
gtk_container_set_border_width (gtk_container (window), 10);
main_vbox = gtk_vbox_new (false, 0);
gtk_container_add (gtk_container (window), main_vbox);
frame_horz = gtk_frame_new ("горизонтальный контейнер кнопок");
gtk_box_pack_start (gtk_box (main_vbox), frame_horz, true, true, 10);
vbox = gtk_vbox_new (false, 0);
gtk_container_set_border_width (gtk_container (vbox), 10);
gtk_container_add (gtk_container (frame_horz), vbox);
gtk_box_pack_start (gtk_box (vbox),
create_bbox (true, "spread (spacing 40)", 40, 85, 20, gtk_buttonbox_spread),
true, true, 0);
gtk_box_pack_start (gtk_box (vbox),
create_bbox (true, "edge (spacing 30)", 30, 85, 20, gtk_buttonbox_edge),
true, true, 5);
gtk_box_pack_start (gtk_box (vbox),
create_bbox (true, "start (spacing 20)", 20, 85, 20, gtk_buttonbox_start),
true, true, 5);
gtk_box_pack_start (gtk_box (vbox),
create_bbox (true, "end (spacing 10)", 10, 85, 20, gtk_buttonbox_end),
true, true, 5);
frame_vert = gtk_frame_new ("вертикальный контейнер кнопок");
gtk_box_pack_start (gtk_box (main_vbox), frame_vert, true, true, 10);
hbox = gtk_hbox_new (false, 0);
gtk_container_set_border_width (gtk_container (hbox), 10);
gtk_container_add (gtk_container (frame_vert), hbox);
gtk_box_pack_start (gtk_box (hbox),
create_bbox (false, "spread (spacing 5)", 5, 85, 20, gtk_buttonbox_spread),
true, true, 0);
gtk_box_pack_start (gtk_box (hbox),
create_bbox (false, "edge (spacing 30)", 30, 85, 20, gtk_buttonbox_edge),
true, true, 5);
gtk_box_pack_start (gtk_box (hbox),
create_bbox (false, "start (spacing 20)", 20, 85, 20, gtk_buttonbox_start),
true, true, 5);
gtk_box_pack_start (gtk_box (hbox),
create_bbox (false, "end (spacing 20)", 20, 85, 20, gtk_buttonbox_end),
true, true, 5);
gtk_widget_show_all (window);
/* входим в цикл ожидания событий */
gtk_main ();
return 0;
}
|