#include <ardour/session.h>
#include <ardour/session_playlist.h>
#include <ardour/utils.h>
+#include <ardour/profile.h>
#include "ardour_ui.h"
#include "route_time_axis.h"
playlist_button (_("p")),
size_button (_("h")), // height
automation_button (_("a")),
- visual_button (_("v"))
+ visual_button (_("v")),
+ lm (rt, sess)
{
+ lm.set_no_show_all();
+ lm.setup_meters(50);
_has_state = true;
playlist_menu = 0;
playlist_action_menu = 0;
rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press), false);
rec_enable_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::rec_enable_release));
- controls_table.attach (*rec_enable_button, 5, 6, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0);
+ controls_table.attach (*rec_enable_button, 4, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0);
ARDOUR_UI::instance()->tooltips().set_tip(*rec_enable_button, _("Record"));
+
}
- 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::FILL|Gtk::EXPAND, 0, 0);
+ controls_hbox.pack_start(lm, 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));
+
+ controls_table.attach (*mute_button, 5, 6, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0);
+ controls_table.attach (*solo_button, 6, 7, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0);
controls_table.attach (edit_group_button, 6, 7, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0);
gint
RouteTimeAxisView::edit_click (GdkEventButton *ev)
{
- if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
+ if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
_route->set_edit_group (0, this);
return FALSE;
}
items.push_back (SeparatorElem());
build_remote_control_menu ();
- items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
+ if (!Profile->get_sae()) {
+ items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
+ }
build_automation_action_menu ();
items.push_back (MenuElem (_("Automation"), *automation_action_menu));
if (get_diskstream()->alignment_style() == CaptureTime)
align_capture_item->set_active();
- items.push_back (MenuElem (_("Alignment"), *alignment_menu));
-
- get_diskstream()->AlignmentStyleChanged.connect (
- mem_fun(*this, &RouteTimeAxisView::align_style_changed));
+ if (!Profile->get_sae()) {
+ items.push_back (MenuElem (_("Alignment"), *alignment_menu));
+ get_diskstream()->AlignmentStyleChanged.connect (mem_fun(*this, &RouteTimeAxisView::align_style_changed));
+ }
RadioMenuItem::Group mode_group;
items.push_back (RadioMenuElem (mode_group, _("Normal mode"),
void
RouteTimeAxisView::set_height (TrackHeight h)
{
+ int gmlen = (height_to_pixels (h)) - 5;
bool height_changed = (height == 0) || (h != height_style);
-
+ lm.setup_meters (gmlen);
TimeAxisView::set_height (h);
ensure_xml_node ();
case Large:
case Larger:
case Normal:
+ reset_meter();
show_name_entry ();
hide_name_label ();
break;
case Smaller:
+ reset_meter();
show_name_entry ();
hide_name_label ();
break;
case Small:
+ hide_meter ();
hide_name_entry ();
show_name_label ();
void
RouteTimeAxisView::selection_click (GdkEventButton* ev)
{
- if (Keyboard::modifier_state_equals (ev->state, (Keyboard::Shift|Keyboard::Control))) {
+ if (Keyboard::modifier_state_equals (ev->state, (Keyboard::TertiaryModifier|Keyboard::PrimaryModifier))) {
/* special case: select/deselect all tracks */
if (editor.get_selection().selected (this)) {
return boost::shared_ptr<Region> ();
}
+nframes64_t
+RouteTimeAxisView::find_next_region_boundary (nframes64_t pos, int32_t dir)
+{
+ boost::shared_ptr<Diskstream> stream;
+ boost::shared_ptr<Playlist> playlist;
+
+ if ((stream = get_diskstream()) != 0 && (playlist = stream->playlist()) != 0) {
+ return playlist->find_next_region_boundary (pos, dir);
+ }
+
+ return -1;
+}
+
bool
RouteTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op)
{
if (timestretch_rect) {
timestretch_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get();
}
+
+ reset_meter();
}
void
RouteUI::update_rec_display ();
name_entry.set_sensitive (!_route->record_enabled());
}
-
+
+void
+RouteTimeAxisView::fast_update ()
+{
+ lm.update_meters ();
+}
+
+void
+RouteTimeAxisView::hide_meter ()
+{
+ clear_meter ();
+ lm.hide_meters ();
+}
+
+void
+RouteTimeAxisView::show_meter ()
+{
+ reset_meter ();
+}
+
+void
+RouteTimeAxisView::reset_meter ()
+{
+ if (Config->get_show_track_meters()) {
+ lm.setup_meters (height-5);
+ } else {
+ hide_meter ();
+ }
+}
+
+void
+RouteTimeAxisView::clear_meter ()
+{
+ lm.clear_meters ();
+}
+
+void
+RouteTimeAxisView::meter_changed (void *src)
+{
+ ENSURE_GUI_THREAD (bind (mem_fun(*this, &RouteTimeAxisView::meter_changed), src));
+ reset_meter();
+}
+
+void
+RouteTimeAxisView::io_changed (IOChange change, void *src)
+{
+ reset_meter ();
+}