#include <gtkmm2ext/bindable_button.h>
#include <gtkmm2ext/utils.h>
+#include "ardour/amp.h"
#include "ardour/audioplaylist.h"
#include "ardour/diskstream.h"
#include "ardour/event_type_map.h"
#include "simplerect.h"
#include "streamview.h"
#include "utils.h"
+#include "route_group_dialog.h"
#include "ardour/track.h"
visual_button (_("v")),
gm (sess, slider, true)
{
- gm.set_io (rt);
+ gm.set_controls (_route, _route->shared_peak_meter(), _route->gain_control(), _route->amp());
gm.get_level_meter().set_no_show_all();
gm.get_level_meter().setup_meters(50);
controls_hbox.pack_start(gm.get_level_meter(), false, false);
_route->meter_change.connect (mem_fun(*this, &RouteTimeAxisView::meter_changed));
- _route->input_changed.connect (mem_fun(*this, &RouteTimeAxisView::io_changed));
- _route->output_changed.connect (mem_fun(*this, &RouteTimeAxisView::io_changed));
+ _route->input()->changed.connect (mem_fun(*this, &RouteTimeAxisView::io_changed));
+ _route->output()->changed.connect (mem_fun(*this, &RouteTimeAxisView::io_changed));
controls_table.attach (*mute_button, 6, 7, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0);
controls_table.attach (*solo_button, 7, 8, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0);
_route->solo_changed.connect (mem_fun(*this, &RouteUI::solo_changed));
_route->processors_changed.connect (mem_fun(*this, &RouteTimeAxisView::processors_changed));
_route->NameChanged.connect (mem_fun(*this, &RouteTimeAxisView::route_name_changed));
- _route->solo_safe_changed.connect (mem_fun(*this, &RouteUI::solo_changed));
+ _route->solo_isolated_changed.connect (mem_fun(*this, &RouteUI::solo_changed));
if (is_track()) {
RadioMenuItem::Group group;
items.clear ();
+
+ items.push_back (MenuElem (_("New group..."), mem_fun (*this, &RouteTimeAxisView::set_edit_group_to_new)));
+
+ items.push_back (SeparatorElem ());
+
items.push_back (RadioMenuElem (group, _("No group"),
bind (mem_fun(*this, &RouteTimeAxisView::set_edit_group_from_menu), (RouteGroup *) 0)));
if (_route->edit_group() == 0) {
static_cast<RadioMenuItem*>(&items.back())->set_active ();
}
-
+
_session.foreach_edit_group (bind (mem_fun (*this, &RouteTimeAxisView::add_edit_group_menu_item), &group));
edit_group_menu.popup (ev->button, ev->time);
gm.get_gain_slider().show();
mute_button->show();
- solo_button->show();
+ if (!_route || _route->is_master()) {
+ solo_button->hide();
+ } else {
+ solo_button->show();
+ }
if (rec_enable_button)
rec_enable_button->show();
gm.get_gain_slider().hide();
mute_button->show();
- solo_button->show();
+ if (!_route || _route->is_master()) {
+ solo_button->hide();
+ } else {
+ solo_button->show();
+ }
if (rec_enable_button)
rec_enable_button->show();
return;
}
- if (_session.route_name_unique (x)) {
- _route->set_name (x);
- } else {
+ if (!_session.route_name_unique (x)) {
ARDOUR_UI::instance()->popup_error (_("A track already exists with that name"));
name_entry.set_text (_route->name());
+ } else if (_session.route_name_internal (x)) {
+ ARDOUR_UI::instance()->popup_error (_("You cannot create a track with that name as it is reserved for Ardour"));
+ name_entry.set_text (_route->name());
+ } else {
+ _route->set_name (x);
}
}
}
}
+void
+RouteTimeAxisView::set_edit_group_to_new ()
+{
+ RouteGroup* g = new RouteGroup (_session, "", RouteGroup::Active);
+ g->set_active (true, this);
+
+ RouteGroupDialog d (g);
+ int const r = d.do_run ();
+
+ if (r == Gtk::RESPONSE_OK) {
+ _session.add_edit_group (g);
+ _route->set_edit_group (g, this);
+ } else {
+ delete g;
+ }
+}