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 :

comment sauvegarder un fichier ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Par défaut comment sauvegarder un fichier ?
    Bonjour,
    tous le monde connait comment creer une boite de dialogue pour choisir un fichier dans le disque dur ou autre emplacement !!
    mais comment après avoir saisi du text dans par exemple gtktextview..on veut afficher une boite de dialogue pour sauvegarder (choisir un emplacement et un nom pour le fichier ) ??

    et merci

  2. #2
    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
    Bonjour.

    Pour faire simple et rapide en prenant pour base les GtkTextView.

    Ouvrir une fenêtre de dialogue pour choisir le nom de sauvegarde, tu pourras faire ca en créant un bouton appelé "sauvegarde" (original non ). A ce bouton tu lui attaches un CALLBACK dans lequel tu ouvres un GtkFileChooser (ta fenêtre de dialogue). Il faudra bien sûr envoyer aussi à ce CALLBACK le pointeur du GtkTextView.

    Maintenant nous sommes dans le CALLBACK. Tu trouveras un exemple de programmation dans la doc officielle pour gérer une fenêtre de dialogue avec les GtkFileChooser.
    Admettons que nous en sommes au point où tu as le nom du fichier dans lequel tu vas placer ton texte. Il nous faut encore récupérer le texte. C'est très simple.
    Il te faut récupérer le GtkTextBuffer du GtkTextView avec la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GtkTextBuffer*      gtk_text_view_get_buffer            (GtkTextView *text_view);
    Une fois fait tu peux récupérer le texte avec la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    gchar*              gtk_text_buffer_get_text            (GtkTextBuffer *buffer,
                                                             const GtkTextIter *start,
                                                             const GtkTextIter *end,
                                                             gboolean include_hidden_chars);
    La sauvegarde en elle-même est alors toute simple avec la fonction
    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
    gboolean            g_file_set_contents                 (const gchar *filename,
                                                             const gchar *contents,
                                                             gssize length,
                                                             GError **error);
     
    Writes all of contents to a file named filename, with good error checking. If a file called filename already exists it will be overwritten.
     
    This write is atomic in the sense that it is first written to a temporary file which is then renamed to the final name. Notes:
     
        * On Unix, if filename already exists hard links to filename will break. Also since the file is recreated, existing permissions, access control lists, metadata etc. may be lost. If filename is a symbolic link, the link itself will be replaced, not the linked file.
        * On Windows renaming a file will not remove an existing file with the new name, so on Windows there is a race condition between the existing file being removed and the temporary file being renamed.
        * On Windows there is no way to remove a file that is open to some process, or mapped into memory. Thus, this function will fail if filename already exists and is open.
     
    If the call was sucessful, it returns TRUE. If the call was not successful, it returns FALSE and sets error. The error domain is G_FILE_ERROR. Possible error codes are those in the GFileError enumeration.
     
    filename :
    	name of a file to write contents to, in the GLib file name encoding
     
    contents :
    	string to write to the file
     
    length :
    	length of contents, or -1 if contents is a nul-terminated string
     
    error :
    	return location for a GError, or NULL
     
    Returns :
    	TRUE on success, FALSE if an error occurred
     
    Since 2.8
    Je te laisse le soin de décortiquer tout ceci avec la doc. officielle.

Discussions similaires

  1. Comment sauvegarder un fichier XML?
    Par Identifiant dans le forum ASP
    Réponses: 1
    Dernier message: 29/05/2007, 22h52
  2. comment sauvegarder le fichier *.html
    Par faddou dans le forum Langage
    Réponses: 1
    Dernier message: 18/05/2007, 13h32
  3. Comment sauvegarder un fichier avec choix du repertoire
    Par vantoff dans le forum C++Builder
    Réponses: 14
    Dernier message: 24/07/2006, 15h51
  4. Comment sauvegarder un fichier en .pdf?
    Par scorpion37 dans le forum C++Builder
    Réponses: 21
    Dernier message: 24/05/2006, 14h20
  5. [C#] Comment sauvegarder un fichier ?
    Par dumser1 dans le forum ASP.NET
    Réponses: 12
    Dernier message: 24/04/2006, 11h22

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