GTK+ par l'exempleDate de publication : 28 juin 2006
VI. Choisir un fichier
VI-A. Aperçu
VI-B. Utilisation d'un GtkFileChooserFile
VI-C. Code source
VI. Choisir un fichier
VI-A. Aperçu
 Cliquez pour agrandir
VI-B. Utilisation d'un GtkFileChooserFile
Jusqu'à présent l'utilisateur n'avait pas le choix quant au fichier à ouvrir, heureusement GTK+ vient à notre aide grâce au widget GtkFileChooserFile qui est tout simplement une boîte de dialogue qui propose à l'utilisateur de sélectionner un fichier dans son arborescence disque.
Commençons par créer notre boîte de dialogue dans la fonction cb_open :
callback.c | void cb_open (GtkWidget *p_widget, gpointer user_data)
{
GtkWidget *p_dialog = NULL;
p_dialog = gtk_file_chooser_dialog_new ("Ouvrir un fichier", NULL,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
} |
Cette fonction nécessite le titre de la boîte de dialogue, une fenêtre parente, le type d'action (ici, on souhaite ouvrir un fichier, GTK+ autorisera l'utilisateur à sélectionner uniquement les fichiers existants). Pour finir, il s'agit d'un couple de valeurs GTK_STOCK_ITEM/GTK_STOCK_RESPONSE qui permet de créer un bouton utilisant le stock ID spécifié et, lorsque celui-ci est cliqué, la fonction servant à lancer la boîte de dialogue retournera le réponse ID correspondant. Il existe une série de valeurs définies par GTK+, qu'il est conseillé d'utiliser :
typedef enum
{
GTK_RESPONSE_NONE = -1,
GTK_RESPONSE_REJECT = -2,
GTK_RESPONSE_ACCEPT = -3,
GTK_RESPONSE_DELETE_EVENT = -4,
GTK_RESPONSE_OK = -5,
GTK_RESPONSE_CANCEL = -6,
GTK_RESPONSE_CLOSE = -7,
GTK_RESPONSE_YES = -8,
GTK_RESPONSE_NO = -9,
GTK_RESPONSE_APPLY = -10,
GTK_RESPONSE_HELP = -11
} GtkResponseType; |
Nous indiquons la fin des couples stock id/réponse id avec la valeur NULL.
Une fois la boîte de dialogue créee, on demande à GTK+ de l'afficher grâce à la fonction gtk_dialog_run, puis on récupère sa valeur de retour, qui correspond au bouton cliqué par l'utilisateur :
callback.c | if (gtk_dialog_run (GTK_DIALOG (p_dialog)) == GTK_RESPONSE_ACCEPT)
{
} |
Ici ce qui nous intéresse, c'est lorsque que l'utilisateur clique sur le bouton ouvrir (donc gtk_dialog_run renvoie GTK_RESPONSE_ACCEPT), dans ce cas, il nous suffit de récupérer le nom du fichier sélectionné puis de l'ouvrir :
callback.c | gchar *file_name = NULL;
file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (p_dialog));
open_file (file_name, GTK_TEXT_VIEW (user_data));
g_free (file_name), file_name = NULL; |
Pour finir, dans tous les cas, on n'oublie pas de détruire la boîte de dialogue :
callback.c | gtk_widget_destroy (p_dialog); |
Et voilà le travail : l'utilisateur peut ouvrir le fichier qu'il souhaite.
VI-C. Code source
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006 Nicolas Joseph.
Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|