X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fautomation_controller.cc;h=79aec89f9c3bfbfe93c9dadbad3fdb46351b1d62;hb=11d041f6c021b70dd245fd41e9f167cb0f36c96e;hp=540612c8d456d49d2f3385c18a83fbe87fb624e4;hpb=d116af22db3c0e0cf6aeff6194a689d8bfad7c8c;p=ardour.git diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc index 540612c8d4..79aec89f9c 100644 --- a/gtk2_ardour/automation_controller.cc +++ b/gtk2_ardour/automation_controller.cc @@ -1,6 +1,6 @@ /* Copyright (C) 2007 Paul Davis - Author: Dave Robillard + Author: David Robillard 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 @@ -41,13 +41,15 @@ using namespace ARDOUR; using namespace Gtk; -AutomationController::AutomationController(boost::shared_ptr owner, boost::shared_ptr ac, Adjustment* adj) +AutomationController::AutomationController(boost::shared_ptr printer, boost::shared_ptr ac, Adjustment* adj) : BarController (*adj, ac) , _ignore_change(false) - , _owner (owner) + , _printer (printer) , _controllable(ac) , _adjustment(adj) { + assert (_printer); + set_name (X_("PluginSlider")); // FIXME: get yer own name! set_style (BarController::LeftToRight); set_use_parent (true); @@ -70,43 +72,40 @@ AutomationController::~AutomationController() boost::shared_ptr AutomationController::create( - boost::shared_ptr parent, + boost::shared_ptr printer, const Evoral::Parameter& param, boost::shared_ptr ac) { - Gtk::Adjustment* adjustment = manage(new Gtk::Adjustment(param.normal(), param.min(), param.max())); - if (!ac) { - PBD::warning << "Creating AutomationController for " << EventTypeMap::instance().to_symbol(param) << endmsg; - ac = boost::dynamic_pointer_cast(parent->control_factory(param)); - } else { - assert(ac->parameter() == param); - } - return boost::shared_ptr(new AutomationController(parent, ac, adjustment)); + Gtk::Adjustment* adjustment = manage (new Gtk::Adjustment (param.normal(), param.min(), param.max())); + assert (ac); + assert(ac->parameter() == param); + return boost::shared_ptr(new AutomationController(printer, ac, adjustment)); } std::string -AutomationController::get_label (int&) +AutomationController::get_label (double& xpos) { - return _owner->value_as_string (_controllable); + xpos = 0.5; + return _printer->value_as_string (_controllable); } void AutomationController::display_effective_value() { - float value = _controllable->get_value(); + double const ui_value = _controllable->user_to_ui (_controllable->get_value()); - if (_adjustment->get_value() != value) { + if (_adjustment->get_value() != ui_value) { _ignore_change = true; - _adjustment->set_value (value); + _adjustment->set_value (ui_value); _ignore_change = false; } } void -AutomationController::value_adjusted() +AutomationController::value_adjusted () { if (!_ignore_change) { - _controllable->set_value(_adjustment->get_value()); + _controllable->set_value (_controllable->ui_to_user (_adjustment->get_value())); } } @@ -123,7 +122,7 @@ AutomationController::end_touch () bool mark = false; double when = 0; - + if (_controllable->session().transport_rolling()) { mark = true; when = _controllable->session().transport_frame();