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 :

Generation de code ou libglade ou gtkbuilder ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut gtkbuilder, threads et GTK
    Salut, jusqu'à maintenant pour faire des interfaces graphiques en C avec GTK je n'ai utilisé que glade 2.x avec la génération de code, mais j'ai lu quelque part que c'est plus facile de le faire avec des fichier .glade en utilisant libglade, mais on m'as dit ensuite que c'est mieux d'utiliser gtkbuilder ou quelque chose comme ça (vu que c'est apparemment intégré dans GTK now...).
    - Je voudrai des conseilles sur quoi utiliser.
    - Est ce que l'utilisation de libglade ou gtkbuilder est plus facile que la génération de code ?
    - Avez vous des tutos en français sur l'utilisation de libglade ou gtkbuilder (pour ne pas utiliser la génération de code..) ?
    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 : 48
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut,


    Un seul et unique conseil... GtkBuilder Pour ce qui est du tutoriel: Créer une interface graphique avec Glade3 et GtkBuilder
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Salut,


    Un seul et unique conseil... GtkBuilder Pour ce qui est du tutoriel: Créer une interface graphique avec Glade3 et GtkBuilder
    Merci Franck.H je vais lire ce tuto, ça a l'aire sympa.

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Très bien, j'ai quelque questions:

    1.
    Quand je met des signaux dans glade (par exemple pour la fenêtre principale destroy j'appelle gtk_main_quit()) ça ne marche pas. Su le tuto et dans la faq il est dit d'utiliser l'option: -Wl,--export-dynamic
    Mais comment l'utiliser au juste ? Voici comment je compile:
    gcc main.c -o main -export-dynamic `pkg-config --cflags --libs gtk+-2.0`
    même avec ceci ça ne marche pas:
    gcc main.c -o main -export-dynamic `pkg-config --cflags --libs gtk+-2.0` -Wl,--export-dynamic
    2.
    Est ce que c'est faisable de déclarer GtkBuilder *p_builder; en global pour pouvoir l'utiliser dans la fonction gtk_builder_get_object() de n'importe où dans le code ?

    3.
    J'ai créer un thread dans lequel j'écris dans mon textview en utilisant la fonction gtk_text_buffer_insert_at_cursor(..) (en lui passant en argument la variable p_builder que j'ai déclaré global avant). Mais j'ai remarqué que le text prend beaucoup de temps avant de s'afficher dans le textview. J'ai vu par la suite que ce n'est pas conseiller d'ecrir sur des windgets GTK à partir d'un thread qu'on crée (ou on ne dois jamais le faire..).
    Comment faire donc ?

  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 : 48
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Normalement ceci devrait fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc main.c -o main -Wl --export-dynamic `pkg-config --cflags --libs gtk+-2.0`
    Citation Envoyé par tomap3 Voir le message
    Est ce que c'est faisable de déclarer GtkBuilder *p_builder; en global pour pouvoir l'utiliser dans la fonction gtk_builder_get_object() de n'importe où dans le code ?
    Oui bien sûr c'est faisable mais utiliser des globals dans du code C n'est jamais très recommandé, c'est même une des pratiques à éviter car elle souvent source d'erreur. Le mieux est de passer par des argument que les fonctions se transmettent l'une à l'autre.


    Citation Envoyé par tomap3 Voir le message
    J'ai créer un thread dans lequel j'écris dans mon textview en utilisant la fonction gtk_text_buffer_insert_at_cursor(..) (en lui passant en argument la variable p_builder que j'ai déclaré global avant). Mais j'ai remarqué que le text prend beaucoup de temps avant de s'afficher dans le textview. J'ai vu par la suite que ce n'est pas conseiller d'ecrir sur des windgets GTK à partir d'un thread qu'on crée (ou on ne dois jamais le faire..).
    Comment faire donc ?
    Quel est ton but au juste ? Qu'est censé faire ton programme ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Quel est ton but au juste ? Qu'est censé faire ton programme ?
    Mon programme est un client qui est connecté à une application serveur dés sont lancement. Quand je click sur un bouton, ça envoi le text qu'on a saisi dans une entry au serveur (à l'appelle de la fonction de callback on_button1_click()).

    Le programme dois aussi pouvoir recevoir des repenses et messages que le serveur lui envoi, donc au niveau de mon programme je crée un thread qui attend de recevoir des messages en boucle. Des que je reçois un message je dois l'afficher dans un textview; Mais c'est là que le problème se pose, quand j'essaye à partir de mon thread d'écrire le message reçu sur le textview, ça prend beaucoup de temps pour l'afficher sur le textview (en comparent avec l'affichage sur la console en même temps).
    J'ai aussi lu par la suite que GTK n'est pas safethread donc ce n'est pas conseillé de toucher au widgets à partir d'une thread qu'on crée nous même ...

    Je ne vois donc pas comment faire, pour afficher mon text reçu sur le widget (textview).

  7. #7
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Les GioChannels sont tes amis. L'idèal étant d'utiliser la lib. Gnet pour une communication réseau.

  8. #8
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Les GioChannels sont tes amis. L'idèal étant d'utiliser la lib. Gnet pour une communication réseau.
    Salut.
    Je ne crois pas que ça résous pas mon problème ça. Je ne veux pas utiliser une "network library" juste comme ça. Là j'utilise les sockets normale pour la communication pourquoi refaire tout ce que j'ai fait en utilisant une network library !?
    En quoi Gnet peut elle résoudre mon problème de manipulation de widgets GTK à partir d'un thread ?

  9. #9
    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
    Les giochannels peuvent appeler un callback gtk+ quand des données sont dispos sur ton socket réseau. Ca te permet d'éviter de boucler sans cesse en attendant des données et de tout faire dans un seul thread.

  10. #10
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Les giochannels peuvent appeler un callback gtk+ quand des données sont dispos sur ton socket réseau. Ca te permet d'éviter de boucler sans cesse en attendant des données et de tout faire dans un seul thread.
    Ah ok, vous n'avez pas de la doc en fr sur les giochannels svp ?
    Sinon on ne peut pas appeler un callback gtk+ quand on le souhaite, même sans giochannels ?

    Sinon, la compilcation avec:
    gcc main.c -o main -Wl --export-dynamic `pkg-config --cflags --libs gtk+-2.0`
    ne marche pas. J'ai:
    cc1: error: unrecognized command line option "-Wl"
    cc1: error: unrecognized command line option "-fexport-dynamic"

Discussions similaires

  1. Recuperation variable et generation de code
    Par newixz dans le forum Delphi
    Réponses: 13
    Dernier message: 27/12/2006, 13h31
  2. Generation de code a partir de SQL
    Par RemiRoques dans le forum Général Java
    Réponses: 10
    Dernier message: 09/06/2006, 16h07
  3. Problème de génération du code java...
    Par nikalkal dans le forum Rational
    Réponses: 1
    Dernier message: 21/04/2006, 14h32
  4. Quel avenir pour les outils de génération de code ?
    Par Bruno75 dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 05/11/2003, 18h30
  5. Génération de code
    Par YAMKI dans le forum Rational
    Réponses: 5
    Dernier message: 22/04/2003, 16h41

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