provide access to Send + Plugins from MIDI binding maps
[ardour.git] / libs / ardour / ardour / audio_playlist_importer.h
index a3e72f18c859d135b073b9a14a935c137dd1c242..5ab8ae9b26f5dccf5fefd1866ec2eb9895752922 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 "ardour/element_importer.h"
+#include "ardour/element_import_handler.h"
+#include "ardour/types.h"
 
 #include "i18n.h"
 
@@ -38,17 +38,23 @@ namespace ARDOUR {
 
 class AudioRegionImportHandler;
 class AudioRegionImporter;
+class AudioPlaylistImporter;
 
 class 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;
 };
@@ -58,26 +64,35 @@ class 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)"); }
+       std::string get_info () const { return _("Audio Playlists (unused)"); }
 };
 
 class 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;
 };