From 572fa80aa713e723f63e1e1822db614307eea6af Mon Sep 17 00:00:00 2001 From: Sakari Bergen Date: Fri, 26 Sep 2008 08:29:30 +0000 Subject: Add Import from session -functionality git-svn-id: svn://localhost/ardour2/branches/3.0@3805 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/tempo_map_importer.cc | 108 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 libs/ardour/tempo_map_importer.cc (limited to 'libs/ardour/tempo_map_importer.cc') diff --git a/libs/ardour/tempo_map_importer.cc b/libs/ardour/tempo_map_importer.cc new file mode 100644 index 0000000000..45f2c90dfa --- /dev/null +++ b/libs/ardour/tempo_map_importer.cc @@ -0,0 +1,108 @@ +/* + Copyright (C) 2008 Paul Davis + Author: Sakari Bergen + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include + +#include + +#include +#include +#include +#include + +#include "i18n.h" + +using namespace PBD; +using namespace ARDOUR; + +/**** Handler ***/ +TempoMapImportHandler::TempoMapImportHandler (XMLTree const & source, Session & session) : + ElementImportHandler (source, session) +{ + XMLNode const * root = source.root(); + XMLNode const * tempo_map; + + if (!(tempo_map = root->child (X_("TempoMap")))) { + throw failed_constructor(); + } + + elements.push_back (ElementPtr ( new TempoMapImporter (source, session, *tempo_map))); +} + +string +TempoMapImportHandler::get_info () const +{ + return _("Tempo map"); +} + +/*** TempoMapImporter ***/ +TempoMapImporter::TempoMapImporter (XMLTree const & source, Session & session, XMLNode const & node) : + ElementImporter (source, session), + xml_tempo_map (node) +{ + name = _("Tempo Map"); +} + +string +TempoMapImporter::get_info () const +{ + std::ostringstream oss; + unsigned int tempos = 0; + unsigned int meters = 0; + XMLNodeList children = xml_tempo_map.children(); + + for (XMLNodeIterator it = children.begin(); it != children.end(); it++) { + if ((*it)->name() == "Tempo") { + tempos++; + } else if ((*it)->name() == "Meters") { + meters++; + } + } + + // return info + oss << _("Tempo marks: ") << tempos << _("\nMeter marks: ") << meters; + + return oss.str(); +} + +bool +TempoMapImporter::prepare_move () +{ + // Prompt user for verification + bool replace = Prompt (_("This will replace the current tempo map!\nAre you shure you want to do this?")); + + if (replace) { + queued = true; + } + + return replace; +} + +void +TempoMapImporter::cancel_move () +{ + queued = false; +} + +void +TempoMapImporter::move () +{ + session.tempo_map().set_state (xml_tempo_map); +} -- cgit v1.2.3