treat VCA assign as a RouteGroup property.
[ardour.git] / libs / ardour / ardour / audio_playlist_importer.h
index a3e72f18c859d135b073b9a14a935c137dd1c242..a6d68b9c731032024ab2909d0b56288782a62ade 100644 (file)
 
 #include <boost/shared_ptr.hpp>
 
-#include <pbd/xml++.h>
-#include <pbd/id.h>
+#include "pbd/xml++.h"
+#include "pbd/id.h"
 
-#include <ardour/element_importer.h>
-#include <ardour/element_import_handler.h>
-#include <ardour/types.h>
-
-#include "i18n.h"
+#include "ardour/element_importer.h"
+#include "ardour/element_import_handler.h"
 
 namespace ARDOUR {
 
 class AudioRegionImportHandler;
 class AudioRegionImporter;
+class AudioPlaylistImporter;
+class Session;
 
-class AudioPlaylistImportHandler : public ElementImportHandler
+class LIBARDOUR_API AudioPlaylistImportHandler : public ElementImportHandler
 {
   public:
+       typedef boost::shared_ptr<AudioPlaylistImporter> PlaylistPtr;
+       typedef std::list<PlaylistPtr> PlaylistList;
+
        AudioPlaylistImportHandler (XMLTree const & source, Session & session, AudioRegionImportHandler & region_handler, const char * nodename = "Playlists");
        virtual ~AudioPlaylistImportHandler () {}
-       virtual string get_info () const;
-       
-       void get_regions (XMLNode const & node, ElementList & list);
+       virtual std::string get_info () const;
+
+       void get_regions (XMLNode const & node, ElementList & list) const;
        void update_region_id (XMLProperty* id_prop);
-       
+
+       void playlists_by_diskstream (PBD::ID const & id, PlaylistList & list) const;
+
   protected:
        AudioRegionImportHandler & region_handler;
 };
 
-class UnusedAudioPlaylistImportHandler : public AudioPlaylistImportHandler
+class LIBARDOUR_API UnusedAudioPlaylistImportHandler : public AudioPlaylistImportHandler
 {
   public:
        UnusedAudioPlaylistImportHandler (XMLTree const & source, Session & session, AudioRegionImportHandler & region_handler) :
-               AudioPlaylistImportHandler (source, session, region_handler, X_("UnusedPlaylists")) { }
-       string get_info () const { return _("Audio Playlists (unused)"); }
+               AudioPlaylistImportHandler (source, session, region_handler, "UnusedPlaylists") { }
+       std::string get_info () const;
 };
 
-class AudioPlaylistImporter : public ElementImporter
+class LIBARDOUR_API AudioPlaylistImporter : public ElementImporter
 {
   public:
        AudioPlaylistImporter (XMLTree const & source, Session & session, AudioPlaylistImportHandler & handler, XMLNode const & node);
+       AudioPlaylistImporter (AudioPlaylistImporter const & other);
+       ~AudioPlaylistImporter ();
+
+       std::string get_info () const;
 
-       string get_info () const;
-       bool prepare_move ();
-       void cancel_move ();
-       void move ();
-       
        void set_diskstream (PBD::ID const & id);
+       PBD::ID const & orig_diskstream () const { return orig_diskstream_id; }
+
+  protected:
+       bool _prepare_move ();
+       void _cancel_move ();
+       void _move ();
 
   private:
        typedef std::list<boost::shared_ptr<AudioRegionImporter> > RegionList;
 
+       void populate_region_list ();
+
        AudioPlaylistImportHandler & handler;
+       XMLNode const & orig_node;
        XMLNode xml_playlist;
+       PBD::ID orig_diskstream_id;
        PBD::ID diskstream_id;
        RegionList regions;
 };