changes to support making RouteUI and its children and relations able to switch the...
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 5 Oct 2008 19:06:20 +0000 (19:06 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 5 Oct 2008 19:06:20 +0000 (19:06 +0000)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3870 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/gtkmm2ext/barcontroller.cc
libs/gtkmm2ext/binding_proxy.cc
libs/gtkmm2ext/gtkmm2ext/bindable_button.h
libs/gtkmm2ext/gtkmm2ext/binding_proxy.h
libs/gtkmm2ext/gtkmm2ext/slider_controller.h
libs/gtkmm2ext/slider_controller.cc

index 4389d8cab181af17abdbe7845af88ff718690eb8..4318b1df2896d97410f2e1fe6b64328258a29c4e 100644 (file)
@@ -40,7 +40,7 @@ BarController::BarController (Gtk::Adjustment& adj,
                              sigc::slot<void,char*,unsigned int> lc) 
 
        : adjustment (adj),
-         binding_proxy (mc),
+         binding_proxy (&mc),
          label_callback (lc),
          spinner (adjustment)
 
index 90f95f82ef44b174d8241acc5ba477e91f357412..f75b6ee5c69ae2754de8194406962706de5325c2 100644 (file)
@@ -31,7 +31,7 @@ using namespace Gtkmm2ext;
 using namespace std;
 using namespace PBD;
 
-BindingProxy::BindingProxy (Controllable& c)
+BindingProxy::BindingProxy (Controllable* c)
        : prompter (0),
          controllable (c),
          bind_button (2),
@@ -40,6 +40,15 @@ BindingProxy::BindingProxy (Controllable& c)
 {                        
 }
 
+BindingProxy::BindingProxy (Controllable& c)
+       : prompter (0),
+         controllable (&c),
+         bind_button (2),
+         bind_statemask (Gdk::CONTROL_MASK)
+
+{                        
+}
+
 BindingProxy::~BindingProxy ()
 {
        if (prompter) {
@@ -47,6 +56,13 @@ BindingProxy::~BindingProxy ()
        }
 }
 
+void
+BindingProxy::set_controllable (Controllable* c)
+{
+       learning_finished ();
+       controllable = c;
+}
+
 void
 BindingProxy::set_bind_button_state (guint button, guint statemask)
 {
@@ -65,7 +81,7 @@ bool
 BindingProxy::button_press_handler (GdkEventButton *ev)
 {
        if ((ev->state & bind_statemask) && ev->button == bind_button) { 
-               if (Controllable::StartLearning (&controllable)) {
+               if (Controllable::StartLearning (controllable)) {
                        string prompt = _("operate controller now");
                        if (prompter == 0) {
                                prompter = new PopUp (Gtk::WIN_POS_MOUSE, 30000, false);
@@ -73,7 +89,7 @@ BindingProxy::button_press_handler (GdkEventButton *ev)
                        }
                        prompter->set_text (prompt);
                        prompter->touch (); // shows popup
-                       learning_connection = controllable.LearningFinished.connect (mem_fun (*this, &BindingProxy::learning_finished));
+                       learning_connection = controllable->LearningFinished.connect (mem_fun (*this, &BindingProxy::learning_finished));
                }
                return true;
        }
@@ -95,7 +111,7 @@ bool
 BindingProxy::prompter_hiding (GdkEventAny *ev)
 {
        learning_connection.disconnect ();
-       Controllable::StopLearning (&controllable);
+       Controllable::StopLearning (controllable);
        return false;
 }
 
index 1cde32c5bab3da9f613bb4fe73f345a5fb0249ce..746d71676ec3830b1cd07c2c3432db7c2f8bc9c3 100644 (file)
@@ -32,9 +32,9 @@ namespace PBD {
 class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
 {
    public:
-       BindableToggleButton (PBD::Controllable& c) : binding_proxy (c) {}
+       BindableToggleButton (PBD::Controllable* c) : binding_proxy (c) {}
 
-       explicit BindableToggleButton (PBD::Controllable& c, const std::string &label)
+       explicit BindableToggleButton (PBD::Controllable* c, const std::string &label)
                : Gtkmm2ext::StatefulToggleButton (label), binding_proxy (c) {}
 
        virtual ~BindableToggleButton() {}
@@ -49,6 +49,8 @@ class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
        }
        
        PBD::Controllable* get_controllable() { return binding_proxy.get_controllable(); }
+       void set_controllable (PBD::Controllable*c) { binding_proxy.set_controllable (c); }
+
   private:
        BindingProxy binding_proxy;
 };
@@ -56,9 +58,9 @@ class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
 class BindableButton : public Gtkmm2ext::StatefulButton
 {
    public:
-       BindableButton (PBD::Controllable& c) : binding_proxy (c) {}
+       BindableButton (PBD::Controllable* c) : binding_proxy (c) {}
 
-       explicit BindableButton (PBD::Controllable& c, const std::string &label)
+       explicit BindableButton (PBD::Controllable* c, const std::string &label)
                : Gtkmm2ext::StatefulButton (label), binding_proxy (c) {}
 
        ~BindableButton() {}
@@ -73,6 +75,7 @@ class BindableButton : public Gtkmm2ext::StatefulButton
        }
 
        PBD::Controllable* get_controllable() { return binding_proxy.get_controllable(); }
+       void set_controllable (PBD::Controllable*c) { binding_proxy.set_controllable (c); }
 
   private:
        BindingProxy binding_proxy;
index dd9b94319df27df59d3257a1051d172d158e3c1d..b80be9247782f4a495a52d4098890f681258321f 100644 (file)
@@ -32,6 +32,7 @@ namespace PBD {
 class BindingProxy : public sigc::trackable
 {
    public:
+       BindingProxy (PBD::Controllable*);
        BindingProxy (PBD::Controllable&);
        virtual ~BindingProxy();
        
@@ -40,11 +41,12 @@ class BindingProxy : public sigc::trackable
 
        bool button_press_handler (GdkEventButton *);
 
-       PBD::Controllable* get_controllable() { return &controllable; }
-  protected:
+       PBD::Controllable* get_controllable() { return controllable; }
+       void set_controllable (PBD::Controllable*);
 
+  protected:
        Gtkmm2ext::PopUp*  prompter;
-       PBD::Controllable& controllable;
+       PBD::Controllable* controllable;
        guint bind_button;
        guint bind_statemask;
        sigc::connection learning_connection;
index 60c8eef660aaf332edac9c930fb8404ccbc4e436..9919093eaebfe0e68ab8e5517c34d832d59d69ae 100644 (file)
@@ -39,7 +39,7 @@ class SliderController : public Gtkmm2ext::PixFader
   public:
        SliderController (Glib::RefPtr<Gdk::Pixbuf> image,
                          Gtk::Adjustment* adj, int orientation,
-                         PBD::Controllable&,
+                         PBD::Controllable*,
                          bool with_numeric = true);
 
         virtual ~SliderController () {}
@@ -50,6 +50,8 @@ class SliderController : public Gtkmm2ext::PixFader
        
        bool on_button_press_event (GdkEventButton *ev);
 
+       void set_controllable (PBD::Controllable* c) { binding_proxy.set_controllable (c); }
+
   protected:
        BindingProxy binding_proxy;
        Glib::RefPtr<Gdk::Pixbuf> slider;
@@ -64,7 +66,7 @@ class VSliderController : public SliderController
   public:
        VSliderController (Glib::RefPtr<Gdk::Pixbuf> image,
                           Gtk::Adjustment *adj,
-                          PBD::Controllable&,
+                          PBD::Controllable*,
                           bool with_numeric = true);
 };
 
@@ -73,7 +75,7 @@ class HSliderController : public SliderController
   public:
        HSliderController (Glib::RefPtr<Gdk::Pixbuf> image,
                           Gtk::Adjustment *adj,
-                          PBD::Controllable&,
+                          PBD::Controllable*,
                           bool with_numeric = true);
 };
 
index 93dfb27ae2568baa2a1847e512b4498ff05aa052..6ec882c79cc251dcefeb1ed58730d15cf2e3eca9 100644 (file)
@@ -30,7 +30,7 @@ using namespace PBD;
 
 SliderController::SliderController (Glib::RefPtr<Gdk::Pixbuf> image,
                                    Gtk::Adjustment *adj,  int orientation,
-                                   Controllable& c,
+                                   Controllable* c,
                                    bool with_numeric)
 
        : PixFader (image, *adj, orientation),
@@ -60,7 +60,7 @@ SliderController::on_button_press_event (GdkEventButton *ev)
 
 VSliderController::VSliderController (Glib::RefPtr<Gdk::Pixbuf> image,
                                      Gtk::Adjustment *adj,
-                                     Controllable& control,
+                                     Controllable* control,
                                      bool with_numeric)
 
        : SliderController (image, adj, VERT, control, with_numeric)
@@ -76,7 +76,7 @@ VSliderController::VSliderController (Glib::RefPtr<Gdk::Pixbuf> image,
 
 HSliderController::HSliderController (Glib::RefPtr<Gdk::Pixbuf> image,
                                      Gtk::Adjustment *adj,
-                                     Controllable& control,
+                                     Controllable* control,
                                      bool with_numeric)
        
        : SliderController (image, adj, HORIZ, control, with_numeric)