14 def __init__(self, main_time):
17 self._main_t = main_time
21 r_time = main_time - (time.time() - self._last + self._elapsed)
22 if (r_time - int(r_time)) < 0.75:
27 r_time = main_time - self._elapsed
31 return "{0:0>2}".format(int(r_time / 60)) + sep + "{0:0>2}".format(int(r_time % 60))
34 self._last = time.time()
37 self._elapsed += time.time() - self._last
46 parser = argparse.ArgumentParser(description=__doc__)
47 parser.add_argument('-m', type=int, default=45,
48 help="main time in minutes")
49 parser.add_argument('-c', '--camera', dest='cam', action='store_true',
51 parser.add_argument('-d', type=int, default=0,
52 help="video device id")
53 parser.add_argument('-r', type=int, nargs=2, default=[640, 480],
54 help="set camera resolution")
55 args = parser.parse_args()
59 pygame.display.set_mode((600, 100))
60 pygame.display.set_caption("Go timer")
61 screen = pygame.display.get_surface()
63 clock = pygame.time.Clock()
65 font = pygame.font.Font(pygame.font.match_font('monospace'), 80)
70 main_time = args.m * 60
72 timers = (Timer(main_time), Timer(main_time))
75 capture = subprocess.Popen(['python', 'capture.py', '-c', '-d', str(args.d), '-r',
77 str(args.r[1])], stdin=subprocess.PIPE)
81 for event in pygame.event.get():
82 if event.type == pygame.QUIT:
84 elif event.type == pygame.KEYDOWN:
89 print >> capture.stdin, "stop"
90 print >> capture.stdin, "take"
93 print >> capture.stdin, "take"
95 if timer.is_running():
100 screen.fill([0, 0, 0])
101 text1 = font.render(timers[0].get_time(), True, [128, 255, 128])
102 screen.blit(text1, [10, 10])
103 text2 = font.render(timers[1].get_time(), True, [128, 255, 128])
104 screen.blit(text2, [300, 10])
105 pygame.display.flip()
109 print >> capture.stdin, "exit"