75
81
gconf_client_set_string(client, "/apps/gnomeradio/device", settings.device, NULL);
76
82
gconf_client_set_string(client, "/apps/gnomeradio/driver", settings.driver, NULL);
77
83
gconf_client_set_string(client, "/apps/gnomeradio/mixer", settings.mixer, NULL);
84
gconf_client_set_bool(client, "/apps/gnomeradio/audio-loopback", settings.audio_loopback , NULL);
78
85
gconf_client_set_bool(client, "/apps/gnomeradio/mute-on-exit", settings.mute_on_exit, NULL);
79
86
/*gconf_client_set_float(client, "/apps/gnomeradio/volume", volume->value, NULL);*/
80
87
gconf_client_set_float(client, "/apps/gnomeradio/last-freq", gtk_adjustment_get_value(adj)/STEPS, NULL);
131
138
/* Load general settings */
132
settings.device = gconf_client_get_string(client, "/apps/gnomeradio/device" , NULL);
139
settings.device = gconf_client_get_string(client, "/apps/gnomeradio/device", NULL);
133
140
if (!settings.device)
134
141
settings.device = g_strdup("auto");
135
settings.driver = gconf_client_get_string(client, "/apps/gnomeradio/driver" , NULL);
142
settings.driver = gconf_client_get_string(client, "/apps/gnomeradio/driver", NULL);
136
143
if (!settings.driver)
137
144
settings.driver = g_strdup("any");
138
145
settings.mixer = gconf_client_get_string(client, "/apps/gnomeradio/mixer", NULL);
139
146
if (!settings.mixer)
140
147
settings.mixer = g_strdup("hw:0/Line");
148
settings.audio_loopback = gconf_client_get_bool(client, "/apps/gnomeradio/audio-loopback", NULL);
141
149
settings.mute_on_exit = gconf_client_get_bool(client, "/apps/gnomeradio/mute-on-exit", NULL);
142
150
/*volume->value = gconf_client_get_float(client, "/apps/gnomeradio/volume", NULL);*/
143
151
freq = gconf_client_get_float(client, "/apps/gnomeradio/last-freq", NULL);
203
211
static void mute_on_exit_toggled_cb(GtkWidget* widget, gpointer data)
205
213
settings.mute_on_exit = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mute_on_exit));
216
static void audio_loopback_set_visible (gboolean visible)
218
gtk_widget_set_visible (audio_label, visible);
219
gtk_widget_set_visible (enabled, visible);
220
gtk_widget_set_visible (disabled, visible);
223
static void audio_loopback_toggled_cb (GtkWidget* widget, gpointer data)
225
settings.audio_loopback = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (enabled));
227
if (settings.audio_loopback)
228
start_radio(TRUE, data);
208
233
static gboolean device_entry_activate_cb(GtkWidget *widget, gpointer data)
515
537
if (settings.presets == NULL) mom_ps = -1;
516
538
preset_combo_set_item(mom_ps);
518
menuitems = gtk_container_get_children(GTK_CONTAINER(tray_menu));
519
g_assert(*row < g_list_length(menuitems));
520
menuitem = g_list_nth_data(menuitems, *row);
521
gtk_widget_destroy(menuitem);
540
tray_menu_remove_preset (*row);
524
543
gtk_tree_path_prev(path);
525
544
gtk_tree_view_set_cursor(GTK_TREE_VIEW(list_view), path, NULL, FALSE);
526
545
gtk_tree_path_free(path);
528
if (settings.presets == NULL) {
547
if (settings.presets == NULL)
529
548
gtk_widget_set_sensitive(save_button, FALSE);
531
550
gtk_widget_set_sensitive(save_button, TRUE);
535
553
static void move_up_button_clicked_cb(GtkWidget * widget, gpointer data)
573
589
preset_combo_set_item(mom_ps);
575
menuitems = gtk_container_get_children(GTK_CONTAINER(tray_menu));
576
g_assert(mom_ps < g_list_length(menuitems));
577
menuitem = g_list_nth_data(menuitems, mom_ps);
578
gtk_widget_destroy(menuitem);
579
menuitem = gtk_menu_item_new_with_label(ps->title);
581
gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, *row + 1);
582
g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, GINT_TO_POINTER (mom_ps));
583
gtk_widget_show(menuitem);
591
tray_menu_move_up_preset (ps, mom_ps);
586
594
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(list_view), path, NULL, FALSE, 0, 0);
587
595
gtk_tree_path_free(path);
590
598
gtk_widget_set_sensitive(move_up_button, FALSE);
592
600
gtk_widget_set_sensitive(move_up_button, TRUE);
594
602
gtk_widget_set_sensitive(move_down_button, TRUE);
639
645
preset_combo_set_item(mom_ps);
641
menuitems = gtk_container_get_children(GTK_CONTAINER(tray_menu));
642
g_assert(mom_ps < g_list_length(menuitems));
643
menuitem = g_list_nth_data(menuitems, mom_ps);
644
gtk_widget_destroy(menuitem);
645
menuitem = gtk_menu_item_new_with_label(ps->title);
647
gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, *row - 1);
648
g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, GINT_TO_POINTER (mom_ps));
649
gtk_widget_show(menuitem);
647
tray_menu_move_down_preset (ps, mom_ps);
652
650
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(list_view), path, NULL, FALSE, 0, 0);
653
651
gtk_tree_path_free(path);
655
if (pos + 2 == gtk_tree_model_iter_n_children(GTK_TREE_MODEL(list_store), NULL)) {
653
if (pos + 2 == gtk_tree_model_iter_n_children(GTK_TREE_MODEL(list_store), NULL))
656
654
gtk_widget_set_sensitive(move_down_button, FALSE);
658
656
gtk_widget_set_sensitive(move_down_button, TRUE);
660
658
gtk_widget_set_sensitive(move_up_button, TRUE);
663
661
static void destination_button_clicked_cb(GtkWidget *button, gpointer data)
665
663
if (rec_settings.destination)
667
664
g_free(rec_settings.destination);
669
666
rec_settings.destination = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(button));
737
730
preset_combo_set_item(mom_ps);
739
menuitems = gtk_container_get_children(GTK_CONTAINER(tray_menu));
740
g_assert(mom_ps < g_list_length(menuitems));
741
menuitem = g_list_nth_data(menuitems, mom_ps);
742
gtk_widget_destroy(menuitem);
743
menuitem = gtk_menu_item_new_with_label(ps->title);
745
gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, *row);
746
g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, GINT_TO_POINTER (mom_ps));
747
gtk_widget_show(menuitem);
732
tray_menu_update_preset (ps, mom_ps);
750
735
gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path);
871
855
gtk_widget_grab_focus(list_view);
858
void list_view_switch_to_preset (gint active)
860
GtkTreePath *path = NULL;
866
if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(list_store), &iter, NULL, active))
869
path = gtk_tree_model_get_path(GTK_TREE_MODEL(list_store), &iter);
871
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW (list_view), path, NULL, FALSE, 0, 0);
872
gtk_tree_view_set_cursor(GTK_TREE_VIEW (list_view), path, NULL, FALSE );
873
gtk_tree_path_free(path);
875
gtk_widget_grab_focus(list_view);
874
878
static void free_presets_list (gpointer data)
876
880
preset *ps = (preset *) data;
1110
1106
gtk_adjustment_set_value(v_scb, gtk_adjustment_get_upper(v_scb));
1112
1108
if (main_visible) {
1113
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(preset_combo), title);
1109
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(preset_combo), ps->title);
1114
1110
mom_ps = g_list_length(settings.presets) - 1;
1115
1111
preset_combo_set_item(mom_ps);
1117
menuitem = gtk_menu_item_new_with_label(title);
1119
gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, mom_ps);
1120
g_signal_connect(G_OBJECT(menuitem), "activate",
1121
(GCallback)preset_menuitem_activate_cb,
1122
GINT_TO_POINTER (mom_ps));
1123
gtk_widget_show(menuitem);
1113
tray_menu_add_preset (ps, mom_ps);
1126
1116
/* free the data */
1277
1267
gtk_entry_set_text(GTK_ENTRY(mixer_entry), settings.mixer);
1278
1268
gtk_grid_attach(GTK_GRID(grid), mixer_entry, 1, 2, 1, 1);
1270
audio_label = gtk_label_new (_("Audio Loopback mode"));
1271
gtk_widget_set_no_show_all (audio_label, TRUE);
1272
gtk_widget_set_halign (audio_label, GTK_ALIGN_START);
1273
gtk_widget_set_margin_left (audio_label, 10);
1274
gtk_grid_attach (GTK_GRID (grid), audio_label, 0, 3, 1, 1);
1276
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1278
enabled = gtk_radio_button_new_with_label (NULL, _("Enabled"));
1279
gtk_widget_set_no_show_all (enabled, TRUE);
1280
disabled = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (enabled), _("Disabled"));
1281
gtk_widget_set_no_show_all (disabled, TRUE);
1282
gtk_box_pack_start (GTK_BOX (box), enabled, TRUE, TRUE, 0);
1283
gtk_box_pack_start (GTK_BOX (box), disabled, TRUE, TRUE, 0);
1284
gtk_grid_attach(GTK_GRID(grid), box, 1, 3, 1, 1);
1286
/* Enabled from radio button or else from command line */
1287
if (settings.audio_loopback || alsa_loopback)
1288
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enabled), TRUE);
1290
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (disabled), TRUE);
1292
if (settings.audio_loopback)
1294
audio_loopback_set_visible (TRUE);
1296
audio_loopback_set_visible (FALSE);
1298
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (enabled)) ||
1299
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (disabled)))
1300
audio_loopback_set_visible (radio_is_init());
1280
1302
mute_on_exit = gtk_check_button_new_with_label(_("Mute on exit"));
1281
1303
gtk_widget_set_margin_left (mute_on_exit, 10);
1282
1304
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mute_on_exit), settings.mute_on_exit);
1283
gtk_grid_attach(GTK_GRID(grid), mute_on_exit, 0, 3, 2, 1);
1305
gtk_grid_attach(GTK_GRID(grid), mute_on_exit, 0, 4, 2, 1);
1285
1307
g_signal_connect(G_OBJECT(device_entry), "hide", G_CALLBACK(device_entry_activate_cb), app);
1286
1308
g_signal_connect(G_OBJECT(device_entry), "activate", G_CALLBACK(device_entry_activate_cb), NULL);
1287
1309
g_signal_connect(G_OBJECT(device_entry), "changed", G_CALLBACK(device_entry_auto_activate_cb), NULL);
1288
1310
g_signal_connect(G_OBJECT(mixer_entry), "hide", G_CALLBACK(mixer_entry_activate_cb), app);
1289
1311
g_signal_connect(G_OBJECT(mixer_entry), "activate", G_CALLBACK(mixer_entry_activate_cb), NULL);
1312
g_signal_connect(G_OBJECT(enabled), "toggled", G_CALLBACK(audio_loopback_toggled_cb), NULL);
1290
1313
g_signal_connect(G_OBJECT(mute_on_exit), "toggled", G_CALLBACK(mute_on_exit_toggled_cb), NULL);
1292
1315
gtk_widget_set_tooltip_text(device_entry, _("The radio device to use (e.g. /dev/radio0)"));
1293
1316
gtk_widget_set_tooltip_text(mixer_entry, _("The mixer device and channel to use (e.g. hw:0/Line)"));
1317
gtk_widget_set_tooltip_text(disabled, _("Stop audio streaming between the radio device and the audio output device"));
1318
gtk_widget_set_tooltip_text(enabled, _("Start an audio streaming between the radio device and the audio output device"));
1294
1319
gtk_widget_set_tooltip_text(mute_on_exit, _("Mute radio device on exit"));
1296
1321
/* The presets part */
1299
1324
markup = g_strdup_printf ("<span weight=\"bold\">%s</span>", _("Presets"));
1300
1325
gtk_label_set_markup (GTK_LABEL (label), markup);
1301
1326
g_free (markup);
1302
gtk_grid_attach(GTK_GRID(grid), label, 0, 4, 1, 1);
1327
gtk_grid_attach(GTK_GRID(grid), label, 0, 5, 1, 1);
1304
1329
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
1305
1330
gtk_widget_set_margin_left (scrolled_window, 10);
1426
1451
gtk_box_pack_end(GTK_BOX(button_box), save_button, FALSE, FALSE, 0);
1427
1452
gtk_box_pack_end(GTK_BOX(button_box), open_button, FALSE, FALSE, 0);
1429
gtk_grid_attach(GTK_GRID(grid), button_box, 1, 6, 1, 1);
1454
gtk_grid_attach(GTK_GRID(grid), button_box, 1, 7, 1, 1);
1431
1456
/* The record settings part */
1432
1457
label = gtk_label_new (NULL);
1434
1459
markup = g_strdup_printf ("<span weight=\"bold\">%s</span>", _("Record Settings"));
1435
1460
gtk_label_set_markup (GTK_LABEL (label), markup);
1436
1461
g_free (markup);
1437
gtk_grid_attach (GTK_GRID (grid), label, 0, 7, 1, 1);
1462
gtk_grid_attach (GTK_GRID (grid), label, 0, 8, 1, 1);
1439
1464
label = gtk_label_new (_("Destination:"));
1440
1465
gtk_widget_set_halign (label, GTK_ALIGN_START);
1441
1466
gtk_widget_set_margin_left (label, 10);
1442
gtk_grid_attach(GTK_GRID(grid), label, 0, 8, 1, 1);
1467
gtk_grid_attach(GTK_GRID(grid), label, 0, 9, 1, 1);
1444
1469
destination_button = gtk_file_chooser_button_new (_("Select a folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
1445
1470
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(destination_button), rec_settings.destination);
1446
gtk_grid_attach(GTK_GRID(grid), destination_button, 1, 8, 1, 1);
1471
gtk_grid_attach(GTK_GRID(grid), destination_button, 1, 9, 1, 1);
1448
1473
label = gtk_label_new (_("Output format:"));
1449
1474
gtk_widget_set_halign (label, GTK_ALIGN_START);
1450
1475
gtk_widget_set_margin_left (label, 10);
1451
gtk_grid_attach (GTK_GRID (grid), label, 0, 9, 1, 1);
1476
gtk_grid_attach (GTK_GRID (grid), label, 0, 10, 1, 1);
1453
1478
audio_profile_combo = audio_profile_choose_new();
1454
1479
audio_profile_chooser_set_active(audio_profile_combo, rec_settings.profile);
1455
gtk_grid_attach (GTK_GRID (grid), audio_profile_combo, 1, 9, 1, 1);
1480
gtk_grid_attach (GTK_GRID (grid), audio_profile_combo, 1, 10, 1, 1);
1457
1482
install_button = gtk_button_new_with_label(_("Install additional software required to use this format"));
1458
1483
gtk_widget_set_no_show_all (install_button, TRUE);
1459
gtk_grid_attach (GTK_GRID (grid), install_button, 1, 10, 1, 1);
1484
gtk_grid_attach (GTK_GRID (grid), install_button, 1, 11, 1, 1);
1461
1486
profile = rb_gst_get_encoding_profile (rec_settings.profile);
1462
1487
if (rb_gst_check_missing_plugins (profile, NULL, NULL)) {
1463
1488
gtk_widget_set_visible (install_button, TRUE);
1464
1489
gtk_widget_set_sensitive (install_button,
1465
gst_install_plugins_supported ());
1490
gst_install_plugins_supported ());
1467
1492
gtk_widget_set_visible (install_button, FALSE);