UI updates for detailed export state.
authorRobin Gareus <robin@gareus.org>
Tue, 9 Feb 2016 12:19:34 +0000 (13:19 +0100)
committerRobin Gareus <robin@gareus.org>
Tue, 9 Feb 2016 12:19:34 +0000 (13:19 +0100)
gtk2_ardour/export_dialog.cc
gtk2_ardour/export_video_dialog.cc
session_utils/export.cc

index ad8873d6dc0d2c262762cdbbffa28f329ee1320a..96870428efba03bf2f9c9374168fa31f9136baf0 100644 (file)
@@ -339,16 +339,31 @@ 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) {
@@ -358,7 +373,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;
 }
 
index 10ec8ac882d57d7edda00f61656ce51a3c0d02d4..18bbfcf5a8ab7e9767cab80142214694b69c7cdc 100644 (file)
@@ -555,23 +555,36 @@ gint
 ExportVideoDialog::audio_progress_display ()
 {
        std::string status_text;
-       double progress = 0.0;
-               if (status->normalizing) {
+       double progress = -1.0;
+       switch (status->active_job) {
+               case ExportStatus::Normalizing:
                        pbar.set_text (_("Normalizing audio"));
                        progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles;
-                       progress = progress / (_twopass ? 4.0 : 3.0) + (_twopass ? .25 : 1.0/3.0);
-               } else {
+                       progress = progress / (_twopass ? 4.0 : 3.0) + (_twopass ? .25 : 1.0 / 3.0);
+                       break;
+               case ExportStatus::Exporting:
                        pbar.set_text (_("Exporting audio"));
                        progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan;
                        progress = progress / ((_twopass ? 2.0 : 1.0) + (_normalize ? 2.0 : 1.0));
-               }
-               if (progress < _previous_progress) {
-                       // Work around gtk bug
-                       pbar.hide();
-                       pbar.show();
-               }
-               _previous_progress = progress;
+                       break;
+               default:
+                       pbar.set_text (_("Exporting audio"));
+                       break;
+       }
+
+       if (progress < _previous_progress) {
+               // Work around gtk bug
+               pbar.hide();
+               pbar.show();
+       }
+       _previous_progress = progress;
+
+       if (progress >= 0) {
                pbar.set_fraction (progress);
+       } else {
+               pbar.set_pulse_step(.1);
+               pbar.pulse();
+       }
        return TRUE;
 }
 
index e7d169a0d3f1366f76372f8fc160cbc09b0b19b4..6b27860ffdba151fdb2dc192c6e35a2e9a1693d6 100644 (file)
@@ -121,12 +121,19 @@ static int export_session (Session *session,
        // TODO trap SIGINT -> status->abort();
 
        while (status->running) {
-               if (status->normalizing) {
-                       double progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles;
+               double progress = 0.0;
+               switch (status->active_job) {
+               case ExportStatus::Normalizing:
+                       progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles;
                        printf ("* Normalizing %.1f%%      \r", 100. * progress); fflush (stdout);
-               } else {
-                       double progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan;
+                       break;
+               case ExportStatus::Exporting:
+                       progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan;
                        printf ("* Exporting Audio %.1f%%  \r", 100. * progress); fflush (stdout);
+                       break;
+               default:
+                       printf ("* Exporting...            \r");
+                       break;
                }
                Glib::usleep (1000000);
        }