Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#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

Haut de page ↑