make edit clock do something useful again; do sensible guess work on how to define edit op range

git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2615 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2007-11-09 22:16:55 +00:00
parent d79ff102e8
commit 85dbd75bb0
8 changed files with 62 additions and 17 deletions

View file

@ -1319,7 +1319,7 @@ widget "*AudioClockBBTUpperInfo" style:highest "tempo_meter_clock_display"
widget "*AudioClockBBTLowerInfo" style:highest "tempo_meter_clock_display"
widget "*SelectionStartClock" style:highest "default_clock_display"
widget "*SelectionEndClock" style:highest "default_clock_display"
widget "*EditCursorClock" style:highest "default_clock_display"
widget "*EditPointClock" style:highest "default_clock_display"
widget "*PreRollClock" style:highest "default_clock_display"
widget "*PostRollClock" style:highest "default_clock_display"
widget "*NudgeClock" style:highest "default_clock_display"

View file

@ -1323,7 +1323,7 @@ widget "*AudioClockBBTUpperInfo" style:highest "tempo_meter_clock_display"
widget "*AudioClockBBTLowerInfo" style:highest "tempo_meter_clock_display"
widget "*SelectionStartClock" style:highest "default_clock_display"
widget "*SelectionEndClock" style:highest "default_clock_display"
widget "*EditCursorClock" style:highest "default_clock_display"
widget "*EditPointClock" style:highest "default_clock_display"
widget "*PreRollClock" style:highest "default_clock_display"
widget "*PostRollClock" style:highest "default_clock_display"
widget "*NudgeClock" style:highest "default_clock_display"

View file

@ -195,7 +195,7 @@ Editor::Editor ()
/* tool bar related */
edit_cursor_clock (X_("editcursor"), false, X_("EditCursorClock"), true),
edit_point_clock (X_("editpoint"), false, X_("EditPointClock"), true),
zoom_range_clock (X_("zoomrange"), false, X_("ZoomRangeClock"), true, true),
toolbar_selection_clock_table (2,3),
@ -376,7 +376,7 @@ Editor::Editor ()
build_cursors ();
setup_toolbar ();
edit_cursor_clock.ValueChanged.connect (mem_fun(*this, &Editor::edit_cursor_clock_changed));
edit_point_clock.ValueChanged.connect (mem_fun(*this, &Editor::edit_point_clock_changed));
time_canvas_vbox.pack_start (*_ruler_separator, false, false);
time_canvas_vbox.pack_start (*minsec_ruler, false, false);
@ -882,8 +882,20 @@ Editor::instant_save ()
}
void
Editor::edit_cursor_clock_changed()
Editor::edit_point_clock_changed()
{
if (selection->markers.empty()) {
return;
}
bool ignored;
Location* loc = find_location_from_marker (selection->markers.front(), ignored);
if (!loc) {
return;
}
loc->move_to (edit_point_clock.current_time());
}
void
@ -1135,7 +1147,7 @@ Editor::connect_to_session (Session *t)
edit_groups_changed ();
edit_cursor_clock.set_session (session);
edit_point_clock.set_session (session);
zoom_range_clock.set_session (session);
_playlist_selector->set_session (session);
nudge_clock.set_session (session);
@ -2688,7 +2700,7 @@ Editor::setup_toolbar ()
edit_point_selector.signal_changed().connect (mem_fun(*this, &Editor::edit_point_selection_done));
ARDOUR_UI::instance()->tooltips().set_tip (edit_point_selector, _("Edit point"));
snap_box.pack_start (edit_cursor_clock, false, false);
snap_box.pack_start (edit_point_clock, false, false);
snap_box.pack_start (snap_mode_selector, false, false);
snap_box.pack_start (snap_type_selector, false, false);
snap_box.pack_start (edit_point_selector, false, false);

View file

@ -1353,7 +1353,7 @@ class Editor : public PublicEditor
void editor_mixer_button_toggled ();
AudioClock edit_cursor_clock;
AudioClock edit_point_clock;
AudioClock zoom_range_clock;
Gtk::Button zoom_in_button;
Gtk::Button zoom_out_button;
@ -1417,7 +1417,7 @@ class Editor : public PublicEditor
void zoom_adjustment_changed();
void edit_cursor_clock_changed();
void edit_point_clock_changed();
void setup_toolbar ();
@ -1926,6 +1926,10 @@ class Editor : public PublicEditor
Glib::RefPtr<Gtk::RadioAction> edit_point_action (Editing::EditPoint);
std::vector<std::string> edit_point_strings;
void selected_marker_moved (ARDOUR::Location*);
sigc::connection edit_point_clock_connection_a;
sigc::connection edit_point_clock_connection_b;
bool get_edit_op_range (nframes64_t& start, nframes64_t& end) const;
RegionSelection get_regions_at (nframes64_t where, const TrackSelection& ts) const;

View file

@ -1079,8 +1079,32 @@ Editor::marker_selection_changed ()
}
}
edit_point_clock_connection_a.disconnect();
edit_point_clock_connection_b.disconnect();
if (selection->markers.empty()) {
edit_point_clock.set (0);
return;
}
for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
(*x)->add_line (cursor_group, canvas_height);
(*x)->show_line ();
}
edit_point_clock.set (selection->markers.front()->position());
bool ignored;
Location* loc = find_location_from_marker (selection->markers.front(), ignored);
if (loc) {
edit_point_clock_connection_a = loc->changed.connect (mem_fun (*this, &Editor::selected_marker_moved));
edit_point_clock_connection_b = loc->start_changed.connect (mem_fun (*this, &Editor::selected_marker_moved));
}
}
void
Editor::selected_marker_moved (Location* loc)
{
edit_point_clock.set (loc->start());
}

View file

@ -327,7 +327,10 @@ Editor::session_going_away ()
named_selection_display.set_model (named_selection_model);
edit_group_display.set_model (group_model);
edit_cursor_clock.set_session (0);
edit_point_clock_connection_a.disconnect();
edit_point_clock_connection_b.disconnect();
edit_point_clock.set_session (0);
zoom_range_clock.set_session (0);
nudge_clock.set_session (0);

View file

@ -167,8 +167,6 @@ Editor::ruler_button_press (GdkEventButton* ev)
if (snap_type != Editing::SnapToEditPoint) {
snap_to (where);
}
// EDIT CURSOR XXX what to do here edit_cursor->set_position (where);
// EDIT CURSOR XXX what to do here edit_cursor_clock.set (where);
break;
default:
@ -210,8 +208,6 @@ Editor::ruler_button_release (GdkEventButton* ev)
if (snap_type != Editing::SnapToEditPoint) {
snap_to (where);
}
// EDIT CURSOR XXX what to do here edit_cursor->set_position (where);
// ditto XXX edit_cursor_clock.set (where);
break;
case 3:

View file

@ -1099,9 +1099,15 @@ Editor::get_edit_op_range (nframes64_t& start, nframes64_t& end) const
switch (_edit_point) {
case EditAtPlayhead:
/* use mouse + playhead */
start = m;
end = session->audible_frame();
if (selection->markers.empty()) {
/* use mouse + playhead */
start = m;
end = session->audible_frame();
} else {
/* use playhead + selected marker */
start = session->audible_frame();
end = selection->markers.front()->position();
}
break;
case EditAtMouse: