Compare commits

..

No commits in common. "cli-only" and "stable" have entirely different histories.

2 changed files with 16 additions and 53 deletions

View file

@ -6,39 +6,23 @@ import prompt_window
import time
from datetime import datetime, timedelta
from pathlib import Path
from pytz import timezone, utc
from prompt_toolkit import PromptSession
from prompt_toolkit.history import FileHistory
#from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.completion import WordCompleter
from pytz import timezone
session = PromptSession(history=FileHistory(os.path.expanduser('~/.pomodoro_history')))
# Move to a file:
words = WordCompleter(['NCHFA', 'PECE', 'Housing Works', 'Internal'])
#os.path.dirname(os.path.realpath(__file__))
#completion_list = WordCompleter(history=FileHistory(os.path.dirname(os.path.realpath(__file__)) + '.auto_complete'))
import pytz
WORK_MIN = 25 # Minutes for a work session
SHORT_MIN = 5 # Minutes for a short break
LONG_MIN = 15 # Minutes for a long break (NOT YET IMPLEMENTED)
INTERRUPTED_MIN = 1 # Minimum minutes to ask to record an interrupted Pomodoro
QUIET = True
GUI = True
def pomodoro_prompt_plan(whatdid = ''):
""" Ask about what task will be worked on (showing last thing worked on)
"""
text = "What're you gonna do? "
text = "What're you gonna do?"
# NOTE: If we can do system notifications that when clicked will focus the terminal
# running pomodoro prompt, that might be even better than the pop-up GUI text entry.
if GUI:
whatnext = prompt_window.prompt(prompt=text, task=whatdid)
else:
whatnext = session.prompt(message = text + '\n',
default = whatdid or '',
vi_mode = True,
completer = words,
complete_while_typing = True).strip()
# Pressing cancel returns None, but we want to just treat it as an empty string.
if whatnext is None:
whatnext = ''
@ -47,15 +31,8 @@ def pomodoro_prompt_plan(whatdid = ''):
def pomodoro_prompt_report(whatnext):
""" Ask what task was completed, showing the last task claimed to be being worked on
"""
text = "What'd you do? "
if GUI:
text = "What'd you do?"
whatdid = prompt_window.prompt(prompt=text, task=whatnext)
else:
whatdid = session.prompt(message = text + '\n',
default = whatnext or '',
vi_mode = True,
completer = words,
complete_while_typing = True).strip()
# Pressing cancel returns None, but we want to just treat it as an empty string.
if whatdid is None:
whatdid = ''
@ -87,7 +64,7 @@ def record_task(whatnext, whatdid, start, end=None):
""" Record completed pomodoro to CSV
"""
if end is None:
end = datetime.now(utc)
end = datetime.now(pytz.utc)
filepath = prepare_file(start)
if not os.path.isfile(filepath):
@ -107,8 +84,8 @@ def str_minutes(time_diff):
def countdown_to(until):
""" Display a timer counting down to until
"""
while datetime.now(utc) <= until:
to_go = until-datetime.now(utc)
while datetime.now(pytz.utc) <= until:
to_go = until-datetime.now(pytz.utc)
print('\r', str_minutes(to_go), sep='', end='')
time.sleep(1)
@ -130,33 +107,20 @@ def prepare_file(utc_start, ext='csv', daily=False):
timelog_path += '.' + ext
return timelog_path
def bing():
if GUI:
from playsound import playsound
playsound('res/timesup.aac')
else:
sys.stdout.write('\a')
sys.stdout.flush()
def main():
whatdid = ''
global GUI, QUIET
if "--no-gui" in sys.argv:
GUI = False
if "--noisy" in sys.argv:
QUIET = False
while True:
whatnext = pomodoro_prompt_plan(whatdid)
start = datetime.now(utc)
start = datetime.now(pytz.utc)
end = start + timedelta(minutes=WORK_MIN)
log_step('Start with plan: ' + whatnext, start)
try:
print('Working on: ' + (whatnext or "(...it must be a mystery)"))
print('Working on: ' + whatnext)
countdown_to(end)
if not QUIET:
bing()
from playsound import playsound
playsound('res/timesup.aac')
whatdid = pomodoro_prompt_report(whatnext)
record_task(whatnext, whatdid, start)
log_step('Completed pomodoro: ' + whatdid, start, True)
@ -165,16 +129,16 @@ def main():
print('Break time!')
# We're taking a break. Clear out task start/end times.
start = None
end = datetime.now(utc) + timedelta(minutes=SHORT_MIN)
end = datetime.now(pytz.utc) + timedelta(minutes=SHORT_MIN)
countdown_to(end)
if not QUIET:
bing()
playsound('res/timesup.aac')
continue
except KeyboardInterrupt:
if start is None:
quit_prompt()
continue
time_spent = datetime.now(utc) - start
time_spent = datetime.now(pytz.utc) - start
if time_spent < timedelta(minutes=INTERRUPTED_MIN):
quit_prompt()
continue

View file

@ -11,7 +11,6 @@ in pkgs.mkShell {
pycairo
pytz
tzlocal
prompt-toolkit # for text entry history/auto complete
# For Qt:
# pyside6
# Using GTK: