diff options
author | Sakari Bergen <sakari.bergen@beatwaves.net> | 2012-01-28 15:05:53 +0000 |
---|---|---|
committer | Sakari Bergen <sakari.bergen@beatwaves.net> | 2012-01-28 15:05:53 +0000 |
commit | ab8cea1d7c19fddc6b81a6ba4a303a00e4fdd93c (patch) | |
tree | ae02bf18efc30dcd7af7782ec434ac73b0641ddf /gtk2_ardour/export_channel_selector.cc | |
parent | aaf418bd6fe178eea0c67e65693536b07fcf5932 (diff) |
Store Region export state in instant.xml (fixes #3935)
git-svn-id: svn://localhost/ardour2/branches/3.0@11376 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/export_channel_selector.cc')
-rw-r--r-- | gtk2_ardour/export_channel_selector.cc | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/gtk2_ardour/export_channel_selector.cc b/gtk2_ardour/export_channel_selector.cc index 4f332c9bff..b9c2dd5a78 100644 --- a/gtk2_ardour/export_channel_selector.cc +++ b/gtk2_ardour/export_channel_selector.cc @@ -478,6 +478,24 @@ void RegionExportChannelSelector::sync_with_manager () { state = manager->get_channel_configs().front(); + + if (!state) { return; } + + switch (state->config->region_processing_type()) { + case RegionExportChannelFactory::None: + // Do nothing + break; + case RegionExportChannelFactory::Raw: + raw_button.set_active (true); + break; + case RegionExportChannelFactory::Fades: + fades_button.set_active (true); + break; + case RegionExportChannelFactory::Processed: + processed_button.set_active (true); + break; + } + handle_selection (); } @@ -490,17 +508,21 @@ RegionExportChannelSelector::handle_selection () state->config->clear_channels (); + RegionExportChannelFactory::Type type = RegionExportChannelFactory::None; if (raw_button.get_active ()) { - factory.reset (new RegionExportChannelFactory (_session, region, track, RegionExportChannelFactory::Raw)); + type = RegionExportChannelFactory::Raw; } else if (fades_button.get_active ()) { - factory.reset (new RegionExportChannelFactory (_session, region, track, RegionExportChannelFactory::Fades)); + type = RegionExportChannelFactory::Fades; } else if (processed_button.get_active ()) { - factory.reset (new RegionExportChannelFactory(_session, region, track, RegionExportChannelFactory::Processed)); + type = RegionExportChannelFactory::Processed; } else { CriticalSelectionChanged (); return; } + factory.reset (new RegionExportChannelFactory (_session, region, track, type)); + state->config->set_region_processing_type (type); + for (size_t chan = 0; chan < region_chans; ++chan) { state->config->register_channel (factory->create (chan)); } |