Mercurial > pidgin.yaz
comparison pidgin/gtkmedia.c @ 30678:5ec2d3617538
pidgin: Re-arrange media window. Layout remote and local video side-by-side.
Prevent local video to not scale up when resizing.
Refs #11675
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Wed, 07 Jul 2010 20:04:06 +0000 |
parents | f1437342cc0e |
children | b6c3000eec60 |
comparison
equal
deleted
inserted
replaced
30655:16738cb6bb6b | 30678:5ec2d3617538 |
---|---|
331 | 331 |
332 media->priv->menubar = setup_menubar(media); | 332 media->priv->menubar = setup_menubar(media); |
333 gtk_box_pack_start(GTK_BOX(vbox), media->priv->menubar, | 333 gtk_box_pack_start(GTK_BOX(vbox), media->priv->menubar, |
334 FALSE, TRUE, 0); | 334 FALSE, TRUE, 0); |
335 | 335 |
336 media->priv->display = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); | 336 media->priv->display = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
337 gtk_container_set_border_width(GTK_CONTAINER(media->priv->display), | 337 gtk_container_set_border_width(GTK_CONTAINER(media->priv->display), |
338 PIDGIN_HIG_BOX_SPACE); | 338 PIDGIN_HIG_BOX_SPACE); |
339 gtk_box_pack_start(GTK_BOX(vbox), media->priv->display, | 339 gtk_box_pack_start(GTK_BOX(vbox), media->priv->display, |
340 TRUE, TRUE, PIDGIN_HIG_BOX_SPACE); | 340 TRUE, TRUE, PIDGIN_HIG_BOX_SPACE); |
341 gtk_widget_show(vbox); | 341 gtk_widget_show(vbox); |
627 PURPLE_MEDIA_RECV_AUDIO)) { | 627 PURPLE_MEDIA_RECV_AUDIO)) { |
628 recv_widget = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); | 628 recv_widget = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
629 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), | 629 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), |
630 recv_widget, TRUE, TRUE, 0); | 630 recv_widget, TRUE, TRUE, 0); |
631 gtk_widget_show(recv_widget); | 631 gtk_widget_show(recv_widget); |
632 } else | 632 } else { |
633 recv_widget = gtkmedia->priv->recv_widget; | 633 recv_widget = gtkmedia->priv->recv_widget; |
634 } | |
634 if (gtkmedia->priv->send_widget == NULL | 635 if (gtkmedia->priv->send_widget == NULL |
635 && type & (PURPLE_MEDIA_SEND_VIDEO | | 636 && type & (PURPLE_MEDIA_SEND_VIDEO | |
636 PURPLE_MEDIA_SEND_AUDIO)) { | 637 PURPLE_MEDIA_SEND_AUDIO)) { |
637 send_widget = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); | 638 send_widget = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
638 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), | 639 gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display), |
639 send_widget, TRUE, TRUE, 0); | 640 send_widget, FALSE, TRUE, 0); |
640 button_widget = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); | 641 button_widget = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
641 gtk_box_pack_end(GTK_BOX(send_widget), button_widget, | 642 gtk_box_pack_end(GTK_BOX(recv_widget), button_widget, |
642 FALSE, FALSE, 0); | 643 FALSE, TRUE, 0); |
643 gtk_widget_show(GTK_WIDGET(button_widget)); | |
644 gtk_widget_show(send_widget); | 644 gtk_widget_show(send_widget); |
645 | 645 |
646 /* Hold button */ | 646 /* Hold button */ |
647 gtkmedia->priv->hold = | 647 gtkmedia->priv->hold = |
648 gtk_toggle_button_new_with_mnemonic("_Hold"); | 648 gtk_toggle_button_new_with_mnemonic("_Hold"); |
649 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold, | |
650 FALSE, FALSE, 0); | |
651 gtk_widget_show(gtkmedia->priv->hold); | |
649 g_signal_connect(gtkmedia->priv->hold, "toggled", | 652 g_signal_connect(gtkmedia->priv->hold, "toggled", |
650 G_CALLBACK(pidgin_media_hold_toggled), | 653 G_CALLBACK(pidgin_media_hold_toggled), |
651 gtkmedia); | 654 gtkmedia); |
652 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold, | |
653 FALSE, FALSE, 0); | |
654 gtk_widget_show(gtkmedia->priv->hold); | |
655 } else { | 655 } else { |
656 send_widget = gtkmedia->priv->send_widget; | 656 send_widget = gtkmedia->priv->send_widget; |
657 button_widget = gtkmedia->priv->button_widget; | 657 button_widget = gtkmedia->priv->button_widget; |
658 } | 658 } |
659 | 659 |
661 PidginMediaRealizeData *data; | 661 PidginMediaRealizeData *data; |
662 GtkWidget *aspect; | 662 GtkWidget *aspect; |
663 GtkWidget *remote_video; | 663 GtkWidget *remote_video; |
664 GdkColor color = {0, 0, 0, 0}; | 664 GdkColor color = {0, 0, 0, 0}; |
665 | 665 |
666 aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE); | 666 aspect = gtk_aspect_frame_new(NULL, 0, 0, 4.0/3.0, FALSE); |
667 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN); | 667 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN); |
668 gtk_box_pack_start(GTK_BOX(recv_widget), aspect, TRUE, TRUE, 0); | 668 gtk_box_pack_start(GTK_BOX(recv_widget), aspect, TRUE, TRUE, 0); |
669 | 669 |
670 data = g_new0(PidginMediaRealizeData, 1); | 670 data = g_new0(PidginMediaRealizeData, 1); |
671 data->gtkmedia = gtkmedia; | 671 data->gtkmedia = gtkmedia; |
681 gtk_widget_show(remote_video); | 681 gtk_widget_show(remote_video); |
682 gtk_widget_show(aspect); | 682 gtk_widget_show(aspect); |
683 | 683 |
684 gtkmedia->priv->remote_video = remote_video; | 684 gtkmedia->priv->remote_video = remote_video; |
685 } | 685 } |
686 | |
686 if (type & PURPLE_MEDIA_SEND_VIDEO) { | 687 if (type & PURPLE_MEDIA_SEND_VIDEO) { |
687 PidginMediaRealizeData *data; | 688 PidginMediaRealizeData *data; |
688 GtkWidget *aspect; | 689 GtkWidget *aspect; |
689 GtkWidget *local_video; | 690 GtkWidget *local_video; |
690 GdkColor color = {0, 0, 0, 0}; | 691 GdkColor color = {0, 0, 0, 0}; |
691 | 692 |
692 aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE); | 693 aspect = gtk_aspect_frame_new(NULL, 0, 0, 4.0/3.0, TRUE); |
693 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN); | 694 gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN); |
694 gtk_box_pack_start(GTK_BOX(send_widget), aspect, TRUE, TRUE, 0); | 695 gtk_box_pack_start(GTK_BOX(send_widget), aspect, FALSE, TRUE, 0); |
695 | 696 |
696 data = g_new0(PidginMediaRealizeData, 1); | 697 data = g_new0(PidginMediaRealizeData, 1); |
697 data->gtkmedia = gtkmedia; | 698 data->gtkmedia = gtkmedia; |
698 data->session_id = g_strdup(sid); | 699 data->session_id = g_strdup(sid); |
699 data->participant = NULL; | 700 data->participant = NULL; |
701 local_video = gtk_drawing_area_new(); | 702 local_video = gtk_drawing_area_new(); |
702 gtk_widget_modify_bg(local_video, GTK_STATE_NORMAL, &color); | 703 gtk_widget_modify_bg(local_video, GTK_STATE_NORMAL, &color); |
703 g_signal_connect(G_OBJECT(local_video), "realize", | 704 g_signal_connect(G_OBJECT(local_video), "realize", |
704 G_CALLBACK(realize_cb), data); | 705 G_CALLBACK(realize_cb), data); |
705 gtk_container_add(GTK_CONTAINER(aspect), local_video); | 706 gtk_container_add(GTK_CONTAINER(aspect), local_video); |
706 gtk_widget_set_size_request (GTK_WIDGET(local_video), 160, 120); | 707 gtk_widget_set_size_request (GTK_WIDGET(local_video), 80, 60); |
707 | 708 |
708 gtk_widget_show(local_video); | 709 gtk_widget_show(local_video); |
709 gtk_widget_show(aspect); | 710 gtk_widget_show(aspect); |
710 | 711 |
711 gtkmedia->priv->pause = | 712 gtkmedia->priv->pause = |
712 gtk_toggle_button_new_with_mnemonic(_("_Pause")); | 713 gtk_toggle_button_new_with_mnemonic(_("_Pause")); |
714 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->pause, | |
715 FALSE, FALSE, 0); | |
716 gtk_widget_show(gtkmedia->priv->pause); | |
713 g_signal_connect(gtkmedia->priv->pause, "toggled", | 717 g_signal_connect(gtkmedia->priv->pause, "toggled", |
714 G_CALLBACK(pidgin_media_pause_toggled), | 718 G_CALLBACK(pidgin_media_pause_toggled), |
715 gtkmedia); | 719 gtkmedia); |
716 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->pause, | |
717 FALSE, FALSE, 0); | |
718 gtk_widget_show(gtkmedia->priv->pause); | |
719 | 720 |
720 gtkmedia->priv->local_video = local_video; | 721 gtkmedia->priv->local_video = local_video; |
721 } | 722 } |
722 | |
723 if (type & PURPLE_MEDIA_RECV_AUDIO) { | 723 if (type & PURPLE_MEDIA_RECV_AUDIO) { |
724 gtk_box_pack_end(GTK_BOX(recv_widget), | 724 gtk_box_pack_end(GTK_BOX(recv_widget), |
725 pidgin_media_add_audio_widget(gtkmedia, | 725 pidgin_media_add_audio_widget(gtkmedia, |
726 PURPLE_MEDIA_RECV_AUDIO), FALSE, FALSE, 0); | 726 PURPLE_MEDIA_RECV_AUDIO), FALSE, FALSE, 0); |
727 } | 727 } |
728 | |
728 if (type & PURPLE_MEDIA_SEND_AUDIO) { | 729 if (type & PURPLE_MEDIA_SEND_AUDIO) { |
729 gtkmedia->priv->mute = | 730 gtkmedia->priv->mute = |
730 gtk_toggle_button_new_with_mnemonic("_Mute"); | 731 gtk_toggle_button_new_with_mnemonic("_Mute"); |
732 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->mute, | |
733 FALSE, FALSE, 0); | |
734 gtk_widget_show(gtkmedia->priv->mute); | |
731 g_signal_connect(gtkmedia->priv->mute, "toggled", | 735 g_signal_connect(gtkmedia->priv->mute, "toggled", |
732 G_CALLBACK(pidgin_media_mute_toggled), | 736 G_CALLBACK(pidgin_media_mute_toggled), |
733 gtkmedia); | 737 gtkmedia); |
734 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->mute, | 738 |
735 FALSE, FALSE, 0); | 739 gtk_box_pack_end(GTK_BOX(recv_widget), |
736 gtk_widget_show(gtkmedia->priv->mute); | |
737 | |
738 gtk_box_pack_end(GTK_BOX(send_widget), | |
739 pidgin_media_add_audio_widget(gtkmedia, | 740 pidgin_media_add_audio_widget(gtkmedia, |
740 PURPLE_MEDIA_SEND_AUDIO), FALSE, FALSE, 0); | 741 PURPLE_MEDIA_SEND_AUDIO), FALSE, FALSE, 0); |
741 } | 742 } |
742 | |
743 | 743 |
744 if (type & PURPLE_MEDIA_AUDIO && | 744 if (type & PURPLE_MEDIA_AUDIO && |
745 gtkmedia->priv->level_handler_id == 0) { | 745 gtkmedia->priv->level_handler_id == 0) { |
746 gtkmedia->priv->level_handler_id = g_signal_connect( | 746 gtkmedia->priv->level_handler_id = g_signal_connect( |
747 media, "level", G_CALLBACK(level_message_cb), | 747 media, "level", G_CALLBACK(level_message_cb), |
750 | 750 |
751 if (send_widget != NULL) | 751 if (send_widget != NULL) |
752 gtkmedia->priv->send_widget = send_widget; | 752 gtkmedia->priv->send_widget = send_widget; |
753 if (recv_widget != NULL) | 753 if (recv_widget != NULL) |
754 gtkmedia->priv->recv_widget = recv_widget; | 754 gtkmedia->priv->recv_widget = recv_widget; |
755 if (button_widget != NULL) | 755 if (button_widget != NULL) { |
756 gtkmedia->priv->button_widget = button_widget; | 756 gtkmedia->priv->button_widget = button_widget; |
757 gtk_widget_show(GTK_WIDGET(button_widget)); | |
758 } | |
757 | 759 |
758 if (purple_media_is_initiator(media, sid, NULL) == FALSE) { | 760 if (purple_media_is_initiator(media, sid, NULL) == FALSE) { |
759 if (gtkmedia->priv->timeout_id != 0) | 761 if (gtkmedia->priv->timeout_id != 0) |
760 g_source_remove(gtkmedia->priv->timeout_id); | 762 g_source_remove(gtkmedia->priv->timeout_id); |
761 gtkmedia->priv->request_type |= type; | 763 gtkmedia->priv->request_type |= type; |