use image cursors for left/right trim cursors
[ardour.git] / gtk2_ardour / generic_pluginui.cc
index 5625393d4c6693a2edb86fe51e755e284bb0ef10..04e753bf0cee5836c17b900a817564466af9acc5 100644 (file)
@@ -62,7 +62,6 @@ using namespace ARDOUR;
 using namespace PBD;
 using namespace Gtkmm2ext;
 using namespace Gtk;
-using namespace sigc;
 
 GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrollable)
        : PlugUIBase (pi),
@@ -126,8 +125,7 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
                main_contents.pack_start (hpacker, false, false);
        }
 
-       pi->ActiveChanged.connect (sigc::bind(sigc::mem_fun(*this, &GenericPluginUI::processor_active_changed),
-                                       boost::weak_ptr<Processor>(pi)));
+       pi->ActiveChanged.connect (active_connection, invalidator (*this), boost::bind (&GenericPluginUI::processor_active_changed, this, boost::weak_ptr<Processor>(pi)), gui_context());
 
        bypass_button.set_active (!pi->active());
 
@@ -227,7 +225,7 @@ GenericPluginUI::build ()
 
                        boost::shared_ptr<ARDOUR::AutomationControl> c
                                = boost::dynamic_pointer_cast<ARDOUR::AutomationControl>(
-                                       insert->data().control(Evoral::Parameter(PluginAutomation, 0, i)));
+                                       insert->control(Evoral::Parameter(PluginAutomation, 0, i)));
 
                        if ((cui = build_control_ui (i, c)) == 0) {
                                error << string_compose(_("Plugin Editor: could not build control element for port %1"), i) << endmsg;
@@ -317,14 +315,14 @@ GenericPluginUI::ControlUI::ControlUI ()
        : automate_button (X_("")) // force creation of a label
 {
        automate_button.set_name ("PluginAutomateButton");
-       ARDOUR_UI::instance()->tooltips().set_tip (automate_button, _("Automation control"));
+       ARDOUR_UI::instance()->set_tip (automate_button, _("Automation control"));
 
        /* XXX translators: use a string here that will be at least as long
           as the longest automation label (see ::automation_state_changed()
           below). be sure to include a descender.
        */
 
-       set_size_request_to_display_given_text (*automate_button.get_child(), _("Mgnual"), 5, 5);
+        set_size_request_to_display_given_text (automate_button, _("Mgnual"), 15, 10);
 
        ignore_change = 0;
        display = 0;
@@ -383,9 +381,10 @@ GenericPluginUI::print_parameter (char *buf, uint32_t len, uint32_t param)
 GenericPluginUI::ControlUI*
 GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<AutomationControl> mcontrol)
 {
-       ControlUI* control_ui = NULL;
-       if (!mcontrol)
+       ControlUI* control_ui = 0;
+       if (!mcontrol) {
                return control_ui;
+       }
 
        Plugin::ParameterDescriptor desc;
 
@@ -422,7 +421,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
                                //control_ui->combo->set_value_in_list(true, false);
                                set_popdown_strings (*control_ui->combo, setup_scale_values(port_index, control_ui));
                                control_ui->combo->signal_changed().connect (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::control_combo_changed), control_ui));
-                               mcontrol->Changed.connect (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::parameter_changed), control_ui));
+                               mcontrol->Changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::parameter_changed, this, control_ui), gui_context());
                                control_ui->pack_start(control_ui->label, true, true);
                                control_ui->pack_start(*control_ui->combo, false, true);
 
@@ -443,7 +442,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
                                //control_ui->combo->set_value_in_list(true, false);
                                set_popdown_strings (*control_ui->combo, setup_scale_values(port_index, control_ui));
                                control_ui->combo->signal_changed().connect (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::control_combo_changed), control_ui));
-                               mcontrol->Changed.connect (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::parameter_changed), control_ui));
+                               mcontrol->Changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::parameter_changed, this, control_ui), gui_context());
                                control_ui->pack_start(control_ui->label, true, true);
                                control_ui->pack_start(*control_ui->combo, false, true);
 
@@ -468,7 +467,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
                        // control_ui->pack_start (control_ui->automate_button, false, false);
 
                        control_ui->button->signal_clicked().connect (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::control_port_toggled), control_ui));
-                       mcontrol->Changed.connect (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::toggle_parameter_changed), control_ui));
+                       mcontrol->Changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::toggle_parameter_changed, this, control_ui), gui_context());
 
                        if (plugin->get_parameter (port_index) > 0.5){
                                control_ui->button->set_active(true);
@@ -544,9 +543,10 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
 
                automation_state_changed (control_ui);
 
-               mcontrol->Changed.connect (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::parameter_changed), control_ui));
-               mcontrol->alist()->automation_state_changed.connect
-                       (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::automation_state_changed), control_ui));
+               mcontrol->Changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::parameter_changed, this, control_ui), gui_context());
+               mcontrol->alist()->automation_state_changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::automation_state_changed, this, control_ui), gui_context());
+
+               input_controls.push_back (control_ui);
 
        } else if (plugin->parameter_is_output (port_index)) {
 
@@ -595,7 +595,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
                output_controls.push_back (control_ui);
        }
 
-       mcontrol->Changed.connect (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::parameter_changed), control_ui));
+       mcontrol->Changed.connect (control_connections, invalidator (*this), boost::bind (&GenericPluginUI::parameter_changed, this, control_ui), gui_context());
 
        return control_ui;
 }
@@ -662,7 +662,7 @@ GenericPluginUI::parameter_changed (ControlUI* cui)
 {
        if (!cui->update_pending) {
                cui->update_pending = true;
-               Gtkmm2ext::UI::instance()->call_slot (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::update_control_display), cui));
+               Gtkmm2ext::UI::instance()->call_slot (MISSING_INVALIDATOR, boost::bind (&GenericPluginUI::update_control_display, this, cui));
        }
 }
 
@@ -752,9 +752,14 @@ GenericPluginUI::start_updating (GdkEventAny*)
 bool
 GenericPluginUI::stop_updating (GdkEventAny*)
 {
+       for (vector<ControlUI*>::iterator i = input_controls.begin(); i != input_controls.end(); ++i) {
+               (*i)->controller->stop_updating ();
+       }
+       
        if (output_controls.size() > 0 ) {
                screen_update_connection.disconnect();
        }
+       
        return false;
 }