Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/12/2005, à 11:03

jks

GTK, C, GladeXML: widgets accessibles dans toutes mes fonctions?

Bonjour,

j'essaie d'apprendre le GTK/C et de comprendre le fonctionnement de Glade XML.
Voilà je bloque sur ceci :

1) J'ai créé une interface GTK avec Glade (j'ai mis plusieurs labels : label1, label2, label3, label4, label5, etc) puis généré le xml.

2) Dans ma fonction main
je fais appel à l'interface XML (en fait tout a été déjà écrit par Anjuta) :

int main (int argc, char *argv[])
{
...
GtkWidget *window1;
GladeXML *xml;
glade_xml_signal_autoconnect (xml);
etc..
label1 = glade_xml_get_widget (xml, "label1");
...
}

3) J'ai d'autres fontions autre que main :

static gboolean mafonction1 (arg1, arg2, arg3) {
...
gtk_label_set_label(label1, montexte);
gtk_label_set_label(label2, montexte2);
gtk_label_set_label(label3, montexte3);
gtk_label_set_label(label4, montexte4);
...
}

static gboolean mafonction2 (arg1, arg2, arg3) {
...
idem
...
}

static gboolean mafonction3 (arg1, arg2, arg3) {
...
idem
...
}

Problème:
Quand mafonction1 est appelée par exemple, cela ne fonctionne pas puisque les labels n'existent que dans main.

D'où questions :
Comment rendre accessible tous les labels dans toutes mes fonctions ?
Suis-je obligé dans chaque fonction de "re-déclarer" GladeXML *xml, glade_xml_signal_autoconnect (xml), etc ? Cela allourdi-t-il le prgm (ressources, mémoires, etc) en sachant que mafonction1 est appelée toutes les 1ms ?
Y aurait-il un moyen de déclarer une fois pour toute de manière globale mes labels ?

Merci.
(merci aussi d'avoir tout lu ! smile )
Et joyeux Noël !

Dernière modification par jks (Le 25/12/2005, à 11:16)

Hors ligne

#2 Le 25/12/2005, à 11:49

cassidy

Re : GTK, C, GladeXML: widgets accessibles dans toutes mes fonctions?

Soit tu tapes ton Glade handler en global et tu refais tes get_widget dans chaque fonction selon tes besoins (pas besoin de refaire le connect, faut juste le faire une fois au début).
Incovénient : si tu changes le nom d'un widget tu dois changer à plusieurs endroits dans le code.

Soit tu met tous les widgets que tu vas manipuler dans ton code en global et tu fais tous tes get_widget au début.
Inconvénient : tu "gaspilles" plus de mémoire vu que tu tiens en permanence un pointeur sur chaque widget (mais ça tu ne fais qu'une fois les get_widget donc ne sera surement un peu plus rapide).

Dernière modification par cassidy (Le 25/12/2005, à 11:49)


"I came for the quality. I stayed for the freedom." - Sean Neakums

Hors ligne

#3 Le 25/12/2005, à 14:09

jks

Re : GTK, C, GladeXML: widgets accessibles dans toutes mes fonctions?

Ok je vais tester ça...
Merci !

Hors ligne