visibility macros and flush() added to SrcFileSource; merge with master
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / bindable_button.h
index 844dc27d086ae6167a3d70a1b3de79dca1d17a83..cf74d3aca048ecb3505189c8ed38e0a56976350c 100644 (file)
 
 #include <string>
 
-#include <gtkmm2ext/stateful_button.h>
-#include "binding_proxy.h"
+#include "pbd/signals.h"
+
+#include "gtkmm2ext/visibility.h"
+#include "gtkmm2ext/stateful_button.h"
+#include "gtkmm2ext/binding_proxy.h"
 
 namespace PBD {
        class Controllable;
 }
 
-class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
+class LIBGTKMM2EXT_API BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
 {
    public:
-       BindableToggleButton (boost::shared_ptr<PBD::Controllable> c) : binding_proxy (c) {}
-
-       explicit BindableToggleButton (boost::shared_ptr<PBD::Controllable> c, const std::string &label)
-               : Gtkmm2ext::StatefulToggleButton (label), binding_proxy (c) {}
+       BindableToggleButton (const std::string &label)
+               : Gtkmm2ext::StatefulToggleButton (label) {}
+       BindableToggleButton () {}
 
        virtual ~BindableToggleButton() {}
        
@@ -49,19 +51,21 @@ class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton
        }
        
        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;
 };
 
-class BindableButton : public Gtkmm2ext::StatefulButton
+class LIBGTKMM2EXT_API BindableButton : public Gtkmm2ext::StatefulButton
 {
    public:
        BindableButton (boost::shared_ptr<PBD::Controllable> c) : binding_proxy (c) {}
-
-       explicit BindableButton (boost::shared_ptr<PBD::Controllable> c, const std::string &label)
-               : Gtkmm2ext::StatefulButton (label), binding_proxy (c) {}
-
        ~BindableButton() {}
        
        bool on_button_press_event (GdkEventButton *ev) {
@@ -74,6 +78,7 @@ 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;