~ubuntu-branches/ubuntu/trusty/gnomeradio/trusty

« back to all changes in this revision

Viewing changes to src/prefs.c

  • Committer: Package Import Robot
  • Author(s): POJAR GEORGE
  • Date: 2013-09-20 13:31:33 UTC
  • Revision ID: package-import@ubuntu.com-20130920133133-otwactksfjh4bwev
Tags: 1.8-2ubuntu23
* Updated debian/patches/gnomeradio-tray_menu.patch:
  - Fixed menu item not update conform new order when we use move up[down]
    swap. (LP: #1232931)
  - Fixed conditional jump or move depends on uninitialized value.
  - Added function to switch to preset in settings preset list when changed
    them from tray menu.
  - Cleaned up the files relating to the tray icon. Neither gui.c, prefs.c nor
    record.c touch the internals of trayicon.c anymore.
* Updated debian/patches/gnomeradio-preferences.patch:
  - Added option to disable audio loopback mode in Preferences settings.
  - Moved in separate GOptionGroup all command line parameters which refers to
    audio loopback mode.
* Updated debian/patches/gnomeradio-device.patch: Not need radio_mute() when
  exit or session die, already is called in radio_stop().
* Updated debian/patches/gnomeradio-station_list.patch: Fixed pointer targets
  in passing argument differ in signedness.
* Removed the content against configure and Makefile.in, since we use
  autoreconf anyways, from:
  - debian/patches/gnomeradio-gstreamer-1.0.patch.
  - debian/patches/gnomeradio-volume_button.patch.
* Updated debian/patches/gnomeradio-volume_button.patch: Removed unused
  vol_down[up].xpm icons.
* debian/gnomeradio.1: Updated man page.   

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
#include "rec_tech.h"
30
30
#include "rb_gst_media_types.h"
31
31
#include "rb_missing_plugins.h"
 
32
#include "alsa_stream.h"
32
33
 
33
34
extern int autodetect;
 
35
extern int alsa_loopback;
34
36
 
35
37
extern GtkWidget *preset_combo;
36
38
extern GtkAdjustment *adj;
39
41
extern gnomeradio_settings settings;
40
42
 
41
43
extern gboolean main_visible;
 
44
extern gboolean dialog_visible;
42
45
 
43
46
static GtkWidget *device_entry;
44
47
static GtkWidget *mixer_entry;
 
48
static GtkWidget *audio_label;
 
49
static GtkWidget *enabled;
 
50
static GtkWidget *disabled;
45
51
static GtkWidget *mute_on_exit;
46
52
static GtkWidget *list_view;
47
53
static GtkListStore *list_store;
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);
129
136
                return FALSE;
130
137
 
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)
204
212
{
205
213
        settings.mute_on_exit = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mute_on_exit));
206
 
}       
 
214
}
 
215
 
 
216
static void audio_loopback_set_visible (gboolean visible)
 
217
{
 
218
        gtk_widget_set_visible (audio_label, visible);
 
219
        gtk_widget_set_visible (enabled, visible);
 
220
        gtk_widget_set_visible (disabled, visible);
 
221
}
 
222
 
 
223
static void audio_loopback_toggled_cb (GtkWidget* widget, gpointer data)
 
224
{
 
225
        settings.audio_loopback = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (enabled));
 
226
 
 
227
        if (settings.audio_loopback)
 
228
                start_radio(TRUE, data);
 
229
        else
 
230
                alsa_thread_stop();
 
231
}
207
232
 
208
233
static gboolean device_entry_activate_cb(GtkWidget *widget, gpointer data)
209
234
{
220
245
        settings.device = g_strdup(text);
221
246
        
222
247
        start_radio(TRUE, data);
 
248
 
 
249
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (enabled)) ||
 
250
            gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (disabled)))
 
251
                audio_loopback_set_visible (radio_is_init());
223
252
        
224
253
        return FALSE;
225
254
}
444
473
        GtkTreeIter iter = {0};
445
474
        GtkAdjustment* v_scb;
446
475
        GtkTreePath *path = NULL;
447
 
        GtkWidget *menuitem;
448
476
        
449
477
        ps = malloc(sizeof(preset));
450
478
        ps->title = g_strdup(_("unnamed"));
466
494
                mom_ps = g_list_length(settings.presets) - 1;
467
495
                preset_combo_set_item(mom_ps);
468
496
 
469
 
                menuitem = gtk_menu_item_new_with_label(ps->title); 
470
 
                        
471
 
                gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, mom_ps);             
472
 
                g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, GINT_TO_POINTER (mom_ps));
473
 
                gtk_widget_show(menuitem);
 
497
                tray_menu_add_preset (ps, mom_ps);
474
498
        }
475
499
 
476
500
        buffer = g_strdup_printf("%d", g_list_length(settings.presets) - 1);
489
513
        GtkTreeIter iter;
490
514
        preset *ps;
491
515
        int *row;
492
 
        GList* menuitems;
493
 
        GtkWidget *menuitem;
494
516
        
495
517
        gtk_tree_view_get_cursor(GTK_TREE_VIEW(list_view), &path, &focus_column);
496
518
        
515
537
                if (settings.presets == NULL) mom_ps = -1;
516
538
                preset_combo_set_item(mom_ps);
517
539
 
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);
522
541
        }
523
542
        
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);
527
546
 
528
 
        if (settings.presets == NULL) {
 
547
        if (settings.presets == NULL)
529
548
                gtk_widget_set_sensitive(save_button, FALSE);
530
 
        } else {
 
549
        else
531
550
                gtk_widget_set_sensitive(save_button, TRUE);
532
 
        }
533
551
}
534
552
 
535
553
static void move_up_button_clicked_cb(GtkWidget * widget, gpointer data)
539
557
        gint pos;
540
558
        preset *ps;
541
559
        int *row;
542
 
        GList* menuitems;
543
 
        GtkWidget *menuitem;
544
560
 
545
561
        selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list_view));
546
562
        gtk_tree_selection_get_selected(selection, NULL, &iter);
572
588
                mom_ps = *row;
573
589
                preset_combo_set_item(mom_ps);
574
590
 
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);
580
 
 
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);
584
592
        }
585
593
 
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);
588
596
 
589
 
        if (pos - 1 <= 0) {
 
597
        if (pos - 1 <= 0)
590
598
                gtk_widget_set_sensitive(move_up_button, FALSE);
591
 
        } else {
 
599
        else
592
600
                gtk_widget_set_sensitive(move_up_button, TRUE);
593
 
        }
 
601
 
594
602
        gtk_widget_set_sensitive(move_down_button, TRUE);
595
603
}
596
604
 
601
609
        gint pos, count;
602
610
        preset *ps;
603
611
        int *row;
604
 
        GList* menuitems;
605
 
        GtkWidget *menuitem;
606
612
 
607
613
        selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list_view));
608
614
        gtk_tree_selection_get_selected(selection, NULL, &iter);
638
644
                mom_ps = *row;
639
645
                preset_combo_set_item(mom_ps);
640
646
 
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);
646
 
 
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);
650
648
        }
651
649
 
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);
654
652
 
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);
657
 
        } else {
 
655
        else
658
656
                gtk_widget_set_sensitive(move_down_button, TRUE);
659
 
        }
 
657
 
660
658
        gtk_widget_set_sensitive(move_up_button, TRUE);
661
659
}
662
660
 
663
661
static void destination_button_clicked_cb(GtkWidget *button, gpointer data)
664
662
{
665
663
        if (rec_settings.destination)
666
 
        {
667
664
                g_free(rec_settings.destination);
668
 
        }
 
665
 
669
666
        rec_settings.destination = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(button));
670
667
}
671
668
 
695
692
                g_free(buffer);
696
693
                gtk_tree_path_free(path);
697
694
 
698
 
                if (pos == 0) {
 
695
                if (pos == 0)
699
696
                        gtk_widget_set_sensitive(move_up_button, FALSE);
700
 
                } else {
 
697
                else
701
698
                        gtk_widget_set_sensitive(move_up_button, TRUE);
702
 
                }
703
699
 
704
 
                if (pos + 1 == gtk_tree_model_iter_n_children(GTK_TREE_MODEL(list_store), NULL)) {
 
700
                if (pos + 1 == gtk_tree_model_iter_n_children(GTK_TREE_MODEL(list_store), NULL))
705
701
                        gtk_widget_set_sensitive(move_down_button, FALSE);
706
 
                } else {
 
702
                else
707
703
                        gtk_widget_set_sensitive(move_down_button, TRUE);
708
 
                }
709
704
        }
710
705
        return FALSE;
711
706
}
716
711
        GtkTreeIter iter;
717
712
        preset *ps;
718
713
        int *row;
719
 
        GList* menuitems;
720
 
        GtkWidget *menuitem;
721
714
        
722
715
        path = gtk_tree_path_new_from_string(path_str);
723
716
 
736
729
                mom_ps = *row;
737
730
                preset_combo_set_item(mom_ps);
738
731
 
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); 
744
 
                        
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);
748
733
        }
749
734
        
750
735
        gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path);
816
801
 
817
802
        pos = g_list_index(settings.presets, (gpointer)ps);
818
803
 
819
 
        if (pos == 0) {
 
804
        if (pos == 0)
820
805
                gtk_widget_set_sensitive(move_up_button, FALSE);
821
 
        } else {
 
806
        else
822
807
                gtk_widget_set_sensitive(move_up_button, TRUE);
823
 
        }
824
808
 
825
 
        if (pos + 1 == gtk_tree_model_iter_n_children(GTK_TREE_MODEL(list_store), NULL)) {
 
809
        if (pos + 1 == gtk_tree_model_iter_n_children(GTK_TREE_MODEL(list_store), NULL))
826
810
                        gtk_widget_set_sensitive(move_down_button, FALSE);
827
 
        } else {
 
811
        else
828
812
                        gtk_widget_set_sensitive(move_down_button, TRUE);
829
 
        }
 
813
 
830
814
        gtk_tree_path_free(path);
831
815
        return;
832
816
}
871
855
        gtk_widget_grab_focus(list_view);
872
856
}
873
857
 
 
858
void list_view_switch_to_preset (gint active)
 
859
{
 
860
        GtkTreePath *path = NULL;
 
861
        GtkTreeIter iter;
 
862
 
 
863
        if (!dialog_visible)
 
864
                return;
 
865
 
 
866
        if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(list_store), &iter, NULL, active))
 
867
                return;
 
868
 
 
869
        path = gtk_tree_model_get_path(GTK_TREE_MODEL(list_store), &iter);
 
870
 
 
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);
 
874
 
 
875
        gtk_widget_grab_focus(list_view);
 
876
}
 
877
 
874
878
static void free_presets_list (gpointer data)
875
879
{
876
880
        preset *ps = (preset *) data;
1032
1036
        GtkTreePath *path = NULL;
1033
1037
        GtkTreeIter iter;
1034
1038
        GtkAdjustment* v_scb;
1035
 
        GList* menuitems;
1036
 
        GtkWidget *menuitem;
1037
1039
 
1038
1040
        /* load the file */
1039
1041
        doc = xmlParseFile(filename);
1058
1060
                        gint i, count;
1059
1061
 
1060
1062
                        count = g_list_length (settings.presets);
1061
 
                        for (i = 0; i < count; i++)
 
1063
                        for (i = 0; i < count; i++) {
1062
1064
                                gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(preset_combo), 1);
1063
 
 
1064
 
                        menuitems = gtk_container_get_children (GTK_CONTAINER (tray_menu));
1065
 
 
1066
 
                        count = g_list_length (menuitems);
1067
 
                        for (i = 0; i < count - 6; i++) {
1068
 
                                menuitem = g_list_nth_data (menuitems, i);
1069
 
                                gtk_widget_destroy (menuitem);
 
1065
                                tray_menu_remove_preset(0);
1070
1066
                        }
1071
1067
                }
1072
1068
 
1110
1106
                                        gtk_adjustment_set_value(v_scb, gtk_adjustment_get_upper(v_scb));
1111
1107
 
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);
1116
1112
 
1117
 
                                                menuitem = gtk_menu_item_new_with_label(title);
1118
 
 
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);
1124
1114
                                        }
1125
1115
                                }
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);
1279
1269
 
 
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);
 
1275
 
 
1276
        box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 
1277
 
 
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);
 
1285
 
 
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);
 
1289
        else
 
1290
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (disabled), TRUE);
 
1291
 
 
1292
        if (settings.audio_loopback)
 
1293
                if (alsa_loopback)
 
1294
                        audio_loopback_set_visible (TRUE);
 
1295
                else
 
1296
                        audio_loopback_set_visible (FALSE);
 
1297
        else
 
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());
 
1301
 
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);
1284
1306
 
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);
1291
1314
 
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"));
1295
1320
 
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);
1303
1328
 
1304
1329
        scrolled_window = gtk_scrolled_window_new(NULL, NULL);
1305
1330
        gtk_widget_set_margin_left (scrolled_window, 10);
1358
1383
                i++;
1359
1384
        }
1360
1385
 
1361
 
        gtk_grid_attach(GTK_GRID(grid), scrolled_window, 0, 5, 2, 1);
 
1386
        gtk_grid_attach(GTK_GRID(grid), scrolled_window, 0, 6, 2, 1);
1362
1387
 
1363
1388
        button_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
1364
1389
 
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);
1428
1453
 
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);
1430
1455
 
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);
1438
1463
 
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);
1443
1468
 
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);
1447
1472
 
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);
1452
1477
 
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);
1456
1481
 
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);
1460
1485
 
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 ());
1466
1491
        } else {
1467
1492
                gtk_widget_set_visible (install_button, FALSE);
1468
1493
        }