| 58 #include "gtkconvwin.h" |
59 #include "gtkconvwin.h" |
| 59 #include "gtkdialogs.h" |
60 #include "gtkdialogs.h" |
| 60 #include "gtkimhtml.h" |
61 #include "gtkimhtml.h" |
| 61 #include "gtkimhtmltoolbar.h" |
62 #include "gtkimhtmltoolbar.h" |
| 62 #include "gtklog.h" |
63 #include "gtklog.h" |
| |
64 #include "gtkmedia.h" |
| 63 #include "gtkmenutray.h" |
65 #include "gtkmenutray.h" |
| 64 #include "gtkpounce.h" |
66 #include "gtkpounce.h" |
| 65 #include "gtkprefs.h" |
67 #include "gtkprefs.h" |
| 66 #include "gtkprivacy.h" |
68 #include "gtkprivacy.h" |
| 67 #include "gtkthemes.h" |
69 #include "gtkthemes.h" |
| 4596 PurpleConversation *conv = gtkconv->active_conv; |
4598 PurpleConversation *conv = gtkconv->active_conv; |
| 4597 gboolean chat = (conv->type == PURPLE_CONV_TYPE_CHAT); |
4599 gboolean chat = (conv->type == PURPLE_CONV_TYPE_CHAT); |
| 4598 GtkPolicyType imhtml_sw_hscroll; |
4600 GtkPolicyType imhtml_sw_hscroll; |
| 4599 |
4601 |
| 4600 /* Setup the top part of the pane */ |
4602 /* Setup the top part of the pane */ |
| 4601 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
4603 gtkconv->topvbox = vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
| |
4604 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
| 4602 gtk_widget_show(vbox); |
4605 gtk_widget_show(vbox); |
| 4603 |
4606 |
| 4604 /* Setup the info pane */ |
4607 /* Setup the info pane */ |
| 4605 event_box = gtk_event_box_new(); |
4608 event_box = gtk_event_box_new(); |
| 4606 #if GTK_CHECK_VERSION(2,4,0) |
4609 #if GTK_CHECK_VERSION(2,4,0) |
| 7547 } |
7550 } |
| 7548 |
7551 |
| 7549 return TRUE; |
7552 return TRUE; |
| 7550 } |
7553 } |
| 7551 |
7554 |
| |
7555 static void |
| |
7556 pidgin_gtkmedia_message_cb(PidginMedia *media, const char *msg, PurpleConversation *conv) |
| |
7557 { |
| |
7558 purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, msg, PURPLE_MESSAGE_SYSTEM, time(NULL)); |
| |
7559 } |
| |
7560 |
| |
7561 static void |
| |
7562 pidgin_conv_new_media_cb(PurpleMediaManager *manager, PurpleMedia *media, gpointer nul) |
| |
7563 { |
| |
7564 GstElement *sendbin, *src, *sendlevel; |
| |
7565 GstElement *recvbin, *sink, *recvlevel; |
| |
7566 GstPad *pad, *ghost; |
| |
7567 |
| |
7568 GtkWidget *gtkmedia; |
| |
7569 PurpleConversation *conv; |
| |
7570 PidginConversation *gtkconv; |
| |
7571 |
| |
7572 sendbin = gst_bin_new("sendbin"); |
| |
7573 src = gst_element_factory_make("alsasrc", "asrc"); |
| |
7574 sendlevel = gst_element_factory_make("level", "sendlevel"); |
| |
7575 gst_bin_add_many(GST_BIN(sendbin), src, sendlevel, NULL); |
| |
7576 gst_element_link(src, sendlevel); //, gst_caps_new_simple("audio/x-raw-int", "rate", G_TYPE_INT, 8000, NULL)); |
| |
7577 pad = gst_element_get_pad(sendlevel, "src"); |
| |
7578 ghost = gst_ghost_pad_new("ghostsrc", pad); |
| |
7579 gst_element_add_pad(sendbin, ghost); |
| |
7580 g_object_set(G_OBJECT(sendlevel), "message", TRUE, NULL); |
| |
7581 |
| |
7582 recvbin = gst_bin_new("pidginrecvbin"); |
| |
7583 sink = gst_element_factory_make("alsasink", "asink"); |
| |
7584 g_object_set(G_OBJECT(sink), "sync", FALSE, NULL); |
| |
7585 recvlevel = gst_element_factory_make("level", "recvlevel"); |
| |
7586 gst_bin_add_many(GST_BIN(recvbin), sink, recvlevel, NULL); |
| |
7587 gst_element_link(recvlevel, sink); |
| |
7588 pad = gst_element_get_pad(recvlevel, "sink"); |
| |
7589 ghost = gst_ghost_pad_new("ghostsink", pad); |
| |
7590 gst_element_add_pad(recvbin, ghost); |
| |
7591 g_object_set(G_OBJECT(recvlevel), "message", TRUE, NULL); |
| |
7592 |
| |
7593 purple_media_set_audio_src(media, sendbin); |
| |
7594 purple_media_set_audio_sink(media, recvbin); |
| |
7595 |
| |
7596 gtkmedia = pidgin_media_new(media, sendlevel, recvlevel); |
| |
7597 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, |
| |
7598 purple_connection_get_account(purple_media_get_connection(media)), |
| |
7599 purple_media_get_screenname(media)); |
| |
7600 gtkconv = PIDGIN_CONVERSATION(conv); |
| |
7601 gtk_box_pack_start(GTK_BOX(gtkconv->topvbox), gtkmedia, FALSE, FALSE, 0); |
| |
7602 gtk_widget_show(gtkmedia); |
| |
7603 g_signal_connect_swapped(G_OBJECT(media), "got-hangup", G_CALLBACK(gtk_widget_destroy), gtkmedia); |
| |
7604 g_signal_connect(G_OBJECT(gtkmedia), "message", G_CALLBACK(pidgin_gtkmedia_message_cb), conv); |
| |
7605 } |
| |
7606 |
| 7552 void * |
7607 void * |
| 7553 pidgin_conversations_get_handle(void) |
7608 pidgin_conversations_get_handle(void) |
| 7554 { |
7609 { |
| 7555 static int handle; |
7610 static int handle; |
| 7556 |
7611 |
| 7643 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/show_protocol_icons", |
7698 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/show_protocol_icons", |
| 7644 show_protocol_icons_pref_cb, NULL); |
7699 show_protocol_icons_pref_cb, NULL); |
| 7645 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/hide_new", |
7700 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/hide_new", |
| 7646 hide_new_pref_cb, NULL); |
7701 hide_new_pref_cb, NULL); |
| 7647 |
7702 |
| |
7703 g_signal_connect(G_OBJECT(purple_media_manager_get()), "init-media", |
| |
7704 G_CALLBACK(pidgin_conv_new_media_cb), NULL); |
| 7648 |
7705 |
| 7649 |
7706 |
| 7650 /********************************************************************** |
7707 /********************************************************************** |
| 7651 * Register signals |
7708 * Register signals |
| 7652 **********************************************************************/ |
7709 **********************************************************************/ |