init commit
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
from typing import Optional
|
||||
|
||||
from talon import Module, actions, imgui, settings, speech_system
|
||||
|
||||
from ..subtitles.on_phrase import skip_phrase
|
||||
|
||||
# We keep command_history_size lines of history, but by default display only
|
||||
# command_history_display of them.
|
||||
mod = Module()
|
||||
mod.setting("command_history_size", type=int, default=50)
|
||||
mod.setting("command_history_display", type=int, default=10)
|
||||
|
||||
hist_more: bool = False
|
||||
history: list[str] = []
|
||||
|
||||
|
||||
def on_phrase(j):
|
||||
global history
|
||||
if skip_phrase(j):
|
||||
return
|
||||
|
||||
words = j.get("phrase")
|
||||
text = actions.user.history_transform_phrase_text(words)
|
||||
if text is not None:
|
||||
history.append(text)
|
||||
history = history[-settings.get("user.command_history_size") :]
|
||||
|
||||
|
||||
# todo: dynamic rect?
|
||||
@imgui.open(y=0)
|
||||
def gui(gui: imgui.GUI):
|
||||
global history
|
||||
gui.text("Command History")
|
||||
gui.line()
|
||||
text = (
|
||||
history[:]
|
||||
if hist_more
|
||||
else history[-settings.get("user.command_history_display") :]
|
||||
)
|
||||
for line in text:
|
||||
gui.text(line)
|
||||
|
||||
gui.spacer()
|
||||
if gui.button("Command history close"):
|
||||
actions.user.history_disable()
|
||||
|
||||
|
||||
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
|
||||
|
||||
def history_get(number: int) -> str:
|
||||
"""returns the history entry at the specified index"""
|
||||
num = (0 - number) - 1
|
||||
return history[num]
|
||||
|
||||
def history_transform_phrase_text(words: list[str]) -> Optional[str]:
|
||||
"""Transforms phrase text for presentation in history. Return `None` to omit from history"""
|
||||
return " ".join(words) if words else None
|
||||
@@ -0,0 +1,5 @@
|
||||
command history: user.history_toggle()
|
||||
command history close: user.history_disable()
|
||||
command history clear: user.history_clear()
|
||||
command history less: user.history_less()
|
||||
command history more: user.history_more()
|
||||
Reference in New Issue
Block a user