Mercurial > audlegacy-plugins
comparison src/skins/ui_equalizer.c @ 2786:b7d8e6fd4644
make use of exported equalzier preset functions
author | Tomasz Mon <desowin@gmail.com> |
---|---|
date | Tue, 08 Jul 2008 15:37:33 +0200 |
parents | 51fc44b99b58 |
children | 04c38b7a6079 |
comparison
equal
deleted
inserted
replaced
2785:e67587763984 | 2786:b7d8e6fd4644 |
---|---|
44 #include "actions-equalizer.h" | 44 #include "actions-equalizer.h" |
45 #include "util.h" | 45 #include "util.h" |
46 #include "ui_main.h" | 46 #include "ui_main.h" |
47 #include "ui_playlist.h" | 47 #include "ui_playlist.h" |
48 #include <audacious/plugin.h> | 48 #include <audacious/plugin.h> |
49 #include <audacious/equalizer_preset.h> | |
49 | 50 |
50 #include "images/audacious_eq.xpm" | 51 #include "images/audacious_eq.xpm" |
51 | 52 |
52 #include "ui_dock.h" | 53 #include "ui_dock.h" |
53 #include "ui_skinned_window.h" | 54 #include "ui_skinned_window.h" |
59 | 60 |
60 enum PresetViewCols { | 61 enum PresetViewCols { |
61 PRESET_VIEW_COL_NAME, | 62 PRESET_VIEW_COL_NAME, |
62 PRESET_VIEW_N_COLS | 63 PRESET_VIEW_N_COLS |
63 }; | 64 }; |
64 | |
65 struct _EqualizerPreset { | |
66 gchar *name; | |
67 gfloat preamp, bands[10]; | |
68 }; | |
69 | |
70 typedef struct _EqualizerPreset EqualizerPreset; | |
71 | |
72 | 65 |
73 GtkWidget *equalizerwin; | 66 GtkWidget *equalizerwin; |
74 GtkWidget *equalizerwin_graph; | 67 GtkWidget *equalizerwin_graph; |
75 | 68 |
76 static GtkWidget *equalizerwin_load_window = NULL; | 69 static GtkWidget *equalizerwin_load_window = NULL; |
176 for (i = 0; i < 10; i++) | 169 for (i = 0; i < 10; i++) |
177 aud_cfg->equalizer_bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]); | 170 aud_cfg->equalizer_bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]); |
178 | 171 |
179 aud_hook_call("equalizer changed", NULL); | 172 aud_hook_call("equalizer changed", NULL); |
180 gtk_widget_queue_draw(equalizerwin_graph); | 173 gtk_widget_queue_draw(equalizerwin_graph); |
174 } | |
175 | |
176 static void | |
177 equalizerwin_apply_preset(EqualizerPreset *preset) | |
178 { | |
179 gint i; | |
180 | |
181 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, preset->preamp); | |
182 for (i = 0; i < 10; i++) { | |
183 ui_skinned_equalizer_slider_set_position(equalizerwin_bands[i], preset->bands[i]); | |
184 } | |
185 equalizerwin_eq_changed(); | |
181 } | 186 } |
182 | 187 |
183 static void | 188 static void |
184 equalizerwin_on_pushed(void) | 189 equalizerwin_on_pushed(void) |
185 { | 190 { |
273 { | 278 { |
274 equalizerwin_show(FALSE); | 279 equalizerwin_show(FALSE); |
275 return TRUE; | 280 return TRUE; |
276 } | 281 } |
277 | 282 |
278 static GList * | |
279 equalizerwin_read_presets(const gchar * basename) | |
280 { | |
281 #if 0 | |
282 gchar *filename, *name; | |
283 RcFile *rcfile; | |
284 GList *list = NULL; | |
285 gint i, p = 0; | |
286 EqualizerPreset *preset; | |
287 | |
288 /* START mod: add check for the default presets locate in system path ({prefix}/share/audacious) | |
289 by Massimo Cavalleri (submax) */ | |
290 | |
291 filename = g_build_filename(aud_paths[BMP_PATH_USER_DIR], basename, NULL); | |
292 | |
293 if ((rcfile = aud_rcfile_open(filename)) == NULL) { | |
294 g_free(filename); | |
295 // DATA_DIR = "{prefix}/share/audacious" ; example is "/usr/share/audacious" | |
296 filename = g_build_filename(DATA_DIR, basename, NULL); | |
297 if ((rcfile = aud_rcfile_open(filename)) == NULL) { | |
298 g_free(filename); | |
299 return NULL; | |
300 } | |
301 } | |
302 | |
303 // END mod | |
304 | |
305 g_free(filename); | |
306 | |
307 for (;;) { | |
308 gchar section[21]; | |
309 | |
310 g_snprintf(section, sizeof(section), "Preset%d", p++); | |
311 if (aud_rcfile_read_string(rcfile, "Presets", section, &name)) { | |
312 preset = g_new0(EqualizerPreset, 1); | |
313 preset->name = name; | |
314 aud_rcfile_read_float(rcfile, name, "Preamp", &preset->preamp); | |
315 for (i = 0; i < 10; i++) { | |
316 gchar band[7]; | |
317 g_snprintf(band, sizeof(band), "Band%d", i); | |
318 aud_rcfile_read_float(rcfile, name, band, &preset->bands[i]); | |
319 } | |
320 list = g_list_prepend(list, preset); | |
321 } | |
322 else | |
323 break; | |
324 } | |
325 list = g_list_reverse(list); | |
326 aud_rcfile_free(rcfile); | |
327 return list; | |
328 #endif | |
329 } | |
330 | |
331 gint | 283 gint |
332 equalizerwin_volume_frame_cb(gint pos) | 284 equalizerwin_volume_frame_cb(gint pos) |
333 { | 285 { |
334 if (equalizerwin_volume) { | 286 if (equalizerwin_volume) { |
335 gint x; | 287 gint x; |
526 } | 478 } |
527 | 479 |
528 void | 480 void |
529 equalizerwin_create(void) | 481 equalizerwin_create(void) |
530 { | 482 { |
531 equalizer_presets = equalizerwin_read_presets("eq.preset"); | 483 equalizer_presets = aud_equalizer_read_presets("eq.preset"); |
532 equalizer_auto_presets = equalizerwin_read_presets("eq.auto_preset"); | 484 equalizer_auto_presets = aud_equalizer_read_presets("eq.auto_preset"); |
533 | 485 |
534 equalizerwin_create_window(); | 486 equalizerwin_create_window(); |
535 | 487 |
536 gtk_window_add_accel_group( GTK_WINDOW(equalizerwin) , ui_manager_get_accel_group() ); | 488 gtk_window_add_accel_group( GTK_WINDOW(equalizerwin) , ui_manager_get_accel_group() ); |
537 | 489 |
595 node = g_list_next(node); | 547 node = g_list_next(node); |
596 } | 548 } |
597 return NULL; | 549 return NULL; |
598 } | 550 } |
599 | 551 |
600 static void | |
601 equalizerwin_write_preset_file(GList * list, const gchar * basename) | |
602 { | |
603 #if 0 | |
604 gchar *filename, *tmp; | |
605 gint i, p; | |
606 EqualizerPreset *preset; | |
607 RcFile *rcfile; | |
608 GList *node; | |
609 | |
610 rcfile = aud_rcfile_new(); | |
611 p = 0; | |
612 for (node = list; node; node = g_list_next(node)) { | |
613 preset = node->data; | |
614 tmp = g_strdup_printf("Preset%d", p++); | |
615 aud_rcfile_write_string(rcfile, "Presets", tmp, preset->name); | |
616 g_free(tmp); | |
617 aud_rcfile_write_float(rcfile, preset->name, "Preamp", | |
618 preset->preamp); | |
619 for (i = 0; i < 10; i++) { | |
620 tmp = g_strdup_printf("Band%d\n", i); | |
621 aud_rcfile_write_float(rcfile, preset->name, tmp, | |
622 preset->bands[i]); | |
623 g_free(tmp); | |
624 } | |
625 } | |
626 | |
627 filename = g_build_filename(aud_paths[BMP_PATH_USER_DIR], basename, NULL); | |
628 aud_rcfile_write(rcfile, filename); | |
629 aud_rcfile_free(rcfile); | |
630 g_free(filename); | |
631 #endif | |
632 } | |
633 | |
634 static gboolean | 552 static gboolean |
635 equalizerwin_load_preset(GList * list, const gchar * name) | 553 equalizerwin_load_preset(GList * list, const gchar * name) |
636 { | 554 { |
637 EqualizerPreset *preset; | 555 EqualizerPreset *preset; |
638 gint i; | 556 gint i; |
662 | 580 |
663 preset->preamp = ui_skinned_equalizer_slider_get_position(equalizerwin_preamp); | 581 preset->preamp = ui_skinned_equalizer_slider_get_position(equalizerwin_preamp); |
664 for (i = 0; i < 10; i++) | 582 for (i = 0; i < 10; i++) |
665 preset->bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]); | 583 preset->bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]); |
666 | 584 |
667 equalizerwin_write_preset_file(list, filename); | 585 aud_equalizer_write_preset_file(list, filename); |
668 | 586 |
669 return list; | 587 return list; |
670 } | 588 } |
671 | 589 |
672 static GList * | 590 static GList * |
683 | 601 |
684 list = g_list_remove_link(list, node); | 602 list = g_list_remove_link(list, node); |
685 equalizer_preset_free(preset); | 603 equalizer_preset_free(preset); |
686 g_list_free_1(node); | 604 g_list_free_1(node); |
687 | 605 |
688 equalizerwin_write_preset_file(list, filename); | 606 aud_equalizer_write_preset_file(list, filename); |
689 | 607 |
690 return list; | 608 return list; |
691 } | 609 } |
692 | 610 |
693 static void | 611 static void |
732 | 650 |
733 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); | 651 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
734 } | 652 } |
735 } | 653 } |
736 | 654 |
737 static GList * | |
738 import_winamp_eqf(VFSFile * file) | |
739 { | |
740 #if 0 | |
741 gchar header[31]; | |
742 gchar bands[11]; | |
743 gint i = 0; | |
744 EqualizerPreset *preset = NULL; | |
745 GList *list = NULL; | |
746 GtkWidget *dialog; | |
747 gchar *realfn; | |
748 gchar preset_name[0xb4]; | |
749 | |
750 vfs_fread(header, 1, 31, file); | |
751 if (strncmp(header, "Winamp EQ library file v1.1", 27)) goto error; | |
752 | |
753 AUDDBG("The EQF header is OK\n"); | |
754 | |
755 if (vfs_fseek(file, 0x1f, SEEK_SET) == -1) goto error; | |
756 | |
757 while (vfs_fread(preset_name, 1, 0xb4, file) == 0xb4) { | |
758 AUDDBG("The preset name is '%s'\n", preset_name); | |
759 vfs_fseek(file, 0x4d, SEEK_CUR); /* unknown crap --asphyx */ | |
760 if (vfs_fread(bands, 1, 11, file) != 11) break; | |
761 | |
762 preset = equalizer_preset_new(preset_name); | |
763 /*this was divided by 63, but shouldn't it be 64? --majeru*/ | |
764 preset->preamp = EQUALIZER_MAX_GAIN - ((bands[10] * EQUALIZER_MAX_GAIN * 2) / 64.0); | |
765 | |
766 for (i = 0; i < 10; i++) | |
767 preset->bands[i] = EQUALIZER_MAX_GAIN - ((bands[i] * EQUALIZER_MAX_GAIN * 2) / 64.0); | |
768 | |
769 list = g_list_prepend(list, preset); | |
770 } | |
771 | |
772 list = g_list_reverse(list); | |
773 if (list == NULL) goto error; | |
774 | |
775 return list; | |
776 | |
777 error: | |
778 realfn = g_filename_from_uri(file->uri, NULL, NULL); | |
779 dialog = gtk_message_dialog_new (GTK_WINDOW(mainwin), | |
780 GTK_DIALOG_DESTROY_WITH_PARENT, | |
781 GTK_MESSAGE_ERROR, | |
782 GTK_BUTTONS_CLOSE, | |
783 _("Error importing Winamp EQF file '%s'"), | |
784 realfn); | |
785 gtk_dialog_run (GTK_DIALOG (dialog)); | |
786 gtk_widget_destroy (dialog); | |
787 g_free(realfn); | |
788 return NULL; | |
789 #endif | |
790 } | |
791 | |
792 static void | 655 static void |
793 free_cb (gpointer data, gpointer user_data) | 656 free_cb (gpointer data, gpointer user_data) |
794 { | 657 { |
795 equalizer_preset_free((EqualizerPreset*)data); | 658 equalizer_preset_free((EqualizerPreset*)data); |
796 } | 659 } |
799 equalizerwin_read_winamp_eqf(VFSFile * file) | 662 equalizerwin_read_winamp_eqf(VFSFile * file) |
800 { | 663 { |
801 GList *presets; | 664 GList *presets; |
802 gint i; | 665 gint i; |
803 | 666 |
804 if ((presets = import_winamp_eqf(file)) == NULL) | 667 if ((presets = aud_import_winamp_eqf(file)) == NULL) |
805 return; | 668 return; |
806 | 669 |
807 /* just get the first preset --asphyx */ | 670 /* just get the first preset --asphyx */ |
808 EqualizerPreset *preset = (EqualizerPreset*)presets->data; | 671 EqualizerPreset *preset = (EqualizerPreset*)presets->data; |
809 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, | 672 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, |
816 g_list_foreach(presets, free_cb, NULL); | 679 g_list_foreach(presets, free_cb, NULL); |
817 g_list_free(presets); | 680 g_list_free(presets); |
818 | 681 |
819 equalizerwin_eq_changed(); | 682 equalizerwin_eq_changed(); |
820 } | 683 } |
821 #if 0 | 684 |
822 static void | 685 static void |
823 equalizerwin_read_aud_preset(RcFile * rcfile) | 686 equalizerwin_read_aud_preset(const gchar * file) |
824 { | 687 { |
825 gfloat val; | 688 EqualizerPreset *preset = aud_equalizer_read_aud_preset(file); |
826 gint i; | 689 if (preset) { |
827 | 690 equalizerwin_apply_preset(preset); |
828 if (aud_rcfile_read_float(rcfile, "Equalizer preset", "Preamp", &val)) | 691 equalizer_preset_free(preset); |
829 ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, val); | 692 } |
830 for (i = 0; i < 10; i++) { | 693 } |
831 gchar tmp[7]; | |
832 g_snprintf(tmp, sizeof(tmp), "Band%d", i); | |
833 if (aud_rcfile_read_float(rcfile, "Equalizer preset", tmp, &val)) | |
834 ui_skinned_equalizer_slider_set_position(equalizerwin_bands[i], val); | |
835 } | |
836 equalizerwin_eq_changed(); | |
837 } | |
838 #endif | |
839 | 694 |
840 static void | 695 static void |
841 equalizerwin_save_ok(GtkWidget * widget, gpointer data) | 696 equalizerwin_save_ok(GtkWidget * widget, gpointer data) |
842 { | 697 { |
843 const gchar *text; | 698 const gchar *text; |
978 equalizerwin_delete_auto_delete(GtkWidget *widget, gpointer data) | 833 equalizerwin_delete_auto_delete(GtkWidget *widget, gpointer data) |
979 { | 834 { |
980 equalizerwin_delete_selected_presets(GTK_TREE_VIEW(data), "eq.auto_preset"); | 835 equalizerwin_delete_selected_presets(GTK_TREE_VIEW(data), "eq.auto_preset"); |
981 } | 836 } |
982 | 837 |
983 | |
984 static void | |
985 load_preset_file(const gchar *filename) | |
986 { | |
987 #if 0 | |
988 RcFile *rcfile; | |
989 | |
990 if ((rcfile = aud_rcfile_open(filename)) != NULL) { | |
991 equalizerwin_read_aud_preset(rcfile); | |
992 aud_rcfile_free(rcfile); | |
993 } | |
994 #endif | |
995 } | |
996 | |
997 static VFSFile * | 838 static VFSFile * |
998 open_vfs_file(const gchar *filename, const gchar *mode) | 839 open_vfs_file(const gchar *filename, const gchar *mode) |
999 { | 840 { |
1000 VFSFile *file; | 841 VFSFile *file; |
1001 GtkWidget *dialog; | 842 GtkWidget *dialog; |
1002 | 843 |
1003 if (!(file = vfs_fopen(filename, mode))) { | 844 if (!(file = aud_vfs_fopen(filename, mode))) { |
1004 dialog = gtk_message_dialog_new (GTK_WINDOW (mainwin), | 845 dialog = gtk_message_dialog_new (GTK_WINDOW (mainwin), |
1005 GTK_DIALOG_DESTROY_WITH_PARENT, | 846 GTK_DIALOG_DESTROY_WITH_PARENT, |
1006 GTK_MESSAGE_ERROR, | 847 GTK_MESSAGE_ERROR, |
1007 GTK_BUTTONS_CLOSE, | 848 GTK_BUTTONS_CLOSE, |
1008 "Error loading file '%s'", | 849 "Error loading file '%s'", |
1015 } | 856 } |
1016 | 857 |
1017 static void | 858 static void |
1018 load_winamp_file(const gchar * filename) | 859 load_winamp_file(const gchar * filename) |
1019 { | 860 { |
1020 #if 0 | |
1021 VFSFile *file; | 861 VFSFile *file; |
1022 | 862 |
1023 if (!(file = open_vfs_file(filename, "rb"))) | 863 if (!(file = open_vfs_file(filename, "rb"))) |
1024 return; | 864 return; |
1025 | 865 |
1026 equalizerwin_read_winamp_eqf(file); | 866 equalizerwin_read_winamp_eqf(file); |
1027 vfs_fclose(file); | 867 aud_vfs_fclose(file); |
1028 #endif | |
1029 } | 868 } |
1030 | 869 |
1031 static void | 870 static void |
1032 import_winamp_file(const gchar * filename) | 871 import_winamp_file(const gchar * filename) |
1033 { | 872 { |
1034 #if 0 | |
1035 VFSFile *file; | 873 VFSFile *file; |
1036 GList *list; | 874 GList *list; |
1037 | 875 |
1038 if (!(file = open_vfs_file(filename, "rb")) || | 876 if (!(file = open_vfs_file(filename, "rb")) || |
1039 !(list = import_winamp_eqf(file))) | 877 !(list = aud_import_winamp_eqf(file))) |
1040 return; | 878 return; |
1041 | 879 |
1042 equalizer_presets = g_list_concat(equalizer_presets, list); | 880 equalizer_presets = g_list_concat(equalizer_presets, list); |
1043 equalizerwin_write_preset_file(equalizer_presets, "eq.preset"); | 881 aud_equalizer_write_preset_file(equalizer_presets, "eq.preset"); |
1044 | 882 |
1045 vfs_fclose(file); | 883 aud_vfs_fclose(file); |
1046 #endif | |
1047 } | |
1048 | |
1049 static void | |
1050 save_preset_file(const gchar * filename) | |
1051 { | |
1052 #if 0 | |
1053 RcFile *rcfile; | |
1054 gint i; | |
1055 | |
1056 rcfile = aud_rcfile_new(); | |
1057 aud_rcfile_write_float(rcfile, "Equalizer preset", "Preamp", | |
1058 ui_skinned_equalizer_slider_get_position(equalizerwin_preamp)); | |
1059 | |
1060 for (i = 0; i < 10; i++) { | |
1061 gchar tmp[7]; | |
1062 g_snprintf(tmp, sizeof(tmp), "Band%d", i); | |
1063 aud_rcfile_write_float(rcfile, "Equalizer preset", tmp, | |
1064 ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i])); | |
1065 } | |
1066 | |
1067 aud_rcfile_write(rcfile, filename); | |
1068 aud_rcfile_free(rcfile); | |
1069 #endif | |
1070 } | 884 } |
1071 | 885 |
1072 static void | 886 static void |
1073 save_winamp_file(const gchar * filename) | 887 save_winamp_file(const gchar * filename) |
1074 { | 888 { |
1075 #if 0 | |
1076 VFSFile *file; | 889 VFSFile *file; |
1077 | 890 |
1078 gchar name[257]; | 891 gchar name[257]; |
1079 gint i; | 892 gint i; |
1080 guchar bands[11]; | 893 guchar bands[11]; |
1081 | 894 |
1082 if (!(file = open_vfs_file(filename, "wb"))) | 895 if (!(file = open_vfs_file(filename, "wb"))) |
1083 return; | 896 return; |
1084 | 897 |
1085 vfs_fwrite("Winamp EQ library file v1.1\x1a!--", 1, 31, file); | 898 aud_vfs_fwrite("Winamp EQ library file v1.1\x1a!--", 1, 31, file); |
1086 | 899 |
1087 memset(name, 0, 257); | 900 memset(name, 0, 257); |
1088 g_strlcpy(name, "Entry1", 257); | 901 g_strlcpy(name, "Entry1", 257); |
1089 vfs_fwrite(name, 1, 257, file); | 902 aud_vfs_fwrite(name, 1, 257, file); |
1090 | 903 |
1091 for (i = 0; i < 10; i++) | 904 for (i = 0; i < 10; i++) |
1092 bands[i] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2); | 905 bands[i] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2); |
1093 bands[10] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_preamp) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2); | 906 bands[10] = 63 - (((ui_skinned_equalizer_slider_get_position(equalizerwin_preamp) + EQUALIZER_MAX_GAIN) * 63) / EQUALIZER_MAX_GAIN / 2); |
1094 vfs_fwrite(bands, 1, 11, file); | 907 aud_vfs_fwrite(bands, 1, 11, file); |
1095 | 908 |
1096 vfs_fclose(file); | 909 aud_vfs_fclose(file); |
1097 #endif | |
1098 } | 910 } |
1099 | 911 |
1100 static GtkWidget * | 912 static GtkWidget * |
1101 equalizerwin_create_list_window(GList *preset_list, | 913 equalizerwin_create_list_window(GList *preset_list, |
1102 const gchar *title, | 914 const gchar *title, |
1208 } | 1020 } |
1209 | 1021 |
1210 void | 1022 void |
1211 equalizerwin_load_auto_preset(const gchar * filename) | 1023 equalizerwin_load_auto_preset(const gchar * filename) |
1212 { | 1024 { |
1213 #if 0 | |
1214 gchar *presetfilename, *directory; | 1025 gchar *presetfilename, *directory; |
1215 RcFile *rcfile; | |
1216 | 1026 |
1217 g_return_if_fail(filename != NULL); | 1027 g_return_if_fail(filename != NULL); |
1218 | 1028 |
1219 if (!aud_cfg->equalizer_autoload) | 1029 if (!aud_cfg->equalizer_autoload) |
1220 return; | 1030 return; |
1221 | 1031 |
1222 presetfilename = g_strconcat(filename, ".", aud_cfg->eqpreset_extension, NULL); | 1032 presetfilename = g_strconcat(filename, ".", aud_cfg->eqpreset_extension, NULL); |
1223 | 1033 |
1224 /* First try to find a per file preset file */ | 1034 /* First try to find a per file preset file */ |
1225 if (strlen(aud_cfg->eqpreset_extension) > 0 && | 1035 if (strlen(aud_cfg->eqpreset_extension) > 0) { |
1226 (rcfile = aud_rcfile_open(presetfilename)) != NULL) { | 1036 equalizerwin_read_aud_preset(presetfilename); |
1227 g_free(presetfilename); | 1037 g_free(presetfilename); |
1228 equalizerwin_read_aud_preset(rcfile); | |
1229 aud_rcfile_free(rcfile); | |
1230 return; | 1038 return; |
1231 } | 1039 } |
1232 | 1040 |
1233 g_free(presetfilename); | 1041 g_free(presetfilename); |
1234 | 1042 |
1236 presetfilename = g_build_filename(directory, aud_cfg->eqpreset_default_file, | 1044 presetfilename = g_build_filename(directory, aud_cfg->eqpreset_default_file, |
1237 NULL); | 1045 NULL); |
1238 g_free(directory); | 1046 g_free(directory); |
1239 | 1047 |
1240 /* Try to find a per directory preset file */ | 1048 /* Try to find a per directory preset file */ |
1241 if (strlen(aud_cfg->eqpreset_default_file) > 0 && | 1049 if (strlen(aud_cfg->eqpreset_default_file) > 0) { |
1242 (rcfile = aud_rcfile_open(presetfilename)) != NULL) { | 1050 equalizerwin_read_aud_preset(presetfilename); |
1243 equalizerwin_read_aud_preset(rcfile); | |
1244 aud_rcfile_free(rcfile); | |
1245 } | 1051 } |
1246 else if (!equalizerwin_load_preset | 1052 else if (!equalizerwin_load_preset |
1247 (equalizer_auto_presets, g_basename(filename))) { | 1053 (equalizer_auto_presets, g_basename(filename))) { |
1248 /* Fall back to the oldstyle auto presets */ | 1054 /* Fall back to the oldstyle auto presets */ |
1249 equalizerwin_load_preset(equalizer_presets, "Default"); | 1055 equalizerwin_load_preset(equalizer_presets, "Default"); |
1250 } | 1056 } |
1251 | 1057 |
1252 g_free(presetfilename); | 1058 g_free(presetfilename); |
1253 #endif | |
1254 } | 1059 } |
1255 | 1060 |
1256 void | 1061 void |
1257 equalizerwin_set_preamp(gfloat preamp) | 1062 equalizerwin_set_preamp(gfloat preamp) |
1258 { | 1063 { |
1340 | 1145 |
1341 dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); | 1146 dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); |
1342 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) | 1147 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) |
1343 { | 1148 { |
1344 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); | 1149 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); |
1345 load_preset_file(file_uri); | 1150 EqualizerPreset *preset = aud_load_preset_file(file_uri); |
1151 equalizerwin_apply_preset(preset); | |
1152 equalizer_preset_free(preset); | |
1346 g_free(file_uri); | 1153 g_free(file_uri); |
1347 } | 1154 } |
1348 gtk_widget_destroy(dialog); | 1155 gtk_widget_destroy(dialog); |
1349 } | 1156 } |
1350 | 1157 |
1436 { | 1243 { |
1437 GtkWidget *dialog; | 1244 GtkWidget *dialog; |
1438 gchar *file_uri; | 1245 gchar *file_uri; |
1439 gchar *songname; | 1246 gchar *songname; |
1440 Playlist *playlist = aud_playlist_get_active(); | 1247 Playlist *playlist = aud_playlist_get_active(); |
1248 gint i; | |
1441 | 1249 |
1442 dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE); | 1250 dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE); |
1443 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) | 1251 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) |
1444 { | 1252 { |
1445 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); | 1253 file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); |
1446 save_preset_file(file_uri); | 1254 EqualizerPreset *preset = g_new0(EqualizerPreset, 1); |
1255 preset->name = g_strdup(file_uri); | |
1256 preset->preamp = ui_skinned_equalizer_slider_get_position(equalizerwin_preamp); | |
1257 for (i = 0; i < 10; i++) | |
1258 preset->bands[i] = ui_skinned_equalizer_slider_get_position(equalizerwin_bands[i]); | |
1259 aud_save_preset_file(preset, file_uri); | |
1260 equalizer_preset_free(preset); | |
1447 g_free(file_uri); | 1261 g_free(file_uri); |
1448 } | 1262 } |
1449 | 1263 |
1450 songname = aud_playlist_get_filename(playlist, aud_playlist_get_position(playlist)); | 1264 songname = aud_playlist_get_filename(playlist, aud_playlist_get_position(playlist)); |
1451 if (songname) { | 1265 if (songname) { |