#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 ! )
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