/** layout.c **/ #include GtkWidget *makeLayout(); void addButtons(GtkWidget *layout); gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *layout; gnome_init("layout","1.0",argc,argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 200,200); 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); layout = makeLayout(); gtk_container_add(GTK_CONTAINER(window),layout); gtk_widget_show_all(window); gtk_main(); exit(0); } GtkWidget *makeLayout() { GtkWidget *layout; GtkWidget *vscroll; GtkWidget *hscroll; GtkWidget *table; GtkAdjustment *horizAdj; GtkAdjustment *vertAdj; vertAdj = (GtkAdjustment *)gtk_adjustment_new( 0.0, 0.0, 1000.0, 1.0, 10.0, 20.0); horizAdj = (GtkAdjustment *)gtk_adjustment_new( 0.0, 0.0, 1000.0, 1.0, 10.0, 20.0); layout = gtk_layout_new(horizAdj,vertAdj); gtk_layout_set_size(GTK_LAYOUT(layout),1000,1000); addButtons(layout); vscroll = gtk_vscrollbar_new(vertAdj); hscroll = gtk_hscrollbar_new(horizAdj); table = gtk_table_new(2,2,FALSE); gtk_table_attach_defaults(GTK_TABLE(table),layout, 0,1,0,1); gtk_table_attach(GTK_TABLE(table),vscroll, 1,2,0,1, GTK_FILL,GTK_FILL,0,0); gtk_table_attach(GTK_TABLE(table),hscroll, 0,1,1,2, GTK_FILL,GTK_FILL,0,0); return(table); } void addButtons(GtkWidget *layout) { gint i; gint j; GtkWidget *button; gchar label[20]; for(i=100; i<1000; i += 100) { for(j=100; j<1000; j+= 50) { sprintf(label,"(%d,%d)",i,j); button = gtk_button_new_with_label(label); gtk_layout_put(GTK_LAYOUT(layout),button,i,j); } } } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }