| 86 g_object_unref(G_OBJECT(smiley->custom_pixbuf)); |
86 g_object_unref(G_OBJECT(smiley->custom_pixbuf)); |
| 87 g_free(smiley); |
87 g_free(smiley); |
| 88 } |
88 } |
| 89 |
89 |
| 90 /****************************************************************************** |
90 /****************************************************************************** |
| 91 * GtkIMHtmlSmileys stuff |
91 * GtkWebViewSmileys stuff |
| 92 *****************************************************************************/ |
92 *****************************************************************************/ |
| 93 /* Perhaps these should be in gtkimhtml.c instead. -- sadrul */ |
93 /* Perhaps these should be in gtkimhtml.c instead. -- sadrul */ |
| 94 static void add_gtkimhtml_to_list(GtkIMHtmlSmiley *gtksmiley) |
94 static void add_gtkimhtml_to_list(GtkWebViewSmiley *gtksmiley) |
| 95 { |
95 { |
| 96 gtk_smileys = g_slist_prepend(gtk_smileys, gtksmiley); |
96 gtk_smileys = g_slist_prepend(gtk_smileys, gtksmiley); |
| 97 |
97 |
| 98 purple_debug_info("gtksmiley", "adding %s to gtk_smileys\n", gtksmiley->smile); |
98 purple_debug_info("gtksmiley", "adding %s to gtk_smileys", |
| |
99 gtk_webview_smiley_get_smile(gtksmiley)); |
| 99 } |
100 } |
| 100 |
101 |
| 101 static void |
102 static void |
| 102 shortcut_changed_cb(PurpleSmiley *smiley, gpointer dontcare, GtkIMHtmlSmiley *gtksmiley) |
103 shortcut_changed_cb(PurpleSmiley *smiley, gpointer dontcare, |
| 103 { |
104 GtkWebViewSmiley *gtksmiley) |
| |
105 { |
| |
106 #if 0 |
| 104 g_free(gtksmiley->smile); |
107 g_free(gtksmiley->smile); |
| 105 gtksmiley->smile = g_strdup(purple_smiley_get_shortcut(smiley)); |
108 gtksmiley->smile = g_strdup(purple_smiley_get_shortcut(smiley)); |
| |
109 #else |
| |
110 purple_debug_fatal("gtksmiley", "shortcut_changed_cb not implemented"); |
| |
111 #endif |
| 106 } |
112 } |
| 107 |
113 |
| 108 static void |
114 static void |
| 109 image_changed_cb(PurpleSmiley *smiley, gpointer dontcare, GtkIMHtmlSmiley *gtksmiley) |
115 image_changed_cb(PurpleSmiley *smiley, gpointer dontcare, |
| 110 { |
116 GtkWebViewSmiley *gtksmiley) |
| |
117 { |
| |
118 #if 0 |
| 111 const char *file; |
119 const char *file; |
| 112 |
120 |
| 113 g_free(gtksmiley->file); |
121 g_free(gtksmiley->file); |
| 114 |
122 |
| 115 file = purple_imgstore_get_filename(purple_smiley_get_stored_image(smiley)); |
123 file = purple_imgstore_get_filename(purple_smiley_get_stored_image(smiley)); |
| 116 gtksmiley->file = g_build_filename(purple_smileys_get_storing_dir(), file, NULL); |
124 gtksmiley->file = g_build_filename(purple_smileys_get_storing_dir(), file, NULL); |
| 117 gtk_imhtml_smiley_reload(gtksmiley); |
125 gtk_webview_smiley_reload(gtksmiley); |
| 118 } |
126 #else |
| 119 |
127 purple_debug_fatal("gtksmiley", "image_changed_cb not implemented"); |
| 120 static GtkIMHtmlSmiley *smiley_purple_to_gtkimhtml(PurpleSmiley *smiley) |
128 #endif |
| 121 { |
129 } |
| 122 GtkIMHtmlSmiley *gtksmiley; |
130 |
| |
131 static GtkWebViewSmiley *smiley_purple_to_gtkimhtml(PurpleSmiley *smiley) |
| |
132 { |
| |
133 GtkWebViewSmiley *gtksmiley; |
| 123 gchar *filename; |
134 gchar *filename; |
| 124 const gchar *file; |
135 const gchar *file; |
| 125 |
136 |
| 126 file = purple_imgstore_get_filename(purple_smiley_get_stored_image(smiley)); |
137 file = purple_imgstore_get_filename(purple_smiley_get_stored_image(smiley)); |
| 127 |
138 |
| 128 filename = g_build_filename(purple_smileys_get_storing_dir(), file, NULL); |
139 filename = g_build_filename(purple_smileys_get_storing_dir(), file, NULL); |
| 129 |
140 |
| 130 gtksmiley = gtk_imhtml_smiley_create(filename, purple_smiley_get_shortcut(smiley), |
141 gtksmiley = gtk_webview_smiley_create(filename, |
| 131 FALSE, GTK_IMHTML_SMILEY_CUSTOM); |
142 purple_smiley_get_shortcut(smiley), FALSE, |
| |
143 GTK_WEBVIEW_SMILEY_CUSTOM); |
| 132 g_free(filename); |
144 g_free(filename); |
| 133 |
145 |
| 134 /* Make sure the shortcut for the GtkIMHtmlSmiley is updated with the PurpleSmiley */ |
146 /* Make sure the shortcut for the GtkWebViewSmiley is updated with |
| |
147 * the PurpleSmiley */ |
| 135 g_signal_connect(G_OBJECT(smiley), "notify::shortcut", |
148 g_signal_connect(G_OBJECT(smiley), "notify::shortcut", |
| 136 G_CALLBACK(shortcut_changed_cb), gtksmiley); |
149 G_CALLBACK(shortcut_changed_cb), gtksmiley); |
| 137 |
150 |
| 138 /* And update the pixbuf too when the image is changed */ |
151 /* And update the pixbuf too when the image is changed */ |
| 139 g_signal_connect(G_OBJECT(smiley), "notify::image", |
152 g_signal_connect(G_OBJECT(smiley), "notify::image", |
| 143 } |
156 } |
| 144 |
157 |
| 145 void pidgin_smiley_del_from_list(PurpleSmiley *smiley) |
158 void pidgin_smiley_del_from_list(PurpleSmiley *smiley) |
| 146 { |
159 { |
| 147 GSList *list = NULL; |
160 GSList *list = NULL; |
| 148 GtkIMHtmlSmiley *gtksmiley; |
161 GtkWebViewSmiley *gtksmiley; |
| 149 |
162 |
| 150 if (gtk_smileys == NULL) |
163 if (gtk_smileys == NULL) |
| 151 return; |
164 return; |
| 152 |
165 |
| 153 list = gtk_smileys; |
166 list = gtk_smileys; |
| 154 |
167 |
| 155 for (; list; list = list->next) { |
168 for (; list; list = list->next) { |
| 156 gtksmiley = (GtkIMHtmlSmiley*)list->data; |
169 gtksmiley = (GtkWebViewSmiley*)list->data; |
| 157 |
170 |
| 158 if (strcmp(gtksmiley->smile, purple_smiley_get_shortcut(smiley))) |
171 if (strcmp(gtk_webview_smiley_get_smile(gtksmiley), |
| |
172 purple_smiley_get_shortcut(smiley))) |
| |
173 { |
| 159 continue; |
174 continue; |
| 160 |
175 } |
| 161 gtk_imhtml_smiley_destroy(gtksmiley); |
176 |
| |
177 gtk_webview_smiley_destroy(gtksmiley); |
| 162 g_signal_handlers_disconnect_matched(G_OBJECT(smiley), G_SIGNAL_MATCH_DATA, |
178 g_signal_handlers_disconnect_matched(G_OBJECT(smiley), G_SIGNAL_MATCH_DATA, |
| 163 0, 0, NULL, NULL, gtksmiley); |
179 0, 0, NULL, NULL, gtksmiley); |
| 164 break; |
180 break; |
| 165 } |
181 } |
| 166 |
182 |