Move GtkPluginPref to use Talkatu instead of Webkit

Thu, 13 Sep 2018 00:09:42 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 13 Sep 2018 00:09:42 -0500
changeset 39227
291b3c800668
parent 39218
88cc5868273f
child 39228
d8b87c16c8a6

Move GtkPluginPref to use Talkatu instead of Webkit

libpurple/plugins/pluginpref_example.c file | annotate | diff | comparison | revisions
pidgin/gtkpluginpref.c file | annotate | diff | comparison | revisions
--- 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 <b>bar</b> baz");
 	purple_prefs_add_string("/plugins/core/pluginpref_example/masked_string", "masked");
 	purple_prefs_add_string("/plugins/core/pluginpref_example/string_choice", "red");
 
--- 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 <talkatu.h>
+
 #ifdef HAVE_CONFIG_H
 # include <config.h>
 #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", "<br>");
-					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;

mercurial