From 0ce4d14906ada8d272e365c82cfa2b5eafc82217 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 4 Sep 2001 10:39:34 +0000 Subject: [PATCH] Added value label for analog volume --- envy24control/envy24control.c | 24 ++++++++++++++++++++---- envy24control/envy24control.h | 2 ++ envy24control/volume.c | 22 ++++++++++++++++------ 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/envy24control/envy24control.c b/envy24control/envy24control.c index 8f524d8..bc639fc 100644 --- a/envy24control/envy24control.c +++ b/envy24control/envy24control.c @@ -78,6 +78,8 @@ GtkWidget *hw_spdif_input_optical_radio; GtkObject *av_dac_volume_adj[10]; GtkObject *av_adc_volume_adj[10]; +GtkLabel *av_dac_volume_label[10]; +GtkLabel *av_adc_volume_label[10]; GtkWidget *av_dac_sense_radio[10][4]; GtkWidget *av_adc_sense_radio[10][4]; @@ -1061,12 +1063,19 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) gtk_scale_set_draw_value(GTK_SCALE(vscale), FALSE); gtk_widget_show(vscale); gtk_fixed_put(GTK_FIXED(fixed1), vscale, 2, 2); - gtk_widget_set_usize(vscale, 66, 200); - + gtk_widget_set_usize(vscale, 66, 180); gtk_scale_set_value_pos(GTK_SCALE(vscale), GTK_POS_BOTTOM); gtk_scale_set_digits(GTK_SCALE(vscale), 0); gtk_signal_connect(GTK_OBJECT(adj), "value_changed", GTK_SIGNAL_FUNC(dac_volume_adjust), (gpointer)(i)); + + label = gtk_label_new("100 (-000dB)"); + av_dac_volume_label[i] = (GtkLabel *)label; + gtk_widget_show(label); + gtk_fixed_put(GTK_FIXED(fixed1), label, 0, 182); + gtk_widget_set_uposition(label, 0, 182); + gtk_widget_set_usize(label, 66, 16); + if (i >= envy_dac_senses()) continue; group = NULL; @@ -1103,12 +1112,19 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) gtk_scale_set_draw_value(GTK_SCALE(vscale), FALSE); gtk_widget_show(vscale); gtk_fixed_put(GTK_FIXED(fixed1), vscale, 2, 2); - gtk_widget_set_usize(vscale, 66, 200); - + gtk_widget_set_usize(vscale, 66, 180); gtk_scale_set_value_pos(GTK_SCALE(vscale), GTK_POS_BOTTOM); gtk_scale_set_digits(GTK_SCALE(vscale), 0); gtk_signal_connect(GTK_OBJECT(adj), "value_changed", GTK_SIGNAL_FUNC(adc_volume_adjust), (gpointer)(i)); + + label = gtk_label_new("100 (-000dB)"); + av_adc_volume_label[i] = (GtkLabel *)label; + gtk_widget_show(label); + gtk_fixed_put(GTK_FIXED(fixed1), label, 0, 182); + gtk_widget_set_uposition(label, 0, 182); + gtk_widget_set_usize(label, 66, 16); + if (i >= envy_adc_senses()) continue; group = NULL; diff --git a/envy24control/envy24control.h b/envy24control/envy24control.h index 0487cb8..5d08342 100644 --- a/envy24control/envy24control.h +++ b/envy24control/envy24control.h @@ -87,6 +87,8 @@ extern GtkWidget *hw_spdif_input_optical_radio; extern GtkObject *av_dac_volume_adj[]; extern GtkObject *av_adc_volume_adj[]; +extern GtkLabel *av_dac_volume_label[]; +extern GtkLabel *av_adc_volume_label[]; extern GtkWidget *av_dac_sense_radio[][4]; extern GtkWidget *av_adc_sense_radio[][4]; diff --git a/envy24control/volume.c b/envy24control/volume.c index 5a3e251..5cb746e 100644 --- a/envy24control/volume.c +++ b/envy24control/volume.c @@ -162,13 +162,16 @@ void dac_volume_adjust(GtkAdjustment *adj, gpointer data) { int idx = (int)data; snd_ctl_elem_value_t *val; - int err; + int err, ival = -(int)adj->value; + char text[16]; snd_ctl_elem_value_alloca(&val); snd_ctl_elem_value_set_interface(val, SND_CTL_ELEM_IFACE_MIXER); snd_ctl_elem_value_set_name(val, DAC_VOLUME_NAME); snd_ctl_elem_value_set_index(val, idx); - snd_ctl_elem_value_set_integer(val, 0, -(int)adj->value); + snd_ctl_elem_value_set_integer(val, 0, ival); + sprintf(text, "%03i %s", ival, ival == 127 ? "consum" : (ival == 111 ? "-10dB" : "")); + gtk_label_set_text(av_dac_volume_label[idx], text); if ((err = snd_ctl_elem_write(ctl, val)) < 0) g_print("Unable to write dac volume: %s\n", snd_strerror(err)); } @@ -177,13 +180,16 @@ void adc_volume_adjust(GtkAdjustment *adj, gpointer data) { int idx = (int)data; snd_ctl_elem_value_t *val; - int err; + int err, ival = -(int)adj->value; + char text[16]; snd_ctl_elem_value_alloca(&val); snd_ctl_elem_value_set_interface(val, SND_CTL_ELEM_IFACE_MIXER); snd_ctl_elem_value_set_name(val, ADC_VOLUME_NAME); snd_ctl_elem_value_set_index(val, idx); - snd_ctl_elem_value_set_integer(val, 0, -(int)adj->value); + snd_ctl_elem_value_set_integer(val, 0, ival); + sprintf(text, "%03i %s", ival, ival == 127 ? "consum" : (ival == 111 ? "-10dB" : "")); + gtk_label_set_text(av_adc_volume_label[idx], text); if ((err = snd_ctl_elem_write(ctl, val)) < 0) g_print("Unable to write adc volume: %s\n", snd_strerror(err)); } @@ -292,10 +298,14 @@ void analog_volume_postinit(void) { int i; - for (i = 0; i < dac_volumes; i++) + for (i = 0; i < dac_volumes; i++) { dac_volume_update(i); - for (i = 0; i < adc_volumes; i++) + dac_volume_adjust((GtkAdjustment *)av_dac_volume_adj[i], (gpointer)i); + } + for (i = 0; i < adc_volumes; i++) { adc_volume_update(i); + adc_volume_adjust((GtkAdjustment *)av_adc_volume_adj[i], (gpointer)i); + } for (i = 0; i < dac_senses; i++) dac_sense_update(i); for (i = 0; i < adc_senses; i++) -- 2.47.1