Pages : 1
#1 Le 29/04/2007, à 13:26
- AmI2Blame4
glade et modification de label
Bonjour,
premier essai avec glade, je fais mon interface, j'ai notamment un label :
valeurSecondes = gtk_label_new ("") dans interface.c
Dans le main.c, je veux modifier le contenu du label, je fais après gtk_main(); un petit :
gtk_label_set_label(valeurSecondes,"modif");
mais à la compilation, il me sort :
main.c:46: erreur: $-1òøvaleurSecondesòù undeclared (first use in this function)
que faire ?
merci.
Hors ligne
#2 Le 29/04/2007, à 13:35
- BookeldOr
Re : glade et modification de label
Essaye avec gtk_label_set_text ou gtk_label_set_markup.
Tu peux poster un peu plus de code stp?
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#3 Le 29/04/2007, à 13:38
- AmI2Blame4
Re : glade et modification de label
Ci-dessous le main.c complet, inchangé à part ma commande., j'ai essayé avec text ou markup mais pas de succès.
Mon label est dans un container table, faut-il utiliser un nom pleinement qualifié pour le label ?
/*
* Initial main.c file generated by Glade. Edit as required.
* Glade will not overwrite this file.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gnome.h>
#include "interface.h"
#include "support.h"
#include <time.h>
int traitement ();
int
main (int argc, char *argv[])
{
GtkWidget *age;
#ifdef ENABLE_NLS
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif
gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
argc, argv,
GNOME_PARAM_APP_DATADIR, PACKAGE_DATA_DIR,
NULL);
/*
* The following code was added by Glade to create one of each component
* (except popup menus), just so that you see something after building
* the project. Delete any components that you don't want shown initially.
*/
age = create_age ();
gtk_widget_show (age);
gtk_main ();
gtk_label_set_label(valeurSecondes,"aaa");
return 0;
}
Hors ligne
#4 Le 29/04/2007, à 13:48
- AmI2Blame4
Re : glade et modification de label
Bizarrement dans le interface.h, je n'ai que ça :
/*
* DO NOT EDIT THIS FILE - it is generated by Glade.
*/
GtkWidget* create_age (void);
Je ne vois pas toute mon interface....dois-je paramétrer différemment glade ?
Dernière modification par AmI2Blame4 (Le 29/04/2007, à 13:48)
Hors ligne
#5 Le 29/04/2007, à 14:10
- BookeldOr
Re : glade et modification de label
Ah ok, c'est du code généra par glade. On n'utilise plus glade comme ça, d'ailleurs les dernières version ne permettent plus de générer du code.
Tu as utilisé quel paquet? La version récente est dans le paquet "glade-3".
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#6 Le 29/04/2007, à 14:11
- BookeldOr
Re : glade et modification de label
Attends, je te sors un petit bout de code d'exemple...
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#7 Le 29/04/2007, à 14:14
- BookeldOr
Re : glade et modification de label
gint test() {
GladeXML *ui = glade_xml_new ("ma_fenetre.glade", NULL, NULL);
GtkWidget *dlg = glade_xml_get_widget (ui, "dialog");
gtk_label_set_text (GTK_LABEL (glade_xml_get_widget (ui, "label_que_tu_veux_changer")), "mon texte");
gint r = gtk_dialog_run (GTK_DIALOG (dlg));
gtk_widget_destroy (dlg);
return r;
}
Dernière modification par BookeldOr (Le 29/04/2007, à 14:16)
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#8 Le 29/04/2007, à 14:19
- AmI2Blame4
Re : glade et modification de label
ok...effectivement.
J'ai réussi à contourner le problème initial en mettant les défintions de mes widgets en-dehors de la focntion dans interface.c et en les déclarant comme extern dans le main.c. Mais ça ne rafraîchit pas l'affichage, je suppose qu'il y a une fonction qui est associée au rafraîchissemnt....
Mais je note que je ne travaille pas avec la bonne (si on peut dire) version de glade.
merci
Hors ligne
#9 Le 29/04/2007, à 14:23
- BookeldOr
Re : glade et modification de label
C'est pas tellement la version de glade mais l'approche qui n'est plus bonne..
Je te conseille vraiment de détacher l'interface du code
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#10 Le 29/04/2007, à 14:32
- AmI2Blame4
Re : glade et modification de label
merci, je vais installer glade-3
Hors ligne
#11 Le 29/04/2007, à 15:26
- AmI2Blame4
Re : glade et modification de label
Re,
sur tes conseils avisés, j'utilise libglade :
#include <gtk/gtk.h>
#include <glade/glade.h>
#include <time.h>
int traitement ();
GladeXML *xml;
int
main(int argc, char **argv)
{
GtkWidget *maFenetre;
gtk_init(&argc, &argv);
xml = glade_xml_new("age.glade", NULL, NULL);
maFenetre=glade_xml_get_widget(xml,"window1");
glade_xml_signal_autoconnect(xml);
gtk_widget_show(maFenetre);
gtk_main();
traitement;
return 0;
}
int traitement () {
struct tm *naissance;
time_t temp;
time_t maintenant;
double dif;
GtkWidget *laS;
time(&temp);
naissance = localtime(&temp);
naissance->tm_year = 100;
naissance->tm_mon = 5;
naissance->tm_mday = 14;
maintenant=time(NULL);
dif=difftime(maintenant,mktime(naissance));
laS=glade_xml_get_widget(xml,"laS");
gtk_label_set_text(GTK_LABEL(laS),"aaa");
return 0;
}
mais je n'obtiens pas le refraîchissement de mon label, que dois-je donc faire ?
merci
Hors ligne
#12 Le 29/04/2007, à 15:38
- BookeldOr
Re : glade et modification de label
Tu as assigné traitement au signal clicked d'un bouton dans le fichier glade ou un truc du genre ?
Si oui, ça vient peut être du prototype de traitement, qui doit suivre celui du signal gtk approprié.
Haha en fait non je comprends!
- d'une ton "traitement;" ne fait rien, il manque les (), compile en -Wall pour voir ce genre de trucs.
- de deux, le gtk_main (); est une boucle qui se termine quand tu as tué la fenêtre principale, donc ce qui est après est exécuté après l'affichage...
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#13 Le 29/04/2007, à 15:56
- AmI2Blame4
Re : glade et modification de label
merci encore, je vois que les défauts sont maintenant de ma conception et d'une méconnaissance de gtk...je m'en vais donc potasser un peu.
merci
Hors ligne