Mercurial > audlegacy-plugins
diff src/echo_plugin/gui.c @ 127:46730e83b1e2 trunk
[svn] - echo plugin support by Christian Birchinger <joker -at- gentoo.org>
author | nenolod |
---|---|
date | Thu, 26 Oct 2006 12:41:45 -0700 |
parents | |
children | d124034ebea3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/echo_plugin/gui.c Thu Oct 26 12:41:45 2006 -0700 @@ -0,0 +1,158 @@ +#include <gtk/gtk.h> +#include <glib/gi18n.h> +#include "audacious/util.h" +#include "audacious/configdb.h" +#include "echo.h" + +static const char *echo_about_text = +N_("Echo Plugin\n" + "By Johan Levin 1999.\n\n" + "Surround echo by Carl van Schaik 1999"); + +static GtkWidget *conf_dialog = NULL, *surround_btn; +static GtkObject *echo_delay_adj, *echo_feedback_adj, *echo_volume_adj; + +void echo_about(void) +{ + static GtkWidget *echo_about_dialog = NULL; + + if (echo_about_dialog != NULL) + return; + + echo_about_dialog = xmms_show_message(_("About Echo Plugin"), + _(echo_about_text), _("Ok"), + FALSE, NULL, NULL); + gtk_signal_connect(GTK_OBJECT(echo_about_dialog), "destroy", + GTK_SIGNAL_FUNC(gtk_widget_destroyed), + &echo_about_dialog); +} + +static void apply_changes(void) +{ + ConfigDb *cfg; + echo_delay = GTK_ADJUSTMENT(echo_delay_adj)->value; + echo_feedback = GTK_ADJUSTMENT(echo_feedback_adj)->value; + echo_volume = GTK_ADJUSTMENT(echo_volume_adj)->value; + echo_surround_enable = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surround_btn)); + + cfg = bmp_cfg_db_open(); + bmp_cfg_db_set_int(cfg, "echo_plugin", "delay", echo_delay); + bmp_cfg_db_set_int(cfg, "echo_plugin", "feedback", echo_feedback); + bmp_cfg_db_set_int(cfg, "echo_plugin", "volume", echo_volume); + bmp_cfg_db_set_bool(cfg, "echo_plugin", "enable_surround", echo_surround_enable); + bmp_cfg_db_close(cfg); +} + +static void conf_ok_cb(GtkButton * button, gpointer data) +{ + apply_changes(); + gtk_widget_destroy(GTK_WIDGET(conf_dialog)); +} + +static void conf_cancel_cb(GtkButton * button, gpointer data) +{ + gtk_widget_destroy(GTK_WIDGET(conf_dialog)); +} + +static void conf_apply_cb(GtkButton * button, gpointer data) +{ + apply_changes(); +} + +void echo_configure(void) +{ + GtkWidget *button, *table, *label, *hscale, *bbox; + + if (conf_dialog != NULL) + return; + + conf_dialog = gtk_dialog_new(); + gtk_signal_connect(GTK_OBJECT(conf_dialog), "destroy", + GTK_SIGNAL_FUNC(gtk_widget_destroyed), &conf_dialog); + gtk_window_set_title(GTK_WINDOW(conf_dialog), _("Configure Echo")); + + echo_delay_adj = gtk_adjustment_new(echo_delay, 0, MAX_DELAY + 100, 10, 100, 100); + echo_feedback_adj = gtk_adjustment_new(echo_feedback, 0, 100 + 10, 2, 10, 10); + echo_volume_adj = gtk_adjustment_new(echo_volume, 0, 100 + 10, 2, 10, 10); + + table = gtk_table_new(2, 3, FALSE); + gtk_table_set_col_spacings(GTK_TABLE(table), 5); + gtk_container_set_border_width(GTK_CONTAINER(table), 5); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(conf_dialog)->vbox), table, + TRUE, TRUE, 5); + gtk_widget_show(table); + + label = gtk_label_new(_("Delay: (ms)")); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(label); + + label = gtk_label_new(_("Feedback: (%)")); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(label); + + label = gtk_label_new(_("Volume: (%)")); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show(label); + + hscale = gtk_hscale_new(GTK_ADJUSTMENT(echo_delay_adj)); + gtk_widget_set_usize(hscale, 400, 35); + gtk_scale_set_digits(GTK_SCALE(hscale), 0); + gtk_table_attach_defaults(GTK_TABLE(table), hscale, 1, 2, 0, 1); + gtk_widget_show(hscale); + + hscale = gtk_hscale_new(GTK_ADJUSTMENT(echo_feedback_adj)); + gtk_widget_set_usize(hscale, 400, 35); + gtk_scale_set_digits(GTK_SCALE(hscale), 0); + gtk_table_attach_defaults(GTK_TABLE(table), hscale, 1, 2, 1, 2); + gtk_widget_show(hscale); + + hscale = gtk_hscale_new(GTK_ADJUSTMENT(echo_volume_adj)); + gtk_widget_set_usize(hscale, 400, 35); + gtk_scale_set_digits(GTK_SCALE(hscale), 0); + gtk_table_attach_defaults(GTK_TABLE(table), hscale, 1, 2, 2, 3); + gtk_widget_show(hscale); + + surround_btn = gtk_check_button_new_with_label(_("Surround echo")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(surround_btn), + echo_surround_enable); + gtk_widget_show(surround_btn); + + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(conf_dialog)->vbox), surround_btn, + TRUE, TRUE, 5); + + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX((GTK_DIALOG(conf_dialog)->action_area)), + bbox, TRUE, TRUE, 0); + + + button = gtk_button_new_with_label(_("Ok")); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + GTK_SIGNAL_FUNC(conf_ok_cb), NULL); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + button = gtk_button_new_with_label(_("Cancel")); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + GTK_SIGNAL_FUNC(conf_cancel_cb), NULL); + gtk_widget_show(button); + + button = gtk_button_new_with_label(_("Apply")); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + GTK_SIGNAL_FUNC(conf_apply_cb), NULL); + gtk_widget_show(button); + gtk_widget_show(bbox); + + gtk_widget_show(conf_dialog); +}