/talon_draft_window

A window for editing prose using the Talon voice control system

Primary LanguagePythonMIT LicenseMIT

This reposiory is a Talon script that allows you to more easily edit prose style text via a task-specific UI.

Usage

The main idea is that we have a Talon controlled text area where each word is labelled with a letter (called an anchor). You can use the anchors to indicate which word you want to operate on.

An session might go like this for example:

# Start with the text "this is a sentence with an elephant." in your editor or other textbox
draft edit all            # Select all the text in your editor and moves it to the draft window
replace gust with error   # Replaces the word corresponding with the red anchor 'g' (gust in knausj_talon) with the word 'error'
period                    # Add a full stop
select each through fine  # Select the words starting at the 'e' anchor and ending at 'f'
say without               # Insert the word 'without' (knausj_talon)
title word air            # Make the word corresponding to the 'a' anchor capitalised
draft submit              # Type the text in your draft window back into your editor
# End with the text "This is a sentence without error." in your editor or other textbox

Here's a video of me going through the above commands:

Video of talon draft window in action

Installation

The draft_window.talon file depends on functions and lists defined by the knausj_talon repo. Once you have knausj set up you can just drop this folder in next to it in the Talon user scripts directory (~/.talon/user/ under Linux). So you might end up with ~/.talon/user/ containing a knausj_talon folder, a talon_draft_window folder, and an engines.py.

Customising

If you want to change the display of the window you can do by adding some settings to one of your .talon files. See settings.talon.example for more details.

Running tests

There are unit tests that you can run from the repository root like this (assuming your directory is called talon_draft_window):

(cd ../ && python -m unittest talon_draft_window.test_draft_ui)

The reason for the weirdness is because we have everything in the same directory and are doing relative imports.