summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-10-05 19:06:20 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-10-05 19:06:20 +0000
commit7abd6d2366c5204470ff261eba5bb0214455be02 (patch)
tree96a8900157c291a4336d77e7d051f82c8b11650a /libs/gtkmm2ext
parentb462493f44d9004853a6d242ae295496af12478c (diff)
changes to support making RouteUI and its children and relations able to switch the Route/IO object they refer to (significant architectural changes)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3870 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r--libs/gtkmm2ext/barcontroller.cc2
-rw-r--r--libs/gtkmm2ext/binding_proxy.cc24
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/bindable_button.h11
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/binding_proxy.h8
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/slider_controller.h8
-rw-r--r--libs/gtkmm2ext/slider_controller.cc6
6 files changed, 41 insertions, 18 deletions
diff --git a/libs/gtkmm2ext/barcontroller.cc b/libs/gtkmm2ext/barcontroller.cc
index 4389d8cab1..4318b1df28 100644
--- a/libs/gtkmm2ext/barcontroller.cc
+++ b/libs/gtkmm2ext/barcontroller.cc
@@ -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)
diff --git a/libs/gtkmm2ext/binding_proxy.cc b/libs/gtkmm2ext/binding_proxy.cc
index 90f95f82ef..f75b6ee5c6 100644
--- a/libs/gtkmm2ext/binding_proxy.cc
+++ b/libs/gtkmm2ext/binding_proxy.cc
@@ -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) {
@@ -48,6 +57,13 @@ BindingProxy::~BindingProxy ()
}
void
+BindingProxy::set_controllable (Controllable* c)
+{
+ learning_finished ();
+ controllable = c;
+}
+
+void
BindingProxy::set_bind_button_state (guint button, guint statemask)
{
bind_button = button;
@@ -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;
}
diff --git a/libs/gtkmm2ext/gtkmm2ext/bindable_button.h b/libs/gtkmm2ext/gtkmm2ext/bindable_button.h
index 1cde32c5ba..746d71676e 100644
--- a/libs/gtkmm2ext/gtkmm2ext/bindable_button.h
+++ b/libs/gtkmm2ext/gtkmm2ext/bindable_button.h
@@ -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;
diff --git a/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h b/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h
index dd9b94319d..b80be92477 100644
--- a/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h
+++ b/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h
@@ -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;
diff --git a/libs/gtkmm2ext/gtkmm2ext/slider_controller.h b/libs/gtkmm2ext/gtkmm2ext/slider_controller.h
index 60c8eef660..9919093eae 100644
--- a/libs/gtkmm2ext/gtkmm2ext/slider_controller.h
+++ b/libs/gtkmm2ext/gtkmm2ext/slider_controller.h
@@ -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);
};
diff --git a/libs/gtkmm2ext/slider_controller.cc b/libs/gtkmm2ext/slider_controller.cc
index 93dfb27ae2..6ec882c79c 100644
--- a/libs/gtkmm2ext/slider_controller.cc
+++ b/libs/gtkmm2ext/slider_controller.cc
@@ -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)