summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-12-21 12:43:38 +0100
committerRobin Gareus <robin@gareus.org>2015-12-21 12:43:38 +0100
commit67917583d94fcc3a1ebe4084f3b255264a7603fb (patch)
treed225574f820107e05cb759b854524e5c6dd6db8c /gtk2_ardour
parent51a140054e1c088b6788a9dc8514f704897305bc (diff)
Monitor Section Processor Box.
Allow to add plugins specific to Monitoring (room correction etc) directly on the Monitor-Section GUI. The Track/Bus Inspector allowed that for a long time, already but apparently nobody found it.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/monitor_section.cc22
-rw-r--r--gtk2_ardour/monitor_section.h11
2 files changed, 27 insertions, 6 deletions
diff --git a/gtk2_ardour/monitor_section.cc b/gtk2_ardour/monitor_section.cc
index 8fe7b431ee..6bab29bdfb 100644
--- a/gtk2_ardour/monitor_section.cc
+++ b/gtk2_ardour/monitor_section.cc
@@ -37,6 +37,7 @@
#include "ardour/port.h"
#include "ardour/route.h"
#include "ardour/user_bundle.h"
+#include "ardour/plugin_manager.h"
#include "gui_thread.h"
#include "monitor_section.h"
@@ -95,6 +96,12 @@ MonitorSection::MonitorSection (Session* s)
}
+ _plugin_selector = new PluginSelector (PluginManager::instance());
+ insert_box = new ProcessorBox (_session, boost::bind (&MonitorSection::plugin_selector, this), _rr_selection, 0);
+ insert_box->set_no_show_all ();
+ insert_box->show ();
+ // TODO allow keyboard shortcuts in ProcessorBox
+
set_session (s);
/* Rude Solo & Solo Isolated */
@@ -266,7 +273,7 @@ MonitorSection::MonitorSection (Session* s)
gain_control = new ArdourKnob (ArdourKnob::default_elements, ArdourKnob::Detent);
gain_control->set_name("monitor knob");
- gain_control->set_size_request (PX_SCALE(70), PX_SCALE(70));
+ gain_control->set_size_request (PX_SCALE(60), PX_SCALE(60));
gain_display = new ArdourDisplay ();
gain_display->set_name("monitor section cut");
@@ -394,7 +401,7 @@ MonitorSection::MonitorSection (Session* s)
lower_packer->pack_start (channel_table_packer, false, false);
lower_packer->pack_start (*mono_dim_box, false, false);
lower_packer->pack_start (cut_all_button, false, false);
- lower_packer->pack_start (*master_box, false, false, PX_SCALE(16));
+ lower_packer->pack_start (*master_box, false, false, PX_SCALE(10));
// output port select
VBox* out_packer = manage (new VBox);
@@ -410,14 +417,14 @@ MonitorSection::MonitorSection (Session* s)
vpacker->set_spacing (PX_SCALE(10));
vpacker->pack_start (*rude_box, false, false, PX_SCALE(3));
vpacker->pack_start (*solo_tbl, false, false);
- vpacker->pack_start (*level_tbl, false, false, PX_SCALE(16));
- vpacker->pack_start (*lower_packer, true, false); // expand, center
- vpacker->pack_end (*out_packer, false, false, PX_SCALE(16));
+ vpacker->pack_start (*level_tbl, false, false);
+ vpacker->pack_start (*lower_packer, false, false);
+ vpacker->pack_start (*insert_box, true, true);
+ vpacker->pack_end (*out_packer, false, false);
hpacker.set_spacing (0);
hpacker.pack_start (*vpacker, true, true);
-
gain_control->show_all ();
gain_display->show_all ();
dim_control->show_all ();
@@ -471,6 +478,7 @@ MonitorSection::~MonitorSection ()
_channel_buttons.clear ();
_output_changed_connection.disconnect ();
+ delete insert_box;
delete output_button;
delete gain_control;
delete gain_display;
@@ -489,6 +497,7 @@ void
MonitorSection::set_session (Session* s)
{
AxisView::set_session (s);
+ _plugin_selector->set_session (_session);
if (_session) {
@@ -501,6 +510,7 @@ MonitorSection::set_session (Session* s)
_route->output()->changed.connect (_output_changed_connection, invalidator (*this),
boost::bind (&MonitorSection::update_output_display, this),
gui_context());
+ insert_box->set_route (_route);
} else {
/* session with no monitor section */
_output_changed_connection.disconnect();
diff --git a/gtk2_ardour/monitor_section.h b/gtk2_ardour/monitor_section.h
index 3864820a3b..5be07eabbf 100644
--- a/gtk2_ardour/monitor_section.h
+++ b/gtk2_ardour/monitor_section.h
@@ -30,6 +30,10 @@
#include "route_ui.h"
#include "monitor_selector.h"
+#include "plugin_selector.h"
+#include "route_processor_selection.h"
+#include "processor_box.h"
+
namespace Gtkmm2ext {
class TearOff;
class MotionFeedback;
@@ -49,6 +53,8 @@ class MonitorSection : public RouteUI
std::string state_id() const;
+ PluginSelector* plugin_selector() { return _plugin_selector; }
+
private:
Gtk::HBox hpacker;
Gtkmm2ext::TearOff* _tearoff;
@@ -154,5 +160,10 @@ class MonitorSection : public RouteUI
bool _inhibit_solo_model_update;
void assign_controllables ();
+
void port_connected_or_disconnected (boost::weak_ptr<ARDOUR::Port>, boost::weak_ptr<ARDOUR::Port>);
+
+ ProcessorBox* insert_box;
+ PluginSelector* _plugin_selector;
+ RouteProcessorSelection _rr_selection;
};