2 Copyright (C) 2008 Paul Davis
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 #ifndef __ardour_audio_region_importer_h__
22 #define __ardour_audio_region_importer_h__
28 #include <boost/shared_ptr.hpp>
30 #include "pbd/xml++.h"
32 #include "pbd/filesystem.h"
33 #include "ardour/types.h"
34 #include "ardour/element_importer.h"
35 #include "ardour/element_import_handler.h"
41 class AudioRegionImportHandler : public ElementImportHandler
44 // Inerface implementation
45 AudioRegionImportHandler (XMLTree const & source, Session & session);
46 string get_info () const;
48 void create_regions_from_children (XMLNode const & node, ElementList & list);
51 bool check_source (string const & filename) const;
52 void add_source (string const & filename, boost::shared_ptr<Source> const & source);
53 boost::shared_ptr<Source> const & get_source (string const & filename) const;
56 void register_id (PBD::ID & old_id, PBD::ID & new_id);
57 PBD::ID const & get_new_id (PBD::ID & old_id) const;
61 typedef std::map<string, boost::shared_ptr<Source> > SourceMap;
62 typedef std::pair<string, boost::shared_ptr<Source> > SourcePair;
66 typedef std::map<PBD::ID, PBD::ID> IdMap;
67 typedef std::pair<PBD::ID, PBD::ID> IdPair;
71 class AudioRegionImporter : public ElementImporter
74 AudioRegionImporter (XMLTree const & source, Session & session, AudioRegionImportHandler & handler, XMLNode const & node);
75 ~AudioRegionImporter ();
77 // Interface implementation
78 string get_info () const;
79 Session::ImportStatus * get_import_status () { return &status; }
82 void add_sources_to_session ();
83 XMLNode const & get_xml ();
86 bool _prepare_move ();
93 AudioRegionImportHandler & handler;
96 std::list<string> filenames;
97 Session::ImportStatus status;
99 bool parse_xml_region ();
100 bool parse_source_xml ();
101 PBD::sys::path get_sound_dir (XMLTree const & tree);
103 void prepare_region ();
104 void prepare_sources ();
105 std::vector<boost::shared_ptr<Region> > region;
106 bool region_prepared;
107 bool sources_prepared;
110 } // namespace ARDOUR