From a957d058e4b64317a62b6f28307bfa52c0510194 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 21 Sep 2016 12:56:20 +0200 Subject: [PATCH] Update Archive GUI: expose audio-encoding, set progress text --- gtk2_ardour/session_archive_dialog.cc | 67 ++++++++++++++++++++++++--- gtk2_ardour/session_archive_dialog.h | 16 +++---- 2 files changed, 69 insertions(+), 14 deletions(-) diff --git a/gtk2_ardour/session_archive_dialog.cc b/gtk2_ardour/session_archive_dialog.cc index 7c97e8b862..24ecba6b71 100644 --- a/gtk2_ardour/session_archive_dialog.cc +++ b/gtk2_ardour/session_archive_dialog.cc @@ -41,15 +41,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 +64,14 @@ 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 (progress_bar, true, true, 12); - progress_bar.set_text (_("Archiving")); vbox->show_all (); progress_bar.hide (); @@ -85,7 +96,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 +112,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 +126,54 @@ 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 (); } +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); } diff --git a/gtk2_ardour/session_archive_dialog.h b/gtk2_ardour/session_archive_dialog.h index d8c96f61c3..c82cbf5152 100644 --- a/gtk2_ardour/session_archive_dialog.h +++ b/gtk2_ardour/session_archive_dialog.h @@ -37,18 +37,18 @@ public: std::string target_folder () const; std::string name () const; + ARDOUR::Session::ArchiveEncode encode_option () const; - ARDOUR::Session::ArchiveEncode encode_option () const { - return ARDOUR::Session::FLAC_16BIT; - } - - void set_name (std::string); - + void set_name (const std::string&); + void set_target_folder (const std::string&); + void set_encode_option (ARDOUR::Session::ArchiveEncode); private: Gtk::FileChooserButton target_folder_selector; - Gtk::Entry name_entry; - Gtk::ComboBoxText zip_ext; + Gtk::Entry name_entry; + Gtk::ComboBoxText format_selector; + Gtk::ComboBoxText encode_selector; + Gtk::ProgressBar progress_bar; void name_entry_changed ();