summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-11-09 22:16:55 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-11-09 22:16:55 +0000
commit85dbd75bb04762c6721ce7cde5f05dd3d88caeca (patch)
tree7b91513d06145fb4a0a543301e32ab4be6a05142 /gtk2_ardour
parentd79ff102e8de764b0e0fda86931b9ff5394e6bc3 (diff)
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
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour2_ui_dark.rc.in2
-rw-r--r--gtk2_ardour/ardour2_ui_light.rc.in2
-rw-r--r--gtk2_ardour/editor.cc22
-rw-r--r--gtk2_ardour/editor.h8
-rw-r--r--gtk2_ardour/editor_markers.cc24
-rw-r--r--gtk2_ardour/editor_mixer.cc5
-rw-r--r--gtk2_ardour/editor_rulers.cc4
-rw-r--r--gtk2_ardour/editor_selection.cc12
8 files changed, 62 insertions, 17 deletions
diff --git a/gtk2_ardour/ardour2_ui_dark.rc.in b/gtk2_ardour/ardour2_ui_dark.rc.in
index 4ee90ddd30..c269d0afb1 100644
--- a/gtk2_ardour/ardour2_ui_dark.rc.in
+++ b/gtk2_ardour/ardour2_ui_dark.rc.in
@@ -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"
diff --git a/gtk2_ardour/ardour2_ui_light.rc.in b/gtk2_ardour/ardour2_ui_light.rc.in
index b485ae14ce..e5cf578620 100644
--- a/gtk2_ardour/ardour2_ui_light.rc.in
+++ b/gtk2_ardour/ardour2_ui_light.rc.in
@@ -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"
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index bde42378e9..da26be9021 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -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);
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 25657e36f4..0ad5339995 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -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;
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index 3e0868e048..0f98982251 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -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());
}
diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc
index 95f59d46d5..c399068f5d 100644
--- a/gtk2_ardour/editor_mixer.cc
+++ b/gtk2_ardour/editor_mixer.cc
@@ -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);
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc
index 0df011a38f..3cf2523b47 100644
--- a/gtk2_ardour/editor_rulers.cc
+++ b/gtk2_ardour/editor_rulers.cc
@@ -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:
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index 9f825b0a51..9177bb2d71 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -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: