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 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 smile


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