#include <algorithm>
-#include <pbd/lockmonitor.h>
+#include <glibmm/thread.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/stop_signal.h>
#include <ardour/session.h>
#include <ardour/session_route.h>
-#include <ardour/diskstream.h>
+#include <ardour/audio_diskstream.h>
#include <ardour/plugin.h>
#include <ardour/plugin_manager.h>
#include <ardour/ardour.h>
#include "i18n.h"
using namespace ARDOUR;
+using namespace PBD;
using namespace Gtk;
using namespace sigc;
RouteParams_UI::RouteParams_UI (AudioEngine& eng)
: ArdourDialog ("track/bus inspector"),
engine (eng),
- _route(0),
track_menu(0)
{
pre_redirect_box = 0;
post_redirect_box = 0;
- _route = 0;
- _pre_redirect = 0;
- _post_redirect = 0;
_input_iosel = 0;
_output_iosel = 0;
_active_pre_view = 0;
route_vpacker.pack_start (route_hpacker, true, true);
- list_hpane.add1 (list_vpacker);
+ list_hpane.pack1 (list_vpacker);
list_hpane.add2 (route_vpacker);
list_hpane.set_position(110);
pre_redir_hpane.set_position(110);
post_redir_hpane.set_position(110);
- global_vpacker.pack_start (list_hpane, true, true);
+ //global_vpacker.pack_start (list_hpane, true, true);
+ //get_vbox()->pack_start (global_vpacker);
+ get_vbox()->pack_start (list_hpane);
+
- add (global_vpacker);
set_name ("RouteParamsWindow");
set_default_size (620,370);
set_title (_("ardour: track/bus inspector"));
}
void
-RouteParams_UI::add_route (Route* route)
+RouteParams_UI::add_route (boost::shared_ptr<Route> route)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &RouteParams_UI::add_route), route));
void
-RouteParams_UI::route_name_changed (void *src, Route *route)
+RouteParams_UI::route_name_changed (void *src, boost::shared_ptr<Route> route)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &RouteParams_UI::route_name_changed), src, route));
bool found = false ;
TreeModel::Children rows = route_display_model->children();
for(TreeModel::Children::iterator iter = rows.begin(); iter != rows.end(); ++iter) {
- if((*iter)[route_display_columns.route] == route) {
+ boost::shared_ptr<Route> r =(*iter)[route_display_columns.route];
+ if (r == route) {
(*iter)[route_display_columns.text] = route->name() ;
found = true ;
break;
}
}
- if(!found)
- {
+ if(!found) {
error << _("route display list item for renamed route not found!") << endmsg;
}
cleanup_redirect_boxes();
// construct new redirect boxes
- pre_redirect_box = new RedirectBox(PreFader, *session, *_route, *_plugin_selector, _rr_selection);
- post_redirect_box = new RedirectBox(PostFader, *session, *_route, *_plugin_selector, _rr_selection);
-
- pre_redirect_box->set_title(_("Pre Redirects"));
- pre_redirect_box->set_title_shown (true);
- post_redirect_box->set_title(_("Post Redirects"));
- post_redirect_box->set_title_shown (true);
+ pre_redirect_box = new RedirectBox(PreFader, *session, _route, *_plugin_selector, _rr_selection);
+ post_redirect_box = new RedirectBox(PostFader, *session, _route, *_plugin_selector, _rr_selection);
- pre_redir_hpane.add1 (*pre_redirect_box);
- post_redir_hpane.add1 (*post_redirect_box);
+ pre_redir_hpane.pack1 (*pre_redirect_box);
+ post_redir_hpane.pack1 (*post_redirect_box);
pre_redirect_box->RedirectSelected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PreFader));
pre_redirect_box->RedirectUnselected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PreFader));
post_redirect_box->RedirectSelected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PostFader));
post_redirect_box->RedirectUnselected.connect (bind (mem_fun(*this, &RouteParams_UI::redirect_selected), PostFader));
-
+
+ pre_redir_hpane.show_all();
+ post_redir_hpane.show_all();
}
}
cleanup_io_frames();
// input
- _input_iosel = new IOSelector (*session, *_route, true);
+ _input_iosel = new IOSelector (*session, _route, true);
_input_iosel->redisplay ();
input_frame.add (*_input_iosel);
input_frame.show_all();
// output
- _output_iosel = new IOSelector (*session, *_route, false);
+ _output_iosel = new IOSelector (*session, _route, false);
_output_iosel->redisplay ();
output_frame.add (*_output_iosel);
output_frame.show_all();
RouteParams_UI::cleanup_pre_view (bool stopupdate)
{
if (_active_pre_view) {
- PluginUI * plugui = 0;
+ LadspaPluginUI * plugui = 0;
- if (stopupdate && (plugui = dynamic_cast<PluginUI*>(_active_pre_view)) != 0) {
+ if (stopupdate && (plugui = dynamic_cast<LadspaPluginUI*>(_active_pre_view)) != 0) {
plugui->stop_updating (0);
}
RouteParams_UI::cleanup_post_view (bool stopupdate)
{
if (_active_post_view) {
- PluginUI * plugui = 0;
+ LadspaPluginUI * plugui = 0;
- if (stopupdate && (plugui = dynamic_cast<PluginUI*>(_active_post_view)) != 0) {
+ if (stopupdate && (plugui = dynamic_cast<LadspaPluginUI*>(_active_post_view)) != 0) {
plugui->stop_updating (0);
}
_post_plugin_conn.disconnect();
void
-RouteParams_UI::route_removed (Route *route)
+RouteParams_UI::route_removed (boost::shared_ptr<Route> route)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &RouteParams_UI::route_removed), route));
- /*
- route_select_list.freeze ();
- route_select_list.clear ();
- session->foreach_route (this, &RouteParams_UI::add_route);
- route_select_list.thaw ();
- */
TreeModel::Children rows = route_display_model->children();
TreeModel::Children::iterator ri;
for(TreeModel::Children::iterator iter = rows.begin(); iter != rows.end(); ++iter) {
- if((*iter)[route_display_columns.route] == route) {
+ boost::shared_ptr<Route> r =(*iter)[route_display_columns.route];
+
+ if (r == route) {
route_display_model->erase(iter);
break;
}
}
- if (route == _route)
- {
+ if (route == _route) {
cleanup_io_frames();
cleanup_pre_view();
cleanup_post_view();
cleanup_redirect_boxes();
- _route = 0;
- _pre_redirect = 0;
- _post_redirect = 0;
+ _route.reset ((Route*) 0);
+ _pre_redirect.reset ((Redirect*) 0);
+ _post_redirect.reset ((Redirect*) 0);
update_title();
}
}
{
ArdourDialog::set_session (sess);
- // GTK2FIX
- // route_select_list.freeze ();
-
- route_display_model.clear();
+ route_display_model->clear();
if (session) {
session->foreach_route (this, &RouteParams_UI::add_route);
{
ENSURE_GUI_THREAD(mem_fun(*this, &RouteParams_UI::session_gone));
- route_display_model.clear();
+ route_display_model->clear();
cleanup_io_frames();
cleanup_pre_view();
cleanup_post_view();
cleanup_redirect_boxes();
- _route = 0;
- _pre_redirect = 0;
- _post_redirect = 0;
+ _route.reset ((Route*) 0);
+ _pre_redirect.reset ((Redirect*) 0);
+ _post_redirect.reset ((Redirect*) 0);
update_title();
ArdourDialog::session_gone();
TreeModel::iterator iter = selection->get_selected(); // only used with Gtk::SELECTION_SINGLE
if(iter) {
//If anything is selected
- Route* route = (*iter)[route_display_columns.route] ;
+ boost::shared_ptr<Route> route = (*iter)[route_display_columns.route] ;
if (_route == route) {
// do nothing
cleanup_post_view();
cleanup_redirect_boxes();
- _route = 0;
- _pre_redirect = 0;
- _post_redirect = 0;
+ _route.reset ((Route*) 0);
+ _pre_redirect.reset ((Redirect*) 0);
+ _post_redirect.reset ((Redirect *) 0);
track_input_label.set_text(_("NO TRACK"));
update_title();
}
// cleanup_post_view();
// cleanup_redirect_boxes();
-// _route = 0;
+// _route.reset ((Route*)0);
// _pre_redirect = 0;
// _post_redirect = 0;
// track_input_label.set_text(_("NO TRACK"));
cleanup_pre_view();
cleanup_post_view();
- _pre_redirect = 0;
- _post_redirect = 0;
+ _pre_redirect.reset ((Redirect*) 0);
+ _post_redirect.reset ((Redirect*) 0);
//update_title();
}
void
-RouteParams_UI::redirect_selected (ARDOUR::Redirect *redirect, ARDOUR::Placement place)
+RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Redirect> redirect, ARDOUR::Placement place)
{
- Insert *insert;
+ boost::shared_ptr<Insert> insert;
if ((place == PreFader && _pre_redirect == redirect)
|| (place == PostFader && _post_redirect == redirect)){
return;
}
- if ((insert = dynamic_cast<Insert *> (redirect)) == 0) {
+ if ((insert = boost::dynamic_pointer_cast<Insert> (redirect)) == 0) {
- Send *send;
-
- if ((send = dynamic_cast<Send *> (redirect)) != 0) {
+ boost::shared_ptr<Send> send;
+
+ if ((send = boost::dynamic_pointer_cast<Send> (redirect)) != 0) {
/* its a send */
- SendUI *send_ui = new SendUI (*send, *session);
+ SendUI *send_ui = new SendUI (send, *session);
if (place == PreFader) {
cleanup_pre_view();
} else {
/* its an insert, though we don't know what kind yet. */
- PluginInsert *plugin_insert;
- PortInsert *port_insert;
+ boost::shared_ptr<PluginInsert> plugin_insert;
+ boost::shared_ptr<PortInsert> port_insert;
- if ((plugin_insert = dynamic_cast<PluginInsert *> (insert)) != 0) {
+ if ((plugin_insert = boost::dynamic_pointer_cast<PluginInsert> (insert)) != 0) {
- PluginUI *plugin_ui = new PluginUI (session->engine(), *plugin_insert, true);
+ LadspaPluginUI *plugin_ui = new LadspaPluginUI (session->engine(), 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));
+ _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.add2 (*_active_pre_view);
+ 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));
+ _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.add2 (*_active_post_view);
+ post_redir_hpane.pack2 (*_active_post_view);
post_redir_hpane.show_all();
}
- } else if ((port_insert = dynamic_cast<PortInsert *> (insert)) != 0) {
+ } else if ((port_insert = boost::dynamic_pointer_cast<PortInsert> (insert)) != 0) {
- PortInsertUI *portinsert_ui = new PortInsertUI (*session, *port_insert);
+ PortInsertUI *portinsert_ui = new PortInsertUI (*session, port_insert);
if (place == PreFader) {
cleanup_pre_view();
_pre_plugin_conn = port_insert->GoingAway.connect (mem_fun(*this, &RouteParams_UI::redirect_going_away));
_active_pre_view = portinsert_ui;
- pre_redir_hpane.add2 (*_active_pre_view);
+ pre_redir_hpane.pack2 (*_active_pre_view);
portinsert_ui->redisplay();
pre_redir_hpane.show_all();
}
cleanup_post_view();
_post_plugin_conn = port_insert->GoingAway.connect (mem_fun(*this, &RouteParams_UI::redirect_going_away));
_active_post_view = portinsert_ui;
- post_redir_hpane.add2 (*_active_post_view);
+ post_redir_hpane.pack2 (*_active_post_view);
portinsert_ui->redisplay();
post_redir_hpane.show_all();
}
if (place == PreFader) {
_pre_redirect = redirect;
- }
- else {
+ } else {
_post_redirect = redirect;
}
}
-void
-RouteParams_UI::redirect_unselected (ARDOUR::Redirect *redirect)
-{
- // not called anymore
-
- if (redirect == _pre_redirect) {
- cleanup_pre_view();
- _pre_redirect = 0;
- }
- else if (redirect == _post_redirect) {
- cleanup_post_view();
- _post_redirect = 0;
- }
-}
-
-
-
void
RouteParams_UI::plugin_going_away (Plugin *plugin, Placement place)
{
if (place == PreFader) {
cleanup_pre_view (false);
- _pre_redirect = 0;
+ _pre_redirect.reset ((Redirect*) 0);
}
else {
cleanup_post_view (false);
- _post_redirect = 0;
+ _post_redirect.reset ((Redirect*) 0);
}
}
printf ("redirect going away\n");
// delete the current view without calling finish
- if (plugin == _pre_redirect) {
+ if (plugin == _pre_redirect.get()) {
cleanup_pre_view (false);
- _pre_redirect = 0;
+ _pre_redirect.reset ((Redirect*) 0);
}
- else if (plugin == _post_redirect) {
+ else if (plugin == _post_redirect.get()) {
cleanup_post_view (false);
- _post_redirect = 0;
+ _post_redirect.reset ((Redirect*) 0);
}
}