pidgin/gtkutils.c

changeset 32518
f3ed9129c573
parent 32287
c8cf9b704a49
child 32519
fc9dd981bb40
equal deleted inserted replaced
32517:cab76b54eb8b 32518:f3ed9129c573
65 #include "gtkimhtml.h" 65 #include "gtkimhtml.h"
66 #include "gtkimhtmltoolbar.h" 66 #include "gtkimhtmltoolbar.h"
67 #include "pidginstock.h" 67 #include "pidginstock.h"
68 #include "gtkthemes.h" 68 #include "gtkthemes.h"
69 #include "gtkutils.h" 69 #include "gtkutils.h"
70 #include "gtkwebview.h"
70 #include "pidgin/minidialog.h" 71 #include "pidgin/minidialog.h"
71 72
72 typedef struct { 73 typedef struct {
73 GtkWidget *menu; 74 GtkWidget *menu;
74 gint default_item; 75 gint default_item;
264 sw = pidgin_make_scrollable(imhtml, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, -1); 265 sw = pidgin_make_scrollable(imhtml, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, -1);
265 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); 266 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
266 267
267 if (imhtml_ret != NULL) 268 if (imhtml_ret != NULL)
268 *imhtml_ret = imhtml; 269 *imhtml_ret = imhtml;
270
271 if (editable && (toolbar_ret != NULL))
272 *toolbar_ret = toolbar;
273
274 if (sw_ret != NULL)
275 *sw_ret = sw;
276
277 return frame;
278 }
279
280 GtkWidget *
281 pidgin_create_webview(gboolean editable, GtkWidget **webview_ret, GtkWidget **toolbar_ret, GtkWidget **sw_ret)
282 {
283 GtkWidget *frame;
284 GtkWidget *webview;
285 GtkWidget *sep;
286 GtkWidget *sw;
287 GtkWidget *toolbar = NULL;
288 GtkWidget *vbox;
289
290 frame = gtk_frame_new(NULL);
291 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
292
293 vbox = gtk_vbox_new(FALSE, 0);
294 gtk_container_add(GTK_CONTAINER(frame), vbox);
295 gtk_widget_show(vbox);
296
297 if (editable) {
298 toolbar = gtk_imhtmltoolbar_new();
299 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
300 gtk_widget_show(toolbar);
301
302 sep = gtk_hseparator_new();
303 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
304 g_signal_connect_swapped(G_OBJECT(toolbar), "show", G_CALLBACK(gtk_widget_show), sep);
305 g_signal_connect_swapped(G_OBJECT(toolbar), "hide", G_CALLBACK(gtk_widget_hide), sep);
306 gtk_widget_show(sep);
307 }
308
309 webview = gtk_webview_new();
310 #if 0
311 /* FIXME: Don't have editable webview yet. */
312 gtk_webview_set_editable(GTK_WEBVIEW(webview), editable);
313 #endif
314 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(webview), GTK_WRAP_WORD_CHAR);
315 #ifdef USE_GTKSPELL
316 if (editable && purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
317 pidgin_setup_gtkspell(GTK_TEXT_VIEW(webview));
318 #endif
319 gtk_widget_show(webview);
320
321 if (editable) {
322 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), webview);
323 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default");
324 }
325
326 sw = pidgin_make_scrollable(webview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, -1);
327 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
328
329 gtk_webview_set_vadjustment(GTK_WEBVIEW(webview),
330 gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(sw)));
331
332 if (webview_ret != NULL)
333 *webview_ret = webview;
269 334
270 if (editable && (toolbar_ret != NULL)) 335 if (editable && (toolbar_ret != NULL))
271 *toolbar_ret = toolbar; 336 *toolbar_ret = toolbar;
272 337
273 if (sw_ret != NULL) 338 if (sw_ret != NULL)

mercurial