Allow using , as the separator in time edit controls

This commit is contained in:
Thomas Goyne 2013-10-08 07:19:56 -07:00
parent 7a6fd4bb1e
commit 6694baf3f0
2 changed files with 7 additions and 19 deletions

View File

@ -40,12 +40,12 @@ AssTime::AssTime(std::string const& text)
{
int after_decimal = -1;
int current = 0;
for (char c : text | boost::adaptors::filtered(boost::is_any_of(":0123456789."))) {
for (char c : text | boost::adaptors::filtered(boost::is_any_of(",.0123456789:"))) {
if (c == ':') {
time = time * 60 + current;
current = 0;
}
else if (c == '.') {
else if (c == '.' || c == ',') {
time = (time * 60 + current) * 1000;
current = 0;
after_decimal = 100;

View File

@ -67,20 +67,8 @@ TimeEdit::TimeEdit(wxWindow* parent, wxWindowID id, agi::Context *c, const std::
{
// Set validator
wxTextValidator val(wxFILTER_INCLUDE_CHAR_LIST);
wxArrayString includes;
includes.Add("0");
includes.Add("1");
includes.Add("2");
includes.Add("3");
includes.Add("4");
includes.Add("5");
includes.Add("6");
includes.Add("7");
includes.Add("8");
includes.Add("9");
includes.Add(".");
includes.Add(":");
val.SetIncludes(includes);
wxString includes[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ":", ","};
val.SetIncludes(wxArrayString(countof(includes), includes));
SetValidator(val);
// Other stuff
@ -162,7 +150,7 @@ void TimeEdit::OnKeyDown(wxKeyEvent &event) {
event.Skip();
if (byFrame) return;
if (insert) return;
if ((key < '0' || key > '9') && key != WXK_BACK && key != WXK_DELETE && key != ';' && key != '.') return;
if ((key < '0' || key > '9') && key != WXK_BACK && key != WXK_DELETE && key != ';' && key != '.' && key != ',') return;
event.Skip(false);
@ -182,11 +170,11 @@ void TimeEdit::OnKeyDown(wxKeyEvent &event) {
if (start >= (long)text.size()) return;
// If the cursor is at punctuation, move it forward to the next digit
if (text[start] == ':' || text[start] == '.')
if (text[start] == ':' || text[start] == '.' || text[start] == ',')
++start;
// : and . hop over punctuation but never insert anything
if (key == ';' || key == '.') {
if (key == ';' || key == '.' || key == ',') {
SetInsertionPoint(start);
return;
}