2009-12-11 11 views
2

J'essaie de sauvegarder les balises bold/italic/font/etc de l'utilisateur dans un GtkTextView. L'utilisation de GtkTextBuffer.get_text() ne renvoie pas les balises.Besoin d'exemple/aide avec GtkTextBuffer (de GtkTextView) serialize/deserialize

La meilleure documentation que j'ai trouvé sur ce point est: http://www.pygtk.org/docs/pygtk/class-gtktextbuffer.html#method-gtktextbuffer--register-serialize-format

Cependant, je ne comprends pas les arguments de la fonction. Il serait infiniment pratique d'avoir un exemple de la façon dont ceux-ci sont utilisés pour enregistrer/charger un texte avec des balises. Edit: Je voudrais clarifier ce que j'essaie d'accomplir. Fondamentalement, je veux enregistrer/charger le texte + tags du texte. Je n'ai aucun désir de faire quelque chose de plus compliqué que cela. J'utilise pickle comme le format de fichier, donc je n'ai pas besoin d'aide ici sur la façon de le sauvegarder ou dans quel format. Juste besoin d'un moyen de tirer/pousser les données de sorte que l'utilisateur ne perd rien qu'il/elle voit à l'écran. Je vous remercie.

Répondre

1

Je n'ai pas travaillé avec la sérialisation de GtkTextBuffer. La lecture de la documentation que vous avez lié, je suggère d'essayer la valeur par défaut sérialiseur, en appelant

textbuffer.register_serialize_tagset() 

Cela vous donne intégré sérialiseur propriétaire de GTK +. Être propriétaire ici signifie qu'il ne se sérialise pas dans un format bien connu; mais si tout ce dont vous avez besoin est la possibilité de sauvegarder le contenu du tampon de texte et de le recharger, cela devrait aller.

Bien sûr, le code source est disponible dans GTK + si vous voulez vraiment comprendre comment cela fonctionne; Je recommanderais de ne pas essayer de mettre en œuvre, par exemple, un sérialiseur autonome, car GTK + ne garantit probablement pas que le format restera tel quel.

+0

Merci pour cette information. Je suis encore un peu confus. Aurais-je appeler cette fonction une fois? Puis-je appeler quelque chose d'autre pour obtenir les données, et comment puis-je appeler pour remettre les données dans un TextView? c'est-à-dire: textview.register_serialize_target(), data = textview.get_serialized_data(), textview.set_serialized_data (données) – user129975

3

Si vous devez enregistrer les étiquettes car vous souhaitez simplement copier le texte dans un autre tampon de texte, vous pouvez utiliser gtk.TextBuffer.insert_range().

Si vous devez enregistrer le texte avec des balises dans un autre format lisible par d'autres programmes, j'ai écrit une bibliothèque avec un sérialiseur de tampon de texte GTK vers et depuis le format RTF. Il n'a cependant aucune liaison Python. Mais dans tous les cas, le code est un bon exemple d'utilisation du sérialiseur. Lien: Osxcart

+0

Je suis principalement intéressé par la sauvegarde/chargement du texte + tags des utilisateurs. J'utilise Pickle comme format de fichier. Voir launchpad.net/kabikaboo – user129975