summaryrefslogtreecommitdiff
path: root/gtk2_ardour/export_dialog.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-07-16 02:15:56 +0200
committerRobin Gareus <robin@gareus.org>2016-07-16 02:15:56 +0200
commit15433457f2d81b50a576ffa3aca2bf311edd2370 (patch)
tree14b586c54fedcc5bc12c3270f334ae7350d11863 /gtk2_ardour/export_dialog.cc
parentbd50bfa96776c4a1f8370fe8016aea4f896e7b9a (diff)
export RT support as Timespan option
Diffstat (limited to 'gtk2_ardour/export_dialog.cc')
-rw-r--r--gtk2_ardour/export_dialog.cc52
1 files changed, 52 insertions, 0 deletions
diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc
index 59985a0459..2922edf117 100644
--- a/gtk2_ardour/export_dialog.cc
+++ b/gtk2_ardour/export_dialog.cc
@@ -24,6 +24,7 @@
#include <gtkmm/messagedialog.h>
#include "ardour/audioregion.h"
+#include "ardour/export_channel_configuration.h"
#include "ardour/export_status.h"
#include "ardour/export_handler.h"
#include "ardour/profile.h"
@@ -96,9 +97,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
@@ -205,6 +210,7 @@ ExportDialog::sync_with_manager ()
file_notebook->sync_with_manager ();
update_warnings_and_example_filename ();
+ update_realtime_selection ();
}
void
@@ -246,6 +252,47 @@ ExportDialog::update_warnings_and_example_filename ()
}
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<TrackExportChannelSelector*>(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 ()
{
ArdourDialog dialog (_("Files that will be overwritten"), true);
@@ -361,6 +408,11 @@ ExportDialog::progress_timeout ()
status->timespan, status->total_timespans, status->timespan_name);
progress = ((float) status->current_normalize_cycle) / status->total_normalize_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_normalize_cycle) / status->total_normalize_cycles;
+ break;
case ExportStatus::Tagging:
status_text = string_compose (_("Tagging '%3' (timespan %1 of %2)"),
status->timespan, status->total_timespans, status->timespan_name);