Bonjour,

J'ai construit l'interface de mon application avec Glade. GtkBuilder me permet d'en récupérer une instance lors de la création de ma fenêtre principale. Au besoin, je passe en paramètre des callbacks un pointeur sur ce GtkBuilder. D'autre part, j'ai eu besoin de créer une structure contenant les variables utiles pour stocker des informations de l'application (gboolean pour sauvegarde nécessaire, gchar* pour le chemin du fichier ouvert, etc.). Cette structure est déclarée en global. J'ai lu plusieurs fois sur ce forum ce genre d'idée :
Citation Envoyé par gerald3d Voir le message
Pour répondre plus génériquement, la dernière variable de la fonction g_signal_connect(); permet de transmettre à la fonction CALLBACK une donnée utilisateur sous la forme d'un pointeur.
La plupart des développeurs crée une structure dans laquelle on trouve tous les widgets nécessaires à l'interface, déclare ensuite une variable du type de cette structure et la transmette comme pointeur.
Ainsi on peut accéder à tout moment à un widget de l'interface dans n'importe quel CALLBACK en s'affranchissant d'une déclaration en global.
J'ai bien compris le concept mais comment combiner les widgets "associés" au GtkBuilder et la structure (ce qui éviterait l'emploi de variables globales) ? Utiliser GSList* gtk_builder_get_objects (GtkBuilder *builder); peut-il me faire avancer vers une solution satisfaisante ? J'aurais besoin d'une description pratique de l'utilisation d'une structure principale faisant référence à la fois à la sous-structure et au GtkBuilder. Je pourrais ensuite transmettre cette structure et éviter des variables globales superflues.

Merci !

PS : si j'utilise la fonction gtk_builder_get_objects ( ), à quel moment faut-il libérer la GSList avec g_slist_free( ) ?