# HG changeset patch # User Gary Kramlich # Date 1536815382 18000 # Node ID 291b3c8006689e4d98893eead232b7fefa624a23 # Parent 88cc5868273ffed7526eb635f793a1de974ad2b8 Move GtkPluginPref to use Talkatu instead of Webkit diff -r 88cc5868273f -r 291b3c800668 libpurple/plugins/pluginpref_example.c --- a/libpurple/plugins/pluginpref_example.c Wed Sep 12 21:56:35 2018 +0000 +++ b/libpurple/plugins/pluginpref_example.c Thu Sep 13 00:09:42 2018 -0500 @@ -86,6 +86,20 @@ purple_plugin_pref_frame_add(frame, ppref); ppref = purple_plugin_pref_new_with_name_and_label( + "/plugins/core/pluginpref_example/multiline", + "multiline string pref"); + purple_plugin_pref_set_pref_type(ppref, PURPLE_PLUGIN_PREF_STRING_FORMAT); + purple_plugin_pref_set_format_type(ppref, PURPLE_STRING_FORMAT_TYPE_MULTILINE); + purple_plugin_pref_frame_add(frame, ppref); + + ppref = purple_plugin_pref_new_with_name_and_label( + "/plugins/core/pluginpref_example/html", + "html string pref"); + purple_plugin_pref_set_pref_type(ppref, PURPLE_PLUGIN_PREF_STRING_FORMAT); + purple_plugin_pref_set_format_type(ppref, PURPLE_STRING_FORMAT_TYPE_HTML); + purple_plugin_pref_frame_add(frame, ppref); + + ppref = purple_plugin_pref_new_with_name_and_label( "/plugins/core/pluginpref_example/string_choice", "string choice"); purple_plugin_pref_set_pref_type(ppref, PURPLE_PLUGIN_PREF_CHOICE); @@ -134,6 +148,10 @@ "string"); purple_prefs_add_string("/plugins/core/pluginpref_example/max_string", "max length string"); + purple_prefs_add_string("/plugins/core/pluginpref_example/multiline", + "line1\nline2"); + purple_prefs_add_string("/plugins/core/pluginpref_example/html", + "foo bar baz"); purple_prefs_add_string("/plugins/core/pluginpref_example/masked_string", "masked"); purple_prefs_add_string("/plugins/core/pluginpref_example/string_choice", "red"); diff -r 88cc5868273f -r 291b3c800668 pidgin/gtkpluginpref.c --- a/pidgin/gtkpluginpref.c Wed Sep 12 21:56:35 2018 +0000 +++ b/pidgin/gtkpluginpref.c Thu Sep 13 00:09:42 2018 -0500 @@ -18,6 +18,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ +#include + #ifdef HAVE_CONFIG_H # include #endif @@ -32,7 +34,6 @@ #include "gtkpluginpref.h" #include "gtkprefs.h" #include "gtkutils.h" -#include "gtkwebview.h" static gboolean entry_cb(GtkWidget *entry, gpointer data) { @@ -45,15 +46,14 @@ static void -webview_cb(PidginWebView *webview, gpointer data) -{ - char *pref; - char *text; +multiline_cb(GtkWidget *view, gpointer data) { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)); + gchar *pref = NULL, *text = NULL; - pref = g_object_get_data(G_OBJECT(webview), "pref-key"); + pref = g_object_get_data(G_OBJECT(view), "pref-key"); g_return_if_fail(pref); - text = pidgin_webview_get_body_html(webview); + text = talkatu_markup_get_html(buffer, NULL); purple_prefs_set_string(pref, text); g_free(text); } @@ -101,8 +101,9 @@ { GtkWidget *hbox; GtkWidget *spacer; - GtkWidget *webview; - GtkWidget *frame; + GtkWidget *editor; + GtkWidget *view; + GtkTextBuffer *buffer; box = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_BOX_SPACE); @@ -125,27 +126,33 @@ gtk_box_pack_start(GTK_BOX(hbox), spacer, FALSE, FALSE, 0); gtk_widget_show(spacer); + editor = talkatu_editor_new(); + view = talkatu_editor_get_view(TALKATU_EDITOR(editor)); + if ((format & PURPLE_STRING_FORMAT_TYPE_HTML) != 0) { - frame = pidgin_create_webview(TRUE, &webview, NULL); + buffer = talkatu_buffer_new(NULL); } else { - frame = pidgin_create_webview(FALSE, &webview, NULL); - pidgin_webview_set_format_functions(PIDGIN_WEBVIEW(webview), 0); + buffer = talkatu_html_buffer_new(); } + gtk_text_view_set_buffer(GTK_TEXT_VIEW(view), buffer); + if (format & PURPLE_STRING_FORMAT_TYPE_MULTILINE) { gchar *tmp = purple_strreplace(purple_prefs_get_string(pref_name), "\n", "
"); - pidgin_webview_append_html(PIDGIN_WEBVIEW(webview), tmp); + talkatu_markup_set_html(TALKATU_BUFFER(buffer), tmp, -1); g_free(tmp); - } else - pidgin_webview_append_html(PIDGIN_WEBVIEW(webview), purple_prefs_get_string(pref_name)); - gtk_label_set_mnemonic_widget(GTK_LABEL(gtk_label), webview); - gtk_widget_show_all(frame); - g_object_set_data(G_OBJECT(webview), "pref-key", (gpointer)pref_name); - g_signal_connect(G_OBJECT(webview), "changed", - G_CALLBACK(webview_cb), NULL); - g_signal_connect(G_OBJECT(webview), "format-toggled", - G_CALLBACK(webview_cb), NULL); - gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0); + } else { + talkatu_markup_set_html(TALKATU_BUFFER(buffer), purple_prefs_get_string(pref_name), -1); + } + + gtk_label_set_mnemonic_widget(GTK_LABEL(gtk_label), view); + gtk_widget_show_all(editor); + g_object_set_data(G_OBJECT(view), "pref-key", (gpointer)pref_name); + g_signal_connect(G_OBJECT(view), "changed", + G_CALLBACK(multiline_cb), NULL); + g_signal_connect(G_OBJECT(view), "format-toggled", + G_CALLBACK(multiline_cb), NULL); + gtk_box_pack_start(GTK_BOX(hbox), editor, TRUE, TRUE, 0); } break;