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 :

GTK + thread = problèmes ?


Sujet :

GTK+ avec C & C++

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    Ha après vérification, ça n'affiche pas bien. Je me suis trompé.

    Je suis sur windows ... oui je sais, "c'est pas bien"

    je vais essayer d'utiliser la fonction pile de glib. On verra ce que ça va donner. Mais ça va me prendre la journée cette histoire encore.

    Merci pour tes conseils

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    Ha mais non ...

    glib me propose une solution pour remplacer ma pile. Mais il manque une fonction.

    quand je mets des données dans ma pile, je les mets en bas et quand je les récupère je les prends en haut.

    de ce que j'ai lu, ce n'est pas proposé par glib. Je me trompe ?

  3. #23
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    La structure de données GQueue doit te permettre de faire tout ça.

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    ReBonjour,

    C'est bientôt fini . presque presque.

    je recherche une solution qui serait

    "gtk_box_pack_remplacing ()" ou "gtk_box_pack_update()"

    Enfaîte je cherche une solution pour remplacer un widjet dans une boite, ou vider la boite de son widget.

    je l'ai pas trouvé ici : http://library.gnome.org/devel/gtk/u...k-box-pack-end

    Une idée?

    Salutation.

  5. #25
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    Presque

    c'est ça l'idée. Je vais détailler un peu, je suis sur que tu as une autre fonction sous la main

    enfaite j'aimerais rafraichir ou changer un text_view

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GtkWidget *view;
    view = gtk_text_view_new ();
    qui est contenu dans une zone
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GtkWidget *zone;
    zone = gtk_vbox_new(FALSE,10);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_box_pack_start(GTK_BOX(zone),view,TRUE,TRUE,0);
    donc c'est pas vraiment un conteneur.

    tu connais une solution, ou il faut que je passe par conteneur?

    ::

  7. #27
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Une GtkVBox n'est pas une GtkBox, pourtant tu appelles gtk_box_pack_start sur ton objet de type GtkVBox...

    http://library.gnome.org/devel/gtk/s...ject-hierarchy

    Pas sûr de ce que tu entends par "rafraichir un text view". Ca m'inquiète quand ça apparaît dans une discussion qui parler de threads...

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    ::

    mais, aïe aïe aïe.

    je pense que je vais essayer de prendre un peu de recul sur tout ça. Je vais me lire un bon tuto sur comment insérer des text_view sur un affichage.

    Je n'avais pas fait attention à la différence entre les box et vbox. J'ai surement brulé une étape.

    merci de pour tes conseilles

  9. #29
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Non, mais ça m'intéresse que tu décrives le problème que tu essaies de résoudre en enlevant/reinsérant un widget. Il se passe quoi concrètement ?

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    et bien je n'arrive pas à l'enlever le widget "zone". donc il partage l'espace pour mettre l'ancien affichage et le nouveau.

    donc une fois que tu as rafraichi 4 fois. On y voit plus rien.

    je pense que je n'aurais pas d'autre choix que de modifier que les buffers. Faire une fonction "init" qui créera les tables d'affichages, les colonnes, les zone (box), les text_views(dans les box) . Et après garder que les buffers pour le texte .je ne pense pas avoir d'autre solution.

    je ne sais pas si j'ai été très claire. Dit moi si tu as des questions.

  11. #31
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Je comprends pas trop pourquoi tu veux enlever/remettre un widget pour "rafraichir". Tu peux pas réutiliser le même?

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    enfaîte si.

    mais mon problème vient d'une erreur de ma part et je ne sais pas comment la contourner. Je te montre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct data_to_event1
    {
        GtkWidget *zone;
        GtkWidget *main_fenetre;
        char *buffer;
        pile *pile_dattente;
        char *test;
    }S_C_afficher_text;
    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
    void C_afficher_text (GtkWidget *Widget,gpointer *Data)
    {
        printf("ON RENTRE DANS C_afficher_text");
        S_C_afficher_text *data_local= (S_C_afficher_text*) Data;
        printf("buffer |%s|",data_local->buffer);
        int taille=strlen(data_local->buffer);
        char data[taille];
        //déclaration des éléments d'affichages
        GtkWidget *view;
        GtkTextBuffer *buf;
        strcpy(data,data_local->buffer);
        view = gtk_text_view_new ();
        buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        //déclaration des différents tags
        GtkTextTag* size;
        GtkTextTag* centre;
        GtkTextTag* lock;
        //insertion des données à afficher dans le buffer
        gtk_text_buffer_set_text (buf, data, -1);
        //insertion de l'élément text dans la zone d'affichage
        gtk_box_pack_start(GTK_BOX(data_local->zone),view,TRUE,TRUE,0);
        printf("\nle PB est ici ? \n");
        //récuperation du début et de la fin du buffer
        GtkTextIter start, end;
        gtk_text_buffer_get_start_iter (buf, &start);
        gtk_text_buffer_get_end_iter(buf, &end);
        //création du tag taille
        size = gtk_text_buffer_create_tag (buf, "size20","size", 30 * PANGO_SCALE,NULL);
        //création du tag centre
        centre=gtk_text_buffer_create_tag (buf,"center-justify", "justification", GTK_JUSTIFY_CENTER,NULL);
        //création du tag verouillé pour l'utilisateur
        lock=gtk_text_buffer_create_tag (buf, "editable","editable", FALSE,NULL);
        //appliation du tag au buffer
        gtk_text_buffer_apply_tag( buf,size,&start,&end );  //grace au tag lui même
        gtk_text_buffer_apply_tag( buf,centre,&start,&end );
        gtk_text_buffer_apply_tag( buf,lock,&start,&end );
        gtk_widget_show_all (data_local->main_fenetre);
     
    }
    Voilà ma fonction. Je l'appelle à chaque fois pour actualisé l'affichage. Mais à chaque fois je remets un widget dans la zone :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_box_pack_start(GTK_BOX(data_local->zone),view,TRUE,TRUE,0);
    dans l'idéal il me faudrait une solution pour exécuter cette ligne seulement la première fois.

    tu comprends ?

  13. #33
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Oui, je comprends. Tu devrais créer ta fenêtre et le gtktextview une bonne fois pour toute et ensuite uniquement bosser avec le gtktextbuffer.

  14. #34
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    Je pense aussi.

    ainsi dès qu'il y aura modification sur le buffer et un gtk_widget_show_all. L'affichage sera automatiquement modifié. Je me trompe?

  15. #35
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Même pas besoin du gtk_widget_show_all à partir du moment où ton widget est déjà visible.

  16. #36
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    Bon. Ben c'est gagné alors...

    Merci beaucoup pour ton aide et ta patience. Merci aussi aux autres personnes qui m'ont aidés. J'ai beaucoup appris grâce à ce projet et grâce aux tutos de ce site. Et je suis plutôt content.

    à très vite pour de nouveau "PROBLEMES"

    Salutation Philippe


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. GTK * thread = Encore des problèmes
    Par PhilippeHen dans le forum GTK+ avec C & C++
    Réponses: 14
    Dernier message: 13/08/2009, 12h00
  2. [VB.Net][Threading] Problème de parent ...
    Par maitrebn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/01/2006, 12h05
  3. Thread problème pour l'arreter
    Par rvzip64 dans le forum Langage
    Réponses: 8
    Dernier message: 12/07/2005, 11h51
  4. [Thread]Problème de processus
    Par berg dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 18/06/2005, 21h40
  5. Thread--> problème avec ThreadProc
    Par stof dans le forum MFC
    Réponses: 33
    Dernier message: 08/06/2005, 14h47

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