use running_from_source_tree()
[ardour.git] / gtk2_ardour / quantize_dialog.cc
index 623a5d8033511bc60183afe5af6333c5e12fb23a..05c8d1e940e392af9b5dfba273a28e5afe3db77d 100644 (file)
@@ -37,8 +37,17 @@ static const gchar *_grid_strings[] = {
        N_("Beats/128"),
        N_("Beats/64"),
        N_("Beats/32"),
+       N_("Beats/28"),
+       N_("Beats/24"),
+       N_("Beats/20"),
        N_("Beats/16"),
+       N_("Beats/14"),
+       N_("Beats/12"),
+       N_("Beats/10"),
        N_("Beats/8"),
+       N_("Beats/7"),
+       N_("Beats/6"),
+       N_("Beats/5"),
        N_("Beats/4"),
        N_("Beats/3"),
        N_("Beats/2"),
@@ -57,7 +66,7 @@ QuantizeDialog::QuantizeDialog (PublicEditor& e)
        , swing_adjustment (100.0, -130.0, 130.0, 1.0, 10.0)
        , swing_spinner (swing_adjustment)
        , swing_button (_("Swing"))
-       , threshold_adjustment (0.0, -1920.0, 1920.0, 1.0, 10.0) // XXX MAGIC TICK NUMBER FIX ME
+       , threshold_adjustment (0.0, -Timecode::BBT_Time::ticks_per_beat, Timecode::BBT_Time::ticks_per_beat, 1.0, 10.0)
        , threshold_spinner (threshold_adjustment)
        , threshold_label (_("Threshold (ticks)"))
        , snap_start_button (_("Snap note start"))
@@ -131,31 +140,22 @@ QuantizeDialog::grid_size_to_musical_time (const string& txt) const
        if (txt == "main grid") {
                bool success;
 
-               Evoral::MusicalTime b = editor.get_grid_type_as_beats (success, 0);
+               Evoral::Beats b = editor.get_grid_type_as_beats (success, 0);
                if (!success) {
                        return 1.0;
                }
-               return (double) b;
+               return b.to_double();
        }
 
-       if (txt == _("Beats/128")) {
-               return 1.0/128.0;
-       } else if (txt == _("Beats/64")) {
-               return 1.0/64.0;
-       } else if (txt == _("Beats/32")) {
-               return 1.0/32.0;
-       } else if (txt == _("Beats/16")) {
-               return 1.0/16.0;
-       } if (txt == _("Beats/8")) {
-               return 1.0/8.0;
-       } else if (txt == _("Beats/4")) {
-               return 1.0/4.0;
-       } else if (txt == _("Beats/3")) {
-               return 1.0/3.0;
-       } else if (txt == _("Beats/2")) {
-               return 1.0/2.0;
-       } else if (txt == _("Beats")) {
-               return 1.0;
+       string::size_type slash;
+
+       if ((slash = txt.find ('/')) != string::npos) {
+               if (slash < txt.length() - 1) {
+                       double divisor = PBD::atof (txt.substr (slash+1));
+                       if (divisor != 0.0) {
+                               return 1.0/divisor;
+                       }
+               }
        }
 
        return 1.0;