i = tmp;
}
-
+
+ update_punch_range_view (false);
+ update_loop_range_view (false);
}
void
}
void
-Editor::LocationMarkers::set_position (nframes_t startf,
- nframes_t endf)
+Editor::LocationMarkers::set_position (nframes64_t startf,
+ nframes64_t endf)
{
start->set_position (startf);
if (end) { end->set_position (endf); }
}
void
-Editor::mouse_add_new_marker (nframes_t where, bool is_cd, bool is_xrun)
+Editor::mouse_add_new_marker (nframes64_t where, bool is_cd, bool is_xrun)
{
string markername, markerprefix;
int flags = (is_cd ? Location::IsCDMarker|Location::IsMark : Location::IsMark);
if (session) {
session->locations()->next_available_name(markername, markerprefix);
+ if (!is_xrun && !choose_new_marker_name(markername)) {
+ return;
+ }
Location *location = new Location (where, where, markername, (Location::Flags) flags);
session->begin_reversible_command (_("add marker"));
XMLNode &before = session->locations()->get_state();
items.push_back (SeparatorElem());
+ items.push_back (MenuElem (_("Create range to next marker"), mem_fun(*this, &Editor::marker_menu_range_to_next)));
+
items.push_back (MenuElem (_("Hide"), mem_fun(*this, &Editor::marker_menu_hide)));
if (start_or_end) return;
items.push_back (MenuElem (_("Rename"), mem_fun(*this, &Editor::marker_menu_rename)));
items.push_back (MenuElem (_("Set Range from Range Selection"), mem_fun(*this, &Editor::marker_menu_set_from_selection)));
}
+ items.push_back (SeparatorElem());
+ items.push_back (MenuElem (_("Export Range"), mem_fun(*this, &Editor::export_range)));
items.push_back (SeparatorElem());
- if (! loop_or_punch) {
+ if (!loop_or_punch) {
items.push_back (MenuElem (_("Hide Range"), mem_fun(*this, &Editor::marker_menu_hide)));
items.push_back (MenuElem (_("Rename Range"), mem_fun(*this, &Editor::marker_menu_rename)));
items.push_back (MenuElem (_("Remove Range"), mem_fun(*this, &Editor::marker_menu_remove)));
items.push_back (MenuElem (_("Set Loop Range"), mem_fun(*this, &Editor::new_transport_marker_menu_set_loop)));
items.push_back (MenuElem (_("Set Punch Range"), mem_fun(*this, &Editor::new_transport_marker_menu_set_punch)));
- new_transport_marker_menu->signal_unmap_event().connect ( mem_fun(*this, &Editor::new_transport_marker_menu_popdown));
+ new_transport_marker_menu->signal_unmap().connect ( mem_fun(*this, &Editor::new_transport_marker_menu_popdown));
}
void
}
}
+void
+Editor::marker_menu_range_to_next ()
+{
+ Marker* marker;
+ if (!session) {
+ return;
+ }
+
+ if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
+ fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
+ /*NOTREACHED*/
+ }
+
+ Location* l;
+ bool is_start;
+
+ if ((l = find_location_from_marker (marker, is_start)) == 0) {
+ return;
+ }
+
+ nframes_t end = session->locations()->first_mark_after (marker->position());
+
+ if (end != max_frames) {
+ string range_name = l->name();
+ range_name += "-range";
+
+ Location* newrange = new Location (marker->position(), end, range_name, Location::IsRangeMarker);
+ session->locations()->add (newrange);
+ }
+}
+
void
Editor::marker_menu_set_from_playhead ()
{
commit_reversible_command ();
}
-gint
-Editor::new_transport_marker_menu_popdown (GdkEventAny *ev)
+void
+Editor::new_transport_marker_menu_popdown ()
{
// hide rects
transport_bar_drag_rect->hide();
range_marker_drag_rect->hide();
-
- return FALSE;
}
void
Location* tpl;
if ((Config->get_punch_in() || Config->get_punch_out()) && ((tpl = transport_punch_location()) != 0)) {
-
- double x1 = frame_to_pixel (tpl->start());
- double x2 = frame_to_pixel (tpl->end());
-
guint track_canvas_width,track_canvas_height;
track_canvas->get_size(track_canvas_width,track_canvas_height);
-
- transport_punch_range_rect->property_x1() = x1;
- transport_punch_range_rect->property_x2() = x2;
-
- transport_punch_range_rect->property_x1() = (Config->get_punch_in() ? x1 : 0);
- transport_punch_range_rect->property_x2() = (Config->get_punch_out() ? x2 : track_canvas_width);
+ if (Config->get_punch_in()) {
+ transport_punch_range_rect->property_x1() = frame_to_pixel (tpl->start());
+ transport_punch_range_rect->property_x2() = (Config->get_punch_out() ? frame_to_pixel (tpl->end()) : frame_to_pixel (JACK_MAX_FRAMES));
+ } else {
+ transport_punch_range_rect->property_x1() = 0;
+ transport_punch_range_rect->property_x2() = (Config->get_punch_out() ? frame_to_pixel (tpl->end()) : track_canvas_width);
+ }
if (visibility) {
transport_punch_range_rect->show();
}
- }
- else if (visibility) {
+ } else if (visibility) {
transport_punch_range_rect->hide();
}
-
-// if (session->get_punch_in()) {
-// double x = frame_to_pixel (transport_punch_location->start());
-// gnome_canvas_item_set (transport_punchin_line, "x1", x, "x2", x, NULL);
-
-// if (visibility) {
-// gnome_canvas_item_show (transport_punchin_line);
-// }
-// }
-// else if (visibility) {
-// gnome_canvas_item_hide (transport_punchin_line);
-// }
-
-// if (session->get_punch_out()) {
-// double x = frame_to_pixel (transport_punch_location->end());
-
-// gnome_canvas_item_set (transport_punchout_line, "x1", x, "x2", x, NULL);
-
-// if (visibility) {
-// gnome_canvas_item_show (transport_punchout_line);
-// }
-// }
-// else if (visibility) {
-// gnome_canvas_item_hide (transport_punchout_line);
-// }
}
void
}
for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
- (*x)->add_line (cursor_group, vertical_adjustment.get_value(), canvas_height);
+ (*x)->add_line (cursor_group, 0, canvas_height);
(*x)->show_line ();
}