X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fgtkmm2ext%2Fbarcontroller.h;h=76dc8f2d49fd0208dd1cd4d21982fc1bc71bbb25;hb=11619a37bff79c050e39e434bc9899b516cbe4a1;hp=a6883238ea6fadc7715518cdf2ebd93699b2504e;hpb=f66a09c344188cb6a82c3a5c0035da22d36e2ada;p=ardour.git diff --git a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h index a6883238ea..76dc8f2d49 100644 --- a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h +++ b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h @@ -14,44 +14,44 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtkmm2ext_bar_controller_h__ #define __gtkmm2ext_bar_controller_h__ -#include +#include +#include #include +#include -namespace ARDOUR { - class Controllable; -} namespace Gtkmm2ext { class BarController : public Gtk::Frame { public: - BarController (Gtk::Adjustment& adj, PBD::Controllable&, sigc::slot); - virtual ~BarController () {} - - enum Style { + BarController (Gtk::Adjustment& adj, boost::shared_ptr); + + virtual ~BarController (); + + enum barStyle { LeftToRight, RightToLeft, Line, + Blob, CenterOut, + TopToBottom, BottomToTop }; - Style style() const { return _style; } - void set_style (Style); - void set_with_text (bool yn); + barStyle style() const { return _style; } + void set_style (barStyle); void set_use_parent (bool yn); void set_sensitive (bool yn); - - Gtk::SpinButton& get_spin_button() { return spinner; } + + void set_logarithmic (bool yn) { logarithmic = yn; } sigc::signal StartGesture; sigc::signal StopGesture; @@ -60,22 +60,39 @@ class BarController : public Gtk::Frame Gtk::Widget& event_widget() { return darea; } + boost::shared_ptr get_controllable() { return binding_proxy.get_controllable(); } + void set_controllable(boost::shared_ptr c) { binding_proxy.set_controllable(c); } + + /** Emitted when the adjustment spinner is activated or deactivated; + * the parameter is true on activation, false on deactivation. + */ + sigc::signal SpinnerActive; + protected: Gtk::Adjustment& adjustment; BindingProxy binding_proxy; Gtk::DrawingArea darea; - sigc::slot label_callback; Glib::RefPtr layout; - Style _style; + barStyle _style; bool grabbed; bool switching; bool switch_on_release; - bool with_text; double initial_value; double grab_x; GdkWindow* grab_window; Gtk::SpinButton spinner; bool use_parent; + bool logarithmic; + sigc::slot _label_slot; + bool _use_slot; + + virtual std::string get_label (double& /*x*/) { + return ""; + } + + void create_patterns(); + Cairo::RefPtr pattern; + Cairo::RefPtr shine_pattern; virtual bool button_press (GdkEventButton *); virtual bool button_release (GdkEventButton *); @@ -90,6 +107,10 @@ class BarController : public Gtk::Frame gint switch_to_spinner (); void entry_activated (); + void drop_grab (); + + int entry_input (double* new_value); + bool entry_output (); };