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 :

r�cup�ration pagination gtk_text_buffer


Sujet :

GTK+ avec C & C++

  1. #1
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 275
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 275
    Par d�faut r�cup�ration pagination gtk_text_buffer
    Je relance mon post de l'autre jour en essayant d'�tre plus clair

    J'ai cr�e un gtk_text_buffer contenant du texte enrichi (pr�sence de caract�re gras par exemple)

    J'ai cr�e ceux-ci avec des gtk_text_tags

    Je r�cup�re le texte brut sans prob.

    Y a t'il un moyen de r�cup�rer le texte avec sa "pagination" afin de le sauvegarder ? ( format xml, format sp�cifique � gtk, enfin ce que gtk me permet de faire )
    J'ai essay� avec gtk_text_buffer_get_slice.

    qu'est ce la valeur bool�enne include_hidden_chars signifie ? que sont les "caract�res invisible" ? les tags de passage en gras ou en italique par exemple sont ils ce type de caract�res invisibles. A savoir que je r�cup�re la chaine dans un buffer en gchar ( donc en char je pr�sumes ). La doc dit que la chaine retourn�e est en UTF-8 donc j'ai peut �tre mes tags retourn�s mais �limin�s car char contient des codes ASCII, �a me parait pas �tre �a car je devrais dans ce cas avoir les codesASCIIc orrespondant aux codes UTF-8

    Par ailleurs, la pagination ne serait plut�t pas stock� dans le gtk_text_view, et m�me punition, comment la sauvegarder cette pagination ?

    Merci.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 275
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 275
    Par d�faut Alternative envisag�e
    Suite � mon prob de sauvegarde de pagination de gtk_text_buffer, j'envisages de contourner mon prob en mettant mon texte dans un label ( cr� via gtk_label_new) celui-ci me parait pratique car je peux utiliser des balises ressemblant � l'html ( <b>, <u>, etc .. )
    Par contre je perds la possibilit� de changer le texte en temps r�el.

    pour le gtk_text_buffer, je pense qu'il ne contient pas la pagination.


    Je tourne en rond ...

    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 275
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 275
    Par d�faut je pense que j'ai trouv�
    J'ai la solution je pense.

    avec les fonctions gtk_text_buffer_serialize_tagset et serialize

    Approfondi et je d�tailles. En tout cas �a marche reste � affiner
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 275
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 275
    Par d�faut pour sauvegarde texte avec pagination
    le texte � sauvegarder :

    abcd. stock� dans un gtk_text_buffer

    ( le c du texte est en caract�re gras )

    le carcat�re gras a �t� mis via :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    gtk_text_buffer_create_tag(buffer,"b","weight",PANGO_WEIGHT_BOLD,NULL);
    gtk_text_buffer_apply_tab_by_name(buffer,"b",&start_iter,&end_iter);
    Le caract�re "c" ayant �t� selectionn� par gtk_text_buffer_get_selection_bounds

    Pour la sauvegarde du texte :
    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
     
    GdkAtom se_format;
    GtkTextIter start_iter,end_iter;
    FILE *fichier;
    gsize lenght;
    guint8 *data;
     
    fichier=fopen("test.txt","wb");
    gtk_text_buffer_get_bounds(buffer,&start_iter,&end_iter);
    se_format=gtk_text_buffer_register_serialize_tagset(buffer,"default");
    data=gtk_text_buffer_serialize(buffer,buffer,se_format,&start_iter,&end_iter,&length);
    fwrite(&length,sizeof(gsize),1,fichier);
    fwrite(data,sizeof(guint8),length,fichier);
    fclose(fichier);
    free(data);
    Voici le r�sultat de fichier texte ( hexad�cimal et texte : )
    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
     
    00000000   E2 00 00 00  47 54 4B 54  45 58 54 42  55 46 46 45  ....GTKTEXTBUFFE
    00000010   52 43 4F 4E  54 45 4E 54  53 2D 30 30  30 31 00 00  RCONTENTS-0001..
    00000020   00 C4 20 3C  74 65 78 74  5F 76 69 65  77 5F 6D 61  .. <text_view_ma
    00000030   72 6B 75 70  3E 0A 20 3C  74 61 67 73  3E 0A 20 20  rkup>. <tags>.
    00000040   3C 74 61 67  20 6E 61 6D  65 3D 22 62  22 20 70 72  <tag name="b" pr
    00000050   69 6F 72 69  74 79 3D 22  30 22 3E 0A  20 20 20 3C  iority="0">.   <
    00000060   61 74 74 72  20 6E 61 6D  65 3D 22 77  65 69 67 68  attr name="weigh
    00000070   74 22 20 74  79 70 65 3D  22 67 69 6E  74 22 20 76  t" type="gint" v
    00000080   61 6C 75 65  3D 22 37 30  30 22 20 2F  3E 0A 20 20  alue="700" />.
    00000090   3C 2F 74 61  67 3E 0A 20  3C 2F 74 61  67 73 3E 0A  </tag>. </tags>.
    000000A0   3C 74 65 78  74 3E 61 62  3C 61 70 70  6C 79 5F 74  <text>ab<apply_t
    000000B0   61 67 20 6E  61 6D 65 3D  22 62 22 3E  63 3C 2F 61  ag name="b">c</a
    000000C0   70 70 6C 79  5F 74 61 67  3E 64 3C 2F  74 65 78 74  pply_tag>d</text
    000000D0   3E 0A 3C 2F  74 65 78 74  5F 76 69 65  77 5F 6D 61  >.</text_view_ma
    000000E0   72 6B 75 70  3E 0A                                  rkup>.
    000000F0
    00000100
    00000110
    00000120
    00000130
    ---  test.txt       --0x0/0xE6-------------------------------------------------
    Pour le moment je n'arrives pas � le restaurer correctement
    code pour la tentative de rechargement :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    fread(&length,sizeof(gsize),1,fichier);
    data=malloc(sizeof(guint8)*length);
    fread(data,sizeof(guint8),length,fichier);
    se_format=gtk_text_buffer_register_deserialize_tagset(buffer,"default");
    gtk_text_buffer_get_iter_at_offset(buffer,&start_iter,0);
    gtk_text_buffer_deserialize(buffer,buffer,se_format,&start_iter,length,NULL);
    free(data);
    Le texte ne s'affiche pas j'ai un msg erreur assertion dans la console, je dois mal utiliser gtk_text_buffer_deserialize_tagset.

    Je continue ma progresssion ...
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 275
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 275
    Par d�faut Solution pour charger
    Voici le code permettant le chargement du fichier precedement sauvegard� :

    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
     
    FILE *fichier;
    gsize length;
    guint8 *data;
    GdkAtom de_format
    GtkWidget buffer;
    GtkTextIter start_iter;
     
    fichier=fopen("test.dat",rb);
    fread(&length,sizeof(gsize),1,fichier);
    data=malloc(sizeof(gunit8)*length);
    fclose(fichier);
    buffer=gtk_text_view_get_buffer(TK_TEXT_VIEW(text_view));
    gtk_text_buffer_get_iter_at_offset(buffer,&start_iter,0);
    de_format=gtk_text_buffer_register_deserialize_tagset(buffer,"default");
    gtk_text_buffer_deserialize_set_can_create_tags(buffer,de_format,TRUE);
    gtk_text_buffer_deserialize(buffer,buffer,de_format,&start_iter,data,length,NULL);
    text_view ayant �t� cr�e via gtk_text_view_new plac�e dans une fen�tre
    ne fonctionne pas si gtk_text_buffer_deserialize_set_can_create_tags n'est pas utilis�

    N'hesitez pas � me laisser vos commentaires. Notamment Liberforce qui n'arr�te pas de me faire des critiques ... mais tr�s constructives, et pertinentes ( sp�ciale d�dicace, encore Merci Liberforce pour ton aide, et tes explications quand je comprends de travers )
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. r�cup�ration avanc�e contenu gtk_text_buffer
    Par Christophe dans le forum GTK+ avec C & C++
    R�ponses: 0
    Dernier message: 03/10/2011, 10h07
  2. R�ponses: 2
    Dernier message: 07/05/2010, 10h30
  3. R�ponses: 8
    Dernier message: 02/11/2007, 14h51
  4. R�ponses: 11
    Dernier message: 10/02/2006, 15h44
  5. R�ponses: 4
    Dernier message: 05/06/2002, 12h15

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