qulogic/talkatu

start of adding the author

2018-08-20, Gary Kramlich
e4e8d26ff8d0
Parents 288ffdf9aafd
Children 8af6021cb49e
start of adding the author
--- a/demo/talkatudemo.c Sun Aug 19 03:05:28 2018 -0500
+++ b/demo/talkatudemo.c Mon Aug 20 20:23:21 2018 -0500
@@ -215,6 +215,7 @@
message = talkatu_demo_message_new(
id++,
+ "demo1",
talkatu_buffer_get_plain_text(TALKATU_BUFFER(input))
);
--- a/demo/talkatudemomessage.c Sun Aug 19 03:05:28 2018 -0500
+++ b/demo/talkatudemomessage.c Mon Aug 20 20:23:21 2018 -0500
@@ -19,6 +19,7 @@
typedef struct {
guint64 id;
+ gchar *author;
gchar *contents;
} TalkatuDemoMessagePrivate;
@@ -27,6 +28,7 @@
N_PROPERTIES,
/* overrides */
PROP_ID = N_PROPERTIES,
+ PROP_AUTHOR,
PROP_CONTENTS,
};
@@ -63,6 +65,24 @@
}
static gchar *
+talkatu_demo_message_get_author(TalkatuDemoMessage *message) {
+ TalkatuDemoMessagePrivate *priv = talkatu_demo_message_get_instance_private(message);
+
+ return priv->author;
+}
+
+static void
+talkatu_demo_message_set_author(TalkatuDemoMessage *message, const gchar *author) {
+ TalkatuDemoMessagePrivate *priv = talkatu_demo_message_get_instance_private(message);
+
+ g_free(priv->author);
+
+ priv->author = author ? g_strdup(author) : NULL;
+
+ g_object_notify(G_OBJECT(message), "author");
+}
+
+static gchar *
talkatu_demo_message_get_contents(TalkatuDemoMessage *message) {
TalkatuDemoMessagePrivate *priv = talkatu_demo_message_get_instance_private(message);
@@ -95,6 +115,9 @@
case PROP_ID:
g_value_set_uint64(value, talkatu_demo_message_get_id(message));
break;
+ case PROP_AUTHOR:
+ g_value_set_string(value, talkatu_demo_message_get_author(message));
+ break;
case PROP_CONTENTS:
g_value_set_string(value, talkatu_demo_message_get_contents(message));
break;
@@ -116,6 +139,9 @@
case PROP_ID:
talkatu_demo_message_set_id(message, g_value_get_uint64(value));
break;
+ case PROP_AUTHOR:
+ talkatu_demo_message_set_author(message, g_value_get_string(value));
+ break;
case PROP_CONTENTS:
talkatu_demo_message_set_contents(message, g_value_get_string(value));
break;
@@ -129,6 +155,7 @@
talkatu_demo_message_finalize(GObject *obj) {
TalkatuDemoMessage *message = TALKATU_DEMO_MESSAGE(obj);
+ talkatu_demo_message_set_author(message, NULL);
talkatu_demo_message_set_contents(message, NULL);
G_OBJECT_CLASS(talkatu_demo_message_parent_class)->finalize(obj);
@@ -147,16 +174,18 @@
obj_class->finalize = talkatu_demo_message_finalize;
g_object_class_override_property(obj_class, PROP_ID, "id");
+ g_object_class_override_property(obj_class, PROP_AUTHOR, "author");
g_object_class_override_property(obj_class, PROP_CONTENTS, "contents");
}
/******************************************************************************
* Public API
*****************************************************************************/
-TalkatuMessage *talkatu_demo_message_new(guint64 id, const gchar *contents) {
+TalkatuMessage *talkatu_demo_message_new(guint64 id, const gchar *author, const gchar *contents) {
return TALKATU_MESSAGE(g_object_new(
TALKATU_TYPE_DEMO_MESSAGE,
"id", id,
+ "author", author,
"contents", contents,
NULL
));
--- a/demo/talkatudemomessage.h Sun Aug 19 03:05:28 2018 -0500
+++ b/demo/talkatudemomessage.h Mon Aug 20 20:23:21 2018 -0500
@@ -56,7 +56,7 @@
GType talkatu_demo_message_get_type(void);
-TalkatuMessage *talkatu_demo_message_new(guint64 id, const gchar *message);
+TalkatuMessage *talkatu_demo_message_new(guint64 id, const gchar *author, const gchar *message);
G_END_DECLS
--- a/talkatu/talkatuhistorybuffer.c Sun Aug 19 03:05:28 2018 -0500
+++ b/talkatu/talkatuhistorybuffer.c Mon Aug 20 20:23:21 2018 -0500
@@ -19,6 +19,7 @@
#include <glib/gi18n-lib.h>
#include <talkatu/talkatuhistorybuffer.h>
+#include <talkatu/talkatutag.h>
/**
* SECTION:talkatuhistorybuffer
@@ -30,35 +31,42 @@
* manually.
*/
-G_DEFINE_TYPE(TalkatuHistoryBuffer, talkatu_history_buffer, TALKATU_TYPE_BUFFER);
+G_DEFINE_TYPE(TalkatuHistoryBuffer, talkatu_history_buffer, GTK_TYPE_TEXT_BUFFER);
/******************************************************************************
* GObject Stuff
*****************************************************************************/
static void
-talkatu_history_buffer_real_write_message(TalkatuHistoryBuffer *buffer,
+talkatu_history_buffer_real_write_message(TalkatuHistoryBuffer *talkatu_buffer,
TalkatuMessage *message)
{
+ GtkTextBuffer *buffer = GTK_TEXT_BUFFER(talkatu_buffer);
GtkTextIter start, end;
GtkTextChildAnchor *anchor;
- gchar *contents = NULL;
+ gchar *author = NULL, *contents = NULL;
/* if there's already text in the buffer, insert a newline */
- gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(buffer), &start, &end);
+ gtk_text_buffer_get_bounds(buffer, &start, &end);
if(!gtk_text_iter_equal(&start, &end)) {
- gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), &end, "\n", -1);
+ gtk_text_buffer_insert(buffer, &end, "\n", -1);
}
+ author = talkatu_message_get_author(message);
+ gtk_text_buffer_insert_with_tags_by_name(
+ buffer,
+ &end,
+ author,
+ -1,
+ TALKATU_TAG_BOLD,
+ NULL
+ );
+ g_free(author);
+
+ /* insert a space after the author */
+ gtk_text_buffer_insert(buffer, &end, " ", -1);
+
contents = talkatu_message_get_contents(message);
- g_message("writing message '%s'", contents);
-
- gtk_text_buffer_insert(
- GTK_TEXT_BUFFER(buffer),
- &end,
- contents,
- -1
- );
-
+ gtk_text_buffer_insert(buffer, &end, contents, -1);
g_free(contents);
/* add the anchor that contains the message */
@@ -70,7 +78,7 @@
g_object_unref
);
gtk_text_buffer_insert_child_anchor(
- GTK_TEXT_BUFFER(buffer),
+ buffer,
&end,
anchor
);
@@ -101,10 +109,22 @@
*/
GtkTextBuffer *
talkatu_history_buffer_new(void) {
- return GTK_TEXT_BUFFER(g_object_new(
+ GtkBuilder *builder = NULL;
+ GtkTextTagTable *table = NULL;
+ GtkTextBuffer *buffer = 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"));
+
+ buffer = GTK_TEXT_BUFFER(g_object_new(
TALKATU_TYPE_HISTORY_BUFFER,
+ "tag-table", table,
NULL
));
+
+ g_object_unref(G_OBJECT(builder));
+
+ return buffer;
}
void
--- a/talkatu/talkatuhistorybuffer.h Sun Aug 19 03:05:28 2018 -0500
+++ b/talkatu/talkatuhistorybuffer.h Mon Aug 20 20:23:21 2018 -0500
@@ -41,7 +41,7 @@
typedef struct _TalkatuHistoryBufferClass TalkatuHistoryBufferClass;
struct _TalkatuHistoryBuffer {
- TalkatuBuffer parent;
+ GtkTextBuffer parent;
void (*_talkatu_reserved1)(void);
void (*_talkatu_reserved2)(void);
@@ -50,7 +50,7 @@
};
struct _TalkatuHistoryBufferClass {
- TalkatuBufferClass parent;
+ GtkTextBufferClass parent;
void (*write_message)(TalkatuHistoryBuffer *buffer, TalkatuMessage *message);
--- a/talkatu/talkatumessage.c Sun Aug 19 03:05:28 2018 -0500
+++ b/talkatu/talkatumessage.c Mon Aug 20 20:23:21 2018 -0500
@@ -45,6 +45,13 @@
g_object_interface_install_property(iface, pspec);
pspec = g_param_spec_string(
+ "author", "author", "The author of the message",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT
+ );
+ g_object_interface_install_property(iface, pspec);
+
+ pspec = g_param_spec_string(
"contents", "contents", "The contents of the message",
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT
@@ -90,6 +97,39 @@
}
/**
+ * talkatu_message_get_author:
+ * @message: The #TalkatuMessage instance.
+ *
+ * Gets the author of @message.
+ *
+ * Returns: (transfer full): The author of @message.
+ */
+gchar *
+talkatu_message_get_author(TalkatuMessage *message) {
+ gchar *author = NULL;
+
+ g_return_val_if_fail(TALKATU_IS_MESSAGE(message), NULL);
+
+ g_object_get(G_OBJECT(message), "author", &author, NULL);
+
+ return author;
+}
+
+/**
+ * talkatu_message_set_author:
+ * @message: The #TalkatuMessage instance.
+ * @author: The new author of @message.
+ *
+ * Sets the author of @message to @author.
+ */
+void
+talkatu_message_set_author(TalkatuMessage *message, const gchar *author) {
+ g_return_if_fail(TALKATU_IS_MESSAGE(message));
+
+ g_object_set(G_OBJECT(message), "author", author, NULL);
+}
+
+/**
* talkatu_message_get_contents:
* @message: The #TalkatuMessage instance.
*
--- a/talkatu/talkatumessage.h Sun Aug 19 03:05:28 2018 -0500
+++ b/talkatu/talkatumessage.h Mon Aug 20 20:23:21 2018 -0500
@@ -58,6 +58,9 @@
guint64 talkatu_message_get_id(TalkatuMessage *message);
void talkatu_message_set_id(TalkatuMessage *message, guint64 id);
+gchar *talkatu_message_get_author(TalkatuMessage *message);
+void talkatu_message_set_author(TalkatuMessage *message, const gchar *author);
+
gchar *talkatu_message_get_contents(TalkatuMessage *message);
void talkatu_message_set_contents(TalkatuMessage *message, const gchar *contents);
--- a/talkatu/talkatuview.c Sun Aug 19 03:05:28 2018 -0500
+++ b/talkatu/talkatuview.c Mon Aug 20 20:23:21 2018 -0500
@@ -331,7 +331,7 @@
}
}
- return FALSE;
+ return TRUE;
}
static gboolean