From 43ff911da0f0d81a264bc52e8db565e0fb52c2af Mon Sep 17 00:00:00 2001 From: Andy Shevchenko Date: Sat, 2 May 2009 15:56:28 +0300 Subject: [PATCH] Add possibility to insert link by nickname Originally patch was found here: http://people.freebsd.org/~novel/patches/non-freebsd/logjam452_userlink.diff Signed-off-by: Andy Shevchenko --- src/link-journal.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/link-journal.c b/src/link-journal.c index d70e70d..ec47e2d 100644 --- a/src/link-journal.c +++ b/src/link-journal.c @@ -44,11 +44,12 @@ make_usertype_omenu() { void link_journal_dialog_run(GtkWindow *win, JamDoc *doc) { GtkWidget *dlg; - GtkWidget *vbox, *hbox, *entry, *omenu; + GtkWidget *vbox, *hbox, *entry, *entry_name, *omenu; GtkSizeGroup *sizegroup; GtkTextBuffer *buffer; GtkTextIter start, end; char *username = NULL; + char *usernick = NULL; int usertype; gboolean selection = FALSE; @@ -78,6 +79,11 @@ link_journal_dialog_run(GtkWindow *win, JamDoc *doc) { hbox = labelled_box_new_sg(_("_Username:"), entry, sizegroup); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + entry_name = gtk_entry_new(); + gtk_entry_set_activates_default(GTK_ENTRY(entry_name), TRUE); + hbox = labelled_box_new_sg(_("_Nickname:"), entry_name, sizegroup); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + omenu = make_usertype_omenu(); hbox = labelled_box_new_sg(_("User _Type:"), omenu, sizegroup); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); @@ -89,6 +95,7 @@ link_journal_dialog_run(GtkWindow *win, JamDoc *doc) { return; } username = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); + usernick = gtk_editable_get_chars(GTK_EDITABLE(entry_name), 0, -1); usertype = gtk_option_menu_get_history(GTK_OPTION_MENU(omenu)); gtk_widget_destroy(dlg); if (username[0] == 0) { @@ -102,6 +109,41 @@ link_journal_dialog_run(GtkWindow *win, JamDoc *doc) { gtk_text_buffer_get_iter_at_mark(buffer, &start, gtk_text_buffer_get_insert(buffer)); + if (usernick && *usernick) { + gchar *link; + gchar *img; + JamAccount *acc = jam_doc_get_account(doc); + + xml_escape(&username); + xml_escape(&usernick); + + if (usertype == 0) + img = g_strdup("userinfo.gif"); + else + img = g_strdup("community.gif"); + + link = g_strdup_printf( + "" + "[info]" + "" + "%s", + jam_account_lj_get_server(JAM_ACCOUNT_LJ(acc))->url, + username, + jam_account_lj_get_server(JAM_ACCOUNT_LJ(acc))->url, + img, + jam_account_lj_get_server(JAM_ACCOUNT_LJ(acc))->url, + username, + usernick); + + gtk_text_buffer_insert(buffer, &start, link, -1); + + g_free(link); + g_free(img); + free(username); + free(usernick); + return; + } + gtk_text_buffer_insert(buffer, &start, "