kete/prompt: show meaning of the timestamps

workaround for cumberness of having to type timestamps.

Instead of having some fancy formatted timestamp, help the user
by displaying the translated value
pull/46/head
Benjamin Tissoires 2018-01-29 14:29:21 +01:00 committed by Peter Hutterer
parent eb0175bb19
commit a2df5b6ac1
1 changed files with 24 additions and 0 deletions

View File

@ -609,6 +609,9 @@ class TuhiKeteShell(cmd.Cmd):
# overwrite the logger facility to remove the current prompt and append
# a new one
self._log_handler.set_prompt_mode(self.prompt)
# restore any completion display hook we might have set
readline.set_completion_display_matches_hook()
return stop
def run(self, init=None):
@ -699,6 +702,26 @@ class TuhiKeteShell(cmd.Cmd):
self.do_fetch('-h')
def complete_fetch(self, text, line, begidx, endidx):
def draw_timestamp(substitution, matches, longest_match_length):
print()
for drawing in matches:
# we underline the current matching, because it makes easier to
# visually go through the list
display_drawing = f'\033[4m{drawing[:len(substitution)]}\033[0m{drawing[len(substitution):]}'
try:
t = time.localtime(int(drawing))
t = time.strftime('%Y-%m-%d at %H:%M', t)
print(f'{display_drawing}: drawn on the {t}')
except ValueError:
# 'all' case
print(f'{display_drawing}{":":<8} fetch all drawings')
print(self.prompt, readline.get_line_buffer(), sep='', end='')
sys.stdout.flush()
# mark the end of the line so we can match on the number of fields
if line.endswith(' '):
line += 'm'
@ -711,6 +734,7 @@ class TuhiKeteShell(cmd.Cmd):
completion.append(device.address)
elif len(fields) == 3:
readline.set_completion_display_matches_hook(draw_timestamp)
device = None
for d in self._manager.devices:
if d.address == fields[1]: