Test sur la classe d'un widget
Bonjour,
Toujours pour mon interface GTK, je voudrait pouvoir ressortir le nom des fichiers afin de faire une playlist (ceci sans passer par un GtkFileChooser - oui, j'aime bien les défis !).
En première étape, je récupère le contenu de mon dossier par :
Code:
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
| void LectureRepertoire(GtkWidget *Widget, gchar *Nom_Dossier)
{
/*Widgets nécessaires*/
GtkWidget *Fenetre_Repertoire;
GtkWidget *VBox;
GtkWidget *HBox;
GtkWidget *Bouton;
/*Initialisation des différents widgets*/
Fenetre_Repertoire = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(Fenetre_Repertoire), "Sélection des morceaux");
gtk_window_set_position(GTK_WINDOW(Fenetre_Repertoire), GTK_WIN_POS_CENTER);
VBox = gtk_vbox_new(FALSE, 0);
HBox = gtk_hbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(Fenetre_Repertoire), GTK_WIDGET(VBox));
GDir *Repertoire = g_dir_open(Nom_Dossier, 0, NULL);
if (Repertoire)
{
const gchar *Nom_Fichier = NULL;
printf("Contenu du dossier \"%s\" : \n", Nom_Dossier);
while((Nom_Fichier = g_dir_read_name(Repertoire)))
{
printf("%s\n", Nom_Fichier);
Bouton = gtk_check_button_new_with_label(Nom_Fichier);
gtk_box_pack_start(GTK_BOX(VBox), Bouton, FALSE, FALSE, 0);
}
gtk_container_add(GTK_CONTAINER(VBox), GTK_WIDGET(HBox));
Bouton = gtk_button_new_from_stock(GTK_STOCK_OK);
gtk_container_add(GTK_CONTAINER(HBox), GTK_WIDGET(Bouton));
g_signal_connect(G_OBJECT(Bouton), "clicked", G_CALLBACK(AjouterDansPlayList), (GtkWidget*)VBox);
Bouton = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
gtk_container_add(GTK_CONTAINER(HBox), GTK_WIDGET(Bouton));
g_dir_close(Repertoire), Repertoire = NULL;
gtk_widget_show_all(Fenetre_Repertoire);
}
} |
Deuxième étape, je récupère l'état des GtkCheckButtons par la fonction AjouterDansPlaylist :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| void AjouterDansPlayList (GtkWidget *Widget, gpointer data)
{
/*Widgets nécessaires*/
GtkWidget *TempBouton;
GList *ListeBoutons;
//GSList *PlayList = NULL;
gint No_Element = 0;
ListeBoutons = gtk_container_get_children(GTK_CONTAINER((GtkWidget*)data));
printf("Éléménts sélectionnés :\n");
while (No_Element <= g_list_length(ListeBoutons))
{
TempBouton = g_list_nth_data(ListeBoutons, No_Element);
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(TempBouton)))
{
printf("%s\n", gtk_button_get_label(GTK_BUTTON(TempBouton)));
}
No_Element = No_Element + 1;
}
} |
Mon souci est le suivant : j'ai mis les GtkCheckButtons dans une GtkVBox et les boutons Valider et Annuler dans une GtkHBox mise à la suite de la liste des CheckButtons.
Est-il possible de faire un test de la classe du widget et si oui, comment faire ?
Merci beacoup.