X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fslider_controller.cc;h=e3c47f332ea00c06c690ed35b2e83b905ce33798;hb=d9df0ea6e50f4caa23b4c9e67236e17e303ef89e;hp=734d5eb62f41721b83e36f832c6c734878407c7f;hpb=4d2afdd0f79b8c4b76338d61f1b2474d39d684ce;p=ardour.git diff --git a/libs/gtkmm2ext/slider_controller.cc b/libs/gtkmm2ext/slider_controller.cc index 734d5eb62f..e3c47f332e 100644 --- a/libs/gtkmm2ext/slider_controller.cc +++ b/libs/gtkmm2ext/slider_controller.cc @@ -18,144 +18,45 @@ */ #include -#include - -#include #include +#include #include -#include #include "i18n.h" using namespace Gtkmm2ext; +using namespace PBD; -SliderController::SliderController (Glib::RefPtr slide, - Glib::RefPtr rail, - Gtk::Adjustment *adj, - MIDI::Controllable *mc, - bool with_numeric) - - : PixScroller (*adj, slide, rail), - spin (*adj, 0, 2), - prompter (Gtk::WIN_POS_MOUSE, 30000, false), - midi_control (mc), - bind_button (2), - bind_statemask (Gdk::CONTROL_MASK) - +SliderController::SliderController (Gtk::Adjustment *adj, int orientation, int fader_length, int fader_girth) + : PixFader (*adj, orientation, fader_length, fader_girth) + , spin (*adj, 0, 2) { - signal_button_press_event().connect (mem_fun (this, &SliderController::button_press)); spin.set_name ("SliderControllerValue"); spin.set_size_request (70,-1); // should be based on font size somehow spin.set_numeric (true); spin.set_snap_to_ticks (false); - - prompter.signal_unmap_event().connect (mem_fun (*this, &SliderController::prompter_hiding)); - - prompting = false; - unprompting = false; - - if (mc) { - mc->learning_started.connect (mem_fun (*this, &SliderController::midicontrol_prompt)); - mc->learning_stopped.connect (mem_fun (*this, &SliderController::midicontrol_unprompt)); - } } void SliderController::set_value (float v) { - adj.set_value (v); -} - -void -SliderController::set_bind_button_state (guint button, guint statemask) -{ - bind_button = button; - bind_statemask = statemask; -} - -void -SliderController::get_bind_button_state (guint &button, guint &statemask) -{ - button = bind_button; - statemask = bind_statemask; -} - -void -SliderController::midi_learn() -{ - if (midi_control) { - prompting = true; - midi_control->learn_about_external_control (); - } + adjustment.set_value (v); } -bool -SliderController::button_press (GdkEventButton *ev) +bool +SliderController::on_button_press_event (GdkEventButton *ev) { - if ((ev->state & bind_statemask) && ev->button == bind_button) { - midi_learn (); + if (binding_proxy.button_press_handler (ev)) { return true; } - return false; + return PixFader::on_button_press_event (ev); } -void -SliderController::midicontrol_set_tip () - -{ - if (midi_control) { - // Gtkmm2ext::UI::instance()->set_tip (this, midi_control->control_description()); - } -} - -bool -SliderController::prompter_hiding (GdkEventAny *ev) -{ - if (unprompting) { - if (midi_control) { - midi_control->stop_learning(); - } - unprompting = false; - } - - return false; -} - -void -SliderController::midicontrol_prompt () - -{ - if (prompting) { - - string prompt = _("operate MIDI controller now"); - prompter.set_text (prompt); - Gtkmm2ext::UI::instance()->touch_display (&prompter); - - unprompting = true; - prompting = false; - } -} - -void -SliderController::midicontrol_unprompt () - -{ - if (unprompting) { - Gtkmm2ext::UI::instance()->touch_display (&prompter); - unprompting = false; - } -} - - -VSliderController::VSliderController (Glib::RefPtr slide, - Glib::RefPtr rail, - Gtk::Adjustment *adj, - MIDI::Controllable *mcontrol, - bool with_numeric) +VSliderController::VSliderController (Gtk::Adjustment *adj, int fader_length, int fader_girth, bool with_numeric) - : SliderController (slide, rail, adj, mcontrol, with_numeric) + : SliderController (adj, VERT, fader_length, fader_girth) { if (with_numeric) { spin_frame.add (spin); @@ -166,13 +67,10 @@ VSliderController::VSliderController (Glib::RefPtr slide, } } -HSliderController::HSliderController (Glib::RefPtr slide, - Glib::RefPtr rail, - Gtk::Adjustment *adj, - MIDI::Controllable *mcontrol, +HSliderController::HSliderController (Gtk::Adjustment *adj, int fader_length, int fader_girth, bool with_numeric) - : SliderController (slide, rail, adj, mcontrol, with_numeric) + : SliderController (adj, HORIZ, fader_length, fader_girth) { if (with_numeric) { spin_frame.add (spin);