/** idle.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); void eventButton(GtkWidget *widget, GdkEvent *event,gpointer data); gint idleFunction(gpointer data); int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *button; gnome_init("idle","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); button = gtk_button_new_with_label("Button"); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(eventButton), NULL); gtk_container_add(GTK_CONTAINER(window),button); gtk_container_set_border_width(GTK_CONTAINER(window), 25); gtk_widget_show_all(window); gtk_idle_add(idleFunction,NULL); gtk_main(); exit(0); } void eventButton(GtkWidget *widget, GdkEvent *event,gpointer data) { g_print("Button pressed!\n"); } gint idleFunction(gpointer data) { gint i; static gint counter = 1; for(i=0; i<5; i++) { g_print("Counter %d in loop number %d\n", counter,i+1); sleep(1); } if(counter++ < 5) return(TRUE); return(FALSE); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }