summaryrefslogtreecommitdiff
path: root/gtk2_ardour/quantize_dialog.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-18 12:49:06 +0200
committerRobin Gareus <robin@gareus.org>2017-08-18 12:49:06 +0200
commit013e3e84beae51ec79e617cd82b41e129c52b940 (patch)
tree0eb4f7da50b470de45a1839ad458840a7d1b22bf /gtk2_ardour/quantize_dialog.cc
parentf85c320759e0fb8d95ea29982d6e3d94646b5de4 (diff)
Fix MIDI Quantization for internationalized Ardour.
Grid-settings are translatable, parsing a number from a translated string e.g. "Quart de temps" for "Beats/4" failed.
Diffstat (limited to 'gtk2_ardour/quantize_dialog.cc')
-rw-r--r--gtk2_ardour/quantize_dialog.cc24
1 files changed, 15 insertions, 9 deletions
diff --git a/gtk2_ardour/quantize_dialog.cc b/gtk2_ardour/quantize_dialog.cc
index dab1b6adec..110e1ac077 100644
--- a/gtk2_ardour/quantize_dialog.cc
+++ b/gtk2_ardour/quantize_dialog.cc
@@ -55,6 +55,13 @@ static const gchar *_grid_strings[] = {
0
};
+static const int _grid_beats[] = {
+ 0,
+ 128, 64, 32, 28, 24, 20, 16, 14,
+ 12, 10, 8, 7, 6, 5, 4, 3, 2, 1,
+ 0
+};
+
std::vector<std::string> QuantizeDialog::grid_strings;
QuantizeDialog::QuantizeDialog (PublicEditor& e)
@@ -137,7 +144,7 @@ QuantizeDialog::end_grid_size () const
double
QuantizeDialog::grid_size_to_musical_time (const string& txt) const
{
- if (txt == "main grid") {
+ if (txt == _("main grid")) {
bool success;
Evoral::Beats b = editor.get_grid_type_as_beats (success, 0);
@@ -147,18 +154,17 @@ QuantizeDialog::grid_size_to_musical_time (const string& txt) const
return b.to_double();
}
- 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;
- }
+ double divisor = 1.0;
+ for (int i = 1; i < grid_strings.size(); ++i) {
+ if (txt == grid_strings[i]) {
+ assert (_grid_beats[i] != 0);
+ divisor = 1.0 / _grid_beats[i];
+ break;
}
}
- return 1.0;
+ return divisor;
}
float