X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_dialog.cc;h=50796f2fccd4bc092ebbcd00a806e7d8f8b7f88d;hb=0f7e4234225d6b94d13091a53f55e55d1be1df02;hp=84202d57ea2149963672ef5b4c2c1a65abe0b3b8;hpb=aae367b63c9b619db1e40f27dc334c6987219481;p=ardour.git diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc index 84202d57ea..50796f2fcc 100644 --- a/gtk2_ardour/export_dialog.cc +++ b/gtk2_ardour/export_dialog.cc @@ -18,25 +18,32 @@ */ -#include "export_dialog.h" #include #include "pbd/filesystem.h" +#include "ardour/audioregion.h" #include "ardour/export_status.h" #include "ardour/export_handler.h" +#include "export_dialog.h" +#include "gui_thread.h" + +#include "i18n.h" + using namespace ARDOUR; using namespace PBD; +using std::string; -ExportDialog::ExportDialog (PublicEditor & editor, Glib::ustring title) : - ArdourDialog (title), - editor (editor), +ExportDialog::ExportDialog (PublicEditor & editor, std::string title, std::string xml_node_name) + : ArdourDialog (title) + , xml_node_name (xml_node_name) + , editor (editor) - warn_label ("", Gtk::ALIGN_LEFT), - list_files_label (_("Some already existing files will be overwritten."), Gtk::ALIGN_RIGHT), - list_files_button (_("List files")) + , warn_label ("", Gtk::ALIGN_LEFT) + , list_files_label (_("Some already existing files will be overwritten."), Gtk::ALIGN_RIGHT) + , list_files_button (_("List files")) { } ExportDialog::~ExportDialog () @@ -55,7 +62,7 @@ ExportDialog::set_session (ARDOUR::Session* s) handler = _session->get_export_handler (); status = _session->get_export_status (); - profile_manager.reset (new ExportProfileManager (*_session)); + profile_manager.reset (new ExportProfileManager (*_session, xml_node_name)); /* Possibly init stuff in derived classes */ @@ -86,7 +93,8 @@ ExportDialog::set_session (ARDOUR::Session* s) timespan_selector->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::update_warnings)); channel_selector->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::update_warnings)); file_notebook->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::update_warnings)); - status->Aborting.connect (abort_connection, sigc::mem_fun (*this, &ExportDialog::notify_errors)); + + status->Aborting.connect (abort_connection, invalidator (*this), boost::bind (&ExportDialog::notify_errors, this), gui_context()); update_warnings (); } @@ -119,13 +127,16 @@ ExportDialog::init () /* Buttons */ cancel_button = add_button (Gtk::Stock::CANCEL, RESPONSE_CANCEL); - rt_export_button = add_button (_("Realtime Export"), RESPONSE_RT); - fast_export_button = add_button (_("Fast Export"), RESPONSE_FAST); + // Realtime export is disabled for now, as it will most probably not work + //rt_export_button = add_button (_("Realtime Export"), RESPONSE_RT); + //fast_export_button = add_button (_("Fast Export"), RESPONSE_FAST); + fast_export_button = add_button (_("Export"), RESPONSE_FAST); + set_default_response (RESPONSE_FAST); list_files_button.set_name ("PaddedButton"); cancel_button->signal_clicked().connect (sigc::mem_fun (*this, &ExportDialog::close_dialog)); - rt_export_button->signal_clicked().connect (sigc::mem_fun (*this, &ExportDialog::export_rt)); + //rt_export_button->signal_clicked().connect (sigc::mem_fun (*this, &ExportDialog::export_rt)); fast_export_button->signal_clicked().connect (sigc::mem_fun (*this, &ExportDialog::export_fw)); /* Done! */ @@ -190,7 +201,7 @@ void ExportDialog::notify_errors () { if (status->errors()) { - Glib::ustring txt = _("Export has been aborted due to an error!\nSee the Log for details."); + std::string txt = _("Export has been aborted due to an error!\nSee the Log for details."); Gtk::MessageDialog msg (txt, false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); msg.run(); } @@ -230,24 +241,24 @@ ExportDialog::update_warnings () list_files_string = ""; fast_export_button->set_sensitive (true); - rt_export_button->set_sensitive (true); + //rt_export_button->set_sensitive (true); /* Add new warnings */ boost::shared_ptr warnings = profile_manager->get_warnings(); - for (std::list::iterator it = warnings->errors.begin(); it != warnings->errors.end(); ++it) { + for (std::list::iterator it = warnings->errors.begin(); it != warnings->errors.end(); ++it) { add_error (*it); } - for (std::list::iterator it = warnings->warnings.begin(); it != warnings->warnings.end(); ++it) { + for (std::list::iterator it = warnings->warnings.begin(); it != warnings->warnings.end(); ++it) { add_warning (*it); } if (!warnings->conflicting_filenames.empty()) { list_files_hbox.show (); - for (std::list::iterator it = warnings->conflicting_filenames.begin(); it != warnings->conflicting_filenames.end(); ++it) { - Glib::ustring::size_type pos = it->find_last_of ("/"); + for (std::list::iterator it = warnings->conflicting_filenames.begin(); it != warnings->conflicting_filenames.end(); ++it) { + string::size_type pos = it->find_last_of ("/"); list_files_string += "\n" + it->substr (0, pos + 1) + "" + it->substr (pos + 1) + ""; } } @@ -291,7 +302,7 @@ ExportDialog::show_progress () status->running = true; cancel_button->set_label (_("Stop Export")); - rt_export_button->set_sensitive (false); + //rt_export_button->set_sensitive (false); fast_export_button->set_sensitive (false); progress_bar.set_fraction (0.0); @@ -308,41 +319,34 @@ ExportDialog::show_progress () usleep (10000); } } + + if (!status->aborted()) { + status->finish (); + } } gint ExportDialog::progress_timeout () { - switch (status->stage) { - case export_None: - progress_label.set_text (""); - break; - case export_ReadTimespan: - progress_label.set_text (string_compose (_("Reading timespan %1 of %2"), status->timespan, status->total_timespans)); - break; - case export_PostProcess: - progress_label.set_text (string_compose (_("Processing file %2 of %3 (%1) from timespan %4 of %5"), - file_notebook->get_nth_format_name (status->format), - status->format, status->total_formats, - status->timespan, status->total_timespans)); - break; - case export_Write: - progress_label.set_text (string_compose (_("Encoding file %2 of %3 (%1) from timespan %4 of %5"), - file_notebook->get_nth_format_name (status->format), - status->format, status->total_formats, - status->timespan, status->total_timespans)); - break; + std::string status_text; + if (status->normalizing) { + status_text = string_compose (_("Normalizing timespan %1 of %2"), + status->timespan, status->total_timespans); + } else { + status_text = string_compose (_("Exporting timespan %1 of %2"), + status->timespan, status->total_timespans); } + progress_label.set_text (status_text); progress_bar.set_fraction (status->progress); return TRUE; } void -ExportDialog::add_error (Glib::ustring const & text) +ExportDialog::add_error (string const & text) { fast_export_button->set_sensitive (false); - rt_export_button->set_sensitive (false); + //rt_export_button->set_sensitive (false); if (warn_string.empty()) { warn_string = _("Error: ") + text + ""; @@ -354,7 +358,7 @@ ExportDialog::add_error (Glib::ustring const & text) } void -ExportDialog::add_warning (Glib::ustring const & text) +ExportDialog::add_warning (string const & text) { if (warn_string.empty()) { warn_string = _("Warning: ") + text + ""; @@ -367,8 +371,8 @@ ExportDialog::add_warning (Glib::ustring const & text) /*** Dialog specializations ***/ -ExportRangeDialog::ExportRangeDialog (PublicEditor & editor, Glib::ustring range_id) : - ExportDialog (editor, _("Export Range")), +ExportRangeDialog::ExportRangeDialog (PublicEditor & editor, string range_id) : + ExportDialog (editor, _("Export Range"), X_("RangeExportProfile")), range_id (range_id) {} @@ -382,7 +386,7 @@ ExportRangeDialog::init_components () } ExportSelectionDialog::ExportSelectionDialog (PublicEditor & editor) : - ExportDialog (editor, _("Export Selection")) + ExportDialog (editor, _("Export Selection"), X_("SelectionExportProfile")) {} void @@ -395,7 +399,7 @@ ExportSelectionDialog::init_components () } ExportRegionDialog::ExportRegionDialog (PublicEditor & editor, ARDOUR::AudioRegion const & region, ARDOUR::AudioTrack & track) : - ExportDialog (editor, _("Export Region")), + ExportDialog (editor, _("Export Region"), X_("RegionExportProfile")), region (region), track (track) {} @@ -411,10 +415,26 @@ ExportRegionDialog::init_gui () void ExportRegionDialog::init_components () { - Glib::ustring loc_id = profile_manager->set_single_range (region.position(), region.position() + region.length(), region.name()); + string loc_id = profile_manager->set_single_range (region.position(), region.position() + region.length(), region.name()); preset_selector.reset (new ExportPresetSelector ()); timespan_selector.reset (new ExportTimespanSelectorSingle (_session, profile_manager, loc_id)); channel_selector.reset (new RegionExportChannelSelector (_session, profile_manager, region, track)); file_notebook.reset (new ExportFileNotebook ()); } + +StemExportDialog::StemExportDialog (PublicEditor & editor) + : ExportDialog(editor, _("Stem Export"), X_("StemExportProfile")) +{ + +} + +void +StemExportDialog::init_components () +{ + preset_selector.reset (new ExportPresetSelector ()); + timespan_selector.reset (new ExportTimespanSelectorMultiple (_session, profile_manager)); + channel_selector.reset (new TrackExportChannelSelector (_session, profile_manager)); + file_notebook.reset (new ExportFileNotebook ()); +} +