X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_rulers.cc;h=ae646a5d77bcfd87db8bf7f6dd9480ac6cfa2839;hb=9010262bed21611f2db652d16f63e4af4380259d;hp=1c3469da9a6bbcb7793da16d1ca001833f301462;hpb=8445e8c2837498572a373d27fd2bc0dac99f4bab;p=ardour.git diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 1c3469da9a..ae646a5d77 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -51,6 +51,7 @@ #include "time_axis_view.h" #include "editor_drag.h" #include "editor_cursors.h" +#include "ui_config.h" #include "i18n.h" @@ -123,13 +124,13 @@ Editor::initialize_rulers () { ruler_grabbed_widget = 0; - Pango::FontDescription font (ARDOUR_UI::config()->get_SmallerFont()); + Pango::FontDescription font (UIConfiguration::instance().get_SmallerFont()); _timecode_metric = new TimecodeMetric (this); _bbt_metric = new BBTMetric (this); _minsec_metric = new MinsecMetric (this); _samples_metric = new SamplesMetric (this); - + timecode_ruler = new ArdourCanvas::Ruler (_time_markers_group, *_timecode_metric, ArdourCanvas::Rect (0, 0, ArdourCanvas::COORD_MAX, timebar_height)); timecode_ruler->set_font_description (font); @@ -174,7 +175,7 @@ Editor::initialize_rulers () minsec_ruler->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_event), minsec_ruler, MinsecRulerItem)); bbt_ruler->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_event), bbt_ruler, BBTRulerItem)); samples_ruler->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_event), samples_ruler, SamplesRulerItem)); - + visible_timebars = 0; /*this will be changed below */ } @@ -208,28 +209,27 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) switch (t) { case MarkerBarItem: - ruler_items.push_back (MenuElem (_("New location marker"), sigc::bind ( sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, false, false))); + ruler_items.push_back (MenuElem (_("New location marker"), sigc::bind ( sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, false))); ruler_items.push_back (MenuElem (_("Clear all locations"), sigc::mem_fun(*this, &Editor::clear_markers))); ruler_items.push_back (MenuElem (_("Unhide locations"), sigc::mem_fun(*this, &Editor::unhide_markers))); - ruler_items.push_back (SeparatorElem ()); break; + case RangeMarkerBarItem: ruler_items.push_back (MenuElem (_("New range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_range), where))); ruler_items.push_back (MenuElem (_("Clear all ranges"), sigc::mem_fun(*this, &Editor::clear_ranges))); ruler_items.push_back (MenuElem (_("Unhide ranges"), sigc::mem_fun(*this, &Editor::unhide_ranges))); - ruler_items.push_back (SeparatorElem ()); - break; - case TransportMarkerBarItem: + case TransportMarkerBarItem: + ruler_items.push_back (MenuElem (_("New Loop range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_loop), where))); + ruler_items.push_back (MenuElem (_("New Punch range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_punch), where))); break; case CdMarkerBarItem: // TODO - ruler_items.push_back (MenuElem (_("New CD track marker"), sigc::bind ( sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, true, false))); + ruler_items.push_back (MenuElem (_("New CD track marker"), sigc::bind ( sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, true))); break; - case TempoBarItem: ruler_items.push_back (MenuElem (_("New Tempo"), sigc::bind ( sigc::mem_fun(*this, &Editor::mouse_add_new_tempo_event), where))); break; @@ -740,7 +740,7 @@ Editor::set_timecode_ruler_scale (framepos_t lower, framepos_t upper) return; } - fr = _session->frame_rate(); + fr = _session->frame_rate(); if (lower > (spacer = (framepos_t) (128 * Editor::get_current_zoom ()))) { lower = lower - spacer; @@ -814,7 +814,7 @@ Editor::set_timecode_ruler_scale (framepos_t lower, framepos_t upper) } else if (range <= 8 * 60 * 60 * fr) { /* 4 - 8 hrs*/ timecode_ruler_scale = timecode_show_hours; timecode_mark_modulo = 1; - timecode_nmarks = 2 + 8; + timecode_nmarks = 2 + 8; } else if (range <= 16 * 60 * 60 * fr) { /* 16-24 hrs*/ timecode_ruler_scale = timecode_show_hours; timecode_mark_modulo = 1; @@ -830,7 +830,7 @@ Editor::set_timecode_ruler_scale (framepos_t lower, framepos_t upper) But in this case, where the range defined by lower and uppper can vary substantially (basically anything from 24hrs+ to several billion years) - trying to decide which tick marks to show does require us to know + trying to decide which tick marks to show does require us to know about the available width. */ @@ -1000,7 +1000,7 @@ Editor::metric_get_timecode (std::vector& marks, gdou mark.position = pos; marks.push_back (mark); ++n; - } + } /* can't use Timecode::increment_hours() here because we may be traversing thousands of hours and doing it 1 hour at a time is just stupid (and slow). */ @@ -1139,20 +1139,20 @@ Editor::compute_bbt_ruler_scale (framepos_t lower, framepos_t upper, } else { bbt_ruler_scale = bbt_show_ticks_detail; } - + if ((bbt_ruler_scale == bbt_show_ticks_detail) && (lower_beat.beats == upper_beat.beats) && (upper_beat.ticks - lower_beat.ticks <= Timecode::BBT_Time::ticks_per_beat / 4)) { bbt_ruler_scale = bbt_show_ticks_super_detail; } } -static void +static void edit_last_mark_label (std::vector& marks, const std::string& newlabel) { ArdourCanvas::Ruler::Mark copy = marks.back(); copy.label = newlabel; marks.pop_back (); marks.push_back (copy); -} +} void Editor::metric_get_bbt (std::vector& marks, gdouble lower, gdouble upper, gint /*maxchars*/) @@ -1232,7 +1232,7 @@ Editor::metric_get_bbt (std::vector& marks, gdouble l bbt_nmarks = (beats + 2) * bbt_beat_subdivision; bbt_position_of_helper = lower + (30 * Editor::get_current_zoom ()); - + // could do marks.assign() here to preallocate mark.label = ""; @@ -1796,7 +1796,7 @@ Editor::set_minsec_ruler_scale (framepos_t lower, framepos_t upper) But in this case, where the range defined by lower and uppper can vary substantially (anything from 24hrs+ to several billion years) - trying to decide which tick marks to show does require us to know + trying to decide which tick marks to show does require us to know about the available width. */ @@ -1851,7 +1851,7 @@ Editor::metric_get_minsec (std::vector& marks, gdoubl marks.push_back (mark); } break; - + case minsec_show_seconds: for (n = 0; n < minsec_nmarks; pos += minsec_mark_interval, ++n) { sample_to_clock_parts (pos, _session->frame_rate(), &hrs, &mins, &secs, &millisecs); @@ -1907,7 +1907,7 @@ Editor::metric_get_minsec (std::vector& marks, gdoubl marks.push_back (mark); } break; - + case minsec_show_many_hours: for (n = 0; n < minsec_nmarks; ) { sample_to_clock_parts (pos, _session->frame_rate(), &hrs, &mins, &secs, &millisecs);