GenericUI: replace ComboBoxText by ArdourDropdown
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Thu, 28 Jul 2016 12:25:40 +0000 (14:25 +0200)
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Thu, 28 Jul 2016 21:18:47 +0000 (23:18 +0200)
gtk2_ardour/generic_pluginui.cc
gtk2_ardour/plugin_ui.h

index 637eca0bbf8305174826b71a5d11c1067886f461..316c7a1f0fad1c08a9b308661e051fce3ad68d2b 100644 (file)
@@ -670,21 +670,17 @@ GenericPluginUI::build_control_ui (const Evoral::Parameter&             param,
                         *   b) This port is marked as being an enumeration.
                         */
 
-                       std::vector<std::string> labels;
-                       for (
-                               ARDOUR::ScalePoints::const_iterator i = control_ui->scale_points->begin();
-                               i != control_ui->scale_points->end();
-                               ++i) {
-
-                               labels.push_back(i->first);
+                       control_ui->combo = new ArdourDropdown();
+                       for (ARDOUR::ScalePoints::const_iterator i = control_ui->scale_points->begin();
+                            i != control_ui->scale_points->end();
+                            ++i) {
+                               control_ui->combo->AddMenuElem(Menu_Helpers::MenuElem(
+                                               i->first,
+                                               sigc::bind(sigc::mem_fun(*this, &GenericPluginUI::control_combo_changed),
+                                                          control_ui,
+                                                          i->second)));
                        }
 
-                       // TODO use ArdourDropDown
-                       control_ui->combo = new Gtk::ComboBoxText();
-                       set_popdown_strings(*control_ui->combo, labels);
-                       control_ui->combo->signal_changed().connect(
-                               sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::control_combo_changed),
-                                           control_ui));
                        mcontrol->Changed.connect(control_connections, invalidator(*this),
                                                  boost::bind(&GenericPluginUI::ui_parameter_changed,
                                                              this, control_ui),
@@ -982,7 +978,7 @@ GenericPluginUI::update_control_display (ControlUI* cui)
        if (cui->combo && cui->scale_points) {
                for (ARDOUR::ScalePoints::iterator it = cui->scale_points->begin(); it != cui->scale_points->end(); ++it) {
                        if (it->second == val) {
-                               cui->combo->set_active_text(it->first);
+                               cui->combo->set_text(it->first);
                                break;
                        }
                }
@@ -1006,11 +1002,10 @@ GenericPluginUI::update_control_display (ControlUI* cui)
 }
 
 void
-GenericPluginUI::control_combo_changed (ControlUI* cui)
+GenericPluginUI::control_combo_changed (ControlUI* cui, float value)
 {
-       if (!cui->ignore_change && cui->scale_points) {
-               string value = cui->combo->get_active_text();
-               insert->automation_control (cui->parameter())->set_value ((*cui->scale_points)[value], Controllable::NoGroup);
+       if (!cui->ignore_change) {
+               insert->automation_control (cui->parameter())->set_value (value, Controllable::NoGroup);
        }
 }
 
index 895d8681ab1dbcb0b9501bbc8602a73357dfed4f..721289ac0b3adc3c41c4ac12a1fb9db00dd0802f 100644 (file)
@@ -42,7 +42,6 @@
 #include <gtkmm/adjustment.h>
 #include <gtkmm/togglebutton.h>
 #include <gtkmm/socket.h>
-#include <gtkmm/comboboxtext.h>
 #include <gtkmm/socket.h>
 
 #include "ardour/types.h"
@@ -235,7 +234,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
 
                ArdourButton                            automate_button;
                Gtk::Label                              label;
-               Gtk::ComboBoxText*                      combo;
+               ArdourDropdown*                         combo;
                Gtkmm2ext::ClickBox*                    clickbox;
                Gtk::FileChooserButton*                 file_button;
                ArdourSpinner*                          spin_box;
@@ -280,7 +279,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
 
        void ui_parameter_changed (ControlUI* cui);
        void update_control_display (ControlUI* cui);
-       void control_combo_changed (ControlUI* cui);
+       void control_combo_changed (ControlUI* cui, float value);
 
        void astate_clicked (ControlUI*);
        void automation_state_changed (ControlUI*);