1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
#include <gtk/gtk.h>
#include <stdlib.h>
void
on_button2_clicked (GtkButton * button, gpointer data)
{
FILE *cheminwow = NULL;
GtkWidget *pFileSelection;
GtkWidget *pDialog;
GtkWidget *msgError;
GtkWidget *pParent;
gchar *chemin;
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 */
chemin =
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", chemin);
gtk_dialog_run (GTK_DIALOG (pDialog));
gtk_widget_destroy (pDialog);
cheminwow = fopen ("cheminwow.txt", "w+");
if (cheminwow != NULL)
{
fputs (chemin, cheminwow);
fclose (cheminwow)
}
else
{
msgError =
gtk_message_dialog_new (NULL,
GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK,
"Impossible de creer un fichier"
" Cheminwow.txt contenant l'adresse"
" du realmlist !");
gtk_window_set_title (GTK_WINDOW (msgError), "Erreur !");
gtk_dialog_run (GTK_DIALOG (msgError));
gtk_widget_destroy (msgError);
}
break;
default:
break;
}
gtk_widget_destroy (pFileSelection);
/* Le probleme survient lorsque l'on libere cette chaine */
g_free (chemin);
}
int
main (int argc, char **argv)
{
GtkWidget *pWindow = NULL;
GtkWidget *pButton = NULL;
gtk_init (&argc, &argv);
pWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (pWindow), 320, 200);
g_signal_connect (G_OBJECT (pWindow), "destroy", G_CALLBACK (gtk_main_quit),
NULL);
pButton = gtk_button_new_with_label ("toto");
gtk_container_add (GTK_CONTAINER (pWindow), pButton);
g_signal_connect (G_OBJECT (pButton), "clicked",
G_CALLBACK (on_button2_clicked), pWindow);
gtk_widget_show_all (pWindow);
gtk_main ();
return EXIT_SUCCESS;
} |