parent
2aeb0434da
commit
60b320140d
|
@ -4,6 +4,7 @@ ___license___ = "MIT"
|
|||
___dependencies___ = ["buttons", "sleep"]
|
||||
|
||||
import ugfx, buttons, sleep
|
||||
import time
|
||||
|
||||
default_style_badge = ugfx.Style()
|
||||
default_style_badge.set_focus(ugfx.RED)
|
||||
|
@ -100,18 +101,7 @@ def prompt_text(description, init_text="", true_text="OK", false_text="Back", fo
|
|||
if buttons.is_triggered(buttons.Buttons.BTN_A): return edit.text()
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_B): return None
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_Menu): return edit.text()
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_0): edit.text(edit.text() + "0")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_1): edit.text(edit.text() + "1")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_2): edit.text(edit.text() + "2")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_3): edit.text(edit.text() + "3")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_4): edit.text(edit.text() + "4")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_5): edit.text(edit.text() + "5")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_6): edit.text(edit.text() + "6")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_7): edit.text(edit.text() + "7")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_8): edit.text(edit.text() + "8")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_9): edit.text(edit.text() + "9")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_Hash): edit.text(edit.text() + "#")
|
||||
if buttons.is_triggered(buttons.Buttons.BTN_Star): edit.text(edit.text() + "*")
|
||||
handle_keypad(edit)
|
||||
|
||||
finally:
|
||||
window.hide()
|
||||
|
@ -123,6 +113,47 @@ def prompt_text(description, init_text="", true_text="OK", false_text="Back", fo
|
|||
edit.destroy();
|
||||
return
|
||||
|
||||
last_key = None
|
||||
last_keytime = None
|
||||
def handle_keypad(edit):
|
||||
global last_key, last_keytime
|
||||
threshold = 1000
|
||||
keymap = {
|
||||
buttons.Buttons.BTN_0: [" ", "0"],
|
||||
buttons.Buttons.BTN_1: ["1"],
|
||||
buttons.Buttons.BTN_2: ["a", "b", "c", "2"],
|
||||
buttons.Buttons.BTN_3: ["d", "e", "f", "3"],
|
||||
buttons.Buttons.BTN_4: ["g", "h", "i", "4"],
|
||||
buttons.Buttons.BTN_5: ["j", "k", "l", "5"],
|
||||
buttons.Buttons.BTN_6: ["m", "n", "o", "6"],
|
||||
buttons.Buttons.BTN_7: ["p", "q", "r", "s", "7"],
|
||||
buttons.Buttons.BTN_8: ["t", "u", "v", "8"],
|
||||
buttons.Buttons.BTN_9: ["w", "x", "y", "9"],
|
||||
buttons.Buttons.BTN_Hash: ["#"],
|
||||
buttons.Buttons.BTN_Star: ["*", "+"],
|
||||
}
|
||||
|
||||
for key, chars in keymap.items():
|
||||
if buttons.is_triggered(key):
|
||||
if key != last_key:
|
||||
edit.text(edit.text() + chars[0])
|
||||
else:
|
||||
if last_keytime is None or (time.ticks_ms() - last_keytime) > threshold:
|
||||
edit.text(edit.text() + chars[0])
|
||||
else:
|
||||
last_char = edit.text()[-1]
|
||||
try:
|
||||
last_index = chars.index(last_char)
|
||||
except ValueError:
|
||||
# not sure how we get here...
|
||||
return
|
||||
next_index = (last_index+1) % len(chars)
|
||||
edit.text(edit.text()[:-1] + chars[next_index])
|
||||
last_key = key
|
||||
last_keytime = time.ticks_ms()
|
||||
|
||||
|
||||
|
||||
def prompt_option(options, index=0, text = None, title=None, select_text="OK", none_text=None):
|
||||
"""Shows a dialog prompting for one of multiple options
|
||||
|
||||
|
|
Loading…
Reference in New Issue