X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsession_archive_dialog.cc;h=15bdbc8165c514180dac96bffb3f16f291b4567e;hb=47d186d1a301c8cbc8ed8c3b6cbe0c84bb6b681f;hp=7c97e8b8624118c0014bb9e7fc3c88bef1efbcc9;hpb=03fe02703dc9087b7af4f26cd0f33838af9c5353;p=ardour.git diff --git a/gtk2_ardour/session_archive_dialog.cc b/gtk2_ardour/session_archive_dialog.cc index 7c97e8b862..15bdbc8165 100644 --- a/gtk2_ardour/session_archive_dialog.cc +++ b/gtk2_ardour/session_archive_dialog.cc @@ -33,6 +33,7 @@ using namespace ARDOUR; SessionArchiveDialog::SessionArchiveDialog () : ArdourDialog (_("Zip/Archive Session")) , ProgressReporter () + , only_used_checkbox (_("Exclude unused audio sources")) { VBox* vbox = get_vbox(); @@ -41,15 +42,20 @@ SessionArchiveDialog::SessionArchiveDialog () HBox* hbox; Label* label; - zip_ext.append_text (".tar.xz"); - zip_ext.set_active_text (".tar.xz"); + format_selector.append_text (".tar.xz"); + format_selector.set_active_text (".tar.xz"); + + encode_selector.append_text (_("None")); + encode_selector.append_text (_("FLAC 16bit")); + encode_selector.append_text (_("FLAC 24bit")); + encode_selector.set_active_text ("FLAC 16bit"); // TODO remember hbox = manage (new HBox); hbox->set_spacing (6); label = manage (new Label (_("Archive Name"))); hbox->pack_start (*label, false, false); hbox->pack_start (name_entry, true, true); - hbox->pack_start (zip_ext, false, false); + hbox->pack_start (format_selector, false, false); vbox->pack_start (*hbox, false, false); hbox = manage (new HBox); @@ -59,8 +65,16 @@ SessionArchiveDialog::SessionArchiveDialog () hbox->pack_start (target_folder_selector, true, true); vbox->pack_start (*hbox, false, false); + hbox = manage (new HBox); + hbox->set_spacing (6); + label = manage (new Label (_("Audio Compression"))); + hbox->pack_start (*label, false, false); + hbox->pack_start (encode_selector, true, true); + vbox->pack_start (*hbox, false, false); + + vbox->pack_start (only_used_checkbox, false, false); + vbox->pack_start (progress_bar, true, true, 12); - progress_bar.set_text (_("Archiving")); vbox->show_all (); progress_bar.hide (); @@ -85,7 +99,7 @@ SessionArchiveDialog::name_entry_changed () return; } - std::string dir = Glib::build_filename (target_folder(), name_entry.get_text()); + std::string dir = Glib::build_filename (target_folder(), name_entry.get_text() + format_selector.get_active_text ()); if (Glib::file_test (dir, Glib::FILE_TEST_EXISTS)) { set_response_sensitive (RESPONSE_OK, false); @@ -101,6 +115,13 @@ SessionArchiveDialog::target_folder () const return target_folder_selector.get_filename (); } +void +SessionArchiveDialog::set_target_folder (const std::string& name) +{ + target_folder_selector.set_current_folder (name); + name_entry_changed (); +} + string SessionArchiveDialog::name () const { @@ -108,17 +129,66 @@ SessionArchiveDialog::name () const } void -SessionArchiveDialog::set_name (std::string name) +SessionArchiveDialog::set_name (const std::string& name) { name_entry.set_text (name); name_entry_changed (); } +bool +SessionArchiveDialog::only_used_sources () const +{ + return only_used_checkbox.get_active (); +} + +void +SessionArchiveDialog::set_only_used_sources (bool en) +{ + only_used_checkbox.set_active (en); +} + +ARDOUR::Session::ArchiveEncode +SessionArchiveDialog::encode_option () const +{ + string codec = encode_selector.get_active_text (); + if (codec == _("FLAC 16bit")) { + return ARDOUR::Session::FLAC_16BIT; + } + if (codec == _("FLAC 24bit")) { + return ARDOUR::Session::FLAC_24BIT; + } + return ARDOUR::Session::NO_ENCODE; +} + +void +SessionArchiveDialog::set_encode_option (ARDOUR::Session::ArchiveEncode e) +{ + switch (e) { + case ARDOUR::Session::FLAC_16BIT: + encode_selector.set_active_text (_("FLAC 16bit")); + break; + case ARDOUR::Session::FLAC_24BIT: + encode_selector.set_active_text (_("FLAC 24bit")); + break; + default: + encode_selector.set_active_text (_("None")); + break; + } +} + void SessionArchiveDialog::update_progress_gui (float p) { set_response_sensitive (RESPONSE_OK, false); set_response_sensitive (RESPONSE_CANCEL, false); progress_bar.show (); + if (p < 0) { + progress_bar.set_text (_("Archiving Session")); + return; + } + if (p > 1.0) { + progress_bar.set_text (_("Encoding Audio")); + return; + } progress_bar.set_fraction (p); }