Mercurial > pidgin
comparison finch/gntsound.c @ 19159:67fc276e5332
Redid the look to the Sound Prefs
author | Eric Polino <aluink@pidgin.im> |
---|---|
date | Thu, 12 Jul 2007 21:49:27 +0000 |
parents | 1d4ff2ba5a0b |
children | fbecc35c23bb |
comparison
equal
deleted
inserted
replaced
19158:1d4ff2ba5a0b | 19159:67fc276e5332 |
---|---|
71 GntWidget *events; | 71 GntWidget *events; |
72 GntWidget *window; | 72 GntWidget *window; |
73 GntWidget *selector; | 73 GntWidget *selector; |
74 | 74 |
75 GntWidget *profiles; | 75 GntWidget *profiles; |
76 GntWidget *new_profile; | |
76 gchar * original_profile; | 77 gchar * original_profile; |
77 } SoundPrefDialog; | 78 } SoundPrefDialog; |
78 | 79 |
79 #define DEFAULT_PROFILE "default" | 80 #define DEFAULT_PROFILE "default" |
80 | 81 |
734 | 735 |
735 static void | 736 static void |
736 load_pref_window(const char * profile) | 737 load_pref_window(const char * profile) |
737 { | 738 { |
738 gint i; | 739 gint i; |
739 GList *itr, *list; | |
740 | 740 |
741 finch_sound_set_active_profile(profile); | 741 finch_sound_set_active_profile(profile); |
742 | 742 |
743 gnt_combo_box_set_selected(GNT_COMBO_BOX(pref_dialog->method),(gchar *)purple_prefs_get_string(make_pref("/method"))); | 743 gnt_combo_box_set_selected(GNT_COMBO_BOX(pref_dialog->method),(gchar *)purple_prefs_get_string(make_pref("/method"))); |
744 | 744 |
776 } | 776 } |
777 | 777 |
778 /* Can someone double check to make sure there isn't a leak in the way I'm keeping | 778 /* Can someone double check to make sure there isn't a leak in the way I'm keeping |
779 * track of thest profile suggests in the entry. Thanks! | 779 * track of thest profile suggests in the entry. Thanks! |
780 */ | 780 */ |
781 list = itr = finch_sound_get_profiles(); | |
782 for(;itr;itr = itr->next){ | |
783 gnt_entry_add_suggest(GNT_ENTRY(pref_dialog->profiles),itr->data); | |
784 } | |
785 g_list_foreach(list,(GFunc)g_free,NULL); | |
786 g_list_free(list); | |
787 | |
788 gnt_entry_set_text(GNT_ENTRY(pref_dialog->profiles),finch_sound_get_active_profile()); | |
789 | |
790 gnt_widget_draw(pref_dialog->window); | 781 gnt_widget_draw(pref_dialog->window); |
791 } | 782 } |
792 | 783 |
793 static void | 784 static void |
794 reload_pref_window(const char *profile) | 785 reload_pref_window(const char *profile) |
807 gchar * pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s",profile); | 798 gchar * pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s",profile); |
808 | 799 |
809 if(!strcmp(profile,DEFAULT_PROFILE)) | 800 if(!strcmp(profile,DEFAULT_PROFILE)) |
810 return; | 801 return; |
811 | 802 |
812 gnt_entry_remove_suggest(GNT_ENTRY(pref_dialog->profiles),profile); | |
813 | |
814 purple_prefs_remove(pref); | 803 purple_prefs_remove(pref); |
815 g_free(pref); | 804 g_free(pref); |
816 | 805 |
817 g_free(pref_dialog->original_profile); | 806 g_free(pref_dialog->original_profile); |
818 pref_dialog->original_profile = g_strdup(DEFAULT_PROFILE); | 807 pref_dialog->original_profile = g_strdup(DEFAULT_PROFILE); |
819 | 808 |
820 reload_pref_window(DEFAULT_PROFILE); | 809 reload_pref_window(DEFAULT_PROFILE); |
821 } | 810 } |
822 | 811 |
823 static void | 812 static void |
824 prof_text_load(GntEntry *entry, gpointer null) | 813 prof_add_cb(GntEntry *entry, gpointer null) |
825 { | 814 { |
826 const char * profile = gnt_entry_get_text(entry); | 815 const char * profile = gnt_entry_get_text(entry); |
827 | 816 |
828 reload_pref_window(profile); | 817 reload_pref_window(profile); |
829 | 818 |
830 } | 819 } |
831 | 820 |
832 static void | 821 static void |
833 prof_text_completion(GntEntry *entry, gpointer start, gpointer end, gpointer null) | |
834 { | |
835 prof_text_load(entry,null); | |
836 } | |
837 | |
838 static void | |
839 cancel_cb(GntButton *button, gpointer win) | 822 cancel_cb(GntButton *button, gpointer win) |
840 { | 823 { |
841 finch_sound_set_active_profile(pref_dialog->original_profile); | 824 finch_sound_set_active_profile(pref_dialog->original_profile); |
842 gnt_widget_destroy(GNT_WIDGET(win)); | 825 gnt_widget_destroy(GNT_WIDGET(win)); |
843 } | 826 } |
844 | 827 |
845 void | 828 void |
846 finch_sounds_show_all(void) | 829 finch_sounds_show_all(void) |
847 { | 830 { |
848 GntWidget *box, *cmbox, *slider; | 831 GntWidget *box, *tmpbox, *splitbox, *cmbox, *slider; |
849 GntWidget *entry; | 832 GntWidget *entry; |
850 GntWidget *chkbox; | 833 GntWidget *chkbox; |
851 GntWidget *button; | 834 GntWidget *button; |
852 GntWidget *label; | 835 GntWidget *label; |
853 GntWidget *tree; | 836 GntWidget *tree; |
868 gnt_box_set_pad(GNT_BOX(win),0); | 851 gnt_box_set_pad(GNT_BOX(win),0); |
869 gnt_box_set_toplevel(GNT_BOX(win), TRUE); | 852 gnt_box_set_toplevel(GNT_BOX(win), TRUE); |
870 gnt_box_set_title(GNT_BOX(win), _("Sound Preferences")); | 853 gnt_box_set_title(GNT_BOX(win), _("Sound Preferences")); |
871 gnt_box_set_fill(GNT_BOX(win), TRUE); | 854 gnt_box_set_fill(GNT_BOX(win), TRUE); |
872 gnt_box_set_alignment(GNT_BOX(win),GNT_ALIGN_LEFT); | 855 gnt_box_set_alignment(GNT_BOX(win),GNT_ALIGN_LEFT); |
856 | |
857 /* Profiles */ | |
858 splitbox = gnt_hbox_new(FALSE); | |
859 | |
860 box = gnt_vbox_new(FALSE); | |
861 gnt_box_add_widget(GNT_BOX(box),gnt_label_new_with_format(_("Profiles"),GNT_TEXT_FLAG_BOLD)); | |
862 pref_dialog->profiles = tree = gnt_tree_new(); | |
863 gnt_box_add_widget(GNT_BOX(box),tree); | |
864 | |
865 pref_dialog->new_profile = entry = gnt_entry_new(""); | |
866 gnt_box_add_widget(GNT_BOX(box),entry); | |
867 | |
868 tmpbox = gnt_hbox_new(FALSE); | |
869 button = gnt_button_new("Add"); | |
870 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(prof_add_cb),NULL); | |
871 gnt_box_add_widget(GNT_BOX(tmpbox),button); | |
872 button = gnt_button_new("Delete"); | |
873 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(prof_del_cb),NULL); | |
874 gnt_box_add_widget(GNT_BOX(tmpbox),button); | |
875 gnt_box_add_widget(GNT_BOX(box),tmpbox); | |
876 gnt_box_add_widget(GNT_BOX(splitbox),box); | |
877 | |
878 gnt_box_add_widget(GNT_BOX(splitbox),gnt_vline_new()); | |
879 | |
880 /* Sound method */ | |
881 | |
882 box = gnt_vbox_new(FALSE); | |
873 | 883 |
874 pref_dialog->method = cmbox = gnt_combo_box_new(); | 884 pref_dialog->method = cmbox = gnt_combo_box_new(); |
875 gnt_tree_set_hash_fns(GNT_TREE(GNT_COMBO_BOX(cmbox)->dropdown), g_str_hash, g_str_equal, NULL); | 885 gnt_tree_set_hash_fns(GNT_TREE(GNT_COMBO_BOX(cmbox)->dropdown), g_str_hash, g_str_equal, NULL); |
876 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"automatic",_("Automatic")); | 886 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"automatic",_("Automatic")); |
877 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"alsa","ALSA"); | 887 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"alsa","ALSA"); |
878 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD"); | 888 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD"); |
879 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep")); | 889 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep")); |
880 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command")); | 890 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command")); |
881 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound")); | 891 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound")); |
882 | 892 |
883 /* Sound method */ | |
884 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD); | 893 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD); |
885 gnt_box_add_widget(GNT_BOX(win),label); | 894 gnt_box_add_widget(GNT_BOX(box),label); |
886 box = gnt_hbox_new(TRUE); | 895 tmpbox = gnt_hbox_new(TRUE); |
887 gnt_box_set_fill(GNT_BOX(box),FALSE); | 896 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE); |
888 gnt_box_set_pad(GNT_BOX(box),0); | 897 gnt_box_set_pad(GNT_BOX(tmpbox),0); |
889 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Method: "))); | 898 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new(_("Method: "))); |
890 gnt_box_add_widget(GNT_BOX(box),cmbox); | 899 gnt_box_add_widget(GNT_BOX(tmpbox),cmbox); |
891 gnt_box_add_widget(GNT_BOX(win),box); | 900 gnt_box_add_widget(GNT_BOX(box),tmpbox); |
892 | 901 |
893 box = gnt_hbox_new(TRUE); | 902 tmpbox = gnt_hbox_new(TRUE); |
894 gnt_box_set_pad(GNT_BOX(box),0); | 903 gnt_box_set_pad(GNT_BOX(tmpbox),0); |
895 gnt_box_set_fill(GNT_BOX(box),FALSE); | 904 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE); |
896 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Sound Command\n(%s for filename)"))); | 905 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new(_("Sound Command\n(%s for filename)"))); |
897 pref_dialog->command = entry = gnt_entry_new(""); | 906 pref_dialog->command = entry = gnt_entry_new(""); |
898 gnt_box_add_widget(GNT_BOX(box),entry); | 907 gnt_box_add_widget(GNT_BOX(tmpbox),entry); |
899 gnt_box_add_widget(GNT_BOX(win),box); | 908 gnt_box_add_widget(GNT_BOX(box),tmpbox); |
900 | 909 |
901 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); | 910 gnt_box_add_widget(GNT_BOX(box), gnt_line_new(FALSE)); |
902 | 911 |
903 /* Sound options */ | 912 /* Sound options */ |
904 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD)); | 913 gnt_box_add_widget(GNT_BOX(box),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD)); |
905 pref_dialog->conv_focus = chkbox = gnt_check_box_new(_("Sounds when conversation has focus")); | 914 pref_dialog->conv_focus = chkbox = gnt_check_box_new(_("Sounds when conversation has focus")); |
906 gnt_box_add_widget(GNT_BOX(win),chkbox); | 915 gnt_box_add_widget(GNT_BOX(box),chkbox); |
907 | 916 |
908 box = gnt_hbox_new(TRUE); | 917 tmpbox = gnt_hbox_new(TRUE); |
909 gnt_box_set_pad(GNT_BOX(box),0); | 918 gnt_box_set_pad(GNT_BOX(tmpbox),0); |
910 gnt_box_set_fill(GNT_BOX(box),FALSE); | 919 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE); |
911 gnt_box_add_widget(GNT_BOX(box),gnt_label_new("Enable Sounds:")); | 920 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new("Enable Sounds:")); |
912 pref_dialog->while_status = cmbox = gnt_combo_box_new(); | 921 pref_dialog->while_status = cmbox = gnt_combo_box_new(); |
913 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(3),_("Always")); | 922 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(3),_("Always")); |
914 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(1),_("Only when available")); | 923 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(1),_("Only when available")); |
915 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(2),_("Only when not available")); | 924 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(2),_("Only when not available")); |
916 gnt_box_add_widget(GNT_BOX(box),cmbox); | 925 gnt_box_add_widget(GNT_BOX(tmpbox),cmbox); |
917 gnt_box_add_widget(GNT_BOX(win),box); | 926 gnt_box_add_widget(GNT_BOX(box),tmpbox); |
918 | 927 |
919 box = gnt_hbox_new(TRUE); | 928 tmpbox = gnt_hbox_new(TRUE); |
920 gnt_box_set_pad(GNT_BOX(box),0); | 929 gnt_box_set_pad(GNT_BOX(tmpbox),0); |
921 gnt_box_set_fill(GNT_BOX(box),FALSE); | 930 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE); |
922 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Volume(0-100):"))); | 931 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new(_("Volume(0-100):"))); |
923 | 932 |
924 pref_dialog->volume = slider = gnt_slider_new(FALSE,100,0); | 933 pref_dialog->volume = slider = gnt_slider_new(FALSE,100,0); |
925 gnt_slider_set_step(GNT_SLIDER(slider),5); | 934 gnt_slider_set_step(GNT_SLIDER(slider),5); |
926 label = gnt_label_new(""); | 935 label = gnt_label_new(""); |
927 gnt_slider_reflect_label(GNT_SLIDER(slider),GNT_LABEL(label)); | 936 gnt_slider_reflect_label(GNT_SLIDER(slider),GNT_LABEL(label)); |
928 gnt_box_set_pad(GNT_BOX(box),1); | 937 gnt_box_set_pad(GNT_BOX(tmpbox),1); |
929 gnt_box_add_widget(GNT_BOX(box),slider); | 938 gnt_box_add_widget(GNT_BOX(tmpbox),slider); |
930 gnt_box_add_widget(GNT_BOX(box),label); | 939 gnt_box_add_widget(GNT_BOX(tmpbox),label); |
931 gnt_box_add_widget(GNT_BOX(win),box); | 940 gnt_box_add_widget(GNT_BOX(box),tmpbox); |
941 gnt_box_add_widget(GNT_BOX(splitbox),box); | |
942 | |
943 gnt_box_add_widget(GNT_BOX(win),splitbox); | |
932 | 944 |
933 gnt_box_add_widget(GNT_BOX(win), gnt_hline_new()); | 945 gnt_box_add_widget(GNT_BOX(win), gnt_hline_new()); |
934 | 946 |
935 /* Sound events */ | 947 /* Sound events */ |
936 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD)); | 948 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD)); |
965 gnt_box_add_widget(GNT_BOX(box),button); | 977 gnt_box_add_widget(GNT_BOX(box),button); |
966 gnt_box_add_widget(GNT_BOX(win),box); | 978 gnt_box_add_widget(GNT_BOX(win),box); |
967 | 979 |
968 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); | 980 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); |
969 | 981 |
970 /* Sound profiles */ | |
971 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Profiles"),GNT_TEXT_FLAG_BOLD)); | |
972 box = gnt_hbox_new(FALSE); | |
973 pref_dialog->profiles = entry = gnt_entry_new(""); | |
974 gnt_entry_set_word_suggest(GNT_ENTRY(pref_dialog->profiles),TRUE); | |
975 gnt_box_add_widget(GNT_BOX(box),entry); | |
976 | |
977 g_signal_connect(G_OBJECT(entry),"activate",G_CALLBACK(prof_text_load),NULL); | |
978 g_signal_connect(G_OBJECT(entry),"completion",G_CALLBACK(prof_text_completion),NULL); | |
979 g_signal_connect(G_OBJECT(entry),"lost-focus",G_CALLBACK(prof_text_load),NULL); | |
980 | |
981 button = gnt_button_new("Delete"); | |
982 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(prof_del_cb),NULL); | |
983 gnt_box_add_widget(GNT_BOX(box),button); | |
984 gnt_box_add_widget(GNT_BOX(win),box); | |
985 | |
986 /* Add new stuff before this */ | 982 /* Add new stuff before this */ |
987 box = gnt_hbox_new(FALSE); | 983 box = gnt_hbox_new(FALSE); |
988 gnt_box_set_pad(GNT_BOX(box),0); | 984 gnt_box_set_pad(GNT_BOX(box),0); |
989 gnt_box_set_fill(GNT_BOX(box),TRUE); | 985 gnt_box_set_fill(GNT_BOX(box),TRUE); |
990 button = gnt_button_new(_("Save")); | 986 button = gnt_button_new(_("Save")); |