tweak search path for export profiles
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / bindable_button.h
index 8f63c843a589549ad4b0fbd8ade2aaf9c82cc565..5ac81d850703fbff36b1913760c0011815f0387d 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __bindable_button_h__
@@ -23,7 +22,8 @@
 
 #include <string>
 
-#include <gtkmm2ext/stateful_button.h>
+#include "pbd/signals.h"
+#include "gtkmm2ext/stateful_button.h"
 #include "binding_proxy.h"
 
 namespace PBD {
@@ -33,10 +33,9 @@ namespace PBD {
 class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
 {
    public:
-       BindableToggleButton (PBD::Controllable& c) : binding_proxy (c) {}
-
-       explicit BindableToggleButton (PBD::Controllable& c, const std::string &label)
-               : Gtkmm2ext::StatefulToggleButton (label), binding_proxy (c) {}
+       BindableToggleButton (const std::string &label)
+               : Gtkmm2ext::StatefulToggleButton (label) {}
+       BindableToggleButton () {}
 
        virtual ~BindableToggleButton() {}
        
@@ -48,6 +47,14 @@ class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
                        return true;
                }
        }
+       
+       boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); }
+       void set_controllable (boost::shared_ptr<PBD::Controllable> c);
+        void watch ();
+
+  protected:
+        void controllable_changed ();
+        PBD::ScopedConnection watch_connection;
 
   private:
        BindingProxy binding_proxy;
@@ -56,11 +63,7 @@ class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
 class BindableButton : public Gtkmm2ext::StatefulButton
 {
    public:
-       BindableButton (PBD::Controllable& c) : binding_proxy (c) {}
-
-       explicit BindableButton (PBD::Controllable& c, const std::string &label)
-               : Gtkmm2ext::StatefulButton (label), binding_proxy (c) {}
-
+       BindableButton (boost::shared_ptr<PBD::Controllable> c) : binding_proxy (c) {}
        ~BindableButton() {}
        
        bool on_button_press_event (GdkEventButton *ev) {
@@ -72,6 +75,9 @@ class BindableButton : public Gtkmm2ext::StatefulButton
                }
        }
 
+       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); }
+
   private:
        BindingProxy binding_proxy;
 };