| 700 } |
700 } |
| 701 |
701 |
| 702 static void |
702 static void |
| 703 insert_smiley_text(GtkWidget *widget, PidginWebViewToolbar *toolbar) |
703 insert_smiley_text(GtkWidget *widget, PidginWebViewToolbar *toolbar) |
| 704 { |
704 { |
| 705 char *smiley_text, *escaped_smiley; |
705 PurpleSmiley *smiley; |
| 706 |
706 PurpleStoredImage *image; |
| 707 smiley_text = g_object_get_data(G_OBJECT(widget), "smiley_text"); |
707 int image_id; |
| 708 escaped_smiley = g_markup_escape_text(smiley_text, -1); |
708 gchar *escaped_smiley, *smiley_html; |
| |
709 const gchar *smiley_class; |
| |
710 |
| |
711 smiley = g_object_get_data(G_OBJECT(widget), "smiley"); |
| |
712 smiley_class = g_object_get_data(G_OBJECT(widget), "smiley-class"); |
| |
713 image = purple_smiley_get_image(smiley); |
| |
714 image_id = purple_imgstore_add_with_id(image); |
| |
715 |
| |
716 escaped_smiley = g_markup_escape_text( |
| |
717 purple_smiley_get_shortcut(smiley), -1); |
| |
718 smiley_html = g_strdup_printf("<img src=\"" PURPLE_STORED_IMAGE_PROTOCOL |
| |
719 "%d\" class=\"emoticon %s-emoticon\" alt=\"%s\" title=\"%s\">", |
| |
720 image_id, smiley_class, escaped_smiley, escaped_smiley); |
| |
721 |
| |
722 g_free(escaped_smiley); |
| 709 |
723 |
| 710 pidgin_webview_append_html(PIDGIN_WEBVIEW(toolbar->webview), |
724 pidgin_webview_append_html(PIDGIN_WEBVIEW(toolbar->webview), |
| 711 escaped_smiley); |
725 smiley_html); |
| 712 |
726 |
| 713 g_free(escaped_smiley); |
727 g_free(smiley_html); |
| 714 |
728 |
| 715 close_smiley_dialog(toolbar); |
729 close_smiley_dialog(toolbar); |
| 716 } |
730 } |
| 717 |
731 |
| 718 static gboolean |
732 static gboolean |
| 813 |
828 |
| 814 image = GTK_IMAGE(gtk_image_new_from_pixbuf(pixbuf)); |
829 image = GTK_IMAGE(gtk_image_new_from_pixbuf(pixbuf)); |
| 815 |
830 |
| 816 button = gtk_button_new(); |
831 button = gtk_button_new(); |
| 817 gtk_container_add(GTK_CONTAINER(button), GTK_WIDGET(image)); |
832 gtk_container_add(GTK_CONTAINER(button), GTK_WIDGET(image)); |
| 818 g_object_set_data_full(G_OBJECT(button), "smiley_text", |
833 |
| 819 g_strdup(smiley_shortcut), g_free); |
834 g_object_ref(smiley); |
| |
835 g_object_set_data_full(G_OBJECT(button), "smiley", |
| |
836 smiley, g_object_unref); |
| |
837 g_object_set_data(G_OBJECT(button), |
| |
838 "smiley-class", (gpointer)smiley_class); |
| |
839 |
| 820 g_signal_connect(G_OBJECT(button), "clicked", |
840 g_signal_connect(G_OBJECT(button), "clicked", |
| 821 G_CALLBACK(insert_smiley_text), toolbar); |
841 G_CALLBACK(insert_smiley_text), toolbar); |
| 822 gtk_widget_set_tooltip_text(button, smiley_shortcut); |
842 gtk_widget_set_tooltip_text(button, smiley_shortcut); |
| 823 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
843 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| 824 |
844 |
| 944 } |
964 } |
| 945 |
965 |
| 946 /* Add buttons for smileys. */ |
966 /* Add buttons for smileys. */ |
| 947 if (theme_smileys) { |
967 if (theme_smileys) { |
| 948 add_smiley_list(toolbar, smiley_table, theme_smileys, |
968 add_smiley_list(toolbar, smiley_table, theme_smileys, |
| 949 max_line_width, smileys_from_custom); |
969 max_line_width, smileys_from_custom, "theme"); |
| 950 } |
970 } |
| 951 if (theme_smileys && custom_smileys) { |
971 if (theme_smileys && custom_smileys) { |
| 952 gtk_box_pack_start(GTK_BOX(smiley_table), |
972 gtk_box_pack_start(GTK_BOX(smiley_table), |
| 953 gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), |
973 gtk_separator_new(GTK_ORIENTATION_HORIZONTAL), |
| 954 TRUE, FALSE, 0); |
974 TRUE, FALSE, 0); |
| 955 } |
975 } |
| 956 if (custom_smileys) { |
976 if (custom_smileys) { |
| 957 add_smiley_list(toolbar, smiley_table, custom_smileys, |
977 add_smiley_list(toolbar, smiley_table, custom_smileys, |
| 958 max_line_width, NULL); |
978 max_line_width, NULL, "custom"); |
| 959 } |
979 } |
| 960 |
980 |
| 961 gtk_widget_add_events(dialog, GDK_KEY_PRESS_MASK); |
981 gtk_widget_add_events(dialog, GDK_KEY_PRESS_MASK); |
| 962 } else { |
982 } else { |
| 963 smiley_table = gtk_label_new(_("This theme has no available smileys.")); |
983 smiley_table = gtk_label_new(_("This theme has no available smileys.")); |