Move Diskstream ownership to Track, so that Session no longer holds lists of Diskstre...
[ardour.git] / gtk2_ardour / editor_audio_import.cc
index 27b9178bb642be07eff1938af7bffbb4dc680e87..119ea3bc5127f337887da759a03aa0646b8c1c15 100644 (file)
@@ -58,6 +58,7 @@
 #include "session_import_dialog.h"
 #include "utils.h"
 #include "gui_thread.h"
+#include "interthread_progress_window.h"
 
 #include "i18n.h"
 
@@ -330,15 +331,7 @@ Editor::do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mod
        import_status.current = 1;
        import_status.total = paths.size ();
 
-       if (interthread_progress_window == 0) {
-               build_interthread_progress_window ();
-       }
-
-       interthread_progress_window->set_title (_("Import"));
-       interthread_progress_bar.set_fraction (0.0f);
-       interthread_cancel_label.set_text (_("Cancel Import"));
-       interthread_progress_connection = Glib::signal_timeout().connect
-               (sigc::bind (sigc::mem_fun(*this, &Editor::import_progress_timeout), (gpointer) 0), 500);
+       ImportProgressWindow ipw (&import_status, _("Import"), _("Cancel Import"));
 
        if (chns == Editing::ImportMergeFiles) {
 
@@ -419,9 +412,6 @@ Editor::do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mod
                         }
                 }
        }
-
-       interthread_progress_window->hide_all ();
-       interthread_progress_connection.disconnect ();
 }
 
 void
@@ -731,7 +721,7 @@ Editor::add_sources (vector<Glib::ustring> paths, SourceList& sources, nframes64
                if (sources[0]->natural_position() != 0) {
                        pos = sources[0]->natural_position();
                } else {
-                       pos = get_preferred_edit_position ();
+                       pos = _session->current_start_frame();
                }
        }
 
@@ -862,7 +852,7 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region, uint32_t
                        }
                }
 
-               boost::shared_ptr<Playlist> playlist = existing_track->diskstream()->playlist();
+               boost::shared_ptr<Playlist> playlist = existing_track->playlist();
                boost::shared_ptr<Region> copy (RegionFactory::create (region, region->properties()));
                begin_reversible_command (_("insert file"));
                 playlist->clear_history ();
@@ -897,7 +887,7 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region, uint32_t
                }
 
                boost::shared_ptr<Region> copy (RegionFactory::create (region));
-               existing_track->diskstream()->playlist()->add_region (copy, pos);
+               existing_track->playlist()->add_region (copy, pos);
                break;
        }
 
@@ -911,7 +901,7 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region, uint32_t
                if (!at.empty()) {
                        boost::shared_ptr<Region> copy (RegionFactory::create (region));
                        at.front()->set_name (basename_nosuffix (copy->name()));
-                       at.front()->diskstream()->playlist()->add_region (copy, pos);
+                       at.front()->playlist()->add_region (copy, pos);
                }
                break;
        }
@@ -937,43 +927,3 @@ Editor::import_thread ()
        /*NOTREACHED*/
        return 0;
 }
-
-gint
-Editor::import_progress_timeout (void */*arg*/)
-{
-       bool reset = false;
-
-       if (!interthread_progress_window->is_visible()) {
-               interthread_progress_window->show_all ();
-               reset = true;
-       }
-
-       interthread_progress_label.set_markup (import_status.doing_what);
-
-       if (import_status.freeze) {
-               interthread_cancel_button.set_sensitive(false);
-       } else {
-               interthread_cancel_button.set_sensitive(true);
-       }
-
-       if (import_status.doing_what == "building peak files") {
-               interthread_progress_bar.pulse ();
-               return FALSE;
-       } else {
-               float val = import_status.progress;
-               interthread_progress_bar.set_fraction (min (max (0.0f, val), 1.0f));
-       }
-
-       if (reset) {
-
-               /* the window is now visible, speed up the updates */
-
-               interthread_progress_connection.disconnect ();
-               interthread_progress_connection = Glib::signal_timeout().connect
-                       (sigc::bind (sigc::mem_fun(*this, &Editor::import_progress_timeout), (gpointer) 0), 100);
-               return false;
-       } else {
-               return !(import_status.done || import_status.cancel);
-       }
-}
-