summaryrefslogtreecommitdiff
path: root/gtk2_ardour/route_time_axis.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-01-10 21:20:59 +0000
committerDavid Robillard <d@drobilla.net>2008-01-10 21:20:59 +0000
commitbb457bb960c5bd7ed538f9d31477293415739f68 (patch)
tree84324a63b87c03589cd165b9e474296eaebb4772 /gtk2_ardour/route_time_axis.cc
parent73dd9d37e7d715e0d78c0e51569968f9494dac7f (diff)
Merge libs/ardour and gtk2_ardour with 2.0-ongoing R2837.
git-svn-id: svn://localhost/ardour2/trunk@2883 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/route_time_axis.cc')
-rw-r--r--gtk2_ardour/route_time_axis.cc81
1 files changed, 63 insertions, 18 deletions
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index f654a3056c..42b2e646ad 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -52,6 +52,7 @@
#include <ardour/session_playlist.h>
#include <ardour/utils.h>
#include <ardour/parameter.h>
+#include <ardour/profile.h>
#include "ardour_ui.h"
#include "route_time_axis.h"
@@ -105,6 +106,8 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh
_view = 0;
timestretch_rect = 0;
no_redraw = false;
+ destructive_track_mode_item = 0;
+ normal_track_mode_item = 0;
ignore_toggle = false;
@@ -149,6 +152,7 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh
rec_enable_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::rec_enable_release));
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_hbox.pack_start(lm, false, false);
@@ -172,17 +176,22 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh
label_view ();
- controls_table.attach (hide_button, 0, 1, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- controls_table.attach (visual_button, 1, 2, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- controls_table.attach (size_button, 2, 3, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
- controls_table.attach (automation_button, 3, 4, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ if (!Profile->get_sae()) {
+
+ controls_table.attach (hide_button, 0, 1, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ controls_table.attach (visual_button, 1, 2, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ controls_table.attach (size_button, 2, 3, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ controls_table.attach (automation_button, 3, 4, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+
+ } else {
+
+ controls_table.attach (automation_button, 4, 5, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+ }
if (is_track() && track()->mode() == ARDOUR::Normal) {
controls_table.attach (playlist_button, 5, 6, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
}
- /* remove focus from the buttons */
-
y_position = -1;
_route->mute_changed.connect (mem_fun(*this, &RouteUI::mute_changed));
@@ -325,7 +334,7 @@ RouteTimeAxisView::get_automation_child_xml_node (Parameter param)
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;
}
@@ -502,13 +511,15 @@ RouteTimeAxisView::build_display_menu ()
items.push_back (SeparatorElem());
build_remote_control_menu ();
- items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
-
build_automation_action_menu ();
- items.push_back (MenuElem (_("Automation"), *automation_action_menu));
+
+ if (!Profile->get_sae()) {
+ items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
+ items.push_back (MenuElem (_("Automation"), *automation_action_menu));
+ items.push_back (SeparatorElem());
+ }
// Hook for derived classes to add type specific stuff
- items.push_back (SeparatorElem());
append_extra_display_menu_items ();
items.push_back (SeparatorElem());
@@ -545,7 +556,26 @@ RouteTimeAxisView::build_display_menu ()
if (get_diskstream()->alignment_style() == CaptureTime)
align_capture_item->set_active();
- items.push_back (MenuElem (_("Alignment"), *alignment_menu));
+ 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"),
+ bind (mem_fun (*this, &RouteTimeAxisView::set_track_mode), ARDOUR::Normal)));
+ normal_track_mode_item = dynamic_cast<RadioMenuItem*>(&items.back());
+ items.push_back (RadioMenuElem (mode_group, _("Tape mode"),
+ bind (mem_fun (*this, &RouteTimeAxisView::set_track_mode), ARDOUR::Destructive)));
+ destructive_track_mode_item = dynamic_cast<RadioMenuItem*>(&items.back());
+
+ switch (track()->mode()) {
+ case ARDOUR::Destructive:
+ destructive_track_mode_item->set_active ();
+ break;
+ case ARDOUR::Normal:
+ normal_track_mode_item->set_active ();
+ break;
+ }
get_diskstream()->AlignmentStyleChanged.connect (
mem_fun(*this, &RouteTimeAxisView::align_style_changed));
@@ -553,9 +583,11 @@ RouteTimeAxisView::build_display_menu ()
mode_menu = build_mode_menu();
if (mode_menu)
items.push_back (MenuElem (_("Mode"), *mode_menu));
+
+ items.push_back (SeparatorElem());
+ }
}
- items.push_back (SeparatorElem());
items.push_back (CheckMenuElem (_("Active"), mem_fun(*this, &RouteUI::toggle_route_active)));
route_active_menu_item = dynamic_cast<CheckMenuItem *> (&items.back());
route_active_menu_item->set_active (_route->active());
@@ -590,8 +622,8 @@ RouteTimeAxisView::set_track_mode (TrackMode mode)
/*NOTREACHED*/
return;
}
-
- if (item->get_active () && track()->mode() != mode) {
+
+ if (item && other_item && item->get_active () && track()->mode() != mode) {
_set_track_mode (track().get(), mode, other_item);
}
}
@@ -740,7 +772,7 @@ 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 ();
@@ -822,7 +854,6 @@ RouteTimeAxisView::set_height (TrackHeight h)
break;
case Small:
- hide_meter();
hide_name_entry ();
show_name_label ();
@@ -1084,7 +1115,7 @@ RouteTimeAxisView::update_diskstream_display ()
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)) {
@@ -1292,6 +1323,19 @@ RouteTimeAxisView::find_next_region (nframes_t pos, RegionPoint point, int32_t d
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)
{
@@ -1497,6 +1541,7 @@ RouteTimeAxisView::color_handler ()
timestretch_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get();
}
+ reset_meter();
}
void