Changeset View
Changeset View
Standalone View
Standalone View
pykolab/utils.py
Show First 20 Lines • Show All 192 Lines • ▼ Show 20 Lines | def ask_menu(question, options={}, default=''): | ||||
while not answer_correct: | while not answer_correct: | ||||
for key in keys: | for key in keys: | ||||
key_length = len("%s" % key) | key_length = len("%s" % key) | ||||
if key_length > max_key_length: | if key_length > max_key_length: | ||||
max_key_length = key_length | max_key_length = key_length | ||||
str_format = "%%%ds" % max_key_length | str_format = "%%%ds" % max_key_length | ||||
if default == '' or default not in options.keys(): | if default == '' or default not in options: | ||||
for key in keys: | for key in keys: | ||||
if options[key] == key: | if options[key] == key: | ||||
print(" - " + key) | print(" - " + key) | ||||
else: | else: | ||||
print(" - " + str_format % key + ": " + options[key]) | print(" - " + str_format % key + ": " + options[key]) | ||||
answer = input(_l("Choice") + ": ") | answer = input(_l("Choice") + ": ") | ||||
else: | else: | ||||
answer = input(_l("Choice (type '?' for options)") + ": ") | answer = input(_l("Choice (type '?' for options)") + ": ") | ||||
if answer == '?': | if answer == '?': | ||||
for key in keys: | for key in keys: | ||||
if options[key] == key: | if options[key] == key: | ||||
print(" - " + key) | print(" - " + key) | ||||
else: | else: | ||||
print(" - " + str_format % key + ": " + options[key]) | print(" - " + str_format % key + ": " + options[key]) | ||||
continue | continue | ||||
if answer == '' and default in options.keys(): | if answer == '' and default in options: | ||||
answer = default | answer = default | ||||
if answer in [str(x) for x in options.keys()]: | if answer in [str(x) for x in options]: | ||||
answer_correct = True | answer_correct = True | ||||
return answer | return answer | ||||
def decode(key, enc): | def decode(key, enc): | ||||
if key is None: | if key is None: | ||||
return enc | return enc | ||||
▲ Show 20 Lines • Show All 402 Lines • Show Last 20 Lines |