enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
[ardour.git] / gtk2_ardour / export_dialog.cc
index dfba7550aca57c28e8086f191ec8fe359baf1267..59985a04590eecf29202fc02cd1794b00fa3c770 100644 (file)
 #include "ardour/audioregion.h"
 #include "ardour/export_status.h"
 #include "ardour/export_handler.h"
+#include "ardour/profile.h"
 
 #include "export_dialog.h"
+#include "export_report.h"
 #include "gui_thread.h"
 #include "nag.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace ARDOUR;
 using namespace PBD;
@@ -129,11 +131,11 @@ ExportDialog::init ()
        export_button = add_button (_("Export"), RESPONSE_FAST);
        set_default_response (RESPONSE_FAST);
 
-       list_files_button.set_name ("PaddedButton");
-
        cancel_button->signal_clicked().connect (sigc::mem_fun (*this, &ExportDialog::close_dialog));
        export_button->signal_clicked().connect (sigc::mem_fun (*this, &ExportDialog::do_export));
 
+       file_notebook->soundcloud_export_selector = soundcloud_selector;
+
        /* Done! */
 
        show_all_children ();
@@ -156,7 +158,7 @@ ExportDialog::init_gui ()
        export_notebook.append_page (*file_format_selector, _("File format"));
        export_notebook.append_page (*timespan_selector, _("Time Span"));
        export_notebook.append_page (*channel_selector, _("Channels"));
-       
+
        get_vbox()->pack_start (export_notebook, true, true, 0);
        get_vbox()->pack_end   (warning_widget, false, false, 0);
        get_vbox()->pack_end   (progress_widget, false, false, 0);
@@ -186,7 +188,7 @@ ExportDialog::notify_errors (bool force)
 void
 ExportDialog::close_dialog ()
 {
-       if (status->running) {
+       if (status->running ()) {
                status->abort();
        }
 
@@ -271,13 +273,14 @@ ExportDialog::do_export ()
 {
        try {
                profile_manager->prepare_for_export ();
-               handler->upload_username = soundcloud_selector->username();
-               handler->upload_password = soundcloud_selector->password();
-               handler->upload_public   = soundcloud_selector->upload_public();
-               handler->upload_open     = soundcloud_selector->upload_open();
+               handler->soundcloud_username     = soundcloud_selector->username ();
+               handler->soundcloud_password     = soundcloud_selector->password ();
+               handler->soundcloud_make_public  = soundcloud_selector->make_public ();
+               handler->soundcloud_open_page    = soundcloud_selector->open_page ();
+               handler->soundcloud_downloadable = soundcloud_selector->downloadable ();
 
                handler->SoundcloudProgress.connect_same_thread(
-                               *this, 
+                               *this,
                                boost::bind(&ExportDialog::soundcloud_upload_progress, this, _1, _2, _3)
                                );
 #if 0
@@ -298,7 +301,7 @@ ExportDialog::do_export ()
 void
 ExportDialog::show_progress ()
 {
-       status->running = true;
+       export_notebook.set_sensitive (false);
 
        cancel_button->set_label (_("Stop Export"));
        export_button->set_sensitive (false);
@@ -311,43 +314,66 @@ ExportDialog::show_progress ()
 
        gtk_main_iteration ();
 
-       while (status->running) {
+       while (status->running ()) {
                if (gtk_events_pending()) {
                        gtk_main_iteration ();
                } else {
-                       usleep (10000);
+                       Glib::usleep (10000);
                }
        }
 
-       if (!status->aborted()) {
+       status->finish ();
 
-               NagScreen* ns = NagScreen::maybe_nag (_("export"));
-               
-               if (ns) {
-                       ns->nag ();
-                       delete ns;
+       if (!status->aborted() && status->result_map.size() > 0) {
+               hide();
+               ExportReport er (_session, status);
+               er.run();
+       }
+
+       if (!status->aborted()) {
+               hide();
+               if (!ARDOUR::Profile->get_mixbus()) {
+                       NagScreen* ns = NagScreen::maybe_nag (_("export"));
+                       if (ns) {
+                               ns->nag ();
+                               delete ns;
+                       }
                }
        } else {
                notify_errors ();
        }
-
-       status->finish ();
+       export_notebook.set_sensitive (true);
 }
 
 gint
 ExportDialog::progress_timeout ()
 {
        std::string status_text;
-       float progress = 0.0;
-       if (status->normalizing) {
+       float progress = -1;
+       switch (status->active_job) {
+       case ExportStatus::Exporting:
+               status_text = string_compose (_("Exporting '%3' (timespan %1 of %2)"),
+                                             status->timespan, status->total_timespans, status->timespan_name);
+               progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan;
+               break;
+       case ExportStatus::Normalizing:
                status_text = string_compose (_("Normalizing '%3' (timespan %1 of %2)"),
                                              status->timespan, status->total_timespans, status->timespan_name);
                progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles;
-       } else {
-               status_text = string_compose (_("Exporting '%3' (timespan %1 of %2)"),
+               break;
+       case ExportStatus::Tagging:
+               status_text = string_compose (_("Tagging '%3' (timespan %1 of %2)"),
                                              status->timespan, status->total_timespans, status->timespan_name);
-               progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan;
+               break;
+       case ExportStatus::Uploading:
+               status_text = string_compose (_("Uploading '%3' (timespan %1 of %2)"),
+                                             status->timespan, status->total_timespans, status->timespan_name);
+               break;
+       case ExportStatus::Command:
+               status_text = string_compose (_("Running Post Export Command for '%1'"), status->timespan_name);
+               break;
        }
+
        progress_bar.set_text (status_text);
 
        if (progress < previous_progress) {
@@ -357,7 +383,12 @@ ExportDialog::progress_timeout ()
        }
        previous_progress = progress;
 
-       progress_bar.set_fraction (progress);
+       if (progress >= 0) {
+               progress_bar.set_fraction (progress);
+       } else {
+               progress_bar.set_pulse_step(.1);
+               progress_bar.pulse();
+       }
        return TRUE;
 }