76 lines
1.7 KiB
Python
76 lines
1.7 KiB
Python
from talon import imgui, Module, speech_system, actions, app
|
|
|
|
# We keep command_history_size lines of history, but by default display only
|
|
# command_history_display of them.
|
|
mod = Module()
|
|
setting_command_history_size = mod.setting("command_history_size", int, default=50)
|
|
setting_command_history_display = mod.setting(
|
|
"command_history_display", int, default=10
|
|
)
|
|
|
|
hist_more = False
|
|
history = []
|
|
|
|
|
|
def parse_phrase(word_list):
|
|
return " ".join(word.split("\\")[0] for word in word_list)
|
|
|
|
|
|
def on_phrase(j):
|
|
global history
|
|
|
|
try:
|
|
val = parse_phrase(getattr(j["parsed"], "_unmapped", j["phrase"]))
|
|
except:
|
|
val = parse_phrase(j["phrase"])
|
|
|
|
if val != "":
|
|
history.append(val)
|
|
history = history[-setting_command_history_size.get() :]
|
|
|
|
|
|
# todo: dynamic rect?
|
|
@imgui.open(x=1300, y=915)
|
|
def gui(gui: imgui.GUI):
|
|
global history
|
|
text = (
|
|
history[:] if hist_more else history[-setting_command_history_display.get() :]
|
|
)
|
|
for line in text:
|
|
gui.text(line)
|
|
|
|
|
|
speech_system.register("phrase", on_phrase)
|
|
|
|
|
|
@mod.action_class
|
|
class Actions:
|
|
def history_toggle():
|
|
"""Toggles viewing the history"""
|
|
if gui.showing:
|
|
gui.hide()
|
|
else:
|
|
gui.show()
|
|
|
|
def history_enable():
|
|
"""Enables the history"""
|
|
gui.show()
|
|
|
|
def history_disable():
|
|
"""Disables the history"""
|
|
gui.hide()
|
|
|
|
def history_clear():
|
|
"""Clear the history"""
|
|
global history
|
|
history = []
|
|
|
|
def history_more():
|
|
"""Show more history"""
|
|
global hist_more
|
|
hist_more = True
|
|
|
|
def history_less():
|
|
"""Show less history"""
|
|
global hist_more
|
|
hist_more = False
|