X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_file_notebook.cc;h=a3af969740bb3a5535762b164b6c07aa36d8e8a3;hb=f1571ab7edc65ec1fc507b05d7bbc397b3549007;hp=00e26872514147cf280d7c8de1ec357a6f640b72;hpb=8c9749e42faf7808034ed8b7afce4a2fe6dc6f33;p=ardour.git diff --git a/gtk2_ardour/export_file_notebook.cc b/gtk2_ardour/export_file_notebook.cc index 00e2687251..a3af969740 100644 --- a/gtk2_ardour/export_file_notebook.cc +++ b/gtk2_ardour/export_file_notebook.cc @@ -24,9 +24,10 @@ #include "gui_thread.h" #include "utils.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace ARDOUR; +using namespace ARDOUR_UI_UTILS; using namespace PBD; ExportFileNotebook::ExportFileNotebook () : @@ -91,43 +92,47 @@ ExportFileNotebook::sync_with_manager () } void -ExportFileNotebook::update_soundcloud_upload() +ExportFileNotebook::update_soundcloud_upload () { int i; + bool show_credentials_entry = false; ExportProfileManager::FormatStateList const & formats = profile_manager->get_formats (); ExportProfileManager::FormatStateList::const_iterator format_it; for (i = 0, format_it = formats.begin(); format_it != formats.end(); ++i, ++format_it) { FilePage * page; - std::cerr << "get_nth_soundcloud_upload " << i << std::endl; if ((page = dynamic_cast (get_nth_page (i)))) { - (*format_it)->format->set_soundcloud_upload( page->get_soundcloud_upload () ); - // profile_manager->soundcloud_upload_list.push_back (page->get_soundcloud_upload () ); - } else { - std::cerr << "not a page!" << std::endl; + bool this_soundcloud_upload = page->get_soundcloud_upload (); + (*format_it)->format->set_soundcloud_upload (this_soundcloud_upload); + if (this_soundcloud_upload) { + show_credentials_entry = true; + } } } + soundcloud_export_selector->set_visible (show_credentials_entry); +} +void +ExportFileNotebook::FilePage::analysis_changed () +{ + format_state->format->set_analyse (analysis_button.get_active ()); + profile_manager->save_format_to_disk (format_state->format); } void -ExportFileNotebook::update_example_filenames() +ExportFileNotebook::FilePage::update_analysis_button () { - int i = 0; - FilePage * page; - while ((page = dynamic_cast (get_nth_page (i++)))) { - page->update_example_filename(); - } + analysis_button.set_active (format_state->format->analyse()); } -std::string -ExportFileNotebook::get_nth_format_name (uint32_t n) +void +ExportFileNotebook::update_example_filenames () { + int i = 0; FilePage * page; - if ((page = dynamic_cast (get_nth_page (n - 1)))) { - return page->get_format_name(); + while ((page = dynamic_cast (get_nth_page (i++)))) { + page->update_example_filename(); } - return ""; } void @@ -187,6 +192,7 @@ ExportFileNotebook::handle_page_change (GtkNotebookPage*, uint32_t page) } else { last_visible_page = page; } + update_soundcloud_upload (); } ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager, ExportFileNotebook * parent, uint32_t number, @@ -199,6 +205,7 @@ ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager, format_label (_("Format"), Gtk::ALIGN_LEFT), filename_label (_("Location"), Gtk::ALIGN_LEFT), soundcloud_upload_button (_("Upload to Soundcloud")), + analysis_button (_("Analyze Exported Audio")), tab_number (number) { set_border_width (12); @@ -207,7 +214,12 @@ ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager, pack_start (format_align, false, false, 0); pack_start (filename_label, false, false, 0); pack_start (filename_align, false, false, 0); - pack_start (soundcloud_upload_button, false, false, 0); + + Gtk::HBox *hbox = Gtk::manage (new Gtk::HBox()); + hbox->set_spacing (6); + hbox->pack_start (soundcloud_upload_button, false, false, 0); + hbox->pack_start (analysis_button, false, false, 0); + pack_start (*hbox, false, false, 0); format_align.add (format_selector); format_align.set_padding (6, 12, 18, 0); @@ -225,7 +237,9 @@ ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager, /* Set states */ format_selector.set_state (format_state, s); - filename_selector.set_state (filename_state, s); + filename_selector.set_state (filename_state, s); + analysis_button.set_active (format_state->format->analyse()); + soundcloud_upload_button.set_active (format_state->format->soundcloud_upload()); /* Signals */ @@ -243,6 +257,8 @@ ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager, sigc::mem_fun (*this, &ExportFileNotebook::FilePage::critical_selection_changed)); soundcloud_upload_button.signal_toggled().connect (sigc::mem_fun (*parent, &ExportFileNotebook::update_soundcloud_upload)); + soundcloud_upload_button.signal_toggled().connect (sigc::mem_fun (*this, &ExportFileNotebook::FilePage::soundcloud_upload_changed)); + analysis_button.signal_toggled().connect (sigc::mem_fun (*this, &ExportFileNotebook::FilePage::analysis_changed)); /* Tab widget */ tab_close_button.add (*Gtk::manage (new Gtk::Image (::get_icon("close")))); @@ -285,6 +301,18 @@ ExportFileNotebook::FilePage::get_soundcloud_upload () const return soundcloud_upload_button.get_active (); } +void +ExportFileNotebook::FilePage::soundcloud_upload_changed () +{ + profile_manager->save_format_to_disk (format_state->format); +} + +void +ExportFileNotebook::FilePage::update_soundcloud_upload_button () +{ + soundcloud_upload_button.set_active (format_state->format->soundcloud_upload()); +} + void ExportFileNotebook::FilePage::save_format_to_manager (FormatPtr format) { @@ -301,13 +329,19 @@ void ExportFileNotebook::FilePage::update_example_filename() { if (profile_manager) { + if (profile_manager->get_timespans().size() > 1 + || profile_manager->get_timespans().front()->timespans->size() > 1) { + filename_selector.require_timespan (true); + } else { + filename_selector.require_timespan (false); + } std::string example; if (format_state->format) { example = profile_manager->get_sample_filename_for_format ( filename_state->filename, format_state->format); } - + if (example != "") { filename_selector.set_example_filename(Glib::path_get_basename (example)); } else { @@ -321,5 +355,7 @@ ExportFileNotebook::FilePage::critical_selection_changed () { update_tab_label(); update_example_filename(); + update_analysis_button(); + update_soundcloud_upload_button(); CriticalSelectionChanged(); }