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 :

Insertion du contenu d'un fichier dans une GtkTextView


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Par défaut Insertion du contenu d'un fichier dans une GtkTextView
    Bonsoir à tous,

    Voilà, j'essaye d'intégrer à une Zone de Texte le contenu d'un fichier qui se trouve dans le même répertoire que le programme appelant.
    Je ne veux pas que l'utilisateur puisse choisir son fichier (comme expliqué dans les exemples que j'ai lu) mais prendre un fichier que moi seul ai défini.
    Et après avoir cherché et tester plusieurs façons, je me suis rendu à l'évidence ==> c'est trop dur pour moi

    De façon plus général ce que je veux faire :
    1) Ouverture d'une fenetre d'aide à l'utilisateur par appuie d'un bouton (déjà présent dans la fenetre principale). FAIT ^^
    2) La fenetre d'aide doit s'ouvrir avec dans la zone de texte le contenu d'un fichier texte.
    PAS FAIT

    Voila une partie de mon main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /*Creation du bouton Aide*/
     
    	Mon_Bouton_Aide = gtk_button_new_from_stock (GTK_STOCK_INFO);
     
    	gtk_table_attach_defaults(GTK_TABLE(Mon_Tableau),Mon_Bouton_Aide,2,3,7,8);
     
    	g_signal_connect (G_OBJECT (Mon_Bouton_Aide), "clicked", G_CALLBACK (cb_aide), Ma_Fenetre_Aide);
    Et la fonction cb_aide que j'appelle :
    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
     
    #include <gtk/gtk.h>
    void cb_aide (GtkButton *pBouton, gpointer user_data)
    {
    GtkWidget *Ma_VBox = NULL;
    GtkWidget *Zone_Texte = NULL;
    GtkTextBuffer *Buffer = NULL;
    GtkTextIter iStart;
    gchar *Mon_Fichier, *Buffer_Fichier;
     
     
     
     
     
    /*Creation de la fenetre d'aide et configuration*/
     
    user_data = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW (user_data), 300, 240);
     
    gtk_window_set_title (GTK_WINDOW (user_data), "Informations");
     
    gtk_window_set_position(GTK_WINDOW (user_data), GTK_WIN_POS_CENTER);
     
     
    g_signal_connect (G_OBJECT (user_data), "destroy", G_CALLBACK (gtk_main_quit), NULL);
     
     
    	/* Creation de la GtkBox verticale */
    	Ma_VBox = gtk_vbox_new(TRUE, 0);
    	/* Ajout de la GtkVBox dans la fenetre */
    	gtk_container_add(GTK_CONTAINER(user_data), Ma_VBox);
     
    	/* Creation de la zone de texte */
     
    	Zone_Texte = gtk_text_view_new_with_buffer (Buffer);
     
    	gtk_text_view_set_editable(GTK_TEXT_VIEW(Zone_Texte),0);
     
    	/*L'utilisateur n'a pas la possibilité dediter la zone de texte*/
     
    	gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(Zone_Texte),0);
     
    	/*L'utilisateur ne verra pas de curseur dans la zone de texte*/
     
    	gtk_text_view_set_justification (GTK_TEXT_VIEW(Zone_Texte),GTK_JUSTIFY_CENTER);
     
    	/*insertion de la zone de texte dans la Vbox*/
    	gtk_box_pack_start(GTK_BOX(Ma_VBox), Zone_Texte, TRUE, TRUE, 25);
     
     
    		/* Recuperation du chemin */
    		Mon_Fichier = gtk_file_chooser_select_filename (GTK_FILE_CHOOSER_ACTION_OPEN, "Readme.txt");
    		Buffer_Fichier = NULL;
    		g_file_get_contents(Mon_Fichier, &Buffer_Fichier, NULL, NULL);
    		g_free(Mon_Fichier);
     
    		/* Recuperation du buffer */
    		Buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Zone_Texte));
    		/* Affichage du fichier */
    		gtk_text_buffer_get_start_iter(Buffer, &iStart);
    		gtk_text_buffer_insert(Buffer, &iStart, Buffer_Fichier, -1);
    		g_free(Buffer_Fichier);
     
     
    /* Affichage de la fenetre d'aide */
     
    	gtk_widget_show_all (user_data);
     
     
     
    /* Lancement de la boucle principale */
     
    	gtk_main ();
     
     
     (void)pBouton;
     
     
    }
    Merci d'avance pour votre aide.
    J'espère que c'est suffisamment clair et que je ne crée pas un sujet déjà résolu (bien que je n'ai rien trouvé de comparable)

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Déjà le file chooser ne te sert à rien si tu connais le nom de ton fichier. En plus ton truc ne doit même pas compiler, tu n'as pas créé d'objet GtkFileChooser avant... Mais bref, pas besoin de ça. Pour lire un fichier, passe directement le chemin à g_file_get_contents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    gchar *buffer = NULL;
    GError *error = NULL;
    if (g_file_get_contents ("Readme.txt", &buffer, NULL, &error) == FALSE)
    {
    	g_warning ("%s", error->message);
    	g_clear_error (&error);
    	return;
    }
     
    /* arrivé ici, la variable "buffer" contient le contenu du fichier */
    Et pour mettre ce contenu dans un GtkTextView, tu as un exemple simple dans la documentation GTK:
    http://library.gnome.org/devel/gtk/s....html#id717713

  3. #3
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Et essaie de voir si dans ton éditeur de texte tu n'as pas quelque chose pour l'indentation automatique, parce que là ça pique les yeux

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Par défaut
    Merci de cette réponse. La solution était donc sous mon nez

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

Discussions similaires

  1. ouvrir contenu d'un fichier dans une autre fenetre
    Par babalastar dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/05/2008, 14h17
  2. Réponses: 3
    Dernier message: 26/04/2008, 17h58
  3. Réponses: 4
    Dernier message: 29/02/2008, 10h40
  4. Afficher contenu d'un fichier dans une zone de texte
    Par Dimitri_87 dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 23/09/2006, 14h09
  5. [VB6]Lire le contenu d'un fichier dans une listbox
    Par gizmorambo dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 11/04/2006, 12h51

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