--- a/demo/data/demo.ui Mon Aug 27 23:15:17 2018 -0500
+++ b/demo/data/demo.ui Mon Sep 03 15:55:45 2018 -0500
@@ -3,6 +3,22 @@
<requires lib="Talkatu" version="0.0"/>
<requires lib="gtk+" version="3.10"/>
+ <object class="TalkatuTagTable" id="table_history"/> + <object class="TalkatuHistoryBuffer" id="buffer_history"> + <property name="tag_table">table_history</property> + <object class="TalkatuTagTable" id="table_html"/> + <object class="TalkatuHtmlBuffer" id="buffer_html"> + <property name="tag_table">table_html</property> + <object class="TalkatuTagTable" id="table_markdown"/> + <object class="TalkatuMarkdownBuffer" id="buffer_markdown"> + <property name="tag_table">table_markdown</property> + <object class="TalkatuTagTable" id="table_plain"/> + <object class="TalkatuBuffer" id="buffer_plain"> + <property name="tag_table">table_plain</property> <template class="TalkatuDemo" parent="GtkWindow">
<property name="can_focus">False</property>
<property name="border_width">12</property>
@@ -137,9 +153,26 @@
- <object class="TalkatuToolbar" id="toolbar">
+ <object class="TalkatuEditor" id="editor"> + <property name="orientation">vertical</property> <property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child internal-child="toolbar"> + <object class="TalkatuToolbar"/> + <property name="fill">False</property> + <child internal-child="view"> + <object class="TalkatuView"> + <property name="buffer">buffer_plain</property> + <signal name="open-url" handler="talkatu_demo_view_open_url_cb" object="TalkatuDemo" swapped="no"/> + <signal name="send-message" handler="talkatu_demo_view_send_message_cb" object="TalkatuDemo" swapped="no"/> + <property name="fill">False</property> <property name="expand">False</property>
@@ -147,30 +180,6 @@
<property name="position">2</property>
- <object class="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <object class="TalkatuView" id="view_input">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="wrap_mode">word</property>
- <signal name="notify::buffer" handler="talkatu_demo_view_buffer_changed_cb" object="TalkatuDemo" swapped="no"/>
- <signal name="open-url" handler="talkatu_demo_view_open_url_cb" object="TalkatuDemo" swapped="no"/>
- <signal name="send-message" handler="talkatu_demo_view_send_message_cb" object="TalkatuDemo" swapped="no"/>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
--- a/demo/talkatudemo.c Mon Aug 27 23:15:17 2018 -0500
+++ b/demo/talkatudemo.c Mon Sep 03 15:55:45 2018 -0500
@@ -36,13 +36,12 @@
GtkRadioToolButton *toggle_plain;
GtkRadioToolButton *toggle_html;
GtkRadioToolButton *toggle_markdown;
GtkTextBuffer *buffer_plain;
GtkTextBuffer *buffer_html;
GtkTextBuffer *buffer_markdown;
@@ -144,37 +143,23 @@
-talkatu_demo_change_buffer(TalkatuDemo *demo, GtkTextBuffer *buffer) {
- if(TALKATU_IS_BUFFER(buffer)) {
- GSimpleActionGroup *action_group = talkatu_buffer_get_action_group(TALKATU_BUFFER(buffer));
- gtk_widget_insert_action_group(demo->toolbar, "talkatutext", G_ACTION_GROUP(action_group));
- gtk_widget_insert_action_group(demo->toolbar, "talkatutext", NULL);
talkatu_demo_buffer_changed_cb(GtkToggleButton *toggle, gpointer data) {
TalkatuDemo *demo = (TalkatuDemo *)data;
+ GtkWidget *view = talkatu_editor_get_view(TALKATU_EDITOR(demo->editor)); if(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(demo->toggle_plain))) {
g_message("switching to plain buffer");
- gtk_text_view_set_buffer(GTK_TEXT_VIEW(demo->view_input), demo->buffer_plain);
+ gtk_text_view_set_buffer(GTK_TEXT_VIEW(view), demo->buffer_plain); } else if(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(demo->toggle_html))) {
g_message("switching to html buffer");
- gtk_text_view_set_buffer(GTK_TEXT_VIEW(demo->view_input), demo->buffer_html);
+ gtk_text_view_set_buffer(GTK_TEXT_VIEW(view), demo->buffer_html); } else if(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(demo->toggle_markdown))) {
g_message("switch to markdown buffer");
- gtk_text_view_set_buffer(GTK_TEXT_VIEW(demo->view_input), demo->buffer_markdown);
+ gtk_text_view_set_buffer(GTK_TEXT_VIEW(view), demo->buffer_markdown); -talkatu_demo_view_buffer_changed_cb(GObject *obj, GParamSpec *pspec, gpointer data) {
- talkatu_demo_change_buffer(TALKATU_DEMO(data), gtk_text_view_get_buffer(GTK_TEXT_VIEW(obj)));
talkatu_demo_view_open_url_cb(TalkatuView *view, const gchar *url, gpointer data) {
gboolean success = FALSE;
@@ -211,7 +196,7 @@
TalkatuDemo *demo = TALKATU_DEMO(data);
TalkatuContentType content_type = TALKATU_CONTENT_TYPE_PLAIN;
TalkatuMessage *message = NULL;
- GtkTextBuffer *input = gtk_text_view_get_buffer(GTK_TEXT_VIEW(demo->view_input));
+ GtkTextBuffer *input = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)); if(TALKATU_IS_HTML_BUFFER(input)) {
@@ -247,11 +232,6 @@
talkatu_demo_init(TalkatuDemo *demo) {
gtk_widget_init_template(GTK_WIDGET(demo));
- demo->buffer_plain = talkatu_buffer_new(NULL);
- demo->buffer_html = talkatu_html_buffer_new();
- demo->buffer_markdown = talkatu_markdown_buffer_new();
- demo->buffer_history = talkatu_history_buffer_new();
gtk_text_view_set_buffer(GTK_TEXT_VIEW(demo->view_history), demo->buffer_history);
@@ -265,15 +245,19 @@
gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, view_history);
- gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, view_input);
+ gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, editor); + gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, buffer_plain); + gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, buffer_html); + gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, buffer_markdown); + gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, buffer_history); gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, toggle_plain);
gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, toggle_html);
gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, toggle_markdown);
- gtk_widget_class_bind_template_child(widget_class, TalkatuDemo, toolbar);
gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_closed_cb);
gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_buffer_changed_cb);
- gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_view_buffer_changed_cb);
gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_view_open_url_cb);
gtk_widget_class_bind_template_callback(widget_class, talkatu_demo_view_send_message_cb);
--- a/talkatu/data/toolbar.ui Mon Aug 27 23:15:17 2018 -0500
+++ b/talkatu/data/toolbar.ui Mon Sep 03 15:55:45 2018 -0500
@@ -9,7 +9,7 @@
<object class="GtkToggleToolButton" id="format_bold">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.format-bold</property>
+ <property name="action_name">talkatu.format-bold</property> <property name="label" translatable="yes">Bold</property>
<property name="icon_name">format-text-bold</property>
@@ -22,7 +22,7 @@
<object class="GtkToggleToolButton" id="format_italic">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.format-italic</property>
+ <property name="action_name">talkatu.format-italic</property> <property name="label" translatable="yes">Italic</property>
<property name="icon_name">format-text-italic</property>
@@ -35,7 +35,7 @@
<object class="GtkToggleToolButton" id="format_underline">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.format-underline</property>
+ <property name="action_name">talkatu.format-underline</property> <property name="label" translatable="yes">Underline</property>
<property name="icon_name">format-text-underline</property>
@@ -48,7 +48,7 @@
<object class="GtkToggleToolButton" id="format_strikethrough">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.format-strikethrough</property>
+ <property name="action_name">talkatu.format-strikethrough</property> <property name="label" translatable="yes">Strikethrough</property>
<property name="icon_name">format-text-strikethrough</property>
@@ -71,7 +71,7 @@
<object class="GtkToolButton" id="format_larger">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.format-grow</property>
+ <property name="action_name">talkatu.format-grow</property> <property name="label" translatable="yes">Increase Font Size</property>
<property name="icon_name">zoom-in</property>
@@ -84,7 +84,7 @@
<object class="GtkToolButton" id="format_smaller">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.format-shrink</property>
+ <property name="action_name">talkatu.format-shrink</property> <property name="label" translatable="yes">Decrease Font Size</property>
<property name="icon_name">zoom-out</property>
@@ -107,7 +107,7 @@
<object class="GtkToolButton" id="format_reset">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.format-reset</property>
+ <property name="action_name">talkatu.format-reset</property> <property name="label" translatable="yes">Clear Formatting</property>
<property name="icon_name">edit-clear</property>
@@ -130,7 +130,7 @@
<object class="GtkToolButton" id="insert_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.insert-image</property>
+ <property name="action_name">talkatu.insert-image</property> <property name="label" translatable="yes">Insert Image</property>
<property name="use_underline">True</property>
<property name="icon_name">insert-image</property>
@@ -144,7 +144,7 @@
<object class="GtkToggleToolButton" id="insert_link">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.insert-link</property>
+ <property name="action_name">talkatu.insert-link</property> <property name="label" translatable="yes">Insert Link</property>
<property name="use_underline">True</property>
<property name="icon_name">insert-link</property>
@@ -158,7 +158,7 @@
<object class="GtkToolButton" id="insert_file">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.insert-file</property>
+ <property name="action_name">talkatu.insert-file</property> <property name="label" translatable="yes">Insert File</property>
<property name="icon_name">insert-object</property>
@@ -171,7 +171,7 @@
<object class="GtkToolButton" id="insert_code">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.insert-code</property>
+ <property name="action_name">talkatu.insert-code</property> <property name="label" translatable="yes">Insert Code</property>
<property name="use_underline">True</property>
<property name="icon_name">insert-text</property>
@@ -185,7 +185,7 @@
<object class="GtkToolButton" id="insert_emoji">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.insert-emoji</property>
+ <property name="action_name">talkatu.insert-emoji</property> <property name="label" translatable="yes">Insert Emoji</property>
<property name="use_underline">True</property>
<property name="icon_name">face-smile-big</property>
@@ -209,7 +209,7 @@
<object class="GtkToolButton" id="get_attention">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="action_name">talkatutext.attention</property>
+ <property name="action_name">talkatu.attention</property> <property name="label" translatable="yes">Get Attention</property>
<property name="use_underline">True</property>
<property name="icon_name">emblem-important</property>
--- a/talkatu/talkatu.xml Mon Aug 27 23:15:17 2018 -0500
+++ b/talkatu/talkatu.xml Mon Sep 03 15:55:45 2018 -0500
@@ -1,12 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<glade-catalog name="Talkatu" version="0.0" library="talkatu">
+ <glade-widget-class name="TalkatuEditor" generic-name="editor" title="Editor"> + <object name="toolbar"/> + <glade-widget-class name="TalkatuHistory" generic-name="history" title="History"/> <glade-widget-class name="TalkatuLinkDialog" generic-name="link_dialog" title="LinkDialog"/>
<glade-widget-class name="TalkatuMenuToolButton" generic-name="menu_tool_button" title="MenuToolButton"/>
<glade-widget-class name="TalkatuToolDrawer" generic-name="tool_drawer" title="ToolDrawer"/>
<glade-widget-class name="TalkatuToolbar" generic-name="toolbar" title="Toolbar"/>
<glade-widget-class name="TalkatuView" generic-name="view" title="View"/>
- <glade-widget-class name="TalkatuHistory" generic-name="history" title="History"/>
+ <glade-widget-class name="TalkatuTagTable" generic-name="tag-table" title="Tag Table" toplevel="True"/> <glade-widget-class name="TalkatuBuffer" generic-name="buffer" title="Buffer" toplevel="True">
@@ -14,7 +23,7 @@
- <glade-widget-class name="TalkatuHTMLBuffer" generic-name="buffer" title="HTML Buffer" toplevel="True">
+ <glade-widget-class name="TalkatuHtmlBuffer" generic-name="buffer" title="HTML Buffer" toplevel="True"> <property translatable="True" multiline="True" id="text"/>
@@ -25,17 +34,25 @@
<property translatable="True" multiline="True" id="text"/>
+ <glade-widget-class name="TalkatuHistoryBuffer" generic-name="buffer" title="History Buffer" toplevel="True"> + <property translatable="True" multiline="True" id="text"/> <glade-widget-group name="Talkatu" title="Talkatu">
+ <glade-widget-class-ref name="TalkatuBuffer"/> + <glade-widget-class-ref name="TalkatuEditor"/> + <glade-widget-class-ref name="TalkatuHistory"/> + <glade-widget-class-ref name="TalkatuHistoryBuffer"/> + <glade-widget-class-ref name="TalkatuHtmlBuffer"/> <glade-widget-class-ref name="TalkatuLinkDialog"/>
+ <glade-widget-class-ref name="TalkatuMarkdownBuffer"/> <glade-widget-class-ref name="TalkatuMenuToolButton"/>
<glade-widget-class-ref name="TalkatuToolDrawer"/>
<glade-widget-class-ref name="TalkatuToolbar"/>
<glade-widget-class-ref name="TalkatuView"/>
- <glade-widget-class-ref name="TalkatuHistory"/>
- <glade-widget-class-ref name="TalkatuBuffer"/>
- <glade-widget-class-ref name="TalkatuHTMLBuffer"/>
- <glade-widget-class-ref name="TalkatuMarkdownBuffer"/>
+ <glade-widget-class-ref name="TalkatuTagTable"/> --- a/talkatu/talkatubuffer.c Mon Aug 27 23:15:17 2018 -0500
+++ b/talkatu/talkatubuffer.c Mon Sep 03 15:55:45 2018 -0500
@@ -100,6 +100,11 @@
+static GSimpleActionGroup * +talkatu_buffer_default_creation_action_group(TalkatuBuffer *buffer) { + return g_simple_action_group_new(); /******************************************************************************
*****************************************************************************/
@@ -164,7 +169,7 @@
- /* no apply the tags as necessary. pos has been revalidated */
+ /* now apply the tags as necessary. pos has been revalidated */ start = gtk_text_iter_copy(pos);
gtk_text_iter_backward_chars(start, new_text_length);
@@ -332,6 +337,7 @@
text_buffer_class->mark_set = talkatu_buffer_mark_set;
klass->insert_markup = talkatu_buffer_real_insert_markup;
+ klass->create_action_group = talkatu_buffer_default_creation_action_group; properties[PROP_ACTION_GROUP] = g_param_spec_object(
"action-group", "action-group", "The action group for this buffer",
@@ -383,6 +389,12 @@
priv = talkatu_buffer_get_instance_private(buffer);
+ if(priv->action_group == NULL) { + GSimpleActionGroup *action_group = TALKATU_BUFFER_GET_CLASS(buffer)->create_action_group(buffer); + talkatu_buffer_set_action_group(buffer, action_group); + g_object_unref(G_OBJECT(action_group)); return priv->action_group;
--- a/talkatu/talkatuhtmlbuffer.c Mon Aug 27 23:15:17 2018 -0500
+++ b/talkatu/talkatuhtmlbuffer.c Mon Sep 03 15:55:45 2018 -0500
@@ -32,60 +32,14 @@
-G_DEFINE_TYPE(TalkatuHTMLBuffer, talkatu_html_buffer, TALKATU_TYPE_BUFFER);
-/******************************************************************************
- *****************************************************************************/
-talkatu_html_buffer_init(TalkatuHTMLBuffer *buffer) {
- gtk_text_buffer_register_deserialize_format(
- GTK_TEXT_BUFFER(buffer),
- talkatu_markup_deserialize_html,
-talkatu_html_buffer_class_init(TalkatuHTMLBufferClass *klass) {
+G_DEFINE_TYPE(TalkatuHtmlBuffer, talkatu_html_buffer, TALKATU_TYPE_BUFFER); /******************************************************************************
*****************************************************************************/
- * talkatu_html_buffer_new:
- * Creates a new #TalkatuHTMLBuffer. A #TalkatuHTMLBuffer supports HTML
- * formatting as well as pasting rendered HTML.
- * Returns: (transfer full): The new #TalkatuHTMLBuffer instance.
-GtkTextBuffer *talkatu_html_buffer_new(void) {
- GtkTextBuffer *buffer = NULL;
- GtkBuilder *builder = NULL;
- GtkTextTagTable *table = NULL;
- GSimpleActionGroup *action_group = NULL;
- builder = gtk_builder_new_from_resource("/org/bitbucket/rw_grim/talkatu/ui/tagtable.ui");
- table = GTK_TEXT_TAG_TABLE(gtk_builder_get_object(builder, "format_tag_table"));
- action_group = g_simple_action_group_new();
- TALKATU_TYPE_HTML_BUFFER,
- "action-group", action_group,
- /* we can't free the builder until the table has been refed by the
- g_object_unref(G_OBJECT(builder));
+static GSimpleActionGroup * +talkatu_html_buffer_create_action_group(TalkatuBuffer *buffer) { + GSimpleActionGroup *action_group = g_simple_action_group_new(); /* order of operation sucks, we need the buffer for the callbacks, but we
* need the group to create the buffer.
@@ -98,14 +52,53 @@
talkatu_action_add_shrink(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
talkatu_action_add_reset(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
talkatu_action_add_link(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
- g_object_unref(G_OBJECT(action_group));
+/****************************************************************************** + *****************************************************************************/ +talkatu_html_buffer_init(TalkatuHtmlBuffer *buffer) { + gtk_text_buffer_register_deserialize_format( + GTK_TEXT_BUFFER(buffer), + talkatu_markup_deserialize_html,
+talkatu_html_buffer_class_init(TalkatuHtmlBufferClass *klass) { + TalkatuBufferClass *buffer_class = TALKATU_BUFFER_CLASS(klass); + buffer_class->create_action_group = talkatu_html_buffer_create_action_group; +/****************************************************************************** + *****************************************************************************/ + * talkatu_html_buffer_new: + * Creates a new #TalkatuHtmlBuffer. A #TalkatuHtmlBuffer supports HTML + * formatting as well as pasting rendered HTML. + * Returns: (transfer full): The new #TalkatuHtmlBuffer instance. +GtkTextBuffer *talkatu_html_buffer_new(void) { + return GTK_TEXT_BUFFER(g_object_new( + TALKATU_TYPE_HTML_BUFFER, * talkatu_html_buffer_insert_html:
- * @buffer: The #TalkatuHTMLBuffer instance.
+ * @buffer: The #TalkatuHtmlBuffer instance. * @iter: The #GtkTextIter where to insert the HTML.
* @text: The HTML text to insert.
* @len: The length of @text or -1
@@ -113,7 +106,7 @@
* Inserts and renders @text as HTML into @buffer.
-talkatu_html_buffer_insert_html(TalkatuHTMLBuffer *buffer,
+talkatu_html_buffer_insert_html(TalkatuHtmlBuffer *buffer, --- a/talkatu/talkatuhtmlbuffer.h Mon Aug 27 23:15:17 2018 -0500
+++ b/talkatu/talkatuhtmlbuffer.h Mon Sep 03 15:55:45 2018 -0500
@@ -31,18 +31,18 @@
#define TALKATU_TYPE_HTML_BUFFER (talkatu_html_buffer_get_type())
-#define TALKATU_HTML_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TALKATU_TYPE_HTML_BUFFER, TalkatuHTMLBuffer))
-#define TALKATU_HTML_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TALKATU_TYPE_HTML_BUFFER, TalkatuHTMLBufferClass))
+#define TALKATU_HTML_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TALKATU_TYPE_HTML_BUFFER, TalkatuHtmlBuffer)) +#define TALKATU_HTML_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TALKATU_TYPE_HTML_BUFFER, TalkatuHtmlBufferClass)) #define TALKATU_IS_HTML_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), TALKATU_TYPE_HTML_BUFFER))
#define TALKATU_IS_HTML_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), TALKATU_TYPE_HTML_BUFFER))
-#define TALKATU_HTML_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), TALKATU_TYPE_HTML_BUFFER, TalkatuHTMLBufferClass))
+#define TALKATU_HTML_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), TALKATU_TYPE_HTML_BUFFER, TalkatuHtmlBufferClass)) -typedef struct _TalkatuHTMLBuffer TalkatuHTMLBuffer;
-typedef struct _TalkatuHTMLBufferClass TalkatuHTMLBufferClass;
+typedef struct _TalkatuHtmlBuffer TalkatuHtmlBuffer; +typedef struct _TalkatuHtmlBufferClass TalkatuHtmlBufferClass; #include "talkatu/talkatubuffer.h"
-struct _TalkatuHTMLBuffer {
+struct _TalkatuHtmlBuffer { void (*_talkatu_reserved1)(void);
@@ -51,10 +51,10 @@
void (*_talkatu_reserved4)(void);
-struct _TalkatuHTMLBufferClass {
+struct _TalkatuHtmlBufferClass { TalkatuBufferClass parent;
- void (*insert_html)(TalkatuHTMLBuffer *buffer, GtkTextIter *iter, const gchar *text, gint len);
+ void (*insert_html)(TalkatuHtmlBuffer *buffer, GtkTextIter *iter, const gchar *text, gint len); void (*_talkatu_reserved1)(void);
void (*_talkatu_reserved2)(void);
@@ -68,7 +68,7 @@
GtkTextBuffer *talkatu_html_buffer_new(void);
-void talkatu_html_buffer_insert_html(TalkatuHTMLBuffer *buffer, GtkTextIter *iter, const gchar *text, gint len);
+void talkatu_html_buffer_insert_html(TalkatuHtmlBuffer *buffer, GtkTextIter *iter, const gchar *text, gint len); --- a/talkatu/talkatumarkdownbuffer.c Mon Aug 27 23:15:17 2018 -0500
+++ b/talkatu/talkatumarkdownbuffer.c Mon Sep 03 15:55:45 2018 -0500
@@ -235,6 +235,23 @@
/******************************************************************************
+ *****************************************************************************/ +static GSimpleActionGroup * +talkatu_markdown_buffer_create_action_group(TalkatuBuffer *buffer) { + GSimpleActionGroup *action_group = g_simple_action_group_new(); + talkatu_action_add_bold(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer)); + talkatu_action_add_italic(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer)); + talkatu_action_add_underline(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer)); + talkatu_action_add_strikethrough(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer)); + talkatu_action_add_reset(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer)); + talkatu_action_add_link(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer)); +/****************************************************************************** *****************************************************************************/
@@ -250,6 +267,10 @@
talkatu_markdown_buffer_class_init(TalkatuMarkdownBufferClass *klass) {
+ TalkatuBufferClass *buffer_class = TALKATU_BUFFER_CLASS(klass); + buffer_class->create_action_group = talkatu_markdown_buffer_create_action_group; klass->insert_markdown = talkatu_markdown_buffer_real_insert_markdown;
@@ -265,40 +286,10 @@
* Returns: (transfer full): The new #TalkatuMarkdownBuffer.
GtkTextBuffer *talkatu_markdown_buffer_new(void) {
- GtkTextBuffer *buffer = NULL;
- GtkBuilder *builder = NULL;
- GtkTextTagTable *table = NULL;
- GSimpleActionGroup *action_group = NULL;
- builder = gtk_builder_new_from_resource("/org/bitbucket/rw_grim/talkatu/ui/tagtable.ui");
- table = GTK_TEXT_TAG_TABLE(gtk_builder_get_object(builder, "format_tag_table"));
- action_group = g_simple_action_group_new();
+ return GTK_TEXT_BUFFER(g_object_new( TALKATU_TYPE_MARKDOWN_BUFFER,
- "action-group", action_group,
- /* we can't free the builder until the table has been refed by the
- g_object_unref(G_OBJECT(builder));
- /* order of operation sucks, we need the buffer for the callbacks, but we
- * need the group to create the buffer.
- talkatu_action_add_bold(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
- talkatu_action_add_italic(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
- talkatu_action_add_underline(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
- talkatu_action_add_strikethrough(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
- talkatu_action_add_reset(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
- talkatu_action_add_link(G_ACTION_MAP(action_group), GTK_TEXT_BUFFER(buffer));
- g_object_unref(G_OBJECT(action_group));