pidgin/gtksmiley.c

changeset 35321
3fc5097c876d
parent 34449
bbcb198650b7
child 35322
9f6d0e63e80a
equal deleted inserted replaced
35320:9553d50ea702 35321:3fc5097c876d
31 #include "debug.h" 31 #include "debug.h"
32 #include "http.h" 32 #include "http.h"
33 #include "notify.h" 33 #include "notify.h"
34 #include "smiley.h" 34 #include "smiley.h"
35 35
36 #include "gtkimhtml.h"
37 #include "gtksmiley.h" 36 #include "gtksmiley.h"
38 #include "gtkutils.h" 37 #include "gtkutils.h"
38 #include "gtkwebview.h"
39 #include "pidginstock.h" 39 #include "pidginstock.h"
40 40
41 #include "gtk3compat.h" 41 #include "gtk3compat.h"
42 42
43 #define PIDGIN_RESPONSE_MODIFY 1000 43 #define PIDGIN_RESPONSE_MODIFY 1000
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
168 gtk_smileys = g_slist_delete_link(gtk_smileys, list); 184 gtk_smileys = g_slist_delete_link(gtk_smileys, list);
169 } 185 }
170 186
171 void pidgin_smiley_add_to_list(PurpleSmiley *smiley) 187 void pidgin_smiley_add_to_list(PurpleSmiley *smiley)
172 { 188 {
173 GtkIMHtmlSmiley *gtksmiley; 189 GtkWebViewSmiley *gtksmiley;
174 190
175 gtksmiley = smiley_purple_to_gtkimhtml(smiley); 191 gtksmiley = smiley_purple_to_gtkimhtml(smiley);
176 add_gtkimhtml_to_list(gtksmiley); 192 add_gtkimhtml_to_list(gtksmiley);
177 g_signal_connect(G_OBJECT(smiley), "destroy", G_CALLBACK(pidgin_smiley_del_from_list), NULL); 193 g_signal_connect(G_OBJECT(smiley), "destroy", G_CALLBACK(pidgin_smiley_del_from_list), NULL);
178 } 194 }
195 } 211 }
196 212
197 void pidgin_smileys_uninit(void) 213 void pidgin_smileys_uninit(void)
198 { 214 {
199 GSList *list; 215 GSList *list;
200 GtkIMHtmlSmiley *gtksmiley; 216 GtkWebViewSmiley *gtksmiley;
201 217
202 list = gtk_smileys; 218 list = gtk_smileys;
203 219
204 if (list == NULL) 220 if (list == NULL)
205 return; 221 return;
206 222
207 for (; list; list = g_slist_delete_link(list, list)) { 223 for (; list; list = g_slist_delete_link(list, list)) {
208 gtksmiley = (GtkIMHtmlSmiley*)list->data; 224 gtksmiley = (GtkWebViewSmiley*)list->data;
209 gtk_imhtml_smiley_destroy(gtksmiley); 225 gtk_webview_smiley_destroy(gtksmiley);
210 } 226 }
211 227
212 gtk_smileys = NULL; 228 gtk_smileys = NULL;
213 } 229 }
214 230

mercurial