IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Utilisation de Fonctions sous Gtk/Glade


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut Utilisation de Fonctions sous Gtk/Glade
    Bonjour,

    J'utilise des fonctions sous glade qui ne fonctionnent pas alors que je les ais précedement utilisées sous gtk.
    gtk_combo_box_append_text();
    gtk_label_set_use_markup (); etc...

    Je sais pas si c'est du à la version glade et gtk (respectivement 2.6 et 2.4) mais je comprends pas pourquoi il y'a des bugs.
    J'extrait des données d'un fichier (heures) que j'insère dans la combo, je l'ai fais avec des ccatégories et ça a marché, mais là ça beug.

    exple fichier:
    "00:00,
    "01:00, etc...

    Merci

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par cupidette92
    J'utilise des fonctions sous glade qui ne fonctionnent pas alors que je les ais précedement utilisées sous gtk.
    gtk_combo_box_append_text();
    gtk_label_set_use_markup (); etc...

    Je sais pas si c'est du à la version glade et gtk (respectivement 2.6 et 2.4) mais je comprends pas pourquoi il y'a des bugs.
    Nan il n'y a effectivement rien à voir tant au niveau des versions (gtk_combo_box_append_text étant disponible depuis la version 2.4 de GTK+) qu'au niveau de Glade. Ce dernier ne fait rien de plus que ce que tu ferait toi même... sauf peut-être en moins beau et souvent également en plus lourd aussi ! Je rappel que le fait d'utiliser Glade ne doit rien changer du tout, mais vraiment rien du tout à ta façon de programmer en GTK+, sauf peut-être avec Glade 3 mais c'est hors sujet !

    Citation Envoyé par cupidette92
    J'extrait des données d'un fichier (heures) que j'insère dans la combo, je l'ai fais avec des ccatégories et ça a marché, mais là ça beug.

    exemple fichier:
    "00:00,
    "01:00, etc...
    Plusieurs solutions peuvent survenir en fait, soit ton fichier contient les heures sous la forme:
    00:00
    01:00
    02:00
    ...
    Auquel cas il te suffit de faire une simple lecture ligne par ligne du fichier ! Si ton fichier est sous la forme:
    00:00,01:00,02:00,...
    Là il s'agit d'un autre problème car tu devra récupérer une ligne complète de ton fichier et parser celle-ci pour extraire les données "utiles" !

    Quelque soit le cas de figure, lorsque tu ajoute une donnée dans ton GtkComboBox, tu ne peux pas utiliser un unique tableau de char global à la fonction car la mofication que tu lui apporte à chaque itération de la boucle de lecteur se répercute alors sur les données précédement insérées dans ta liste. Ceci est dû au fait que tu ajoute un pointeur sur une chaîne et là donc forcément tu modifie à chaque fois le même tableau !

    A quoi te sert:
    "00:00,
    ? Y'a-t-il une utilité quelconque dans ton fichier ?

    Pour commencer il faut donc convenir d'un unique modèle de fichier et il faudra toujours respecter la forme de l'enregistrement des données dans le fichier ! Donc ce qu'il me faut comme première donnée, c'est la structure "exacte" de ton fichier d'heures, fait un copier/coller de ton fichier ou met-le en pièce jointe !

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    A quoi te sert:
    ? Y'a-t-il une utilité quelconque dans ton fichier ?
    !
    Non c'est un choix, un peu comme dans mon projet précédent...

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par cupidette92
    Non c'est un choix, un peu comme dans mon projet précédent...
    Ok donc moins il y'a de caractères fictifs dans ton fichier, mieux ce sera, il faut mettre uniquement ce qui est utile, ici pour le moment ca ne l'est pas du tout ! Donc ceci n'est pas utile:
    "00:00,
    Quelles sont tes obligations dans cette partie du projet (lecture du fichier, remplissage, parsing, etc...) ?

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par cupidette92
    J'extrait des données d'un fichier (heures) que j'insère dans la combo, je l'ai fais avec des ccatégories et ça a marché, mais là ça beug.
    C'est en fait le même principe... quel est le bug que tu obtiens ?

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Franck.H
    Quelles sont tes obligations dans cette partie du projet (lecture du fichier, remplissage, parsing, etc...) ?
    Lecture du fichier et remplissage de la combo.

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par cupidette92
    Lecture du fichier et remplissage de la combo.
    Ca j'avais compris Mais tu n'est pas obligé de te tenir à un algorithme en particulier ? Tu dois tout faire toi même: conception, algo, codage ?

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Franck.H
    Ca j'avais compris Mais tu n'est pas obligé de te tenir à un algorithme en particulier ? Tu dois tout faire toi même: conception, algo, codage ?
    Oui, j'ai pas de contrainte à ce niveau, il veut juste une interface graphique conformément au CDC.

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Comme je le disais, rien de bien compliqué, voici un programme qui fait ce que tu souhaite...

    Par rapport à un fichier d'heure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    00:00
    01:00
    02:00
    03:00
    04:00
    05:00
    06:00
    07:00
    08:00
    09:00
    10:00
    11:00
    12:00
    13:00
    14:00
    15:00
    16:00
    17:00
    18:00
    19:00
    20:00
    21:00
    22:00
    23:00
    Voici le programme qui extrait les données et les insère dans le GtkComboBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include <gtk/gtk.h>
    #include <glib.h>
    #include <string.h>
    #include <stdio.h>
     
     
    static void remplir_combo (GtkComboBox * p_combo)
    {
       GIOChannel * p_file = g_io_channel_new_file ("heure.txt", "r", NULL);
     
     
       if (p_file != NULL)
       {
          gchar * tmp_buf = g_malloc (10);
          gsize size = 0;
     
     
          if (tmp_buf != NULL)
          {
             while (g_io_channel_read_line (p_file, &tmp_buf, &size, NULL, NULL) ==
                      G_IO_STATUS_NORMAL)
             {
                gchar * str = g_malloc (size + 1);
     
                if (str != NULL)
                {
                   strcpy (str, tmp_buf);
     
                   /* On enleve le caractere de saut de ligne. */
                   {
                      gchar * p = strchr (str, '\n');
     
                      if (p != NULL)
                      {
                         *p = 0;
                      }
                   }
     
                   gtk_combo_box_append_text (p_combo, str);
                }
             }
     
             g_free (tmp_buf);
          }
       }
    }
     
     
    int main (int argc, char ** argv)
    {
       GtkWidget * p_win    = NULL;
       GtkWidget * p_combo  = NULL;
     
     
       gtk_init (& argc, & argv);
     
     
       p_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
       gtk_window_set_default_size (GTK_WINDOW (p_win), 150, 25);
     
       g_signal_connect (
          G_OBJECT (p_win),
          "destroy",
          G_CALLBACK (gtk_main_quit),
          NULL
       );
     
       p_combo = gtk_combo_box_new_text ();
       gtk_container_add (GTK_CONTAINER (p_win), p_combo);
     
     
       /* Remplissage de la liste combo: */
       remplir_combo (GTK_COMBO_BOX (p_combo));
     
     
       gtk_widget_show_all (p_win);
       gtk_main ();
     
     
       return 0;
    }
    Rien de bien compliqué, pose des questions sur ce que tu ne comprend pas !

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    j'ai compris le code:

    dans le callbacks.h j'ai mis le prototype:
    static void
    remplir_combo(GtkComboBox * p_combo);
    dans le .c le code de la fonction.
    dans le interface.h j'appelle la fonction en lui passant mon widget.
    mais j'ai cette erreur:
    [Warning] 'remplir_combo' used but never defined
    [Linker error] undefined reference to `remplir_combo'
    ld returned 1 exit status

    Je suis entrain de revoir pas à pas...
    Merci bcp

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par cupidette92
    j'ai compris le code:

    dans le callbacks.h j'ai mis le prototype:
    static void
    remplir_combo(GtkComboBox * p_combo);
    dans le .c le code de la fonction.
    dans le interface.h j'appelle la fonction en lui passant mon widget.
    mais j'ai cette erreur:
    [Warning] 'remplir_combo' used but never defined
    [Linker error] undefined reference to `remplir_combo'
    ld returned 1 exit status

    Je suis entrain de revoir pas à pas...
    Merci bcp
    En fait moi dans le prototype de ma fonction j'ai mis le mot clé static car dans mon exemple c'est une fonction privée mais toi, tu ne dois pas mettre ce mot clé, à supprimer donc, ca tu devrais le savoir tout de même

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Franck.H
    ca tu devrais le savoir tout de même
    Je viens de le remarquer, j'ai pas osé poser la question... Bref! Sympa...
    Merci

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par cupidette92
    Je viens de le remarquer, j'ai pas osé poser la question... Bref! Sympa...
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] [xlswrite1] Comment utiliser cette fonction sous MATLAB 7.12.0 ?
    Par KartSeven dans le forum MATLAB
    Réponses: 4
    Dernier message: 24/04/2012, 21h38
  2. Réponses: 5
    Dernier message: 08/10/2010, 12h52
  3. [Débutant] utiliser une fonction de matlab sous C++Builder 6
    Par kheira dans le forum MATLAB
    Réponses: 5
    Dernier message: 12/03/2010, 11h23
  4. Réponses: 6
    Dernier message: 16/01/2006, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo