Re: gtktextview with gdkpixbuf saving into file



Thanks, thats a much better way of doing it ^_^

Johnson


On Tue, 2008-11-18 at 08:05 +0000, Pavel A. da Mek wrote:
anyone know a way to save a gtktextview/gtktextbuffer with embedded
gdkpixbuf into a file. I am calling gtk_text_buffer_get_slice then
g_file_set_contents. Idealy it will be good if i can just call
g_file_get_contents to output the saved buffer onto the gtktextview.


void save_grt (GtkTextView *textView, const gchar *dstFileName) {
 GtkTextBuffer *buffer;
 GdkAtom grtSerializeFormat;
 GtkTextIter startIter;
 GtkTextIter endIter;
 guint8* serializedData;
 gsize length;

 buffer = gtk_text_view_get_buffer (textView);

 grtSerializeFormat = gtk_text_buffer_register_serialize_tagset (
  buffer, //GtkTextBuffer *buffer,
  NULL // const gchar *tagset_name
 );
 gtk_text_buffer_get_bounds  (buffer, &startIter, &endIter);

 serializedData = gtk_text_buffer_serialize (
  buffer, // GtkTextBuffer *register_buffer,
  buffer, // GtkTextBuffer *content_buffer,
  grtSerializeFormat, // GdkAtom format,
  &startIter, // const GtkTextIter *start,
  &endIter, // const GtkTextIter *end,
  &length // gsize *length
 );

 // gboolean success =
 g_file_set_contents (dstFileName,
  serializedData, // const gchar *contents,
  length, // gssize length,
  NULL // GError **error
 );

 g_free (serializedData);

 gtk_text_buffer_unregister_serialize_format (buffer, 
grtSerializeFormat);
} // *** of void save_grt

void open_grt (GtkTextView *textView, const gchar *srcFileName) {
 GtkTextBuffer *buffer;
 GdkAtom grtDeserializeFormat;
 GtkTextIter startIter;
 GtkTextIter endIter;
 guint8* serializedData;
 gsize length;

 // gboolean success =
 g_file_get_contents (
  srcFileName,
  (gchar **)&serializedData, // gchar **contents,
  &length, // gsize *length,
  NULL // GError **error
 );

 buffer = gtk_text_view_get_buffer (textView);

 grtDeserializeFormat = gtk_text_buffer_register_deserialize_tagset (
  buffer, //GtkTextBuffer *buffer,
  NULL // const gchar *tagset_name
 );
 gtk_text_buffer_deserialize_set_can_create_tags (
  buffer, grtDeserializeFormat, TRUE);

 gtk_text_buffer_get_bounds (buffer, &startIter, &endIter);
 gtk_text_buffer_delete (buffer, &startIter, &endIter);

 // gboolean success =
 gtk_text_buffer_deserialize (
  buffer, // GtkTextBuffer *register_buffer,
  buffer, // GtkTextBuffer *content_buffer,
  grtDeserializeFormat, // GdkAtom format,
  &startIter, // const GtkTextIter *iter,
  serializedData, // const guint8 *data,
  length, // gsize length
  NULL // GError **error
 );

 g_free (serializedData);
 gtk_text_buffer_unregister_deserialize_format (buffer, 
grtDeserializeFormat);
} // *** of void open_grt







[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]