--- src/gtk.c.orig Thu Jul 13 04:33:30 2000 +++ src/gtk.c Tue Feb 20 01:48:12 2001 @@ -1,5 +1,5 @@ /* gtk.c: GTK+ interface for aumix - * (c) 1998-2000 the authors (see AUTHORS file) + * (c) 1998-2001 the authors (see AUTHORS file) * * based on: * Freestyle DJ sample playing tool @@ -30,15 +30,75 @@ void SaveSettingsGTK(void) { - (void) SaveSettings(); + (void)SaveSettings(); } void LoadSettingsGTK(void) { - (void) LoadSettings(); + (void)LoadSettings(); } -void HideShowGTK(int device) +void HideShowNumbersGTK(void) +{ + int i; + if (valuesvisible) { + for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) { + if ((1 << i) & devmask && visible[i]) { + gtk_scale_set_draw_value(GTK_SCALE(levels[i]), FALSE); + if ((1 << i) & stereodevs) + gtk_scale_set_draw_value(GTK_SCALE(baltracks[i]), FALSE); + } + } + gtk_widget_hide(labelzero); + gtk_widget_hide(labelcent); + } else { + for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) { + if ((1 << i) & devmask && visible[i]) { + gtk_scale_set_draw_value(GTK_SCALE(levels[i]), TRUE); + if ((1 << i) & stereodevs) + gtk_scale_set_draw_value(GTK_SCALE(baltracks[i]), TRUE); + } + } + gtk_widget_show(labelzero); + gtk_widget_show(labelcent); + } + valuesvisible = !valuesvisible; +} + +void HideShowBalancesGTK(void) +{ + int i; + if (balancevisible) { + gtk_widget_hide(labelbalance); + gtk_widget_hide(labelleft); + gtk_widget_hide(labelright); + for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) { + if (visible[i] && (1 << i) & stereodevs) + gtk_widget_hide(baltracks[i]); + } + } else { + gtk_widget_show(labelbalance); + gtk_widget_show(labelleft); + gtk_widget_show(labelright); + for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) { + if (visible[i] && (1 << i) & stereodevs) + gtk_widget_show(baltracks[i]); + } + } + balancevisible = !balancevisible; +} + +void HideShowMenuGTK(GtkWidget * menu) +{ + if (menuvisible) { + gtk_widget_hide(GTK_WIDGET(menu)); + } else { + gtk_widget_show(GTK_WIDGET(menu)); + } + menuvisible = !menuvisible; +} + +void HideShowChannelGTK(int device) { if (visible[device]) { /* Hide the record/play button, if any. */ @@ -65,7 +125,7 @@ /* Show the name of the channel. */ gtk_widget_show(channellabel[device]); /* Show the balance track, if any. */ - if ((1 << device) & stereodevs) { + if ((1 << device) & stereodevs && balancevisible) { /* Show the balance track, if any. */ gtk_scale_set_draw_value(GTK_SCALE(baltracks[device]), TRUE); gtk_widget_show(baltracks[device]); @@ -98,19 +158,23 @@ GtkWidget *filemenu; GtkWidget *filemenuitems[5]; GtkWidget *viewmenu; - GtkWidget *viewmenuitems[SOUND_MIXER_NRDEVICES]; + GtkWidget *viewmenuitems[SOUND_MIXER_NRDEVICES + 3]; + GtkWidget *separator; GtkWidget *mutemenu; GtkWidget *muteallitem; GtkWidget *menubar; GtkWidget *menubarlabel; GtkAccelGroup *accel; - GtkWidget *label; + GtkWidget *labelrec; + GtkWidget *labellevel; GtkWidget *control_box; int balset, max, y, tmp, left, right; long int i; GtkSignalFunc filefuncs[] = {&LoadSettingsGTK, &SaveSettingsGTK, &LoadDialog, &SaveDialog, &CloseScreenGTK}; char *filemenutext[] = {LOCAL_TEXT_NOOP("Load"), LOCAL_TEXT_NOOP("Save"), LOCAL_TEXT_NOOP("Load From"), LOCAL_TEXT_NOOP("Save To"), LOCAL_TEXT_NOOP("Quit")}; char *fileacceltext[5] = {LOCAL_TEXT_NOOP("l"), LOCAL_TEXT_NOOP("s"), LOCAL_TEXT_NOOP("f"), LOCAL_TEXT_NOOP("t"), LOCAL_TEXT_NOOP("q")}; + char *viewmenutext[] = {LOCAL_TEXT_NOOP("Menu"), LOCAL_TEXT_NOOP("Balance"), LOCAL_TEXT_NOOP("Numbers")}; + char *viewacceltext[] = {LOCAL_TEXT_NOOP("v"), LOCAL_TEXT_NOOP("b"), LOCAL_TEXT_NOOP("n")}; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "aumix"); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); @@ -142,6 +206,27 @@ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(viewmenuitems[i]), TRUE); } } + separator = gtk_menu_item_new(); + gtk_widget_show(separator); + gtk_menu_append(GTK_MENU(viewmenu), separator); + menuvisible = TRUE; + balancevisible = TRUE; + valuesvisible = TRUE; + viewmenuitems[SOUND_MIXER_NRDEVICES] = gtk_check_menu_item_new_with_label(LOCAL_TEXT("Menu")); + viewmenuitems[SOUND_MIXER_NRDEVICES + 1] = gtk_check_menu_item_new_with_label(LOCAL_TEXT("Balance")); + viewmenuitems[SOUND_MIXER_NRDEVICES + 2] = gtk_check_menu_item_new_with_label(LOCAL_TEXT("Numbers")); + gtk_menu_append(GTK_MENU(viewmenu), viewmenuitems[SOUND_MIXER_NRDEVICES]); + gtk_menu_append(GTK_MENU(viewmenu), viewmenuitems[SOUND_MIXER_NRDEVICES + 1]); + gtk_menu_append(GTK_MENU(viewmenu), viewmenuitems[SOUND_MIXER_NRDEVICES + 2]); + gtk_widget_add_accelerator(viewmenuitems[SOUND_MIXER_NRDEVICES], "activate", accel, *LOCAL_TEXT("v"), 0, GTK_ACCEL_VISIBLE); + gtk_widget_add_accelerator(viewmenuitems[SOUND_MIXER_NRDEVICES + 1], "activate", accel, *LOCAL_TEXT("b"), 0, GTK_ACCEL_VISIBLE); + gtk_widget_add_accelerator(viewmenuitems[SOUND_MIXER_NRDEVICES + 2], "activate", accel, *LOCAL_TEXT("n"), 0, GTK_ACCEL_VISIBLE); + gtk_widget_show(viewmenuitems[SOUND_MIXER_NRDEVICES]); + gtk_widget_show(viewmenuitems[SOUND_MIXER_NRDEVICES + 1]); + gtk_widget_show(viewmenuitems[SOUND_MIXER_NRDEVICES + 2]); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(viewmenuitems[SOUND_MIXER_NRDEVICES]), TRUE); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(viewmenuitems[SOUND_MIXER_NRDEVICES + 1]), TRUE); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(viewmenuitems[SOUND_MIXER_NRDEVICES + 2]), TRUE); muteallitem = gtk_check_menu_item_new_with_label(LOCAL_TEXT("Mute All")); gtk_menu_append(GTK_MENU(mutemenu), muteallitem); /* XXX The "m" needs to get translated. */ @@ -207,24 +292,27 @@ } lvlcallback[i] = gtk_signal_connect_object(GTK_OBJECT(adjustment[i]), "value_changed", GTK_SIGNAL_FUNC(AdjustLevelGTK), (gpointer) i); levels[i] = gtk_hscale_new(GTK_ADJUSTMENT(adjustment[i])); - gtk_signal_connect_object(GTK_OBJECT(viewmenuitems[i]), "activate", GTK_SIGNAL_FUNC(HideShowGTK), (gpointer) i); + gtk_signal_connect_object(GTK_OBJECT(viewmenuitems[i]), "activate", GTK_SIGNAL_FUNC(HideShowChannelGTK), (gpointer) i); gtk_scale_set_value_pos(GTK_SCALE(levels[i]), GTK_POS_LEFT); gtk_scale_set_digits(GTK_SCALE(levels[i]), 0); gtk_widget_show(GTK_WIDGET(levels[i])); gtk_range_set_update_policy(GTK_RANGE(levels[i]), GTK_UPDATE_CONTINUOUS); } } + gtk_signal_connect_object(GTK_OBJECT(viewmenuitems[SOUND_MIXER_NRDEVICES]), "activate", GTK_SIGNAL_FUNC(HideShowMenuGTK), GTK_OBJECT(menubar)); + gtk_signal_connect_object(GTK_OBJECT(viewmenuitems[SOUND_MIXER_NRDEVICES + 1]), "activate", GTK_SIGNAL_FUNC(HideShowBalancesGTK), 0); + gtk_signal_connect_object(GTK_OBJECT(viewmenuitems[SOUND_MIXER_NRDEVICES + 2]), "activate", GTK_SIGNAL_FUNC(HideShowNumbersGTK), 0); control_box = gtk_hbox_new(FALSE, BORDER); gtk_widget_show(control_box); - label = gtk_label_new(LOCAL_TEXT("Rec")); - gtk_widget_show(label); - gtk_table_attach_defaults(GTK_TABLE(maintable), label, 0, 1, 0, 1); - label = gtk_label_new(LOCAL_TEXT("Level")); - gtk_widget_show(label); - gtk_table_attach_defaults(GTK_TABLE(maintable), label, 2, 3, 0, 1); - label = gtk_label_new(LOCAL_TEXT("Balance")); - gtk_widget_show(label); - gtk_table_attach_defaults(GTK_TABLE(maintable), label, 6, 7, 0, 1); + labelrec = gtk_label_new(LOCAL_TEXT("Rec")); + gtk_widget_show(labelrec); + gtk_table_attach_defaults(GTK_TABLE(maintable), labelrec, 0, 1, 0, 1); + labellevel = gtk_label_new(LOCAL_TEXT("Level")); + gtk_widget_show(labellevel); + gtk_table_attach_defaults(GTK_TABLE(maintable), labellevel, 2, 3, 0, 1); + labelbalance = gtk_label_new(LOCAL_TEXT("Balance")); + gtk_widget_show(labelbalance); + gtk_table_attach_defaults(GTK_TABLE(maintable), labelbalance, 6, 7, 0, 1); y = 0; for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) { if ((1 << i) & devmask) { @@ -239,18 +327,18 @@ y++; } } - label = gtk_label_new(LOCAL_TEXT("L")); - gtk_widget_show(label); - gtk_table_attach_defaults(GTK_TABLE(maintable), label, 5, 6, y + 1, y + 2); - label = gtk_label_new(LOCAL_TEXT("R")); - gtk_widget_show(label); - gtk_table_attach_defaults(GTK_TABLE(maintable), label, 7, 8, y + 1, y + 2); - label = gtk_label_new(LOCAL_TEXT("0")); - gtk_widget_show(label); - gtk_table_attach_defaults(GTK_TABLE(maintable), label, 1, 2, y + 1, y + 2); - label = gtk_label_new(LOCAL_TEXT("100")); - gtk_widget_show(label); - gtk_table_attach_defaults(GTK_TABLE(maintable), label, 3, 4, y + 1, y + 2); + labelleft = gtk_label_new(LOCAL_TEXT("L")); + gtk_widget_show(labelleft); + gtk_table_attach_defaults(GTK_TABLE(maintable), labelleft, 5, 6, y + 1, y + 2); + labelright = gtk_label_new(LOCAL_TEXT("R")); + gtk_widget_show(labelright); + gtk_table_attach_defaults(GTK_TABLE(maintable), labelright, 7, 8, y + 1, y + 2); + labelzero = gtk_label_new(LOCAL_TEXT("0")); + gtk_widget_show(labelzero); + gtk_table_attach_defaults(GTK_TABLE(maintable), labelzero, 1, 2, y + 1, y + 2); + labelcent = gtk_label_new(LOCAL_TEXT("100")); + gtk_widget_show(labelcent); + gtk_table_attach_defaults(GTK_TABLE(maintable), labelcent, 3, 4, y + 1, y + 2); gtk_box_pack_start(GTK_BOX(mainbox), control_box, TRUE, TRUE, 0); gtk_widget_realize(window); icon_pixmap = gdk_pixmap_create_from_xpm_d(window->window, &bitmap, &style->bg[GTK_STATE_NORMAL], aumix_xpm); --- src/gtk.h.orig Wed Apr 12 08:02:04 2000 +++ src/gtk.h Tue Feb 20 01:48:30 2001 @@ -20,9 +20,13 @@ gint balcallback[SOUND_MIXER_NRDEVICES]; gint lvlcallback[SOUND_MIXER_NRDEVICES]; gint rpcallback[SOUND_MIXER_NRDEVICES]; -int visible[SOUND_MIXER_NRDEVICES]; +gboolean menuvisible, balancevisible, valuesvisible, visible[SOUND_MIXER_NRDEVICES]; +GtkWidget *labelzero, *labelcent, *labelleft, *labelright, *labelbalance; void WakeUpGTK(void); -void HideShowGTK(int device); +void HideShowBalancesGTK(void); +void HideShowNumbersGTK(void); +void HideShowMenuGTK(GtkWidget * menu); +void HideShowChannelGTK(int device); void SaveSettingsGTK(void); void LoadSettingsGTK(void); void AdjustLevelGTK(int device);