Gtk+ десериализация строки для установки TextBuffer из Gtk::TextView

Я мог бы получить сериализованное содержимое Gtk::TextBuffer, чтобы сохранить его в файле или базе данных с помощью mime-type: "application / x-gtk-text-buffer-rich-text".

GTKTEXTBUFFERCONTENTS-0001\u0006;
<text_view_markup>
  <tags>
    <tag name="b" priority="0">
      <attr name="weight" type="gint" value="700"/>
    </tag>
    <tag name="c" priority="3">
      <attr name="justification" type="GtkJustification" value="GTK_JUSTIFY_CENTER"/>
    </tag>
  </tags>
  <text>
    <apply_tag name="c">
      center text
      <apply_tag name="b">
        center bold text
      </apply_tag>
    </apply_tag>
  </text>
</text_view_markup>

но когда я выполню десериализацию, чтобы установить Gtk::TextBuffer с сохраненным содержимым, я не понимаю или не знаю, что поставить при вызове:

GdkAtom atom = gtk_text_buffer_register_deserialize_tagset(buffer->gobj(), /*HERE*/);

gboolean deserialized = gtk_text_buffer_deserialize(buffer->gobj(), buffer->gobj(), atom, end.gobj(), data, length, pError);

я получил

Gtk-CRITICAL **: gtk_text_buffer_register_deserialize_tagset: утверждение 'tagset_name == NULL || *tagset_name!= '\0''не удалось

Поскольку существует утверждение gtktextbufferrichtext.C# L137, параметр является необязательным, но не может иметь значение NULL или Пусто.

Если я добавлю какое-либо значение ("NULL", "default", "UTF-8", "text", "text-plain"), я получу то же самое утверждение. Я поместил все эти значения, потому что * tagset_name является форматом gtktextbufferrichtext.C# L141

0 ответов

Другие вопросы по тегам