From 657c84ca029cc8726111ceb4aa3fb44d31a50576 Mon Sep 17 00:00:00 2001 From: bletham Date: Sat, 3 Jan 2015 19:40:12 -0500 Subject: [PATCH] switched timing resolution to tenth of a second --- fstimer/gui/timing.py | 13 +++++++------ fstimer/timer.py | 14 ++------------ 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/fstimer/gui/timing.py b/fstimer/gui/timing.py index 5292639..d487f27 100644 --- a/fstimer/gui/timing.py +++ b/fstimer/gui/timing.py @@ -49,7 +49,8 @@ def time_format(t): def time_parse(dt): '''converts string time to datetime.timedelta''' - d = re.match(r'((?P\d+) days, )?((?P\d+):)?'r'(?P\d+):(?P\d+)', dt).groupdict(0) + d = re.match(r'((?P\d+) days, )?((?P\d+):)?(?P\d+):(?P\d+)(\.(?P\d+))?', dt).groupdict(0) + d['milliseconds'] = int(d['milliseconds'])*100 return datetime.timedelta(**dict(((key, int(value)) for key, value in d.items()))) class TimingWin(gtk.Window): @@ -213,7 +214,7 @@ def print_corrected_time(self, column, renderer, model, itr): try: th = time_parse(self.timing[bibid]['Handicap']) nt = t - th - renderer.set_property('text', str(nt)) + renderer.set_property('text', str(nt)[:-5]) except AttributeError: #Handicap is present but is not formatted correctly. renderer.set_property('text', '') @@ -395,12 +396,12 @@ def editblocktimedone(self, pathlist, operation, timestr): adj_time = time_parse(timestr) # Combine the timedeltas to get the new time if operation == 'ADD': - new_time = str(old_time + adj_time) + new_time = str(old_time + adj_time)[:-5] elif operation == 'SUBTRACT': if old_time > adj_time: - new_time = str(old_time - adj_time) + new_time = str(old_time - adj_time)[:-5] else: - new_time = '0:00:00' #We don't allow negative times. + new_time = '0:00:00.0' #We don't allow negative times. # Save them, and write out to the timemodel self.rawtimes['times'][row] = str(new_time) self.timemodel.set_value(treeiter, 1, str(new_time)) @@ -646,7 +647,7 @@ def record_time(self, jnk_unused): def new_blank_time(self): '''Record a new time''' - t = str(datetime.timedelta(seconds=int(time.time()-self.t0))) + t = str(datetime.timedelta(milliseconds=int(1000*(time.time()-self.t0))))[:-5] self.rawtimes['times'].insert(0, t) #we prepend to rawtimes, just as we prepend to timemodel if self.offset >= 0: # No IDs in the buffer, so just prepend it to the liststore. diff --git a/fstimer/timer.py b/fstimer/timer.py index e5e04b5..197c49b 100644 --- a/fstimer/timer.py +++ b/fstimer/timer.py @@ -46,16 +46,6 @@ from collections import defaultdict -def str2timedelta(time): - '''converts a time string to a timedelta''' - timePattern = r'((?P-?\d+) day(s)?, )?((?P\d+):)?'r'(?P\d+):(?P\d+)' #hours is optional - # convert txt time to dict - d1 = re.match(timePattern, time).groupdict(0) - # convert txt to ints - d2 = {key:int(val) for key, val in d1.iteritems()} - # build timedelta - return datetime.timedelta(**d2) - class PyTimer(object): '''main class of fsTimer''' @@ -451,7 +441,7 @@ def get_sorted_results(self): for tag, time in timeslist: if tag and time and tag != self.passid: try: - new_timeslist.append((tag, str(str2timedelta(time) - str2timedelta(self.timing[tag]['Handicap'])))) + new_timeslist.append((tag, str(fstimer.gui.timing.time_parse(time) - fstimer.gui.timing.time_parse(self.timing[tag]['Handicap']))[:-5])) except AttributeError: #Either time or Handicap couldn't be converted to timedelta. It will be dropped. pass @@ -483,5 +473,5 @@ def get_sorted_results(self): # And now the first lap laptimesdic2[tag].append(laptimesdic[tag][0]) # And now the subsequent laps - laptimesdic2[tag].extend([str(str2timedelta(laptimesdic[tag][ii+1]) - str2timedelta(laptimesdic[tag][ii])) for ii in range(len(laptimesdic[tag])-1)]) + laptimesdic2[tag].extend([str(fstimer.gui.timing.time_parse(laptimesdic[tag][ii+1]) - fstimer.gui.timing.time_parse(laptimesdic[tag][ii]))[:-5] for ii in range(len(laptimesdic[tag])-1)]) return sorted(laptimesdic2.items(), key=lambda entry: entry[1][0])