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 :

Développement interface graphique GTK+


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    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
    Par défaut Développement interface graphique GTK+
    Bonjour,

    je réalise actuellement un projet sous gtk+. j'aimerais savoir cmt à partir d'une textview, afficher des données extraite d'un fichier et ne pas permettre à l'utilisateur de saisir du texte. (en gros une zone de visualisation). j'ai essayé "gtk_widget_set_sensitive" et "gtk_set_text" mais ça passe pas.

    Pouvez vous m'aider stp ?
    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
    Par défaut
    Salut, tout d'abord, bienvenue sur les forums de developpez.com


    Pour remplir un GtkTextView avec le contenu d'un fichier, tu peux procéder comme ceci et dans l'ordre:


    Pour désactiver la zone de texte donc, ne pas permettre à l'utilisateur d'éditer le texte contenu dans le widget, il te faut utiliser en fait la fonction gtk_editable_set_editable.

    Si tu te demandes pourquoi cette fonction au lieu d'une autre c'est très simple... Toute zone de texte est également un GtkEditable


    En espérant t'avoir bien aidé
    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 confirmé
    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
    Par défaut Hi
    Merci d'avoir répondu aussi rapidement à mon message.
    Dans mon fichier .txt, j'extrai des informations que je stock dans un gchar *title[SIZE]. Ces infos doivent être affichées dans ma zone de visualisation.
    De plus, gtk_editable_set_editable ne renvoi une erreur, est ce du à ma version de Gtk? mon prof ns demande d'utiliser la 2.4 et j'ai déjà eu un pb avec la fonction d'extraction du contenu d'une combobox...
    MErci

  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
    Par défaut
    Citation Envoyé par cupidette92
    Dans mon fichier .txt, j'extrai des informations que je stock dans un gchar *title[SIZE]. Ces infos doivent être affichées dans ma zone de visualisation.
    Ouais et ? Ca marche avec la fonction de chargement de fichier que je t'ai donné, je vois pas le problème. Si tu as un problème avec ca, dis moi lequel et donne éventuellement ton code relatif au problème.

    Citation Envoyé par cupidette92
    De plus, gtk_editable_set_editable ne renvoi une erreur, est ce du à ma version de Gtk? mon prof ns demande d'utiliser la 2.4 et j'ai déjà eu un pb avec la fonction d'extraction du contenu d'une combobox...
    Et quelle erreur ? Donne moi le log de ton compilateur pour que je vois l'erreur, ou bien est-ce lors de l'exécution ? Dans ce cas, fait un Copier/Coller de ta console !

    Pour la version, il n'y a pas d'informations à ce sujet donc cela devrait également fonctionner dans la 2.4.
    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 !

  5. #5
    Membre confirmé
    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
    Par défaut Hi
    " Et quelle erreur ? Donne moi le log de ton compilateur pour que je vois l'erreur, ou bien est-ce lors de l'exécution ? Dans ce cas, fait un Copier/Coller de ta console ! "

    j'ai joins l'erreur que j'ai reçue et aussi un aperçu de ma fenêtre.
    A la place de la zone de visualisation (de la texteview et du label contenant le titre) je veux mettre un boutton qui ouvrira une boîte de dialogue contenant ce que je veux afficher (je sais le faire). Mais au niveau de la présentation de ma fenêtre, ça fait moche. (parce que la fonction set_editable ne fonctionne pas).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      GtkWidget *Scrolled_v = gtk_scrolled_window_new(NULL,NULL);
       my_widget.TextView_v = gtk_text_view_new();   
     
       /* Ajout des widgets dans la VBox zone de texte  */
       gtk_container_add(GTK_CONTAINER(VBox_visualisation), Scrolled_v);
       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(Scrolled_v), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
       gtk_container_add(GTK_CONTAINER(Scrolled_v), my_widget.TextView_v );
       gtk_editable_set_editable (GTK_EDITABLE(my_widget.TextView_v), FALSE);
    VBox_visualisation) est contenu dans une VBox (qui contient l'intitulé de l'application, une HBox, et un separator texte comme présenté dans l'image).

    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
       /* Création des Widgets de la VBox Principale */     
       Titre = gtk_label_new("Application MEMO");  
       pSeparator1 = gtk_hseparator_new();   
       HBox = gtk_hbox_new(FALSE, 10);  
       VBox_visualisation = gtk_vbox_new(FALSE, 0);
       conversion = g_locale_to_utf8("<span face=\"Sylfaen\" foreground=\"#800080\" size=\"x-large\"><b>Visualisation des intitulés des mémos enregistrés.</b></span>", -1, NULL, NULL, NULL);
       GtkWidget *Intitule_v = gtk_label_new(conversion); 
       g_free(conversion);             
       gtk_label_set_use_markup(GTK_LABEL(Intitule_v), TRUE); 
     
       /* Ajout des widgets dans la Vbox Principale */
       gtk_label_set_markup(GTK_LABEL(Titre), "<span font_desc=\"Sylfaen Bold 16\"foreground=\"#00008B\">Application MEMO</span>\n");   
       gtk_box_pack_start(GTK_BOX(VBox), Titre, TRUE, FALSE, 1); 
       gtk_box_pack_start(GTK_BOX(VBox), pSeparator1, TRUE, FALSE, 1); 
       gtk_container_add(GTK_CONTAINER(VBox), HBox);  
       gtk_box_pack_start(GTK_BOX(VBox), Intitule_v, TRUE, FALSE, 0); 
       gtk_container_add(GTK_CONTAINER(VBox), VBox_visualisation);
    Merci d'avance.

    Pièce jointe 10425

    Pièce jointe 10426

  6. #6
    Membre confirmé
    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
    Par défaut hi
    j'ai tout testé avec gtk_editable_set_editable(), mais elle ne fonctionne qu'avec un GtkEntry mais pas avec mon textview. (les deux étant déclarés en GtkWidget*).

  7. #7
    Membre confirmé
    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
    Par défaut
    j'ai trouvé cette fonction, et je crois que ça fonctionne:
    gtk_text_view_set_editable(my_widget.TextView_v, FALSE);

    merci.

  8. #8
    Membre confirmé
    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
    Par défaut hi
    [*]Charger le contenu du fichier grâce à la fonction g_file_get_contents[*]Créer un GtkTextBuffer avec gtk_text_buffer_new, tu peux mettre l'argument à NULL.[*]Ensuite il te faut remplir le GtkTextBuffer avec gtk_text_buffer_set_text[*]Ajouter le GtkTextBuffer au GtkTextView avec la fonction gtk_text_view_set_buffer[/LIST]

    J'ai procédé comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    gchar *cat[NB_CAT_MAX];
    gint nb_cat;
    Struct_Widget pt; (que je passe en argument à la fonction)
     
    gchar *utf8 = NULL;
    g_file_get_contents("memocat.txt", cat, NULL, NULL);
    utf8 = g_locale_to_utf8 ((const gchar*)cat, -1, NULL, NULL, NULL);
    GtkTextBuffer *buf = gtk_text_buffer_new(NULL);
    gtk_text_buffer_set_text(buf,utf8,nb_cat);
    g_free (utf8), 
    gtk_text_view_set_buffer(pt.TextView_v,buf);
    ça compile mais le .exe ne s'ouvre pas... g une erreur!

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gchar *cat[NB_CAT_MAX];
    Ceci est faut ... ici tu déclares un tableau de pointeurs alors qu'il faut un tableau sur char tout simplement ! Le mieux à faire, c'est d'allouer un tableau dynamiquement (pas le choix d'ailleurs) puis de passer l'adresse du tableau à la fonction g_file_get_contents comme l'exemple ci-dessosu:
    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
     
    gsize length = 0;
    char * buf = g_malloc (TAILLE_BUFF);
     
    if (buf != NULL)
    {
       ...
       if (g_file_get_contents ("fichier.txt", & buf, & length, NULL))
       {
          buffer = gtk_text_buffer_new (NULL);
          gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), buf, length);
          gtk_text_view_set_buffer (GTK_TEXT_VIEW (textview), buffer);
       }
       ...
    }
    En espérant avoir pû t'aider
    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 !

  10. #10
    Membre confirmé
    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
    Par défaut Hi
    merci de me répondre et de m'aider...
    j'ai tapé ce que tu m'as envoyé, mais j'obtiens cette erreur:
    Pièce jointe 10444

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    gsize length = 0;
        char *buf = g_malloc (NB_CAT_MAX);
     
        strcpy(buf,"hello world");
     
        if (buf != NULL)
        {
           if (g_file_get_contents ("memocat.txt", &buf, &length, NULL))
           {
              buffer = gtk_text_buffer_new (NULL);
              gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), buf, &length);
              gtk_text_view_set_buffer (GTK_TEXT_VIEW (pt.TextView_v), buffer);
           }
        }

  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
    Par défaut
    Ce qui est en trop en rouge en gras ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), buf, &length);
    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 !

  12. #12
    Membre confirmé
    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
    Par défaut
    merci beaucoup pour ton aide franck...

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/01/2013, 20h31
  2. interface graphique gtk
    Par muskachew dans le forum GTK+ avec C & C++
    Réponses: 13
    Dernier message: 17/06/2009, 01h28
  3. Développement d'interface graphique
    Par observ dans le forum C++
    Réponses: 22
    Dernier message: 02/09/2006, 11h31
  4. Interface graphique GTK en C sous Linux
    Par jbjweb dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 02/07/2006, 14h19
  5. outil pour développer un interface graphique??
    Par vasilov dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 25/06/2005, 18h11

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