mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-26 00:17:49 +01:00
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
This commit is contained in:
parent
b462493f44
commit
7abd6d2366
6 changed files with 41 additions and 18 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue