/* C port of crashing perl example. gcc -o stephan-crash stephan-crash.c -W -g `pkg-config --cflags --libs gtk+-2.0` */ #include void load_dir () { GtkWidget * dlg; GtkResponseType response; g_print ("Entering sub loadDir...\n"); dlg = gtk_file_chooser_dialog_new ("Select directory", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); response = gtk_dialog_run (GTK_DIALOG (dlg)); if (response == GTK_RESPONSE_OK) { gchar * filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg)); g_print ("You selected: >%s<\n", filename); g_free (filename); } else { g_print ("You aborted.\n"); } gtk_widget_destroy (dlg); g_print ("Leaving sub loadDir...\n"); } int main (int argc, char *argv[]) { GtkWidget * window; GtkWidget * button; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); button = gtk_button_new_with_label ("click me"); g_signal_connect (button, "clicked", G_CALLBACK (load_dir), NULL); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show_all (window); gtk_main (); return 0; }