-using namespace sigc;
-using namespace Gtk;
-using namespace Gtkmm2ext;
-
-using PBD::internationalize;
-
-static const gchar *sample_rates[] = {
- N_("22.05kHz"),
- N_("44.1kHz"),
- N_("48kHz"),
- N_("88.2kHz"),
- N_("96kHz"),
- N_("192kHz"),
- 0
-};
-
-static const gchar *src_quality[] = {
- N_("best"),
- N_("fastest"),
- N_("linear"),
- N_("better"),
- N_("intermediate"),
- 0
-};
-
-static const gchar *dither_types[] = {
- N_("None"),
- N_("Rectangular"),
- N_("Shaped Noise"),
- N_("Triangular"),
- 0
-};
-
-static const gchar* channel_strings[] = {
- N_("Stereo"),
- N_("Mono"),
- 0
-};
-
-static const gchar* cue_file_types[] = {
- N_("None"),
- N_("CUE"),
- N_("TOC"),
- 0
-};
-
-ExportDialog::ExportDialog(PublicEditor& e)
- : ArdourDialog ("export dialog"),
- editor (e),
- format_table (9, 2),
- format_frame (_("Format")),
- cue_file_label (_("CD Marker File Type"), 1.0, 0.5),
- channel_count_label (_("Channels"), 1.0, 0.5),
- header_format_label (_("File Type"), 1.0, 0.5),
- bitdepth_format_label (_("Sample Format"), 1.0, 0.5),
- endian_format_label (_("Sample Endianness"), 1.0, 0.5),
- sample_rate_label (_("Sample Rate"), 1.0, 0.5),
- src_quality_label (_("Conversion Quality"), 1.0, 0.5),
- dither_type_label (_("Dither Type"), 1.0, 0.5),
- cuefile_only_checkbox (_("Export CD Marker File Only")),
- file_chooser (FILE_CHOOSER_ACTION_SAVE),
- track_selector_button (_("Specific tracks ..."))
-{
- guint32 n;
- guint32 len;
- guint32 maxlen;
-
- session = 0;
- track_and_master_selection_allowed = true;
- channel_count_selection_allowed = true;
- export_cd_markers_allowed = true;
- set_resizable (false);
-
- WindowTitle title(Glib::get_application_name());
- title += _("Export");
-
- set_title (title.get_string());
- set_wmclass (X_("ardour_export"), "Ardour");
- set_name ("ExportWindow");
- add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK);
-
- spec.running = false;
-
- master_list = ListStore::create (exp_cols);
- master_selector.set_model (master_list);
-
- master_selector.set_name ("ExportTrackSelector");
- master_selector.set_size_request (-1, 100);
- master_selector.append_column(_("Output"), exp_cols.output);
- master_selector.append_column_editable(_("Left"), exp_cols.left);
- master_selector.append_column_editable(_("Right"), exp_cols.right);
- master_selector.get_column(0)->set_min_width(100);
-
- master_selector.get_column(1)->set_min_width(40);
- master_selector.get_column(1)->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
- master_selector.get_column(2)->set_min_width(40);
- master_selector.get_column(2)->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
- master_selector.get_selection()->set_mode (Gtk::SELECTION_NONE);
-
- track_list = ListStore::create (exp_cols);
- track_selector.set_model (track_list);
-
- track_selector.set_name ("ExportTrackSelector");
- track_selector.set_size_request (-1, 130);
- track_selector.append_column(_("Output"), exp_cols.output);
- track_selector.append_column_editable(_("Left"), exp_cols.left);
- track_selector.append_column_editable(_("Right"), exp_cols.right);
-
- track_selector.get_column(0)->set_min_width(100);
- track_selector.get_column(1)->set_min_width(40);
- track_selector.get_column(1)->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
- track_selector.get_column(2)->set_min_width(40);
- track_selector.get_column(2)->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
- track_selector.get_selection()->set_mode (Gtk::SELECTION_NONE);
-
- progress_bar.set_name ("ExportProgress");
-
- format_frame.add (format_table);
- format_frame.set_name (FRAME_NAME);
-
- track_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- master_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
-
- get_vbox()->pack_start (file_frame, PACK_EXPAND_WIDGET);
-
- hpacker.set_spacing (5);
- hpacker.set_border_width (5);
- hpacker.pack_start (format_frame, PACK_SHRINK );
-
- master_scroll.add (master_selector);
- track_scroll.add (track_selector);
-
- master_scroll.set_size_request (220, 100);
- track_scroll.set_size_request (220, 100);
-
- /* we may hide some of these later */
- track_vpacker.pack_start (master_scroll);
- track_vpacker.pack_start (track_scroll);
- track_vpacker.pack_start (track_selector_button, Gtk::PACK_EXPAND_PADDING);
-
- hpacker.pack_start (track_vpacker);
-
- get_vbox()->pack_start (hpacker, PACK_SHRINK);
-
- track_selector_button.set_name ("EditorGTKButton");
- track_selector_button.signal_clicked().connect (mem_fun(*this, &ExportDialog::track_selector_button_click));
-
- Gtk::FileFilter filter_wav;
- filter_wav.set_name("Wav files");
- filter_wav.add_mime_type("audio/wav");
- file_chooser.add_filter(filter_wav);
-
- Gtk::FileFilter filter_aiff;
- filter_aiff.set_name("Aiff files");
- filter_aiff.add_mime_type("audio/aiff");
- filter_aiff.add_pattern("*.aif");
- filter_aiff.add_pattern("*.aiff");
- file_chooser.add_filter(filter_aiff);
-
- Gtk::FileFilter filter_any;
- filter_any.set_name("All files");
- filter_any.add_pattern("*");
- file_chooser.add_filter(filter_any);
- file_chooser.set_no_show_all();
-
- get_vbox()->pack_start (progress_bar, false, false, 5);
- progress_bar.set_no_show_all();
- progress_bar.hide();
-
- file_hbox.set_spacing (5);
- file_hbox.set_border_width (5);
- file_hbox.pack_start (file_chooser, PACK_EXPAND_WIDGET);
-
- file_frame.add (file_hbox);
- file_frame.set_border_width (5);
- file_frame.set_name (FRAME_NAME);
-
- /* pop_strings needs to be created on the stack because set_popdown_strings()
- takes a reference.
- */
-
- vector<string> pop_strings = I18N(sample_rates);
- Gtkmm2ext::set_popdown_strings (sample_rate_combo, pop_strings);
- sample_rate_combo.set_active_text (pop_strings.front());
- pop_strings = I18N(src_quality);
- Gtkmm2ext::set_popdown_strings (src_quality_combo, pop_strings);
- src_quality_combo.set_active_text (pop_strings.front());
- pop_strings = I18N(dither_types);
- Gtkmm2ext::set_popdown_strings (dither_type_combo, pop_strings);
- dither_type_combo.set_active_text (pop_strings.front());
- pop_strings = I18N(channel_strings);
- Gtkmm2ext::set_popdown_strings (channel_count_combo, pop_strings);
- channel_count_combo.set_active_text (pop_strings.front());
- pop_strings = I18N((const char **) sndfile_header_formats_strings);
- Gtkmm2ext::set_popdown_strings (header_format_combo, pop_strings);
- header_format_combo.set_active_text (pop_strings.front());
- pop_strings = I18N((const char **) sndfile_bitdepth_formats_strings);
- Gtkmm2ext::set_popdown_strings (bitdepth_format_combo, pop_strings);
- bitdepth_format_combo.set_active_text (pop_strings.front());
- pop_strings = I18N((const char **) sndfile_endian_formats_strings);
- Gtkmm2ext::set_popdown_strings (endian_format_combo, pop_strings);
- endian_format_combo.set_active_text (pop_strings.front());
- pop_strings = I18N(cue_file_types);
- Gtkmm2ext::set_popdown_strings (cue_file_combo, pop_strings);
- cue_file_combo.set_active_text (pop_strings.front());
-
- /* this will re-sensitized as soon as a non RIFF/WAV
- header format is chosen.
- */
-
- endian_format_combo.set_sensitive (false);
-
- /* determine longest strings at runtime */
-
- maxlen = 0;
- const char *longest = X_("gl"); /* translators: one ascender, one descender */
- string longest_str;
-
- for (n = 0; n < SNDFILE_HEADER_FORMATS; ++n) {
- if ((len = strlen (sndfile_header_formats_strings[n])) > maxlen) {
- maxlen = len;
- longest = sndfile_header_formats_strings[n];
- }
- }
-
- for (n = 0; n < SNDFILE_BITDEPTH_FORMATS; ++n) {
- if ((len = strlen (sndfile_bitdepth_formats_strings[n])) > maxlen) {
- maxlen = len;
- longest = sndfile_bitdepth_formats_strings[n];
- }
- }
-
- for (n = 0; n < SNDFILE_ENDIAN_FORMATS; ++n) {
- if ((len = strlen (sndfile_endian_formats_strings[n])) > maxlen) {
- maxlen = len;
- longest = sndfile_endian_formats_strings[n];
- }
- }
-
- longest_str = longest;