X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_dialog.cc;h=9ba65a6646339637efd2a9745719674e58e48791;hb=0a0eec2adca785e6fff1b1e798bbded196188f4c;hp=e9f255942b40913e57a1de605235139a4d4449d4;hpb=fa033a7293c293a53472c696b5a39b1789096874;p=ardour.git diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc index e9f255942b..9ba65a6646 100644 --- a/gtk2_ardour/export_dialog.cc +++ b/gtk2_ardour/export_dialog.cc @@ -22,17 +22,20 @@ #include #include +#include #include "ardour/audioregion.h" +#include "ardour/export_channel_configuration.h" #include "ardour/export_status.h" #include "ardour/export_handler.h" +#include "ardour/profile.h" #include "export_dialog.h" #include "export_report.h" #include "gui_thread.h" #include "nag.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace ARDOUR; using namespace PBD; @@ -95,9 +98,13 @@ ExportDialog::set_session (ARDOUR::Session* s) preset_selector->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::sync_with_manager)); timespan_selector->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::update_warnings_and_example_filename)); channel_selector->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::update_warnings_and_example_filename)); + channel_selector->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::update_realtime_selection)); file_notebook->CriticalSelectionChanged.connect (sigc::mem_fun (*this, &ExportDialog::update_warnings_and_example_filename)); update_warnings_and_example_filename (); + update_realtime_selection (); + + _session->config.ParameterChanged.connect (*this, invalidator (*this), boost::bind (&ExportDialog::parameter_changed, this, _1), gui_context()); } void @@ -204,6 +211,7 @@ ExportDialog::sync_with_manager () file_notebook->sync_with_manager (); update_warnings_and_example_filename (); + update_realtime_selection (); } void @@ -244,6 +252,47 @@ ExportDialog::update_warnings_and_example_filename () file_notebook->update_example_filenames(); } +void +ExportDialog::update_realtime_selection () +{ + bool rt_ok = true; + switch (profile_manager->type ()) { + case ExportProfileManager::RegularExport: + break; + case ExportProfileManager::RangeExport: + break; + case ExportProfileManager::SelectionExport: + break; + case ExportProfileManager::RegionExport: + if (!profile_manager->get_channel_configs().empty ()) { + switch (profile_manager->get_channel_configs().front()->config->region_processing_type ()) { + case RegionExportChannelFactory::Raw: + case RegionExportChannelFactory::Fades: + rt_ok = false; + break; + default: + break; + } + } + break; + case ExportProfileManager::StemExport: + if (! static_cast(channel_selector.get())->track_output ()) { + rt_ok = false; + } + break; + } + + timespan_selector->allow_realtime_export (rt_ok); +} + +void +ExportDialog::parameter_changed (std::string const& p) +{ + if (p == "realtime-export") { + update_realtime_selection (); + } +} + void ExportDialog::show_conflicting_files () { @@ -300,6 +349,8 @@ ExportDialog::do_export () void ExportDialog::show_progress () { + export_notebook.set_sensitive (false); + cancel_button->set_label (_("Stop Export")); export_button->set_sensitive (false); @@ -329,16 +380,17 @@ ExportDialog::show_progress () if (!status->aborted()) { hide(); - - NagScreen* ns = NagScreen::maybe_nag (_("export")); - - if (ns) { - ns->nag (); - delete ns; + if (!ARDOUR::Profile->get_mixbus()) { + NagScreen* ns = NagScreen::maybe_nag (_("export")); + if (ns) { + ns->nag (); + delete ns; + } } } else { notify_errors (); } + export_notebook.set_sensitive (true); } gint @@ -355,7 +407,12 @@ ExportDialog::progress_timeout () case ExportStatus::Normalizing: status_text = string_compose (_("Normalizing '%3' (timespan %1 of %2)"), status->timespan, status->total_timespans, status->timespan_name); - progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles; + progress = ((float) status->current_postprocessing_cycle) / status->total_postprocessing_cycles; + break; + case ExportStatus::Encoding: + status_text = string_compose (_("Encoding '%3' (timespan %1 of %2)"), + status->timespan, status->total_timespans, status->timespan_name); + progress = ((float) status->current_postprocessing_cycle) / status->total_postprocessing_cycles; break; case ExportStatus::Tagging: status_text = string_compose (_("Tagging '%3' (timespan %1 of %2)"),