/** hbdemo.c **/ #include typedef struct { gchar *name; GtkButtonBoxStyle value; } layoutOption; GtkWidget *makeButtonFrame(layoutOption *option); GtkWidget *makeButtonBox(layoutOption *option); GtkWidget *makeDisplay(); gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); layoutOption option[] = { { "DEFAULT_STYLE", GTK_BUTTONBOX_DEFAULT_STYLE }, { "SPREAD", GTK_BUTTONBOX_SPREAD }, { "EDGE", GTK_BUTTONBOX_EDGE }, { "START", GTK_BUTTONBOX_START }, { "END", GTK_BUTTONBOX_END } }; int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *demoDisplay; gnome_init("hbdemo","1.0",argc,argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(eventDelete), NULL); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(eventDestroy), NULL); demoDisplay = makeDisplay(); gtk_container_add(GTK_CONTAINER(window),demoDisplay); gtk_widget_show_all(window); gtk_main(); exit(0); } GtkWidget *makeDisplay() { int i; GtkWidget *vbox; GtkWidget *frame; vbox = gtk_vbox_new(FALSE,10); gtk_container_set_border_width(GTK_CONTAINER(vbox),10); for(i=0; i<5; i++) { frame = makeButtonFrame(&option[i]); gtk_box_pack_start(GTK_BOX(vbox),frame, FALSE,FALSE,0); } return(vbox); } GtkWidget *makeButtonFrame(layoutOption *option) { GtkWidget *frame; GtkWidget *buttonbox; frame = gtk_frame_new(option->name); buttonbox = makeButtonBox(option); gtk_container_add(GTK_CONTAINER(frame),buttonbox); return(frame); } GtkWidget *makeButtonBox(layoutOption *option) { GtkWidget *buttonbox; GtkWidget *button; buttonbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonbox), option->value); gtk_container_set_border_width( GTK_CONTAINER(buttonbox),10); button = gtk_button_new_with_label("OK"); gtk_container_add(GTK_CONTAINER(buttonbox),button); button = gtk_button_new_with_label("Refresh"); gtk_container_add(GTK_CONTAINER(buttonbox),button); button = gtk_button_new_with_label("Clear"); gtk_container_add(GTK_CONTAINER(buttonbox),button); button = gtk_button_new_with_label("Cancel"); gtk_container_add(GTK_CONTAINER(buttonbox),button); return(buttonbox); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }