diff options
author | Ben Loftis <ben@glw.com> | 2009-03-12 19:23:40 +0000 |
---|---|---|
committer | Ben Loftis <ben@glw.com> | 2009-03-12 19:23:40 +0000 |
commit | 8e530cba687fa7a8f5e27eff05b4f52276a33456 (patch) | |
tree | 700cbd9f93dea02ecead1801e6b0d85368e2f4f4 /gtk2_ardour | |
parent | d4be58825b56db1ee568cd05462879ef6f37e89f (diff) |
fix generic toggle controls so they play nicely with other controls or automation
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4806 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/generic_pluginui.cc | 39 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.h | 1 |
2 files changed, 24 insertions, 16 deletions
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index a5bfc38531..3a6c74fe91 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -448,14 +448,16 @@ GenericPluginUI::build_control_ui (guint32 port_index, PBD::Controllable* mcontr control_ui->pack_start (control_ui->label, true, true); control_ui->pack_start (*control_ui->button, false, true); - control_ui->pack_start (control_ui->automate_button, false, false); + //control_ui->pack_start (control_ui->automate_button, false, false); - control_ui->button->signal_clicked().connect (bind (mem_fun(*this, &GenericPluginUI::control_port_toggled), control_ui)); - - if(plugin->get_parameter (port_index) == 1){ + if(plugin->get_parameter (port_index) > 0.5){ control_ui->button->set_active(true); } + control_ui->button->signal_clicked().connect (bind (mem_fun(*this, &GenericPluginUI::control_port_toggled), control_ui)); + + plugin->ParameterChanged.connect (bind (mem_fun(*this, &GenericPluginUI::toggle_parameter_changed), control_ui)); + return control_ui; } @@ -574,9 +576,10 @@ GenericPluginUI::build_control_ui (guint32 port_index, PBD::Controllable* mcontr control_ui->meterinfo->packed = true; output_controls.push_back (control_ui); + + plugin->ParameterChanged.connect (bind (mem_fun(*this, &GenericPluginUI::parameter_changed), control_ui)); } - plugin->ParameterChanged.connect (bind (mem_fun(*this, &GenericPluginUI::parameter_changed), control_ui)); return control_ui; } @@ -640,6 +643,18 @@ GenericPluginUI::control_adjustment_changed (ControlUI* cui) } void +GenericPluginUI::toggle_parameter_changed (uint32_t abs_port_id, float val, ControlUI* cui) +{ + if (!cui->ignore_change && cui->port_index == abs_port_id) { + if (val > 0.5) { + cui->button->set_active (true); + } else { + cui->button->set_active (false); + } + } +} + +void GenericPluginUI::parameter_changed (uint32_t abs_port_id, float val, ControlUI* cui) { if (cui->port_index == abs_port_id) { @@ -668,14 +683,6 @@ GenericPluginUI::update_control_display (ControlUI* cui) break; } } - } else if (cui->adjustment == 0) { - - if (val > 0.5) { - cui->button->set_active (true); - } else { - cui->button->set_active (false); - } - } else { if (cui->logarithmic) { val = log(val); @@ -690,9 +697,9 @@ GenericPluginUI::update_control_display (ControlUI* cui) void GenericPluginUI::control_port_toggled (ControlUI* cui) { - if (!cui->ignore_change) { - insert->set_parameter (cui->port_index, cui->button->get_active()); - } + cui->ignore_change++; + insert->set_parameter (cui->port_index, cui->button->get_active()); + cui->ignore_change--; } void diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h index 95110a9d61..2bf7e7ba1e 100644 --- a/gtk2_ardour/plugin_ui.h +++ b/gtk2_ardour/plugin_ui.h @@ -191,6 +191,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox std::vector<string> setup_scale_values(guint32 port_index, ControlUI* cui); void control_adjustment_changed (ControlUI* cui); void parameter_changed (uint32_t, float, ControlUI* cui); + void toggle_parameter_changed (uint32_t, float, ControlUI* cui); void update_control_display (ControlUI* cui); void control_port_toggled (ControlUI* cui); void control_combo_changed (ControlUI* cui); |