i/o button naming patch and imported file BWF timecode retention patch from nickm...
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / barcontroller.h
index c91f4c8a06a495973f499b33a760ac08f95a4a90..f3eb2f41cd264aec3672f10f6b24a4620e768fe9 100644 (file)
 #include <gtkmm/drawingarea.h>
 #include <gtkmm2ext/binding_proxy.h>
 
-namespace ARDOUR {
-       class Controllable;
-}
 
 namespace Gtkmm2ext {
 
 class BarController : public Gtk::Frame
 {
   public:
-       BarController (Gtk::Adjustment& adj, PBD::Controllable&, sigc::slot<void,char*,unsigned int>);
+       BarController (Gtk::Adjustment& adj, boost::shared_ptr<PBD::Controllable>);
+
        virtual ~BarController () {}
-       
-       enum Style {
+
+       enum barStyle {
                LeftToRight,
                RightToLeft,
                Line,
                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<void> StartGesture;
        sigc::signal<void> StopGesture;
@@ -60,23 +58,29 @@ class BarController : public Gtk::Frame
 
        Gtk::Widget& event_widget() { return darea; }
 
+       boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); }
+       void set_controllable(boost::shared_ptr<PBD::Controllable> c) { binding_proxy.set_controllable(c); }
+
   protected:
        Gtk::Adjustment&    adjustment;
        BindingProxy        binding_proxy;
        Gtk::DrawingArea    darea;
-       sigc::slot<void,char*,unsigned int> label_callback;
        Glib::RefPtr<Pango::Layout> 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;
 
+       virtual std::string get_label (int& /*x*/) {
+               return "";
+       }
+       
        virtual bool button_press (GdkEventButton *);
        virtual bool button_release (GdkEventButton *);
        virtual bool motion (GdkEventMotion *);
@@ -91,6 +95,9 @@ class BarController : public Gtk::Frame
 
        void entry_activated ();
        void drop_grab ();
+       
+       int entry_input (double* new_value);
+       bool entry_output ();
 };