summaryrefslogtreecommitdiff
path: root/timers.py
diff options
context:
space:
mode:
authorhmj6502 <hashim@hmj6502.com>2025-12-19 11:12:45 +0000
committerhmj6502 <hashim@hmj6502.com>2025-12-19 11:12:45 +0000
commit1dd32f5dd7bb228713206389646c54edfd585b0a (patch)
tree72c7412b510a0ccfa83c2e76266b529e6e3aeb23 /timers.py
parentf24e650c19a1b8862a64749c42dd6b8092765d0c (diff)
downloadlock-n-log-1dd32f5dd7bb228713206389646c54edfd585b0a.tar.gz
lock-n-log-1dd32f5dd7bb228713206389646c54edfd585b0a.tar.bz2
lock-n-log-1dd32f5dd7bb228713206389646c54edfd585b0a.zip
combine timer and stopwatch into one function
they work effectively the same, so add if statements for minor changes. time_left no longer used at all
Diffstat (limited to 'timers.py')
-rw-r--r--timers.py41
1 files changed, 10 insertions, 31 deletions
diff --git a/timers.py b/timers.py
index ee04e86..cf8e91d 100644
--- a/timers.py
+++ b/timers.py
@@ -4,11 +4,10 @@ import inputs
frequency = 120 # 120Hz refresh
-def countdown(length):
- """countdown timer; length in seconds. returns start and time left (>0 if quit early)"""
- time_left = length
+def timer(length=0):
+ """countdown and stopwatch; pass length as 0 for stopwatch"""
start = datetime.datetime.now()
- end = start + datetime.timedelta(seconds=time_left) # change to mins in final
+ end = start + datetime.timedelta(seconds=length) # change to mins in final
accum = 0
timeout = 1/frequency
@@ -16,42 +15,22 @@ def countdown(length):
tty.setcbreak(sys.stdin.fileno())
while True:
now = datetime.datetime.now()
+ elapsed = now - start
time_left = end - now
- if time_left.total_seconds() <= 0:
+ if length > 0 and time_left.total_seconds() <= 0:
break
ch = inputs.getch_nb(timeout)
if ch == 'q':
- print("\nexited early!")
break
- # see https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
- print("\x1b[2K\r" + inputs.delta_to_HM(time_left), end="", flush=True)
-
- accum += timeout
- if accum >= 1:
- accum = 0
- termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
-
- return (time_left, start)
-
-def stopwatch():
- """stopwatch timer; returns time elapsed"""
- start = datetime.datetime.now()
- accum = 0
- timeout = 1/frequency
-
- old_settings = termios.tcgetattr(sys.stdin)
- tty.setcbreak(sys.stdin.fileno())
- while True:
- elapsed = datetime.datetime.now() - start
-
- ch = inputs.getch_nb(timeout)
- if ch == 'q':
- break
+ if length > 0:
+ time_display = time_left
+ else:
+ time_display = elapsed
# see https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
- print("\x1b[2K\r" + inputs.delta_to_HM(elapsed), end="", flush=True)
+ print("\x1b[2K\r" + inputs.delta_to_HM(time_display), end="", flush=True)
accum += timeout
if accum >= 1: