summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-02-11 18:04:09 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-02-11 18:04:09 +0000
commit1a49bb9556312c2d11365907aec5ff6f8b948e7f (patch)
treead1c035666fe6c98a7d08a3890d67b370c92f9e7
parentfe6ca1786f0a1d494ddc379acc3a9e4a34738acf (diff)
use volume controller widget for monitor section, drop some now-unused code
git-svn-id: svn://localhost/ardour2/branches/3.0@8828 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/monitor_section.cc16
-rw-r--r--gtk2_ardour/monitor_section.h10
-rw-r--r--gtk2_ardour/utils.cc36
-rw-r--r--gtk2_ardour/utils.h2
-rw-r--r--gtk2_ardour/wscript1
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/binding_proxy.h2
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/motionfeedback.h5
-rw-r--r--libs/gtkmm2ext/motionfeedback.cc13
8 files changed, 32 insertions, 53 deletions
diff --git a/gtk2_ardour/monitor_section.cc b/gtk2_ardour/monitor_section.cc
index 1830933048..170f4568b4 100644
--- a/gtk2_ardour/monitor_section.cc
+++ b/gtk2_ardour/monitor_section.cc
@@ -17,6 +17,7 @@
#include "gui_thread.h"
#include "monitor_section.h"
#include "public_editor.h"
+#include "volume_controller.h"
#include "utils.h"
#include "i18n.h"
@@ -73,7 +74,7 @@ MonitorSection::MonitorSection (Session* s)
/* Dim */
- dim_control = new MotionFeedback (little_knob_pixbuf, MotionFeedback::Rotary, "", &dim_adjustment, false, 30, 30);
+ dim_control = new VolumeController (little_knob_pixbuf, &dim_adjustment, false, 30, 30);
HBox* dim_packer = manage (new HBox);
dim_packer->show ();
@@ -137,7 +138,7 @@ MonitorSection::MonitorSection (Session* s)
/* Solo Boost */
- solo_boost_control = new MotionFeedback (little_knob_pixbuf, MotionFeedback::Rotary, "", &solo_boost_adjustment, false, 30, 30);
+ solo_boost_control = new VolumeController (little_knob_pixbuf, &solo_boost_adjustment, false, 30, 30);
HBox* solo_packer = manage (new HBox);
solo_packer->set_spacing (12);
@@ -154,7 +155,7 @@ MonitorSection::MonitorSection (Session* s)
/* Solo (SiP) cut */
- solo_cut_control = new MotionFeedback (little_knob_pixbuf, MotionFeedback::Rotary, "", &solo_cut_adjustment, false, 30, 30);
+ solo_cut_control = new VolumeController (little_knob_pixbuf, &solo_cut_adjustment, false, 30, 30);
spin_label = manage (new Label (_("SiP Cut")));
spin_packer = manage (new VBox);
@@ -237,7 +238,7 @@ MonitorSection::MonitorSection (Session* s)
/* Gain */
- gain_control = new MotionFeedback (big_knob_pixbuf, MotionFeedback::Rotary, "", &gain_adjustment, false, 80, 80);
+ gain_control = new VolumeController (big_knob_pixbuf, &gain_adjustment, false, 80, 80);
spin_label = manage (new Label (_("Gain")));
spin_packer = manage (new VBox);
@@ -1012,14 +1013,15 @@ MonitorSection::assign_controllables ()
}
if (_session) {
- solo_cut_control->set_controllable (_session->solo_cut_control());
+ boost::shared_ptr<Controllable> c = _session->solo_cut_control();
+ solo_cut_control->set_controllable (c);
+ solo_cut_control->get_adjustment()->set_value (c->get_value());
} else {
solo_cut_control->set_controllable (none);
}
if (_route) {
gain_control->set_controllable (_route->gain_control());
- control_link (control_connections, _route->gain_control(), gain_adjustment);
} else {
gain_control->set_controllable (none);
}
@@ -1038,13 +1040,11 @@ MonitorSection::assign_controllables ()
dim_control->set_controllable (c);
dim_adjustment.set_lower (c->lower());
dim_adjustment.set_upper (c->upper());
- control_link (control_connections, c, dim_adjustment);
c = _monitor->solo_boost_control ();
solo_boost_control->set_controllable (c);
solo_boost_adjustment.set_lower (c->lower());
solo_boost_adjustment.set_upper (c->upper());
- control_link (control_connections, c, solo_boost_adjustment);
} else {
diff --git a/gtk2_ardour/monitor_section.h b/gtk2_ardour/monitor_section.h
index 462cdbc80b..fcd452f061 100644
--- a/gtk2_ardour/monitor_section.h
+++ b/gtk2_ardour/monitor_section.h
@@ -31,6 +31,8 @@ namespace Gtkmm2ext {
class MotionFeedback;
}
+class VolumeController;
+
class MonitorSection : public RouteUI
{
public:
@@ -63,13 +65,13 @@ class MonitorSection : public RouteUI
ChannelButtons _channel_buttons;
Gtk::Adjustment gain_adjustment;
- Gtkmm2ext::MotionFeedback* gain_control;
+ VolumeController* gain_control;
Gtk::Adjustment dim_adjustment;
- Gtkmm2ext::MotionFeedback* dim_control;
+ VolumeController* dim_control;
Gtk::Adjustment solo_boost_adjustment;
- Gtkmm2ext::MotionFeedback* solo_boost_control;
+ VolumeController* solo_boost_control;
Gtk::Adjustment solo_cut_adjustment;
- Gtkmm2ext::MotionFeedback* solo_cut_control;
+ VolumeController* solo_cut_control;
void populate_buttons ();
void set_button_names ();
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index fe0235f6d5..6d0c0a2103 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -952,40 +952,4 @@ escape_underscores (string const & s)
return o;
}
-static void
-adjustment_to_controllable (Gtk::Adjustment* adj, boost::weak_ptr<Controllable> wcont)
-{
- boost::shared_ptr<Controllable> cont = wcont.lock();
-
- if (cont) {
- double val = adj->get_value();
- if (val != cont->get_value()) {
- cont->set_value (val);
- }
- }
-}
-
-static void
-controllable_to_adjustment (Gtk::Adjustment* adj, boost::weak_ptr<Controllable> wcont)
-{
- boost::shared_ptr<Controllable> cont = wcont.lock();
-
- if (cont) {
- float val = cont->get_value();
-
- if (val != adj->get_value()) {
- adj->set_value (val);
- }
- }
-}
-
-void
-control_link (ScopedConnectionList& scl, boost::shared_ptr<Controllable> c, Gtk::Adjustment& a)
-{
- boost::weak_ptr<Controllable> wc (c);
-
- a.signal_value_changed().connect (sigc::bind (sigc::ptr_fun (adjustment_to_controllable), &a, wc));
- c->Changed.connect (scl, MISSING_INVALIDATOR, boost::bind (controllable_to_adjustment, &a, wc),
- gui_context());
-}
diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h
index 2dce61e908..b42371f4a2 100644
--- a/gtk2_ardour/utils.h
+++ b/gtk2_ardour/utils.h
@@ -91,6 +91,4 @@ void resize_window_to_proportion_of_monitor (Gtk::Window*, int, int);
std::string escape_underscores (std::string const &);
-void control_link (PBD::ScopedConnectionList& scl, boost::shared_ptr<PBD::Controllable> c, Gtk::Adjustment& a);
-
#endif /* __ardour_gtk_utils_h__ */
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index 503dca9bcc..b50521ec76 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -221,6 +221,7 @@ gtk2_ardour_sources = [
'ui_config.cc',
'utils.cc',
'version.cc',
+ 'volume_controller.cc',
'waveview.cc',
'window_proxy.cc'
]
diff --git a/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h b/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h
index 348f9f2649..69d1ebdaad 100644
--- a/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h
+++ b/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h
@@ -42,7 +42,7 @@ class BindingProxy : public sigc::trackable
bool button_press_handler (GdkEventButton *);
- boost::shared_ptr<PBD::Controllable> get_controllable() { return controllable; }
+ boost::shared_ptr<PBD::Controllable> get_controllable() const { return controllable; }
void set_controllable (boost::shared_ptr<PBD::Controllable>);
protected:
diff --git a/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h b/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h
index ba70e30a07..84b2ae7154 100644
--- a/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h
+++ b/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h
@@ -61,8 +61,9 @@ class MotionFeedback : public Gtk::VBox
gfloat lower () { return _lower; }
gfloat upper () { return _upper; }
gfloat range () { return _range; }
-
- void set_controllable (boost::shared_ptr<PBD::Controllable> c) { binding_proxy.set_controllable (c); }
+
+ boost::shared_ptr<PBD::Controllable> controllable() const;
+ virtual void set_controllable (boost::shared_ptr<PBD::Controllable> c);
void set_lamp_color (const Gdk::Color&);
static Glib::RefPtr<Gdk::Pixbuf> render_pixbuf (int size);
diff --git a/libs/gtkmm2ext/motionfeedback.cc b/libs/gtkmm2ext/motionfeedback.cc
index 2637ae7a2e..43c8531b8e 100644
--- a/libs/gtkmm2ext/motionfeedback.cc
+++ b/libs/gtkmm2ext/motionfeedback.cc
@@ -704,3 +704,16 @@ MotionFeedback::render_pixbuf (int size)
return pixbuf;
}
+
+void
+MotionFeedback::set_controllable (boost::shared_ptr<PBD::Controllable> c)
+{
+ binding_proxy.set_controllable (c);
+}
+
+boost::shared_ptr<PBD::Controllable>
+MotionFeedback::controllable () const
+{
+ return binding_proxy.get_controllable ();
+}
+