/* File Selection http://www.gtk-fr.org/wakka.php?wiki=LaSelectionDesFichiers gcc `pkg-config --cflags --libs gtk+-2.0` -o 17b 17b.c &&./17b */ #include <stdlib.h> #include <gtk/gtk.h> void OnButton(GtkWidget *pWidget, gpointer data); int main(int argc,char **argv) { GtkWidget *pWindow; GtkWidget *pButton; gtk_init(&argc,&argv); pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), "GtkFileSelection"); gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200); pButton=gtk_button_new_with_mnemonic("_Explorer..."); gtk_container_add(GTK_CONTAINER(pWindow), pButton); g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(OnButton), NULL); gtk_widget_show_all(pWindow); gtk_main(); return EXIT_SUCCESS; } void OnButton(GtkWidget *pWidget, gpointer data) { GtkWidget *pFileSelection; GtkWidget *pDialog; GtkWidget *pParent; gchar *sChemin; pParent = GTK_WIDGET(data); /* Creation de la fenetre de selection */ pFileSelection = gtk_file_chooser_dialog_new("Ouvrir...", GTK_WINDOW(pParent), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); /* On limite les actions a cette fenetre */ gtk_window_set_modal(GTK_WINDOW(pFileSelection), TRUE); /* Affichage fenetre */ switch(gtk_dialog_run(GTK_DIALOG(pFileSelection))) { case GTK_RESPONSE_OK: /* Recuperation du chemin */ sChemin = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pFileSelection)); pDialog = gtk_message_dialog_new(GTK_WINDOW(pFileSelection), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Chemin du fichier :\n%s", sChemin); gtk_dialog_run(GTK_DIALOG(pDialog)); gtk_widget_destroy(pDialog); g_free(sChemin); break; default: break; } gtk_widget_destroy(pFileSelection); }