Bonjour,
Je débute dans la programmation GTK.
Mon souci se situe dans une boîte de dialogue, dans laquelle j'ai ajouté trois boutons :
  • un bouton pour ouvrir un FileChooser qui ouvrirait un dossier Musique
  • un second bouton qui ouvrirait aussi un FileChooser pour un dossier Vidéos
  • un dernier bouton pour refermer la boîte de dialogue


Pour créer ces différents boutons, j'utilise un tableau de quatre boutons, car sinon, l'appui sur le premier bouton ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
void LanceVlc(void)
{
    /*Initialisation des Widgets*/
    GtkWidget *pBoite;
    GtkWidget *pBouton[3];
    GtkWidget *pImage[3];
    GtkTooltips *pTool;
 
    /*La Boite est une boîte de dialogue*/
    pBoite = gtk_dialog_new();
    /*Texte de la boîte de ialogue*/
    gtk_window_set_title(GTK_WINDOW(pBoite), "Choisissez votre média.");
    /*Icone dans la barre de titre*/
    gtk_window_set_icon_from_file(GTK_WINDOW(pBoite), "./vlc.png", NULL);
    /*Bulle d'aide*/
    pTool = gtk_tooltips_new();
    /*Bouton 1*/
    pBouton[1] = gtk_button_new();
    /*Image du bouton*/
    pImage[1] = gtk_image_new_from_file("./video.png");
    /*Bulle d'aide associée au bouton n°0*/
    gtk_tooltips_set_tip(pTool, pBouton[1], "Ouvrir une vidéo avec VLC", NULL);
    /*Ajout de l'icône dans le bouton*/
    gtk_container_add(GTK_CONTAINER(pBouton[1]), (GtkWidget *)pImage[1]);
    /*Ajout du bouton dans la boîte de dialogue*/
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pBoite)->action_area), pBouton[1], TRUE, TRUE, 10);
    /*Bouton 2*/
    pBouton[2] = gtk_button_new();
    /*Image 2*/
    pImage[2] = gtk_image_new_from_file("./musique.png");
    /*Bulle d'aide associée au bouton 2*/
    gtk_tooltips_set_tip(pTool, pBouton[2], "Ouvrir une piste musicale avec VLC", NULL);
    /*Ajout de l'icone dans le bouton*/
    gtk_container_add(GTK_CONTAINER(pBouton[2]), (GtkWidget *)pImage[2]);
    /*Ajout du bouton dans la boîte de dialogue*/
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pBoite)->action_area), pBouton[2], TRUE, TRUE, 10);
    /*Bouton 3 : Annuler*/
    pBouton[3] = gtk_button_new();
    /*Image 3*/
    pImage[3] = gtk_image_new_from_file("./retour.png");
    /*Ajout de l'icone dans le bouton*/
    gtk_container_add(GTK_CONTAINER(pBouton[3]), (GtkWidget *)pImage[3]);
    /*Ajout du bouton dans la fenêtre*/
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pBoite)->action_area), pBouton[3], TRUE, TRUE, 10);
    /*Connexion du "clic" à la fonction creer_fichiers_selection_video*/
    g_signal_connect(G_OBJECT(pBouton[1]), "clicked", G_CALLBACK(creer_fichiers_selection_video), NULL);
    /*Connexion du "clic à la fonction creer_fichiers_selection_audio*/
    g_signal_connect(G_OBJECT(pBouton[2]), "clicked", G_CALLBACK(creer_fichiers_selection_audio), NULL);
    /*Connexion de destroy au clic sur le bouton 3*/
    g_signal_connect_swapped(G_OBJECT(pBouton[3]), "clicked", G_CALLBACK(gtk_widget_destroy), pBoite);
    /*Et l'on montre le tout*/
    gtk_widget_show_all(pBoite);
}
Y'a-t-il une raison cohérente pour que je sois obligée d'éviter d'utiliser le pBouton[0] ?