fix crash when copy'ing latent plugins
[ardour.git] / libs / ardour / location_importer.cc
index fd74e802a7c880e57995b9461b01d21ad6379f29..87c304ff9e264238fa9dfa9e29016cdafccf6b5b 100644 (file)
@@ -27,7 +27,7 @@
 #include "pbd/convert.h"
 #include "pbd/failed_constructor.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace PBD;
@@ -46,7 +46,7 @@ LocationImportHandler::LocationImportHandler (XMLTree const & source, Session &
 
        // Construct importable locations
        XMLNodeList const & locations = location_node->children();
-       for (XMLNodeList::const_iterator it = locations.begin(); it != locations.end(); it++) {
+       for (XMLNodeList::const_iterator it = locations.begin(); it != locations.end(); ++it) {
                try {
                        elements.push_back (ElementPtr ( new LocationImporter (source, session, *this, **it)));
                } catch (failed_constructor err) {
@@ -104,8 +104,8 @@ LocationImporter::~LocationImporter ()
 string
 LocationImporter::get_info () const
 {
-       nframes_t start, end;
-       SMPTE::Time start_time, end_time;
+       framepos_t start, end;
+       Timecode::Time start_time, end_time;
 
        // Get sample positions
        std::istringstream iss_start (xml_location.property ("start")->value());
@@ -113,17 +113,17 @@ LocationImporter::get_info () const
        std::istringstream iss_end (xml_location.property ("end")->value());
        iss_end >> end;
 
-       // Convert to smpte
-       session.sample_to_smpte (start, start_time, true, false);
-       session.sample_to_smpte (end, end_time, true, false);
+       // Convert to timecode
+       session.sample_to_timecode (start, start_time, true, false);
+       session.sample_to_timecode (end, end_time, true, false);
 
        // return info
        std::ostringstream oss;
        if (start == end) {
-               oss << _("Location: ") << smpte_to_string (start_time);
+               oss << _("Location: ") << timecode_to_string (start_time);
        } else {
-               oss << _("Range\nstart: ") << smpte_to_string (start_time) <<
-                 _("\nend: ") << smpte_to_string (end_time);
+               oss << _("Range\nstart: ") << timecode_to_string (start_time) <<
+                 _("\nend: ") << timecode_to_string (end_time);
        }
 
        return oss.str();
@@ -133,7 +133,7 @@ bool
 LocationImporter::_prepare_move ()
 {
        try {
-               Location const original (xml_location);
+               Location const original (session, xml_location);
                location = new Location (original); // Updates id
        } catch (failed_constructor& err) {
                throw std::runtime_error (X_("Error in session file!"));
@@ -143,7 +143,7 @@ LocationImporter::_prepare_move ()
        std::pair<bool, string> rename_pair;
 
        if (location->is_auto_punch()) {
-               rename_pair = Rename (_("The location is the Punch range. It will be imported as a normal range.\nYou may rename the imported location:"), name);
+               rename_pair = *Rename (_("The location is the Punch range. It will be imported as a normal range.\nYou may rename the imported location:"), name);
                if (!rename_pair.first) {
                        return false;
                }
@@ -154,7 +154,7 @@ LocationImporter::_prepare_move ()
        }
 
        if (location->is_auto_loop()) {
-               rename_pair = Rename (_("The location is a Loop range. It will be imported as a normal range.\nYou may rename the imported location:"), name);
+               rename_pair = *Rename (_("The location is a Loop range. It will be imported as a normal range.\nYou may rename the imported location:"), name);
                if (!rename_pair.first) { return false; }
 
                location->set_auto_loop (false, this);
@@ -165,7 +165,7 @@ LocationImporter::_prepare_move ()
        Locations::LocationList const & locations(session.locations()->list());
        for (Locations::LocationList::const_iterator it = locations.begin(); it != locations.end(); ++it) {
                if (!((*it)->name().compare (location->name())) || !handler.check_name (location->name())) {
-                       rename_pair = Rename (_("A location with that name already exists.\nYou may rename the imported location:"), name);
+                       rename_pair = *Rename (_("A location with that name already exists.\nYou may rename the imported location:"), name);
                        if (!rename_pair.first) { return false; }
                        name = rename_pair.second;
                }