comparison pidgin/gtkimhtmltoolbar.c @ 25637:92e71f6e10d4

Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp. It's now possible to initiate an audio session, sometimes. It's somewhat buggy. Some other issues also need to be resolved: * Properly get rid of the compile warnings * Rename the serv_ functions with proper namespacing. * Possibly rename the purple_media_ functions that don't deal with a PurpleMedia (e.g. purple_media_audio_init_src) to something different, e.g. purple_media_util_, or even purple_gst_util etc.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 22 Mar 2008 04:45:46 +0000
parents 35d5b7804449
children cbe97caec684 ff29208e03ef
comparison
equal deleted inserted replaced
25636:e4a4bc86c547 25637:92e71f6e10d4
37 #include "gtkdialogs.h" 37 #include "gtkdialogs.h"
38 #include "gtkimhtmltoolbar.h" 38 #include "gtkimhtmltoolbar.h"
39 #include "gtkthemes.h" 39 #include "gtkthemes.h"
40 #include "gtkutils.h" 40 #include "gtkutils.h"
41 41
42 #include "debug.h"
43
42 #include <gdk/gdkkeysyms.h> 44 #include <gdk/gdkkeysyms.h>
43 45
44 static GtkHBoxClass *parent_class = NULL; 46 static GtkHBoxClass *parent_class = NULL;
45 47
46 static void toggle_button_set_active_block(GtkToggleButton *button, 48 static void toggle_button_set_active_block(GtkToggleButton *button,
446 gtk_widget_grab_focus(toolbar->imhtml); 448 gtk_widget_grab_focus(toolbar->imhtml);
447 } 449 }
448 450
449 static void insert_hr_cb(GtkWidget *widget, GtkIMHtmlToolbar *toolbar) 451 static void insert_hr_cb(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
450 { 452 {
451 GtkTextIter iter; 453 GtkTextIter iter;
452 GtkTextMark *ins; 454 GtkTextMark *ins;
453 GtkIMHtmlScalable *hr; 455 GtkIMHtmlScalable *hr;
454 456
455 ins = gtk_text_buffer_get_insert(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml))); 457 ins = gtk_text_buffer_get_insert(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)));
456 gtk_text_buffer_get_iter_at_mark(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)), &iter, ins); 458 gtk_text_buffer_get_iter_at_mark(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)), &iter, ins);
457 hr = gtk_imhtml_hr_new(); 459 hr = gtk_imhtml_hr_new();
458 gtk_imhtml_hr_add_to(hr, GTK_IMHTML(toolbar->imhtml), &iter); 460 gtk_imhtml_hr_add_to(hr, GTK_IMHTML(toolbar->imhtml), &iter);
459 } 461 }
460 462
461 static void 463 static void
786 toolbar->smiley_dialog = dialog; 788 toolbar->smiley_dialog = dialog;
787 789
788 gtk_widget_grab_focus(toolbar->imhtml); 790 gtk_widget_grab_focus(toolbar->imhtml);
789 } 791 }
790 792
793 #ifdef USE_FARSIGHT
794 static void
795 init_voice_call_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar)
796 {
797 purple_debug_info("gtkimhtmltoolbar", "Call clicked!\n");
798 }
799 #endif
800
791 static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) 801 static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar)
792 { 802 {
793 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bold), buttons & GTK_IMHTML_BOLD); 803 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bold), buttons & GTK_IMHTML_BOLD);
794 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->italic), buttons & GTK_IMHTML_ITALIC); 804 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->italic), buttons & GTK_IMHTML_ITALIC);
795 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->underline), buttons & GTK_IMHTML_UNDERLINE); 805 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->underline), buttons & GTK_IMHTML_UNDERLINE);
814 buttons & GTK_IMHTML_BACKCOLOR)); 824 buttons & GTK_IMHTML_BACKCOLOR));
815 825
816 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->image), buttons & GTK_IMHTML_IMAGE); 826 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->image), buttons & GTK_IMHTML_IMAGE);
817 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->link), buttons & GTK_IMHTML_LINK); 827 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->link), buttons & GTK_IMHTML_LINK);
818 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smiley), buttons & GTK_IMHTML_SMILEY); 828 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smiley), buttons & GTK_IMHTML_SMILEY);
829 #ifdef USE_FARSIGHT
830 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->call), buttons & GTK_IMHTML_CALL);
831 #endif
819 } 832 }
820 833
821 /* we call this when we want to _set_active the toggle button, it'll 834 /* we call this when we want to _set_active the toggle button, it'll
822 * block the callback thats connected to the button so we don't have to 835 * block the callback thats connected to the button so we don't have to
823 * do the double toggling hack 836 * do the double toggling hack
1102 {PIDGIN_STOCK_CLEAR, clear_formatting_cb, &toolbar->clear, _("Reset Formatting")}, 1115 {PIDGIN_STOCK_CLEAR, clear_formatting_cb, &toolbar->clear, _("Reset Formatting")},
1103 {"", NULL, NULL, NULL}, 1116 {"", NULL, NULL, NULL},
1104 {PIDGIN_STOCK_TOOLBAR_INSERT_LINK, insert_link_cb, &toolbar->link, _("Insert Link")}, 1117 {PIDGIN_STOCK_TOOLBAR_INSERT_LINK, insert_link_cb, &toolbar->link, _("Insert Link")},
1105 {PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, insert_image_cb, &toolbar->image, _("Insert IM Image")}, 1118 {PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, insert_image_cb, &toolbar->image, _("Insert IM Image")},
1106 {PIDGIN_STOCK_TOOLBAR_SMILEY, insert_smiley_cb, &toolbar->smiley, _("Insert Smiley")}, 1119 {PIDGIN_STOCK_TOOLBAR_SMILEY, insert_smiley_cb, &toolbar->smiley, _("Insert Smiley")},
1120 #ifdef USE_FARSIGHT
1121 {"", NULL, NULL, NULL},
1122 {PIDGIN_STOCK_TOOLBAR_CALL, init_voice_call_cb, &toolbar->call, _("Call")},
1123 #endif
1107 {NULL, NULL, NULL, NULL} 1124 {NULL, NULL, NULL, NULL}
1108 }; 1125 };
1109 int iter; 1126 int iter;
1110 1127
1111 hbox = gtk_hbox_new(FALSE, 0); 1128 hbox = gtk_hbox_new(FALSE, 0);
1167 GtkWidget *image; 1184 GtkWidget *image;
1168 GtkWidget *label; 1185 GtkWidget *label;
1169 GtkWidget *insert_button; 1186 GtkWidget *insert_button;
1170 GtkWidget *font_button; 1187 GtkWidget *font_button;
1171 GtkWidget *smiley_button; 1188 GtkWidget *smiley_button;
1189
1190 #ifdef USE_FARSIGHT
1191 GtkWidget *call_button;
1192 #endif /* USE_FARSIGHT */
1193
1172 GtkWidget *font_menu; 1194 GtkWidget *font_menu;
1173 GtkWidget *insert_menu; 1195 GtkWidget *insert_menu;
1174 GtkWidget *menuitem; 1196 GtkWidget *menuitem;
1175 GtkWidget *sep; 1197 GtkWidget *sep;
1176 int i; 1198 int i;
1308 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); 1330 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
1309 gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0); 1331 gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0);
1310 g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->smiley); 1332 g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->smiley);
1311 gtk_widget_show_all(smiley_button); 1333 gtk_widget_show_all(smiley_button);
1312 1334
1335 #ifdef USE_FARSIGHT
1336 /* Sep */
1337 sep = gtk_vseparator_new();
1338 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0);
1339 gtk_widget_show_all(sep);
1340
1341 /* Call */
1342 call_button = gtk_button_new();
1343 gtk_button_set_relief(GTK_BUTTON(call_button), GTK_RELIEF_NONE);
1344 bbox = gtk_hbox_new(FALSE, 3);
1345 gtk_container_add(GTK_CONTAINER(call_button), bbox);
1346 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_CALL,
1347 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
1348 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
1349 label = gtk_label_new_with_mnemonic(_("Call"));
1350 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
1351 gtk_box_pack_start(GTK_BOX(box), call_button, FALSE, FALSE, 0);
1352 g_signal_connect_swapped(G_OBJECT(call_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->call);
1353 gtk_widget_show_all(call_button);
1354
1355 #endif /* USE_FARSIGHT */
1356
1313 gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, FALSE, 0); 1357 gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, FALSE, 0);
1314 g_object_set_data(G_OBJECT(hbox), "lean-view", box); 1358 g_object_set_data(G_OBJECT(hbox), "lean-view", box);
1315 gtk_widget_show(box); 1359 gtk_widget_show(box);
1316 1360
1317 purple_prefs_connect_callback(toolbar, PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", 1361 purple_prefs_connect_callback(toolbar, PIDGIN_PREFS_ROOT "/conversations/toolbar/wide",