fix up some suboptimal and crash-prone aspects of 7c263f3bc4f3bddd8094c9baecf58450301...
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 14 Nov 2014 22:14:48 +0000 (17:14 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 14 Nov 2014 22:14:48 +0000 (17:14 -0500)
gtk2_ardour/generic_pluginui.cc
gtk2_ardour/plugin_ui.h

index b3ae8a2cb46813ae92d52b122a3b97aeb79ce465..8442d8b9667f1ef55d7626039c203dbc3932eb6d 100644 (file)
@@ -78,7 +78,7 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
        HBox* smaller_hbox = manage (new HBox);
        HBox* automation_hbox = manage (new HBox);
        smaller_hbox->set_spacing (4);
-       automation_hbox->set_spacing (4);
+       automation_hbox->set_spacing (6);
        Label* combo_label = manage (new Label (_("<span size=\"large\">Presets</span>")));
        combo_label->set_use_markup (true);
 
@@ -94,15 +94,18 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
        smaller_hbox->pack_start (delete_button, false, false);
        smaller_hbox->pack_start (bypass_button, false, true);
        
-       automation_manual_all_button.set_label(_("Manual All"));
-       automation_play_all_button.set_label(_("Play All"));
-       automation_write_all_button.set_label(_("Write All"));
-       automation_touch_all_button.set_label(_("Touch All"));
+       automation_manual_all_button.set_text(_("Manual"));
+       automation_manual_all_button.set_name (X_("generic button"));
+       automation_play_all_button.set_text(_("Play"));
+       automation_play_all_button.set_name (X_("generic button"));
+       automation_write_all_button.set_text(_("Write"));
+       automation_write_all_button.set_name (X_("generic button"));
+       automation_touch_all_button.set_text(_("Touch"));
+       automation_touch_all_button.set_name (X_("generic button"));
        
-       Gtk::Alignment *al = Gtk::manage(new Gtk::Alignment());
-    al->set_size_request(6, 2);
-    automation_hbox->pack_start(*al, false, true);
-    
+       Label* l = manage (new Label (_("All Automation")));
+       l->set_alignment (1.0, 0.5);
+       automation_hbox->pack_start (*l, true, true);
        automation_hbox->pack_start (automation_manual_all_button, false, false);
        automation_hbox->pack_start (automation_play_all_button, false, false);
        automation_hbox->pack_start (automation_write_all_button, false, false);
@@ -118,6 +121,7 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
                pack_end (description_expander, false, false);
        }
 
+       v1_box->set_spacing (6);
        v1_box->pack_start (*smaller_hbox, false, true);
        v1_box->pack_start (*automation_hbox, false, true);
        v2_box->pack_start (focus_button, false, true);
@@ -470,11 +474,10 @@ GenericPluginUI::build ()
        output_table.show_all ();
        button_table.show_all ();
        
-       // Connect automation *_all buttons
-       automation_manual_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_manual_all, this, control_uis));
-       automation_play_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_play_all, this, control_uis));
-    automation_write_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_write_all, this, control_uis));
-    automation_touch_all_button.signal_clicked().connect(boost::bind(&GenericPluginUI::automation_touch_all, this, control_uis));
+       automation_manual_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Off));
+       automation_play_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Play));
+       automation_write_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Write));
+       automation_touch_all_button.signal_clicked.connect(sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::set_all_automation), ARDOUR::Touch));
 }
 
 GenericPluginUI::ControlUI::ControlUI (const Evoral::Parameter& p)
@@ -838,43 +841,13 @@ GenericPluginUI::astate_clicked (ControlUI* cui)
 }
 
 void 
-GenericPluginUI::automation_manual_all(std::vector<ControlUI *>& controls)
+GenericPluginUI::set_all_automation (AutoState as)
 {
-    for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
-    {
-        if ((*control_it)->controller || (*control_it)->button)
-            set_automation_state((AutoState) ARDOUR::Off, (*control_it));
-    }
-}
-
-void 
-GenericPluginUI::automation_play_all(std::vector<ControlUI *>& controls)
-{
-    for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
-    {
-        if ((*control_it)->controller || (*control_it)->button)
-            set_automation_state((AutoState) Play, (*control_it));
-    }
-}
-
-void 
-GenericPluginUI::automation_write_all(std::vector<ControlUI *>& controls)
-{
-    for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
-    {
-        if ((*control_it)->controller || (*control_it)->button)
-            set_automation_state((AutoState) Write, (*control_it));
-    }
-}
-
-void 
-GenericPluginUI::automation_touch_all(std::vector<ControlUI *>& controls)
-{
-    for (std::vector<ControlUI *>::iterator control_it = controls.begin(); control_it != controls.end(); ++control_it)
-    {
-        if ((*control_it)->controller || (*control_it)->button)
-            set_automation_state((AutoState) Touch, (*control_it));
-    }
+       for (vector<ControlUI*>::iterator i = input_controls.begin(); i != input_controls.end(); ++i) {
+               if ((*i)->controller || (*i)->button) {
+                       set_automation_state (as, (*i));
+               }
+       }
 }
 
 void
index 0407afcb71d4055b91d8625764344e5bb9f9f400..7cc201ff7a9468d01283761bf475cdef73973837 100644 (file)
@@ -136,13 +136,13 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        /** a button which, when clicked, opens the latency GUI */
        Gtk::Button latency_button;
        /** a button which sets all controls' automation setting to Manual */
-       Gtk::Button automation_manual_all_button;
+       ArdourButton automation_manual_all_button;
        /** a button which sets all controls' automation setting to Play */
-       Gtk::Button automation_play_all_button;
+       ArdourButton automation_play_all_button;
     /** a button which sets all controls' automation setting to Write */
-       Gtk::Button automation_write_all_button;
+       ArdourButton automation_write_all_button;
        /** a button which sets all controls' automation setting to Touch */
-       Gtk::Button automation_touch_all_button;
+       ArdourButton automation_touch_all_button;
        
        void set_latency_label ();
 
@@ -288,10 +288,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
        void set_automation_state (ARDOUR::AutoState state, ControlUI* cui);
        void start_touch (ControlUI*);
        void stop_touch (ControlUI*);
-       void automation_manual_all(std::vector<ControlUI*>&);
-       void automation_play_all(std::vector<ControlUI*>&);
-       void automation_write_all(std::vector<ControlUI*>&);
-       void automation_touch_all(std::vector<ControlUI*>&);
+       void set_all_automation (ARDOUR::AutoState state);
 
        /* XXX: remove */
        void print_parameter (char *buf, uint32_t len, uint32_t param);