summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-07-13 00:26:28 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-07-13 00:26:28 +0000
commit88beef2e93d26d28467fe151f5ef2972d0ca9169 (patch)
treeca2460f7e8fa7dd87d2ba79301d8aa8fc7314479 /gtk2_ardour
parent402cc384ced6cb152c8abe4294009fe0de0a6dea (diff)
merge pre- and post-fader processor boxes; start removing Placement (not finished) ; add -DWAF_BUILD and use per-directory foobar-config.h to correctly pick up configure-time settings like HAVE_OGG ; check for libgiomm (part of upgrade to newer gtk stack); 32 bit marker reload fix from 2.X; audiounit IO config cache fix from 2.X; multi-add route template fix from 2.X; plugin GUI delete fix from 2.X; solo button labels are A or P for listen mode
git-svn-id: svn://localhost/ardour2/branches/3.0@5344 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui_options.cc4
-rw-r--r--gtk2_ardour/au_pluginui.h1
-rw-r--r--gtk2_ardour/au_pluginui.mm49
-rw-r--r--gtk2_ardour/gain_meter.cc14
-rw-r--r--gtk2_ardour/generic_pluginui.cc4
-rw-r--r--gtk2_ardour/lv2_plugin_ui.h4
-rw-r--r--gtk2_ardour/mixer_strip.cc32
-rw-r--r--gtk2_ardour/mixer_strip.h3
-rw-r--r--gtk2_ardour/nag.cc4
-rw-r--r--gtk2_ardour/plugin_selector.cc3
-rw-r--r--gtk2_ardour/plugin_ui.cc15
-rw-r--r--gtk2_ardour/plugin_ui.h5
-rw-r--r--gtk2_ardour/processor_box.cc47
-rw-r--r--gtk2_ardour/processor_box.h2
-rw-r--r--gtk2_ardour/route_params_ui.cc253
-rw-r--r--gtk2_ardour/route_params_ui.h21
-rw-r--r--gtk2_ardour/route_time_axis.cc9
-rw-r--r--gtk2_ardour/sfdb_ui.cc16
-rw-r--r--gtk2_ardour/startup.cc3
-rw-r--r--gtk2_ardour/wscript4
20 files changed, 200 insertions, 293 deletions
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index f7408c9055..bade3906a4 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -17,6 +17,10 @@
*/
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include "pbd/convert.h"
#include "pbd/stacktrace.h"
diff --git a/gtk2_ardour/au_pluginui.h b/gtk2_ardour/au_pluginui.h
index 55c65d6291..41f15a80ba 100644
--- a/gtk2_ardour/au_pluginui.h
+++ b/gtk2_ardour/au_pluginui.h
@@ -70,7 +70,6 @@ class AUPluginUI : public PlugUIBase, public Gtk::VBox
/* Cocoa */
NSWindow* cocoa_window;
- NSScrollView* scroll_view;
NSView* au_view;
/* Carbon */
diff --git a/gtk2_ardour/au_pluginui.mm b/gtk2_ardour/au_pluginui.mm
index a46021f66f..248f9d62dd 100644
--- a/gtk2_ardour/au_pluginui.mm
+++ b/gtk2_ardour/au_pluginui.mm
@@ -129,8 +129,12 @@ AUPluginUI::~AUPluginUI ()
DisposeWindow (carbon_window);
}
- if (packView && packView != au_view) {
- [packView release];
+ if (packView) {
+ /* remove whatever we packed into low_box so that GTK doesn't
+ mess with it.
+ */
+
+ [packView removeFromSuperview];
}
}
@@ -284,46 +288,11 @@ AUPluginUI::create_cocoa_view ()
[(AUGenericView *)au_view setShowsExpertParameters:YES];
}
- NSRect packFrame;
-
+ packView = au_view;
+
// Get the size of the new AU View's frame
+ NSRect packFrame;
packFrame = [au_view frame];
-
- packFrame.origin.x = 0;
- packFrame.origin.y = 0;
-
- if (packFrame.size.width > 500 || packFrame.size.height > 500) {
-
- /* its too big - use a scrollview */
-
- NSRect frameRect = [[cocoa_window contentView] frame];
- scroll_view = [[[NSScrollView alloc] initWithFrame:frameRect] autorelease];
- [scroll_view setDrawsBackground:NO];
- [scroll_view setHasHorizontalScroller:YES];
- [scroll_view setHasVerticalScroller:YES];
-
- packFrame.size = [NSScrollView frameSizeForContentSize:packFrame.size
- hasHorizontalScroller:[scroll_view hasHorizontalScroller]
- hasVerticalScroller:[scroll_view hasVerticalScroller]
- borderType:[scroll_view borderType]];
-
- // Create a new frame with same origin as current
- // frame but size equal to the size of the new view
- NSRect newFrame;
- newFrame.origin = [scroll_view frame].origin;
- newFrame.size = packFrame.size;
-
- // Set the new frame and document views on the scroll view
- [scroll_view setFrame:newFrame];
- [scroll_view setDocumentView:au_view];
-
- packView = scroll_view;
-
- } else {
-
- packView = au_view;
- }
-
prefwidth = packFrame.size.width;
prefheight = packFrame.size.height;
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index 82e829c6f3..4f6b48666c 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -166,6 +166,11 @@ GainMeterBase::set_controls (boost::shared_ptr<Route> r,
boost::shared_ptr<Automatable> gc_owner)
{
connections.clear ();
+
+ cerr << "GM reset controls for " << r->name()
+ << " pm = " << pm
+ << " autocontrol = " << gc
+ << endl;
if (!pm && !gc) {
level_meter->set_meter (0);
@@ -417,11 +422,11 @@ GainMeterBase::set_fader_name (const char * name)
void
GainMeterBase::update_gain_sensitive ()
{
- static_cast<Gtkmm2ext::SliderController*>(gain_slider)->set_sensitive (
- !(_gain_control->alist()->automation_state() & Play));
+ bool x = !(_gain_control->alist()->automation_state() & Play);
+ cerr << " for " << _route->name() << " set gain sensitive to " << x << endl;
+ static_cast<Gtkmm2ext::SliderController*>(gain_slider)->set_sensitive (x);
}
-
static MeterPoint
next_meter_point (MeterPoint mp)
{
@@ -826,6 +831,9 @@ GainMeter::set_controls (boost::shared_ptr<Route> r,
if (!r->is_hidden()) {
fader_vbox->pack_start (gain_automation_state_button, false, false, 0);
}
+
+ setup_meters ();
+ hbox.show_all ();
}
int
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index 0184635b60..77a3967f1e 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -17,6 +17,10 @@
*/
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include <climits>
#include <cerrno>
#include <cmath>
diff --git a/gtk2_ardour/lv2_plugin_ui.h b/gtk2_ardour/lv2_plugin_ui.h
index 0ddc86b217..622320b831 100644
--- a/gtk2_ardour/lv2_plugin_ui.h
+++ b/gtk2_ardour/lv2_plugin_ui.h
@@ -21,6 +21,10 @@
#ifndef __ardour_lv2_plugin_ui_h__
#define __ardour_lv2_plugin_ui_h__
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include <vector>
#include <map>
#include <list>
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index a862b15ccd..625b2d4faa 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -78,8 +78,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, bool in_mixer)
, RouteUI (sess)
,_mixer(mx)
, _mixer_owned (in_mixer)
- , pre_processor_box (PreFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
- , post_processor_box (PostFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
+ , processor_box (sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
, gpm (sess)
, panners (sess)
, button_table (3, 2)
@@ -105,8 +104,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr<Route> rt
, RouteUI (sess)
,_mixer(mx)
, _mixer_owned (in_mixer)
- , pre_processor_box (PreFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
- , post_processor_box (PostFader, sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
+ , processor_box (sess, mx.plugin_selector(), mx.selection(), this, in_mixer)
, gpm (sess)
, panners (sess)
, button_table (3, 2)
@@ -231,11 +229,10 @@ MixerStrip::init ()
global_vpacker.pack_start (whvbox, Gtk::PACK_SHRINK);
global_vpacker.pack_start (button_table,Gtk::PACK_SHRINK);
- global_vpacker.pack_start (pre_processor_box, true, true);
+ global_vpacker.pack_start (processor_box, true, true);
global_vpacker.pack_start (middle_button_table,Gtk::PACK_SHRINK);
global_vpacker.pack_start (gain_meter_alignment,Gtk::PACK_SHRINK);
global_vpacker.pack_start (bottom_button_table,Gtk::PACK_SHRINK);
- global_vpacker.pack_start (post_processor_box, true, true);
if (!is_midi_track()) {
global_vpacker.pack_start (panners, Gtk::PACK_SHRINK);
}
@@ -341,8 +338,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
panners.set_panner (rt->main_outs()->panner());
gpm.set_controls (rt, rt->shared_peak_meter(), rt->gain_control(), rt->amp());
- pre_processor_box.set_route (rt);
- post_processor_box.set_route (rt);
+ processor_box.set_route (rt);
if (set_color_from_route()) {
set_color (unique_random_color());
@@ -436,8 +432,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
/* now force an update of all the various elements */
- pre_processor_box.update();
- post_processor_box.update();
+ processor_box.update();
mute_changed (0);
solo_changed (0);
name_changed ();
@@ -454,7 +449,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
add_events (Gdk::BUTTON_RELEASE_MASK);
- pre_processor_box.show();
+ processor_box.show();
if (!route()->is_master() && !route()->is_control()) {
/* we don't allow master or control routes to be hidden */
@@ -469,11 +464,10 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
button_table.show();
middle_button_table.show();
bottom_button_table.show();
- pre_processor_box.show_all ();
+ processor_box.show_all ();
gpm.show_all ();
panners.show_all ();
gain_meter_alignment.show ();
- post_processor_box.show_all ();
gain_unit_button.show();
gain_unit_label.show();
meter_point_button.show();
@@ -525,8 +519,7 @@ MixerStrip::set_width_enum (Width w, void* owner)
gpm.set_width (w);
panners.set_width (w);
- pre_processor_box.set_width (w);
- post_processor_box.set_width (w);
+ processor_box.set_width (w);
boost::shared_ptr<AutomationList> gain_automation = _route->gain_control()->alist();
@@ -1273,12 +1266,10 @@ MixerStrip::map_frozen ()
if (at) {
switch (at->freeze_state()) {
case AudioTrack::Frozen:
- pre_processor_box.set_sensitive (false);
- post_processor_box.set_sensitive (false);
+ processor_box.set_sensitive (false);
break;
default:
- pre_processor_box.set_sensitive (true);
- post_processor_box.set_sensitive (true);
+ processor_box.set_sensitive (true);
// XXX need some way, maybe, to retoggle redirect editors
break;
}
@@ -1415,6 +1406,9 @@ MixerStrip::switch_io (boost::shared_ptr<Route> target)
_current_delivery = _route->internal_send_for (target);
+ cerr << "internal send from " << _route->name() << " to " << target->name() << " = "
+ << _current_delivery << endl;
+
if (_current_delivery) {
send = boost::dynamic_pointer_cast<Send>(_current_delivery);
send->set_metering (true);
diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h
index 30557b115e..f46858b2ca 100644
--- a/gtk2_ardour/mixer_strip.h
+++ b/gtk2_ardour/mixer_strip.h
@@ -134,8 +134,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
Gtk::Frame global_frame;
Gtk::VBox global_vpacker;
- ProcessorBox pre_processor_box;
- ProcessorBox post_processor_box;
+ ProcessorBox processor_box;
GainMeter gpm;
PannerUI panners;
diff --git a/gtk2_ardour/nag.cc b/gtk2_ardour/nag.cc
index 4dab7e69b7..f63e78b20f 100644
--- a/gtk2_ardour/nag.cc
+++ b/gtk2_ardour/nag.cc
@@ -1,3 +1,7 @@
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include <fstream>
#include <gtkmm/stock.h>
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc
index 705146eccd..d87fad611a 100644
--- a/gtk2_ardour/plugin_selector.cc
+++ b/gtk2_ardour/plugin_selector.cc
@@ -16,6 +16,9 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
#include <cstdio>
#include <lrdf.h>
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index f398c23d7c..527c54876e 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -17,6 +17,10 @@
*/
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include <climits>
#include <cerrno>
#include <cmath>
@@ -383,8 +387,9 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
ARDOUR_UI::instance()->set_tip (&bypass_button, _("Click to enable/disable this plugin"), "");
plugin_analysis_expander.property_expanded().signal_changed().connect( mem_fun(*this, &PlugUIBase::toggle_plugin_analysis));
-
plugin_analysis_expander.set_expanded(false);
+
+ insert->GoingAway.connect (mem_fun (*this, &PlugUIBase::plugin_going_away));
}
PlugUIBase::~PlugUIBase()
@@ -393,6 +398,14 @@ PlugUIBase::~PlugUIBase()
}
void
+PlugUIBase::plugin_going_away ()
+{
+ /* drop references to the plugin/insert */
+ insert.reset ();
+ plugin.reset ();
+}
+
+void
PlugUIBase::set_latency_label ()
{
char buf[64];
diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h
index 4ad7c213ac..93059bb2bd 100644
--- a/gtk2_ardour/plugin_ui.h
+++ b/gtk2_ardour/plugin_ui.h
@@ -20,6 +20,10 @@
#ifndef __ardour_plugin_ui_h__
#define __ardour_plugin_ui_h__
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include <vector>
#include <map>
#include <list>
@@ -112,6 +116,7 @@ class PlugUIBase : public virtual sigc::trackable
void bypass_toggled();
void toggle_plugin_analysis ();
void processor_active_changed (boost::weak_ptr<ARDOUR::Processor> p);
+ void plugin_going_away ();
};
class GenericPluginUI : public PlugUIBase, public Gtk::VBox
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index ae1d6c73ab..ffa73ff2b8 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -17,6 +17,10 @@
*/
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
#include <cmath>
#include <iostream>
#include <set>
@@ -89,12 +93,12 @@ bool ProcessorBox::get_colors = true;
Gdk::Color* ProcessorBox::active_processor_color;
Gdk::Color* ProcessorBox::inactive_processor_color;
-ProcessorBox::ProcessorBox (Placement pcmnt, Session& sess, PluginSelector &plugsel,
+ProcessorBox::ProcessorBox (Session& sess, PluginSelector &plugsel,
RouteRedirectSelection & rsel, MixerStrip* parent, bool owner_is_mixer)
: _session(sess)
, _parent_strip (parent)
, _owner_is_mixer (owner_is_mixer)
- , _placement(pcmnt)
+ , _placement(PreFader)
, _plugin_selector(plugsel)
, _rr_selection(rsel)
{
@@ -363,7 +367,6 @@ ProcessorBox::processor_button_release_event (GdkEventButton *ev)
boost::shared_ptr<Processor> processor;
int ret = false;
-
if (processor_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
if ((iter = model->get_iter (path))) {
processor = (*iter)[columns.processor];
@@ -379,7 +382,23 @@ ProcessorBox::processor_button_release_event (GdkEventButton *ev)
} else if (Keyboard::is_context_menu_event (ev)) {
- show_processor_menu(ev->time);
+ /* figure out if we are above or below the fader/amp processor,
+ and set the next insert position appropriately.
+ */
+
+ if (processor) {
+ if (_route->processor_is_prefader (processor)) {
+ _placement = PreFader;
+ } else {
+ _placement = PostFader;
+ }
+ cerr << "had processor " << processor->name() << " placement = " << _placement << endl;
+ } else {
+ _placement = PostFader;
+ cerr << "no processor, postfader\n";
+ }
+
+ show_processor_menu (ev->time);
ret = true;
} else if (processor && Keyboard::is_button2_event (ev)
@@ -512,9 +531,8 @@ void
ProcessorBox::choose_insert ()
{
boost::shared_ptr<Processor> processor (new PortInsert (_session, _route->mute_master()));
- processor->ActiveChanged.connect (bind (
- mem_fun(*this, &ProcessorBox::show_processor_active),
- boost::weak_ptr<Processor>(processor)));
+ processor->ActiveChanged.connect (bind (mem_fun(*this, &ProcessorBox::show_processor_active),
+ boost::weak_ptr<Processor>(processor)));
_route->add_processor (processor, _placement);
}
@@ -651,16 +669,9 @@ ProcessorBox::redisplay_processors ()
processor_active_connections.clear ();
processor_name_connections.clear ();
- _route->foreach_processor (_placement, mem_fun (*this, &ProcessorBox::add_processor_to_display));
+ _route->foreach_processor (mem_fun (*this, &ProcessorBox::add_processor_to_display));
- switch (_placement) {
- case PreFader:
- build_processor_tooltip (processor_eventbox, _("Pre-fader inserts, sends & plugins:"));
- break;
- case PostFader:
- build_processor_tooltip (processor_eventbox, _("Post-fader inserts, sends & plugins:"));
- break;
- }
+ build_processor_tooltip (processor_eventbox, _("Inserts, sends & plugins:"));
}
void
@@ -671,9 +682,11 @@ ProcessorBox::add_processor_to_display (boost::weak_ptr<Processor> p)
return;
}
+#if 0
if (processor == _route->amp() || !processor->visible()) {
return;
}
+#endif
Gtk::TreeModel::Row row = *(model->append());
row[columns.text] = processor_name (processor);
@@ -816,7 +829,7 @@ ProcessorBox::compute_processor_sort_keys ()
our_processors.push_back ((*iter)[columns.processor]);
}
- if (_route->reorder_processors (our_processors, _placement)) {
+ if (_route->reorder_processors (our_processors)) {
/* reorder failed, so redisplay */
diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h
index a55b49c07f..32a36c9077 100644
--- a/gtk2_ardour/processor_box.h
+++ b/gtk2_ardour/processor_box.h
@@ -69,7 +69,7 @@ namespace ARDOUR {
class ProcessorBox : public Gtk::HBox, public PluginInterestedObject
{
public:
- ProcessorBox (ARDOUR::Placement, ARDOUR::Session&, PluginSelector &, RouteRedirectSelection &, MixerStrip* parent, bool owner_is_mixer = false);
+ ProcessorBox (ARDOUR::Session&, PluginSelector &, RouteRedirectSelection &, MixerStrip* parent, bool owner_is_mixer = false);
~ProcessorBox ();
void set_route (boost::shared_ptr<ARDOUR::Route>);
diff --git a/gtk2_ardour/route_params_ui.cc b/gtk2_ardour/route_params_ui.cc
index d2fc106c42..245b0019dc 100644
--- a/gtk2_ardour/route_params_ui.cc
+++ b/gtk2_ardour/route_params_ui.cc
@@ -66,12 +66,10 @@ RouteParams_UI::RouteParams_UI ()
track_menu(0)
{
- pre_insert_box = 0;
- post_insert_box = 0;
+ insert_box = 0;
_input_iosel = 0;
_output_iosel = 0;
- _active_pre_view = 0;
- _active_post_view = 0;
+ _active_view = 0;
latency_widget = 0;
using namespace Notebook_Helpers;
@@ -108,8 +106,7 @@ RouteParams_UI::RouteParams_UI ()
notebook.pages().push_back (TabElem (input_frame, _("Inputs")));
notebook.pages().push_back (TabElem (output_frame, _("Outputs")));
- notebook.pages().push_back (TabElem (pre_redir_hpane, _("Pre-fader Redirects")));
- notebook.pages().push_back (TabElem (post_redir_hpane, _("Post-fader Redirects")));
+ notebook.pages().push_back (TabElem (redir_hpane, _("Plugins, Inserts & Sends")));
notebook.pages().push_back (TabElem (latency_frame, _("Latency")));
notebook.set_name ("InspectorNotebook");
@@ -137,8 +134,7 @@ RouteParams_UI::RouteParams_UI ()
list_hpane.set_position(110);
- pre_redir_hpane.set_position(110);
- post_redir_hpane.set_position(110);
+ redir_hpane.set_position(110);
//global_vpacker.pack_start (list_hpane, true, true);
//get_vbox()->pack_start (global_vpacker);
@@ -231,39 +227,25 @@ RouteParams_UI::setup_processor_boxes()
cleanup_processor_boxes();
// construct new redirect boxes
- pre_insert_box = new ProcessorBox(PreFader, *session, *_plugin_selector, _rr_selection, 0);
- post_insert_box = new ProcessorBox(PostFader, *session, *_plugin_selector, _rr_selection, 0);
-
- pre_insert_box->set_route (_route);
- post_insert_box->set_route (_route);
-
- pre_redir_hpane.pack1 (*pre_insert_box);
- post_redir_hpane.pack1 (*post_insert_box);
-
- pre_insert_box->ProcessorSelected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PreFader));
- pre_insert_box->ProcessorUnselected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PreFader));
- post_insert_box->ProcessorSelected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PostFader));
- post_insert_box->ProcessorUnselected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PostFader));
-
- pre_redir_hpane.show_all();
- post_redir_hpane.show_all();
+ insert_box = new ProcessorBox(*session, *_plugin_selector, _rr_selection, 0);
+ insert_box->set_route (_route);
+
+ redir_hpane.pack1 (*insert_box);
+
+ insert_box->ProcessorSelected.connect (mem_fun(*this, &RouteParams_UI::redirect_selected));
+ insert_box->ProcessorUnselected.connect (mem_fun(*this, &RouteParams_UI::redirect_selected));
+
+ redir_hpane.show_all();
}
-
}
void
RouteParams_UI::cleanup_processor_boxes()
{
- if (pre_insert_box) {
- pre_redir_hpane.remove(*pre_insert_box);
- delete pre_insert_box;
- pre_insert_box = 0;
- }
-
- if (post_insert_box) {
- post_redir_hpane.remove(*post_insert_box);
- delete post_insert_box;
- post_insert_box = 0;
+ if (insert_box) {
+ redir_hpane.remove(*insert_box);
+ delete insert_box;
+ insert_box = 0;
}
}
@@ -354,40 +336,23 @@ RouteParams_UI::cleanup_io_frames()
}
void
-RouteParams_UI::cleanup_pre_view (bool stopupdate)
+RouteParams_UI::cleanup_view (bool stopupdate)
{
- if (_active_pre_view) {
+ if (_active_view) {
GenericPluginUI * plugui = 0;
- if (stopupdate && (plugui = dynamic_cast<GenericPluginUI*>(_active_pre_view)) != 0) {
+ if (stopupdate && (plugui = dynamic_cast<GenericPluginUI*>(_active_view)) != 0) {
plugui->stop_updating (0);
}
- _pre_plugin_conn.disconnect();
- pre_redir_hpane.remove(*_active_pre_view);
- delete _active_pre_view;
- _active_pre_view = 0;
+ _plugin_conn.disconnect();
+ redir_hpane.remove(*_active_view);
+ delete _active_view;
+ _active_view = 0;
}
}
void
-RouteParams_UI::cleanup_post_view (bool stopupdate)
-{
- if (_active_post_view) {
- GenericPluginUI * plugui = 0;
-
- if (stopupdate && (plugui = dynamic_cast<GenericPluginUI*>(_active_post_view)) != 0) {
- plugui->stop_updating (0);
- }
- _post_plugin_conn.disconnect();
- post_redir_hpane.remove(*_active_post_view);
- delete _active_post_view;
- _active_post_view = 0;
- }
-}
-
-
-void
RouteParams_UI::route_removed (boost::shared_ptr<Route> route)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &RouteParams_UI::route_removed), route));
@@ -406,13 +371,11 @@ RouteParams_UI::route_removed (boost::shared_ptr<Route> route)
if (route == _route) {
cleanup_io_frames();
- cleanup_pre_view();
- cleanup_post_view();
+ cleanup_view();
cleanup_processor_boxes();
_route.reset ((Route*) 0);
- _pre_processor.reset ((Processor*) 0);
- _post_processor.reset ((Processor*) 0);
+ _processor.reset ((Processor*) 0);
update_title();
}
}
@@ -448,14 +411,12 @@ RouteParams_UI::session_gone ()
route_display_model->clear();
cleanup_io_frames();
- cleanup_pre_view();
- cleanup_post_view();
+ cleanup_view();
cleanup_processor_boxes();
cleanup_latency_frame ();
_route.reset ((Route*) 0);
- _pre_processor.reset ((Processor*) 0);
- _post_processor.reset ((Processor*) 0);
+ _processor.reset ((Processor*) 0);
update_title();
ArdourDialog::session_gone();
@@ -482,8 +443,7 @@ RouteParams_UI::route_selected()
_route_conn.disconnect();
_route_ds_conn.disconnect();
cleanup_processor_boxes();
- cleanup_pre_view();
- cleanup_post_view();
+ cleanup_view();
cleanup_io_frames();
cleanup_latency_frame ();
}
@@ -510,14 +470,12 @@ RouteParams_UI::route_selected()
// remove from view
cleanup_io_frames();
- cleanup_pre_view();
- cleanup_post_view();
+ cleanup_view();
cleanup_processor_boxes();
cleanup_latency_frame ();
_route.reset ((Route*) 0);
- _pre_processor.reset ((Processor*) 0);
- _post_processor.reset ((Processor *) 0);
+ _processor.reset ((Processor*) 0);
track_input_label.set_text(_("NO TRACK"));
update_title();
}
@@ -528,11 +486,9 @@ void
RouteParams_UI::processors_changed ()
{
ENSURE_GUI_THREAD(mem_fun(*this, &RouteParams_UI::processors_changed));
- cleanup_pre_view();
- cleanup_post_view();
+ cleanup_view();
- _pre_processor.reset ((Processor*) 0);
- _post_processor.reset ((Processor*) 0);
+ _processor.reset ((Processor*) 0);
//update_title();
}
@@ -553,12 +509,9 @@ RouteParams_UI::show_track_menu()
}
void
-RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Processor> insert, ARDOUR::Placement place)
+RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Processor> insert)
{
- if ((place == PreFader && _pre_processor == insert)
- || (place == PostFader && _post_processor == insert)){
- return;
- }
+ Placement place = PreFader;
boost::shared_ptr<Send> send;
boost::shared_ptr<Return> retrn;
@@ -569,104 +522,52 @@ RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Processor> insert,
SendUI *send_ui = new SendUI (send, *session);
- if (place == PreFader) {
- cleanup_pre_view();
- _pre_plugin_conn = send->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::redirect_going_away),
- insert));
- _active_pre_view = send_ui;
-
- pre_redir_hpane.add2 (*_active_pre_view);
- pre_redir_hpane.show_all();
- } else {
- cleanup_post_view();
- _post_plugin_conn = send->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::redirect_going_away),
- insert));
- _active_post_view = send_ui;
-
- post_redir_hpane.add2 (*_active_post_view);
- post_redir_hpane.show_all();
- }
+ cleanup_view();
+ _plugin_conn = send->GoingAway.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_going_away),
+ insert));
+ _active_view = send_ui;
+
+ redir_hpane.add2 (*_active_view);
+ redir_hpane.show_all();
} else if ((retrn = boost::dynamic_pointer_cast<Return> (insert)) != 0) {
ReturnUI *return_ui = new ReturnUI (retrn, *session);
- if (place == PreFader) {
- cleanup_pre_view();
- _pre_plugin_conn = retrn->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::redirect_going_away),
- insert));
- _active_pre_view = return_ui;
-
- pre_redir_hpane.add2 (*_active_pre_view);
- pre_redir_hpane.show_all();
- } else {
- cleanup_post_view();
- _post_plugin_conn = retrn->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::redirect_going_away),
- insert));
- _active_post_view = return_ui;
-
- post_redir_hpane.add2 (*_active_post_view);
- post_redir_hpane.show_all();
- }
+ cleanup_view();
+ _plugin_conn = retrn->GoingAway.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_going_away),
+ insert));
+ _active_view = return_ui;
+
+ redir_hpane.add2 (*_active_view);
+ redir_hpane.show_all();
} else if ((plugin_insert = boost::dynamic_pointer_cast<PluginInsert> (insert)) != 0) {
GenericPluginUI *plugin_ui = new GenericPluginUI (plugin_insert, true);
- if (place == PreFader) {
- cleanup_pre_view();
- _pre_plugin_conn = plugin_insert->plugin()->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::plugin_going_away),
- PreFader));
- plugin_ui->start_updating (0);
- _active_pre_view = plugin_ui;
- pre_redir_hpane.pack2 (*_active_pre_view);
- pre_redir_hpane.show_all();
- } else {
- cleanup_post_view();
- _post_plugin_conn = plugin_insert->plugin()->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::plugin_going_away),
- PostFader));
- plugin_ui->start_updating (0);
- _active_post_view = plugin_ui;
- post_redir_hpane.pack2 (*_active_post_view);
- post_redir_hpane.show_all();
- }
+ cleanup_view();
+ _plugin_conn = plugin_insert->plugin()->GoingAway.connect (bind (mem_fun(*this, &RouteParams_UI::plugin_going_away),
+ PreFader));
+ plugin_ui->start_updating (0);
+ _active_view = plugin_ui;
+ redir_hpane.pack2 (*_active_view);
+ redir_hpane.show_all();
} else if ((port_insert = boost::dynamic_pointer_cast<PortInsert> (insert)) != 0) {
PortInsertUI *portinsert_ui = new PortInsertUI (*session, port_insert);
- if (place == PreFader) {
- cleanup_pre_view();
- _pre_plugin_conn = port_insert->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::redirect_going_away),
- insert));
- _active_pre_view = portinsert_ui;
- pre_redir_hpane.pack2 (*_active_pre_view);
- portinsert_ui->redisplay();
- pre_redir_hpane.show_all();
- } else {
- cleanup_post_view();
- _post_plugin_conn = port_insert->GoingAway.connect (bind (
- mem_fun(*this, &RouteParams_UI::redirect_going_away),
- insert));
- _active_post_view = portinsert_ui;
- post_redir_hpane.pack2 (*_active_post_view);
- portinsert_ui->redisplay();
- post_redir_hpane.show_all();
- }
+ cleanup_view();
+ _plugin_conn = port_insert->GoingAway.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_going_away),
+ insert));
+ _active_view = portinsert_ui;
+ redir_hpane.pack2 (*_active_view);
+ portinsert_ui->redisplay();
+ redir_hpane.show_all();
}
- if (place == PreFader) {
- _pre_processor = insert;
- } else {
- _post_processor = insert;
- }
+ _processor = insert;
update_title();
@@ -680,12 +581,8 @@ RouteParams_UI::plugin_going_away (Placement place)
// delete the current view without calling finish
if (place == PreFader) {
- cleanup_pre_view (false);
- _pre_processor.reset ((Processor*) 0);
- }
- else {
- cleanup_post_view (false);
- _post_processor.reset ((Processor*) 0);
+ cleanup_view (false);
+ _processor.reset ((Processor*) 0);
}
}
@@ -697,16 +594,12 @@ RouteParams_UI::redirect_going_away (boost::shared_ptr<ARDOUR::Processor> insert
printf ("redirect going away\n");
// delete the current view without calling finish
- if (insert == _pre_processor) {
- cleanup_pre_view (false);
- _pre_processor.reset ((Processor*) 0);
- } else if (insert == _post_processor) {
- cleanup_post_view (false);
- _post_processor.reset ((Processor*) 0);
- }
+ if (insert == _processor) {
+ cleanup_view (false);
+ _processor.reset ((Processor*) 0);
+ }
}
-
void
RouteParams_UI::update_title ()
{
@@ -759,11 +652,7 @@ RouteParams_UI::update_views ()
SendUI *sui;
// TODO: only do it if correct tab is showing
- if ((sui = dynamic_cast<SendUI*> (_active_pre_view)) != 0) {
- sui->update ();
- }
- if ((sui = dynamic_cast<SendUI*> (_active_post_view)) != 0) {
+ if ((sui = dynamic_cast<SendUI*> (_active_view)) != 0) {
sui->update ();
}
-
}
diff --git a/gtk2_ardour/route_params_ui.h b/gtk2_ardour/route_params_ui.h
index 0f9fe6423f..5fd7487bc1 100644
--- a/gtk2_ardour/route_params_ui.h
+++ b/gtk2_ardour/route_params_ui.h
@@ -80,16 +80,14 @@ class RouteParams_UI : public ArdourDialog
Gtk::Notebook notebook;
Gtk::Frame input_frame;
Gtk::Frame output_frame;
- Gtk::HPaned pre_redir_hpane;
- Gtk::HPaned post_redir_hpane;
+ Gtk::HPaned redir_hpane;
Gtk::Frame route_select_frame;
Gtk::HBox route_hpacker;
Gtk::VBox route_vpacker;
- ProcessorBox * pre_insert_box;
- ProcessorBox * post_insert_box;
+ ProcessorBox* insert_box;
Gtk::HPaned list_hpane;
@@ -119,8 +117,7 @@ class RouteParams_UI : public ArdourDialog
Gtk::Label title_label;
- Gtk::Container * _active_pre_view;
- Gtk::Container * _active_post_view;
+ Gtk::Container * _active_view;
IOSelector * _input_iosel;
IOSelector * _output_iosel;
@@ -131,12 +128,9 @@ class RouteParams_UI : public ArdourDialog
sigc::connection _route_conn;
sigc::connection _route_ds_conn;
- boost::shared_ptr<ARDOUR::Processor> _pre_processor;
- sigc::connection _pre_plugin_conn;
+ boost::shared_ptr<ARDOUR::Processor> _processor;
+ sigc::connection _plugin_conn;
- boost::shared_ptr<ARDOUR::Processor> _post_processor;
- sigc::connection _post_plugin_conn;
-
enum ConfigView {
NO_CONFIG_VIEW = 0,
@@ -176,8 +170,7 @@ class RouteParams_UI : public ArdourDialog
void setup_io_frames();
void cleanup_io_frames();
- void cleanup_pre_view(bool stopupdate = true);
- void cleanup_post_view(bool stopupdate = true);
+ void cleanup_view(bool stopupdate = true);
void cleanup_latency_frame ();
void setup_latency_frame ();
@@ -186,7 +179,7 @@ class RouteParams_UI : public ArdourDialog
void setup_processor_boxes();
void cleanup_processor_boxes();
- void redirect_selected (boost::shared_ptr<ARDOUR::Processor>, ARDOUR::Placement);
+ void redirect_selected (boost::shared_ptr<ARDOUR::Processor>);
void plugin_going_away (ARDOUR::Placement);
void redirect_going_away (boost::shared_ptr<ARDOUR::Processor>);
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index ebc4a350e6..87ba46ffb6 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -2397,7 +2397,14 @@ RouteTimeAxisView::set_button_names ()
rec_enable_button_label.set_text (_("r"));
if (Config->get_solo_control_is_listen_control()) {
- solo_button_label.set_text (_("l"));
+ switch (Config->get_listen_position()) {
+ case AfterFaderListen:
+ solo_button_label.set_text (_("A"));
+ break;
+ case PreFaderListen:
+ solo_button_label.set_text (_("P"));
+ break;
+ }
} else {
solo_button_label.set_text (_("s"));
}
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 21a9b0280d..817c710fd8 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -1210,10 +1210,10 @@ SoundFileOmega::SoundFileOmega (Gtk::Window& parent, string title, ARDOUR::Sessi
options.set_spacing (12);
str.clear ();
- str.push_back (_("use file timestamp"));
- str.push_back (_("at edit point"));
- str.push_back (_("at playhead"));
- str.push_back (_("at session start"));
+ str.push_back (_("file timestamp"));
+ str.push_back (_("edit point"));
+ str.push_back (_("playhead"));
+ str.push_back (_("session start"));
set_popdown_strings (where_combo, str);
where_combo.set_active_text (str.front());
@@ -1240,7 +1240,7 @@ SoundFileOmega::SoundFileOmega (Gtk::Window& parent, string title, ARDOUR::Sessi
action_combo.set_sensitive (false);
l = manage (new Label);
- l->set_text (_("Insert:"));
+ l->set_text (_("Insert at:"));
hbox = manage (new HBox);
hbox->set_border_width (12);
@@ -1364,11 +1364,11 @@ SoundFileOmega::get_position() const
{
ustring str = where_combo.get_active_text();
- if (str == _("use file timestamp")) {
+ if (str == _("file timestamp")) {
return ImportAtTimestamp;
- } else if (str == _("at edit point")) {
+ } else if (str == _("edit point")) {
return ImportAtEditPoint;
- } else if (str == _("at playhead")) {
+ } else if (str == _("playhead")) {
return ImportAtPlayhead;
} else {
return ImportAtStart;
diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc
index bbfa173b41..5dc6c2b75f 100644
--- a/gtk2_ardour/startup.cc
+++ b/gtk2_ardour/startup.cc
@@ -191,7 +191,8 @@ Glib::ustring
ArdourStartup::session_folder ()
{
if (ic_new_session_button.get_active()) {
- return Glib::build_filename (new_folder_chooser.get_current_folder(), new_name_entry.get_text());
+ Glib::ustring legal_session_folder_name = legalize_for_path (new_name_entry.get_text());
+ return Glib::build_filename (new_folder_chooser.get_current_folder(), legal_session_folder_name);
} else {
TreeIter iter = recent_session_display.get_selection()->get_selected();
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index be7c5a649c..299e3e0c53 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -42,8 +42,7 @@ def configure(conf):
conf.env.append_value('CCFLAGS', '-D_REENTRANT -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE')
conf.env.append_value('CXXFLAGS', '-DENABLE_NLS')
- conf.env.append_value('CXXFLAGS', '-DHAVE_WAFCONFIG_H')
- conf.write_config_header('wafconfig.h')
+ conf.write_config_header('gtk2ardour-config.h')
# TODO
conf.define('WINDOWS_KEY', 'Mod4')
@@ -244,7 +243,6 @@ def build(bld):
if bld.env['HAVE_SLV2']:
obj.source += ' lv2_plugin_ui.cc '
obj.uselib += ' SLV2 '
- obj.cxxflags += ['-DHAVE_SLV2']
# Wrappers