diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour_ui_options.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/au_pluginui.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/au_pluginui.mm | 49 | ||||
-rw-r--r-- | gtk2_ardour/gain_meter.cc | 14 | ||||
-rw-r--r-- | gtk2_ardour/generic_pluginui.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/lv2_plugin_ui.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 32 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/nag.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/plugin_selector.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.cc | 15 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.h | 5 | ||||
-rw-r--r-- | gtk2_ardour/processor_box.cc | 47 | ||||
-rw-r--r-- | gtk2_ardour/processor_box.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/route_params_ui.cc | 253 | ||||
-rw-r--r-- | gtk2_ardour/route_params_ui.h | 21 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/sfdb_ui.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/startup.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/wscript | 4 |
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 |