const Evoral::Parameter& param,
boost::shared_ptr<AutomationControl> ac)
{
+ double const lo = ac->internal_to_interface(param.min());
+ double const up = ac->internal_to_interface(param.max());
Gtk::Adjustment* adjustment = manage (
- new Gtk::Adjustment (
- param.normal(),
- param.min(),
- param.max(),
- (param.max() - param.min()) / 100.0,
- (param.max() - param.min()) / 10.0
- )
- );
-
- assert (ac);
- assert(ac->parameter() == param);
+ new Gtk::Adjustment (
+ ac->internal_to_interface(param.normal()),
+ lo, up,
+ // TODO we should use explicit step-sizes if provided by Plugin::ParameterDescriptor
+ (up - lo) / 100, (up - lo) / 10
+ )
+ );
+
+ assert (ac);
+ assert(ac->parameter() == param);
return boost::shared_ptr<AutomationController>(new AutomationController(printer, ac, adjustment));
}
void
AutomationController::display_effective_value()
{
- double const interface_value = _controllable->get_value();
+ double const interface_value = _controllable->internal_to_interface(_controllable->get_value());
if (_adjustment->get_value () != interface_value) {
_ignore_change = true;
AutomationController::value_adjusted ()
{
if (!_ignore_change) {
- _controllable->set_value (_adjustment->get_value());
+ _controllable->set_value (_controllable->interface_to_internal(_adjustment->get_value()));
}
}
Adjustment* adj = control_ui->controller->adjustment();
boost::shared_ptr<PluginInsert::PluginControl> pc = boost::dynamic_pointer_cast<PluginInsert::PluginControl> (control_ui->control);
- adj->set_lower (desc.lower);
- adj->set_upper (desc.upper);
-
- adj->set_step_increment (desc.step);
- adj->set_page_increment (desc.largestep);
-
if (desc.integer_step) {
control_ui->clickbox = new ClickBox (adj, "PluginUIClickBox");
Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->clickbox, "g9999999", 2, 2);
}
- adj->set_value (plugin->get_parameter (port_index));
+ adj->set_value (mcontrol->internal_to_interface(plugin->get_parameter (port_index)));
/* XXX memory leak: SliderController not destroyed by ControlUI
destructor, and manage() reports object hierarchy
box.add (_slider);
_slider.show ();
- double const lo = c->lower ();
- double const up = c->upper ();
+ double const lo = c->internal_to_interface(c->lower ());
+ double const up = c->internal_to_interface(c->upper ());
_adjustment.set_lower (lo);
_adjustment.set_upper (up);
_adjustment.set_step_increment ((up - lo) / 100);
_adjustment.set_page_increment ((up - lo) / 10);
- _slider.set_default_value (c->normal ());
+ _slider.set_default_value (c->internal_to_interface(c->normal ()));
_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Control::slider_adjusted));
c->Changed.connect (_connection, MISSING_INVALIDATOR, boost::bind (&Control::control_changed, this), gui_context ());
return;
}
- c->set_value ( _adjustment.get_value () );
+ c->set_value ( c->interface_to_internal(_adjustment.get_value ()) );
set_tooltip ();
}
} else {
- _adjustment.set_value (c->get_value ());
+ _adjustment.set_value (c->internal_to_interface(c->get_value ()));
stringstream s;
s.precision (1);