X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fselection_memento.cc;h=4d80c2cc41a8ef41686a7691f3ebe6e5988aaff0;hb=refs%2Fheads%2Fcarl-master;hp=ae3ad730ad6aed67983d907e33bd1e1b280ad84c;hpb=91fac4c96dc6210dcc056da70dc608700d7eb570;p=ardour.git diff --git a/gtk2_ardour/selection_memento.cc b/gtk2_ardour/selection_memento.cc index ae3ad730ad..4d80c2cc41 100644 --- a/gtk2_ardour/selection_memento.cc +++ b/gtk2_ardour/selection_memento.cc @@ -1,28 +1,27 @@ /* - Copyright (C) 2014 Paul Davis - - 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. - -*/ + * Copyright (C) 2016-2017 Paul Davis + * + * 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ #include "ardour/lmath.h" #include "selection_memento.h" #include "editing.h" #include "public_editor.h" -#include "i18n.h" +#include "pbd/i18n.h" SelectionMemento::SelectionMemento () { @@ -36,16 +35,12 @@ XMLNode& SelectionMemento::get_state () { XMLNode* node = new XMLNode ("SelectionMemento"); - char buf[32]; PublicEditor& editor = PublicEditor::instance(); - node->add_property ("mouse-mode", enum2str(editor.current_mouse_mode())); - snprintf (buf, sizeof(buf), "%" PRId64, editor.get_current_zoom()); - node->add_property ("zoom", buf); - snprintf (buf, sizeof (buf), "%" PRIi64, editor.leftmost_sample()); - node->add_property ("left-frame", buf); - snprintf (buf, sizeof (buf), "%f", editor.get_y_origin()); - node->add_property ("y-origin", buf); + node->set_property ("mouse-mode", enum2str(editor.current_mouse_mode())); + node->set_property ("zoom", editor.get_current_zoom()); + node->set_property ("left-frame", editor.leftmost_sample()); + node->set_property ("y-origin", editor.get_y_origin()); node->add_child_nocopy (editor.get_selection().get_state()); return *node; @@ -54,35 +49,34 @@ SelectionMemento::get_state () { int SelectionMemento::set_state (const XMLNode& node, int /*version*/) { - const XMLProperty* prop; PublicEditor& editor = PublicEditor::instance(); if (node.name() != X_("SelectionMemento")) { return -1; } - if ((prop = node.property ("mouse-mode"))) { - Editing::MouseMode m = Editing::str2mousemode(prop->value()); + std::string str; + if (node.get_property ("mouse-mode", str)) { + Editing::MouseMode m = Editing::str2mousemode (str); editor.set_mouse_mode (m, true); } - if ((prop = node.property ("zoom"))) { + float zoom; + if (node.get_property ("zoom", zoom)) { /* older versions of ardour used floating point samples_per_pixel */ - double f = PBD::atof (prop->value()); - editor.reset_zoom (llrintf (f)); + editor.reset_zoom (llrintf (zoom)); } - if ((prop = node.property ("left-frame")) != 0) { - framepos_t pos; - if (sscanf (prop->value().c_str(), "%" PRId64, &pos) == 1) { - if (pos < 0) { - pos = 0; - } - editor.reset_x_origin (pos); + samplepos_t pos; + if (node.get_property ("left-frame", pos)) { + if (pos < 0) { + pos = 0; } + editor.reset_x_origin (pos); } - if ((prop = node.property ("y-origin")) != 0) { - editor.reset_y_origin (atof (prop->value ().c_str())); + double y_origin; + if (node.get_property ("y-origin", y_origin)) { + editor.reset_y_origin (y_origin); } XMLNodeList children = node.children ();