- tree.read (filename);
- AudioRegionImportHandler *region_handler;
-
- region_handler = new AudioRegionImportHandler (tree, target);
- handlers.push_back (HandlerPtr(region_handler));
- handlers.push_back (HandlerPtr(new AudioPlaylistImportHandler (tree, target, *region_handler)));
- handlers.push_back (HandlerPtr(new UnusedAudioPlaylistImportHandler (tree, target, *region_handler)));
- handlers.push_back (HandlerPtr(new AudioTrackImportHandler (tree, target)));
- handlers.push_back (HandlerPtr(new LocationImportHandler (tree, target)));
- handlers.push_back (HandlerPtr(new TempoMapImportHandler (tree, target)));
-
- fill_list();
-
- if (ElementImportHandler::dirty()) {
- // Warn user
- string txt = _("Some elements had errors in them. Please see the log for details");
- Gtk::MessageDialog msg (txt, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, true);
- msg.run();
+ if (_session) {
+ if (tree.read (filename)) {
+ error << string_compose (_("Cannot load XML for session from %1"), filename) << endmsg;
+ return;
+ }
+ boost::shared_ptr<AudioRegionImportHandler> region_handler (new AudioRegionImportHandler (tree, *_session));
+ boost::shared_ptr<AudioPlaylistImportHandler> pl_handler (new AudioPlaylistImportHandler (tree, *_session, *region_handler));
+
+ handlers.push_back (boost::static_pointer_cast<ElementImportHandler> (region_handler));
+ handlers.push_back (boost::static_pointer_cast<ElementImportHandler> (pl_handler));
+ handlers.push_back (HandlerPtr(new UnusedAudioPlaylistImportHandler (tree, *_session, *region_handler)));
+ handlers.push_back (HandlerPtr(new AudioTrackImportHandler (tree, *_session, *pl_handler)));
+ handlers.push_back (HandlerPtr(new LocationImportHandler (tree, *_session)));
+ handlers.push_back (HandlerPtr(new TempoMapImportHandler (tree, *_session)));
+
+ fill_list();
+
+ if (ElementImportHandler::dirty()) {
+ // Warn user
+ string txt = _("Some elements had errors in them. Please see the log for details");
+ MessageDialog msg (txt, false, MESSAGE_WARNING, BUTTONS_OK, true);
+ msg.run();
+ }