我目前正在了解GTKTextTags
以及GtkTextView
和GtkTextBuffer
的申请。我注意到this question但是我没有想要将我的数据导出到富文本文件中,我认为这是该问题的主要目的
我有一个应用程序,它将GtkTextBuffer
的内容存储到TEXT
数据库的SQLITE3
字段中。阅读了GtkTextWidget概述和GtkTextTag上的文档后,我(错误地)理解标记系统的工作方式与XML / HTML等标记语言非常相似。
我在&start
和&end
GtkTextIters
设置gtk_text_buffer_get_text (...)
之后,gboolean include_hidden_chars
设置为TRUE
gchar*
我基本上会获得GtkTextTags
,其中还包含<b>some text</b>
,因此字符串可能看起来像GtkTextTag
(但很明显,gchar*
格式化程序不是HTML)。我现在意识到情况并非如此。
问题:我将从gtk_text_buffer_get_text(...)
获取的TEXT
存储到数据库GtkTextBuffer
字段中。稍后或当我重新打开应用程序时,我想将此数据重新加载到TEXT
,并通过从我的数据库中检索相关的gtk_text_buffer_set_text (...)
字段数据并使用{{1}设置文本来执行此操作}。在这一点上,我发现所有的格式化标签都消失了,格式化有点变得没有实际意义。我希望能够将GtkTextBuffer
中的文本存储到数据库的TEXT
字段中,并在重新加载时保留格式。
问:有没有办法将GtkTextBuffer
中的文本和标签存储到SQLITE3数据库中,以便在重新加载此文本到GtkTextBuffer
格式时保留?
我曾考虑在数据库中使用BLOB
字段而不是TEXT
字段,但不确定是否有更好的方法来实现我所追求的目标。
答案 0 :(得分:1)
我建议使用gtk_text_buffer_register_serialize_tagset()
然后gtk_text_buffer_serialize()
来获取一个字节数组($('#sales-opp-key-contacts-table-div').html("<%= escape_javascript(render :partial => 'sale_contacts/table')%>");
),然后您可以使用guint8[]
将其读回另一个文本缓冲区。< / p>
我认为你必须使用BLOB字段而不是TEXT,因为gtk_text_buffer_deserialize()
的返回值是字节数组而不是字符串。