Mercurial > audlegacy
comparison audacious/equalizer.c @ 2198:bb5c514fc1ae trunk
[svn] - port to GtkUIManager
author | nenolod |
---|---|
date | Fri, 22 Dec 2006 06:13:13 -0800 |
parents | ac8a7d286616 |
children | 73aec9382028 |
comparison
equal
deleted
inserted
replaced
2197:edb8ac7e7f19 | 2198:bb5c514fc1ae |
---|---|
53 enum PresetViewCols { | 53 enum PresetViewCols { |
54 PRESET_VIEW_COL_NAME, | 54 PRESET_VIEW_COL_NAME, |
55 PRESET_VIEW_N_COLS | 55 PRESET_VIEW_N_COLS |
56 }; | 56 }; |
57 | 57 |
58 enum { | |
59 EQUALIZER_PRESETS_LOAD_PRESET, | |
60 EQUALIZER_PRESETS_LOAD_AUTOPRESET, | |
61 EQUALIZER_PRESETS_LOAD_DEFAULT, | |
62 EQUALIZER_PRESETS_LOAD_ZERO, | |
63 EQUALIZER_PRESETS_LOAD_FROM_FILE, | |
64 EQUALIZER_PRESETS_LOAD_FROM_WINAMPFILE, | |
65 EQUALIZER_PRESETS_IMPORT_WINAMPFILE, | |
66 EQUALIZER_PRESETS_SAVE_PRESET, | |
67 EQUALIZER_PRESETS_SAVE_AUTOPRESET, | |
68 EQUALIZER_PRESETS_SAVE_DEFAULT, | |
69 EQUALIZER_PRESETS_SAVE_TO_FILE, | |
70 EQUALIZER_PRESETS_SAVE_TO_WINAMPFILE, | |
71 EQUALIZER_PRESETS_DELETE_PRESET, | |
72 EQUALIZER_PRESETS_DELETE_AUTOPRESET | |
73 }; | |
74 | |
75 | |
76 struct _EqualizerPreset { | 58 struct _EqualizerPreset { |
77 gchar *name; | 59 gchar *name; |
78 gfloat preamp, bands[10]; | 60 gfloat preamp, bands[10]; |
79 }; | 61 }; |
80 | 62 |
95 static GdkPixmap *equalizerwin_bg, *equalizerwin_bg_x2; | 77 static GdkPixmap *equalizerwin_bg, *equalizerwin_bg_x2; |
96 static GdkGC *equalizerwin_gc; | 78 static GdkGC *equalizerwin_gc; |
97 | 79 |
98 static GList *equalizerwin_wlist = NULL; | 80 static GList *equalizerwin_wlist = NULL; |
99 | 81 |
100 static GtkAccelGroup *equalizerwin_accel; | |
101 | |
102 static TButton *equalizerwin_on, *equalizerwin_auto; | 82 static TButton *equalizerwin_on, *equalizerwin_auto; |
103 | 83 |
104 static PButton *equalizerwin_presets, *equalizerwin_shade; | 84 static PButton *equalizerwin_presets, *equalizerwin_shade; |
105 PButton *equalizerwin_close; | 85 PButton *equalizerwin_close; |
106 static EqGraph *equalizerwin_graph; | 86 static EqGraph *equalizerwin_graph; |
107 static EqSlider *equalizerwin_preamp, *equalizerwin_bands[10]; | 87 static EqSlider *equalizerwin_preamp, *equalizerwin_bands[10]; |
108 static HSlider *equalizerwin_volume, *equalizerwin_balance; | 88 static HSlider *equalizerwin_volume, *equalizerwin_balance; |
109 | 89 |
110 static GtkItemFactory *equalizerwin_presets_menu; | 90 static GtkWidget *presets_menu; |
111 | 91 |
112 static GList *equalizer_presets = NULL, *equalizer_auto_presets = NULL; | 92 static GList *equalizer_presets = NULL, *equalizer_auto_presets = NULL; |
113 | 93 |
114 | 94 static void action_load_preset(void); |
115 static void equalizerwin_presets_menu_cb(gpointer cb_data, guint action, | 95 static void action_load_auto_preset(void); |
116 GtkWidget * w); | 96 static void action_load_default_preset(void); |
117 | 97 static void action_zero_preset(void); |
118 static GtkItemFactoryEntry equalizerwin_presets_menu_entries[] = { | 98 static void action_load_preset_file(void); |
119 {N_("/Load"), NULL, NULL, 0, "<Branch>", NULL}, | 99 static void action_load_preset_eqf(void); |
120 {N_("/Load/Preset"), NULL, equalizerwin_presets_menu_cb, | 100 static void action_import_winamp_presets(void); |
121 EQUALIZER_PRESETS_LOAD_PRESET, "<Item>", NULL}, | 101 static void action_save_preset(void); |
122 {N_("/Load/Auto-load preset"), NULL, equalizerwin_presets_menu_cb, | 102 static void action_save_auto_preset(void); |
123 EQUALIZER_PRESETS_LOAD_AUTOPRESET, "<Item>", NULL}, | 103 static void action_save_default_preset(void); |
124 {N_("/Load/Default"), NULL, equalizerwin_presets_menu_cb, | 104 static void action_save_preset_file(void); |
125 EQUALIZER_PRESETS_LOAD_DEFAULT, "<Item>", NULL}, | 105 static void action_save_preset_eqf(void); |
126 {"/Load/-", NULL, NULL, 0, "<Separator>", NULL}, | 106 static void action_delete_preset(void); |
127 {N_("/Load/Zero"), NULL, equalizerwin_presets_menu_cb, | 107 static void action_delete_auto_preset(void); |
128 EQUALIZER_PRESETS_LOAD_ZERO, "<Item>", NULL}, | 108 |
129 {"/Load/-", NULL, NULL, 0, "<Separator>", NULL}, | 109 static GtkActionEntry equalizerwin_actions[] = { |
130 {N_("/Load/From file"), NULL, equalizerwin_presets_menu_cb, | 110 { "dummy", NULL, "dummy" }, |
131 EQUALIZER_PRESETS_LOAD_FROM_FILE, "<Item>", NULL}, | 111 |
132 {N_("/Load/From WinAMP EQF file"), NULL, equalizerwin_presets_menu_cb, | 112 { "preset load menu", NULL, N_("Load") }, |
133 EQUALIZER_PRESETS_LOAD_FROM_WINAMPFILE, "<Item>", NULL}, | 113 { "preset import menu", NULL, N_("Import") }, |
134 {N_("/Import"), NULL, NULL, 0, "<Branch>", NULL}, | 114 { "preset save menu", NULL, N_("Save") }, |
135 {N_("/Import/WinAMP Presets"), NULL, equalizerwin_presets_menu_cb, | 115 { "preset delete menu", NULL, N_("Delete") }, |
136 EQUALIZER_PRESETS_IMPORT_WINAMPFILE, "<Item>", NULL}, | 116 |
137 {N_("/Save"), NULL, NULL, 0, "<Branch>", NULL}, | 117 { "load preset", NULL, |
138 {N_("/Save/Preset"), NULL, equalizerwin_presets_menu_cb, | 118 N_("Preset"), NULL, |
139 EQUALIZER_PRESETS_SAVE_PRESET, "<Item>", NULL}, | 119 N_("Load preset"), |
140 {N_("/Save/Auto-load preset"), NULL, equalizerwin_presets_menu_cb, | 120 G_CALLBACK(action_load_preset) }, |
141 EQUALIZER_PRESETS_SAVE_AUTOPRESET, "<Item>", NULL}, | 121 |
142 {N_("/Save/Default"), NULL, equalizerwin_presets_menu_cb, | 122 { "load auto preset", NULL, |
143 EQUALIZER_PRESETS_SAVE_DEFAULT, "<Item>", NULL}, | 123 N_("Auto-load preset"), NULL, |
144 {"/Save/-", NULL, NULL, 0, "<Separator>", NULL}, | 124 N_("Load auto-load preset"), |
145 {N_("/Save/To file"), NULL, equalizerwin_presets_menu_cb, | 125 G_CALLBACK(action_load_auto_preset) }, |
146 EQUALIZER_PRESETS_SAVE_TO_FILE, "<Item>", NULL}, | 126 |
147 {N_("/Save/To WinAMP EQF file"), NULL, equalizerwin_presets_menu_cb, | 127 { "load default preset", NULL, |
148 EQUALIZER_PRESETS_SAVE_TO_WINAMPFILE, "<Item>", NULL}, | 128 N_("Default"), NULL, |
149 {N_("/Delete"), NULL, NULL, 0, "<Branch>", NULL}, | 129 N_("Load default preset into equalizer"), |
150 {N_("/Delete/Preset"), NULL, equalizerwin_presets_menu_cb, | 130 G_CALLBACK(action_load_default_preset) }, |
151 EQUALIZER_PRESETS_DELETE_PRESET, "<Item>", NULL}, | 131 |
152 {N_("/Delete/Auto-load preset"), NULL, equalizerwin_presets_menu_cb, | 132 { "zero preset", NULL, |
153 EQUALIZER_PRESETS_DELETE_AUTOPRESET, "<Item>", NULL}, | 133 N_("Zero"), NULL, |
134 N_("Set equalizer preset levels to zero"), | |
135 G_CALLBACK(action_zero_preset) }, | |
136 | |
137 { "load preset file", NULL, | |
138 N_("From file"), NULL, | |
139 N_("Load preset from file"), | |
140 G_CALLBACK(action_load_preset_file) }, | |
141 | |
142 { "load preset eqf", NULL, | |
143 N_("From WinAMP EQF file"), NULL, | |
144 N_("Load preset from WinAMP EQF file"), | |
145 G_CALLBACK(action_load_preset_eqf) }, | |
146 | |
147 { "import winamp presets", NULL, | |
148 N_("WinAMP Presets"), NULL, | |
149 N_("Import WinAMP presets"), | |
150 G_CALLBACK(action_import_winamp_presets) }, | |
151 | |
152 { "save preset", NULL, | |
153 N_("Preset"), NULL, | |
154 N_("Save preset"), | |
155 G_CALLBACK(action_save_preset) }, | |
156 | |
157 { "save auto preset", NULL, | |
158 N_("Auto-load preset"), NULL, | |
159 N_("Save auto-load preset"), | |
160 G_CALLBACK(action_save_auto_preset) }, | |
161 | |
162 { "save default preset", NULL, | |
163 N_("Default"), NULL, | |
164 N_("Save default preset"), | |
165 G_CALLBACK(action_save_default_preset) }, | |
166 | |
167 { "save preset file", NULL, | |
168 N_("To file"), NULL, | |
169 N_("Save preset to file"), | |
170 G_CALLBACK(action_save_preset_file) }, | |
171 | |
172 { "save preset eqf", NULL, | |
173 N_("To WinAMP EQF file"), NULL, | |
174 N_("Save preset to WinAMP EQF file"), | |
175 G_CALLBACK(action_save_preset_eqf) }, | |
176 | |
177 { "delete preset", NULL, | |
178 N_("Preset"), NULL, | |
179 N_("Delete preset"), | |
180 G_CALLBACK(action_delete_preset) }, | |
181 | |
182 { "delete auto preset", NULL, | |
183 N_("Auto-load preset"), NULL, | |
184 N_("Delete auto-load preset"), | |
185 G_CALLBACK(action_delete_auto_preset) } | |
154 }; | 186 }; |
155 | |
156 static gint equalizerwin_presets_menu_entries_num = | |
157 G_N_ELEMENTS(equalizerwin_presets_menu_entries); | |
158 | |
159 | 187 |
160 EqualizerPreset * | 188 EqualizerPreset * |
161 equalizer_preset_new(const gchar * name) | 189 equalizer_preset_new(const gchar * name) |
162 { | 190 { |
163 EqualizerPreset *preset = g_new0(EqualizerPreset, 1); | 191 EqualizerPreset *preset = g_new0(EqualizerPreset, 1); |
292 cfg.equalizer_active = toggled; | 320 cfg.equalizer_active = toggled; |
293 equalizerwin_eq_changed(); | 321 equalizerwin_eq_changed(); |
294 } | 322 } |
295 | 323 |
296 static void | 324 static void |
325 menu_popup_pos_func(GtkMenu * menu, | |
326 gint * x, | |
327 gint * y, | |
328 gboolean * push_in, | |
329 gint * point) | |
330 { | |
331 *x = point[0]; | |
332 *y = point[1]; | |
333 *push_in = FALSE; | |
334 } | |
335 | |
336 static void | |
337 menu_popup(GtkMenu * menu, | |
338 gint x, | |
339 gint y, | |
340 guint button, | |
341 guint time) | |
342 { | |
343 gint pos[2]; | |
344 | |
345 pos[0] = x; | |
346 pos[1] = y; | |
347 | |
348 gtk_menu_popup(menu, NULL, NULL, | |
349 (GtkMenuPositionFunc) menu_popup_pos_func, pos, | |
350 button, time); | |
351 } | |
352 | |
353 static void | |
297 equalizerwin_presets_pushed(void) | 354 equalizerwin_presets_pushed(void) |
298 { | 355 { |
299 GdkModifierType modmask; | 356 GdkModifierType modmask; |
300 gint x, y; | 357 gint x, y; |
301 | 358 |
302 gdk_window_get_pointer(NULL, &x, &y, &modmask); | 359 gdk_window_get_pointer(NULL, &x, &y, &modmask); |
303 util_item_factory_popup(equalizerwin_presets_menu, x, y, 1, | 360 menu_popup(GTK_MENU(presets_menu), x, y, 1, GDK_CURRENT_TIME); |
304 GDK_CURRENT_TIME); | |
305 } | 361 } |
306 | 362 |
307 static void | 363 static void |
308 equalizerwin_auto_pushed(gboolean toggled) | 364 equalizerwin_auto_pushed(gboolean toggled) |
309 { | 365 { |
874 G_CALLBACK(equalizerwin_keypress), NULL); | 930 G_CALLBACK(equalizerwin_keypress), NULL); |
875 g_signal_connect(equalizerwin, "scroll_event", | 931 g_signal_connect(equalizerwin, "scroll_event", |
876 G_CALLBACK(equalizerwin_scroll), NULL); | 932 G_CALLBACK(equalizerwin_scroll), NULL); |
877 } | 933 } |
878 | 934 |
935 static GtkWidget * | |
936 ui_manager_get_popup(GtkUIManager * self, const gchar * path) | |
937 { | |
938 GtkWidget *menu_item; | |
939 | |
940 menu_item = gtk_ui_manager_get_widget(self, path); | |
941 | |
942 if (GTK_IS_MENU_ITEM(menu_item)) | |
943 return gtk_menu_item_get_submenu(GTK_MENU_ITEM(menu_item)); | |
944 else | |
945 return NULL; | |
946 } | |
947 | |
879 void | 948 void |
880 equalizerwin_create_popup_menus(void) | 949 equalizerwin_create_popup_menus(void) |
881 { | 950 { |
882 equalizerwin_accel = gtk_accel_group_new(); | 951 GtkUIManager *ui_manager; |
883 gtk_window_add_accel_group(GTK_WINDOW(equalizerwin), equalizerwin_accel); | 952 GtkActionGroup *action_group; |
884 | 953 GError *error = NULL; |
885 equalizerwin_presets_menu = create_menu(equalizerwin_presets_menu_entries, | 954 |
886 equalizerwin_presets_menu_entries_num, | 955 action_group = gtk_action_group_new("equalizer-window"); |
887 NULL); | 956 gtk_action_group_add_actions(action_group, |
957 equalizerwin_actions, | |
958 G_N_ELEMENTS(equalizerwin_actions), | |
959 NULL); | |
960 | |
961 ui_manager = gtk_ui_manager_new(); | |
962 gtk_ui_manager_add_ui_from_file(ui_manager, | |
963 DATA_DIR "/ui/equalizer.ui", | |
964 &error); | |
965 | |
966 if (error) { | |
967 g_message("Error creating UI (%s)", error->message); | |
968 g_error_free(error); | |
969 return; | |
970 } | |
971 | |
972 gtk_ui_manager_insert_action_group(ui_manager, action_group, 0); | |
973 | |
974 gtk_window_add_accel_group(GTK_WINDOW(equalizerwin), | |
975 gtk_ui_manager_get_accel_group(ui_manager)); | |
976 | |
977 presets_menu = ui_manager_get_popup(ui_manager, "/equalizer-menus/preset-menu"); | |
888 } | 978 } |
889 | 979 |
890 void | 980 void |
891 equalizerwin_create(void) | 981 equalizerwin_create(void) |
892 { | 982 { |
1495 const gchar * title, | 1585 const gchar * title, |
1496 GtkWidget ** window, | 1586 GtkWidget ** window, |
1497 GtkSelectionMode sel_mode, | 1587 GtkSelectionMode sel_mode, |
1498 GtkWidget ** entry, | 1588 GtkWidget ** entry, |
1499 const gchar * btn2_stock_name, | 1589 const gchar * btn2_stock_name, |
1500 const gchar * btn3_stock_name, | |
1501 const gchar * btn1_stock_name, | 1590 const gchar * btn1_stock_name, |
1502 GCallback btn2_func, | 1591 GCallback btn2_func, |
1503 GCallback btn3_func, | |
1504 GCallback select_row_func) | 1592 GCallback select_row_func) |
1505 { | 1593 { |
1506 GtkWidget *vbox, *scrolled_window, *bbox, *btn1, *btn2, *btn3, *clist; | 1594 GtkWidget *vbox, *scrolled_window, *bbox, *btn1, *btn2, *btn3, *clist; |
1507 gchar *preset_text[1]; | 1595 gchar *preset_text[1]; |
1508 GList *node; | 1596 GList *node; |
1558 g_signal_connect_swapped(btn1, "clicked", | 1646 g_signal_connect_swapped(btn1, "clicked", |
1559 G_CALLBACK(gtk_widget_destroy), | 1647 G_CALLBACK(gtk_widget_destroy), |
1560 GTK_OBJECT(*window)); | 1648 GTK_OBJECT(*window)); |
1561 gtk_box_pack_start(GTK_BOX(bbox), btn1, TRUE, TRUE, 0); | 1649 gtk_box_pack_start(GTK_BOX(bbox), btn1, TRUE, TRUE, 0); |
1562 | 1650 |
1563 if (btn3_stock_name) { | |
1564 btn3 = gtk_button_new_from_stock(btn3_stock_name); | |
1565 g_signal_connect(btn3, "clicked", G_CALLBACK(btn3_func), clist); | |
1566 gtk_box_pack_start(GTK_BOX(bbox), btn3, TRUE, TRUE, 0); | |
1567 } | |
1568 | |
1569 btn2 = gtk_button_new_from_stock(btn2_stock_name); | 1651 btn2 = gtk_button_new_from_stock(btn2_stock_name); |
1570 g_signal_connect(btn2, "clicked", G_CALLBACK(btn2_func), clist); | 1652 g_signal_connect(btn2, "clicked", G_CALLBACK(btn2_func), clist); |
1571 GTK_WIDGET_SET_FLAGS(btn2, GTK_CAN_DEFAULT); | 1653 GTK_WIDGET_SET_FLAGS(btn2, GTK_CAN_DEFAULT); |
1572 | 1654 |
1573 gtk_box_pack_start(GTK_BOX(bbox), btn2, TRUE, TRUE, 0); | 1655 gtk_box_pack_start(GTK_BOX(bbox), btn2, TRUE, TRUE, 0); |
1576 | 1658 |
1577 | 1659 |
1578 gtk_widget_show_all(*window); | 1660 gtk_widget_show_all(*window); |
1579 | 1661 |
1580 return *window; | 1662 return *window; |
1581 } | |
1582 | |
1583 void | |
1584 equalizerwin_presets_menu_cb(gpointer cb_data, guint action, GtkWidget * w) | |
1585 { | |
1586 GtkWidget *dialog; | |
1587 | |
1588 switch (action) { | |
1589 case EQUALIZER_PRESETS_LOAD_PRESET: | |
1590 if (!equalizerwin_load_window) | |
1591 equalizerwin_create_list_window(equalizer_presets, | |
1592 _("Load preset"), | |
1593 &equalizerwin_load_window, | |
1594 GTK_SELECTION_SINGLE, NULL, | |
1595 GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_CANCEL, | |
1596 G_CALLBACK | |
1597 (equalizerwin_load_ok), | |
1598 G_CALLBACK | |
1599 (equalizerwin_load_apply), | |
1600 G_CALLBACK | |
1601 (equalizerwin_load_select)); | |
1602 else | |
1603 gtk_window_present(GTK_WINDOW(equalizerwin_load_window)); | |
1604 break; | |
1605 case EQUALIZER_PRESETS_LOAD_AUTOPRESET: | |
1606 if (!equalizerwin_load_auto_window) | |
1607 equalizerwin_create_list_window(equalizer_auto_presets, | |
1608 _("Load auto-preset"), | |
1609 &equalizerwin_load_auto_window, | |
1610 GTK_SELECTION_SINGLE, NULL, | |
1611 GTK_STOCK_OK, NULL, GTK_STOCK_CANCEL, | |
1612 G_CALLBACK | |
1613 (equalizerwin_load_auto_ok), | |
1614 NULL, | |
1615 G_CALLBACK | |
1616 (equalizerwin_load_auto_select)); | |
1617 else | |
1618 gtk_window_present(GTK_WINDOW(equalizerwin_load_auto_window)); | |
1619 break; | |
1620 case EQUALIZER_PRESETS_LOAD_DEFAULT: | |
1621 equalizerwin_load_preset(equalizer_presets, "Default"); | |
1622 break; | |
1623 case EQUALIZER_PRESETS_LOAD_ZERO: | |
1624 { | |
1625 gint i; | |
1626 | |
1627 eqslider_set_position(equalizerwin_preamp, 0); | |
1628 for (i = 0; i < 10; i++) | |
1629 eqslider_set_position(equalizerwin_bands[i], 0); | |
1630 equalizerwin_eq_changed(); | |
1631 break; | |
1632 } | |
1633 case EQUALIZER_PRESETS_LOAD_FROM_FILE: | |
1634 dialog = make_filebrowser(_("Load equalizer preset"), FALSE); | |
1635 g_signal_connect(dialog , "response", | |
1636 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1637 load_preset_file); | |
1638 break; | |
1639 case EQUALIZER_PRESETS_LOAD_FROM_WINAMPFILE: | |
1640 dialog = make_filebrowser(_("Load equalizer preset"), FALSE); | |
1641 g_signal_connect(dialog, "response", | |
1642 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1643 load_winamp_file); | |
1644 break; | |
1645 | |
1646 case EQUALIZER_PRESETS_IMPORT_WINAMPFILE: | |
1647 dialog = make_filebrowser(_("Load equalizer preset"), FALSE); | |
1648 g_signal_connect(dialog, "response", | |
1649 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1650 import_winamp_file); | |
1651 break; | |
1652 | |
1653 case EQUALIZER_PRESETS_SAVE_PRESET: | |
1654 if (!equalizerwin_save_window) | |
1655 equalizerwin_create_list_window(equalizer_presets, | |
1656 _("Save preset"), | |
1657 &equalizerwin_save_window, | |
1658 GTK_SELECTION_SINGLE, | |
1659 &equalizerwin_save_entry, | |
1660 GTK_STOCK_OK, NULL, GTK_STOCK_CANCEL, | |
1661 G_CALLBACK | |
1662 (equalizerwin_save_ok), | |
1663 NULL, | |
1664 G_CALLBACK | |
1665 (equalizerwin_save_select)); | |
1666 else | |
1667 gtk_window_present(GTK_WINDOW(equalizerwin_save_window)); | |
1668 break; | |
1669 | |
1670 case EQUALIZER_PRESETS_SAVE_AUTOPRESET: | |
1671 { | |
1672 gchar *name; | |
1673 | |
1674 if (!equalizerwin_save_auto_window) | |
1675 equalizerwin_create_list_window(equalizer_auto_presets, | |
1676 _("Save auto-preset"), | |
1677 &equalizerwin_save_auto_window, | |
1678 GTK_SELECTION_SINGLE, | |
1679 &equalizerwin_save_auto_entry, | |
1680 GTK_STOCK_OK, | |
1681 NULL, | |
1682 GTK_STOCK_CANCEL, | |
1683 G_CALLBACK | |
1684 (equalizerwin_save_auto_ok), | |
1685 NULL, | |
1686 G_CALLBACK | |
1687 (equalizerwin_save_auto_select)); | |
1688 else | |
1689 gtk_window_present(GTK_WINDOW(equalizerwin_save_auto_window)); | |
1690 | |
1691 name = playlist_get_filename(playlist_get_active(), | |
1692 playlist_get_position(playlist_get_active())); | |
1693 | |
1694 if (name) { | |
1695 gtk_entry_set_text(GTK_ENTRY(equalizerwin_save_auto_entry), | |
1696 g_basename(name)); | |
1697 g_free(name); | |
1698 } | |
1699 break; | |
1700 } | |
1701 | |
1702 case EQUALIZER_PRESETS_SAVE_DEFAULT: | |
1703 equalizer_presets = | |
1704 equalizerwin_save_preset(equalizer_presets, "Default", | |
1705 "eq.preset"); | |
1706 break; | |
1707 | |
1708 case EQUALIZER_PRESETS_SAVE_TO_FILE: | |
1709 { | |
1710 gchar *songname; | |
1711 | |
1712 dialog = make_filebrowser(_("Save equalizer preset"), TRUE); | |
1713 g_signal_connect(dialog, "response", | |
1714 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1715 save_preset_file); | |
1716 | |
1717 songname = playlist_get_filename(playlist_get_active(), | |
1718 playlist_get_position(playlist_get_active())); | |
1719 if (songname) { | |
1720 gchar *eqname = g_strdup_printf("%s.%s", songname, | |
1721 cfg.eqpreset_extension); | |
1722 g_free(songname); | |
1723 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), | |
1724 eqname); | |
1725 g_free(eqname); | |
1726 } | |
1727 | |
1728 break; | |
1729 } | |
1730 | |
1731 case EQUALIZER_PRESETS_SAVE_TO_WINAMPFILE: | |
1732 dialog = make_filebrowser(_("Save equalizer preset"), TRUE); | |
1733 g_signal_connect(dialog, "response", | |
1734 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1735 save_winamp_file); | |
1736 break; | |
1737 | |
1738 case EQUALIZER_PRESETS_DELETE_PRESET: | |
1739 if (!equalizerwin_delete_window) | |
1740 equalizerwin_create_list_window(equalizer_presets, | |
1741 _("Delete preset"), | |
1742 &equalizerwin_delete_window, | |
1743 GTK_SELECTION_EXTENDED, NULL, | |
1744 GTK_STOCK_DELETE, | |
1745 NULL, | |
1746 GTK_STOCK_CLOSE, | |
1747 G_CALLBACK | |
1748 (equalizerwin_delete_delete), | |
1749 NULL, | |
1750 NULL); | |
1751 else | |
1752 gtk_window_present(GTK_WINDOW(equalizerwin_delete_window)); | |
1753 | |
1754 break; | |
1755 | |
1756 case EQUALIZER_PRESETS_DELETE_AUTOPRESET: | |
1757 if (!equalizerwin_delete_auto_window) | |
1758 equalizerwin_create_list_window(equalizer_auto_presets, | |
1759 _("Delete auto-preset"), | |
1760 &equalizerwin_delete_auto_window, | |
1761 GTK_SELECTION_EXTENDED, NULL, | |
1762 GTK_STOCK_DELETE, | |
1763 NULL, | |
1764 GTK_STOCK_CLOSE, | |
1765 G_CALLBACK | |
1766 (equalizerwin_delete_auto_delete), | |
1767 NULL, | |
1768 NULL); | |
1769 else | |
1770 gtk_window_present(GTK_WINDOW(equalizerwin_delete_auto_window)); | |
1771 | |
1772 break; | |
1773 } | |
1774 } | 1663 } |
1775 | 1664 |
1776 void | 1665 void |
1777 equalizerwin_load_auto_preset(const gchar * filename) | 1666 equalizerwin_load_auto_preset(const gchar * filename) |
1778 { | 1667 { |
1841 equalizerwin_get_band(gint band) | 1730 equalizerwin_get_band(gint band) |
1842 { | 1731 { |
1843 g_return_val_if_fail(band >= 0 && band < 10, 0); | 1732 g_return_val_if_fail(band >= 0 && band < 10, 0); |
1844 return eqslider_get_position(equalizerwin_bands[band]); | 1733 return eqslider_get_position(equalizerwin_bands[band]); |
1845 } | 1734 } |
1735 | |
1736 static void | |
1737 action_load_preset(void) | |
1738 { | |
1739 if (equalizerwin_load_window) { | |
1740 gtk_window_present(GTK_WINDOW(equalizerwin_load_window)); | |
1741 return; | |
1742 } | |
1743 | |
1744 equalizerwin_create_list_window(equalizer_presets, | |
1745 Q_("Load preset"), | |
1746 &equalizerwin_load_window, | |
1747 GTK_SELECTION_SINGLE, NULL, | |
1748 GTK_STOCK_OK, GTK_STOCK_CANCEL, | |
1749 G_CALLBACK(equalizerwin_load_ok), | |
1750 G_CALLBACK(equalizerwin_load_select)); | |
1751 } | |
1752 | |
1753 static void | |
1754 action_load_auto_preset(void) | |
1755 { | |
1756 if (equalizerwin_load_auto_window) { | |
1757 gtk_window_present(GTK_WINDOW(equalizerwin_load_auto_window)); | |
1758 return; | |
1759 } | |
1760 | |
1761 equalizerwin_create_list_window(equalizer_auto_presets, | |
1762 Q_("Load auto-preset"), | |
1763 &equalizerwin_load_auto_window, | |
1764 GTK_SELECTION_SINGLE, NULL, | |
1765 GTK_STOCK_OK, GTK_STOCK_CANCEL, | |
1766 G_CALLBACK(equalizerwin_load_auto_ok), | |
1767 G_CALLBACK(equalizerwin_load_auto_select)); | |
1768 } | |
1769 | |
1770 static void | |
1771 action_load_default_preset(void) | |
1772 { | |
1773 equalizerwin_load_preset(equalizer_presets, "Default"); | |
1774 } | |
1775 | |
1776 static void | |
1777 action_zero_preset(void) | |
1778 { | |
1779 gint i; | |
1780 | |
1781 eqslider_set_position(equalizerwin_preamp, 0); | |
1782 for (i = 0; i < 10; i++) | |
1783 eqslider_set_position(equalizerwin_bands[i], 0); | |
1784 | |
1785 equalizerwin_eq_changed(); | |
1786 } | |
1787 | |
1788 static void | |
1789 action_load_preset_file(void) | |
1790 { | |
1791 GtkWidget *dialog; | |
1792 | |
1793 dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); | |
1794 g_signal_connect(dialog , "response", | |
1795 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1796 load_preset_file); | |
1797 } | |
1798 | |
1799 static void | |
1800 action_load_preset_eqf(void) | |
1801 { | |
1802 GtkWidget *dialog; | |
1803 | |
1804 dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); | |
1805 g_signal_connect(dialog, "response", | |
1806 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1807 load_winamp_file); | |
1808 } | |
1809 | |
1810 static void | |
1811 action_import_winamp_presets(void) | |
1812 { | |
1813 GtkWidget *dialog; | |
1814 | |
1815 dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); | |
1816 g_signal_connect(dialog, "response", | |
1817 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1818 import_winamp_file); | |
1819 } | |
1820 | |
1821 static void | |
1822 action_save_preset(void) | |
1823 { | |
1824 if (equalizerwin_save_window) { | |
1825 gtk_window_present(GTK_WINDOW(equalizerwin_save_window)); | |
1826 return; | |
1827 } | |
1828 | |
1829 equalizerwin_create_list_window(equalizer_presets, | |
1830 Q_("Save preset"), | |
1831 &equalizerwin_save_window, | |
1832 GTK_SELECTION_SINGLE, | |
1833 &equalizerwin_save_entry, | |
1834 GTK_STOCK_OK, GTK_STOCK_CANCEL, | |
1835 G_CALLBACK(equalizerwin_save_ok), | |
1836 G_CALLBACK(equalizerwin_save_select)); | |
1837 } | |
1838 | |
1839 static void | |
1840 action_save_auto_preset(void) | |
1841 { | |
1842 gchar *name; | |
1843 Playlist *playlist = playlist_get_active(); | |
1844 | |
1845 if (equalizerwin_save_auto_window) | |
1846 equalizerwin_create_list_window(equalizer_auto_presets, | |
1847 Q_("Save auto-preset"), | |
1848 &equalizerwin_save_auto_window, | |
1849 GTK_SELECTION_SINGLE, | |
1850 &equalizerwin_save_auto_entry, | |
1851 GTK_STOCK_OK, | |
1852 GTK_STOCK_CANCEL, | |
1853 G_CALLBACK(equalizerwin_save_auto_ok), | |
1854 G_CALLBACK(equalizerwin_save_auto_select)); | |
1855 else | |
1856 gtk_window_present(GTK_WINDOW(equalizerwin_save_auto_window)); | |
1857 | |
1858 name = playlist_get_filename(playlist, playlist_get_position(playlist)); | |
1859 if (name) { | |
1860 gtk_entry_set_text(GTK_ENTRY(equalizerwin_save_auto_entry), | |
1861 g_basename(name)); | |
1862 g_free(name); | |
1863 } | |
1864 } | |
1865 | |
1866 static void | |
1867 action_save_default_preset(void) | |
1868 { | |
1869 equalizer_presets = equalizerwin_save_preset(equalizer_presets, "Default", | |
1870 "eq.preset"); | |
1871 } | |
1872 | |
1873 static void | |
1874 action_save_preset_file(void) | |
1875 { | |
1876 GtkWidget *dialog; | |
1877 gchar *songname; | |
1878 Playlist *playlist = playlist_get_active(); | |
1879 | |
1880 dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE); | |
1881 g_signal_connect(dialog, "response", | |
1882 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1883 save_preset_file); | |
1884 | |
1885 songname = playlist_get_filename(playlist, playlist_get_position(playlist)); | |
1886 if (songname) { | |
1887 gchar *eqname = g_strdup_printf("%s.%s", songname, | |
1888 cfg.eqpreset_extension); | |
1889 g_free(songname); | |
1890 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), | |
1891 eqname); | |
1892 g_free(eqname); | |
1893 } | |
1894 } | |
1895 | |
1896 static void | |
1897 action_save_preset_eqf(void) | |
1898 { | |
1899 GtkWidget *dialog; | |
1900 | |
1901 dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE); | |
1902 g_signal_connect(dialog, "response", | |
1903 G_CALLBACK(equalizerwin_file_chooser_on_response), | |
1904 save_winamp_file); | |
1905 } | |
1906 | |
1907 static void | |
1908 action_delete_preset(void) | |
1909 { | |
1910 if (equalizerwin_delete_window) { | |
1911 gtk_window_present(GTK_WINDOW(equalizerwin_delete_window)); | |
1912 return; | |
1913 } | |
1914 | |
1915 equalizerwin_create_list_window(equalizer_presets, | |
1916 Q_("Delete preset"), | |
1917 &equalizerwin_delete_window, | |
1918 GTK_SELECTION_EXTENDED, NULL, | |
1919 GTK_STOCK_DELETE, | |
1920 GTK_STOCK_CLOSE, | |
1921 G_CALLBACK(equalizerwin_delete_delete), | |
1922 NULL); | |
1923 } | |
1924 | |
1925 static void | |
1926 action_delete_auto_preset(void) | |
1927 { | |
1928 if (equalizerwin_delete_auto_window) { | |
1929 gtk_window_present(GTK_WINDOW(equalizerwin_delete_auto_window)); | |
1930 return; | |
1931 } | |
1932 | |
1933 equalizerwin_create_list_window(equalizer_auto_presets, | |
1934 Q_("Delete auto-preset"), | |
1935 &equalizerwin_delete_auto_window, | |
1936 GTK_SELECTION_EXTENDED, NULL, | |
1937 GTK_STOCK_DELETE, | |
1938 GTK_STOCK_CLOSE, | |
1939 G_CALLBACK(equalizerwin_delete_auto_delete), | |
1940 NULL); | |
1941 } |