This commit is contained in:
Jeremiah Ticket 2017-02-27 11:14:12 -09:00
commit a45425ae6c
97 changed files with 1513 additions and 342 deletions

View File

@ -55,6 +55,8 @@ This software is licensed under the LGPL v3 .
- aspell-YourLanguageCode (example aspell-en for us english)
2. unix daemon (also needed for systemd):
- python-daemonize
3. Modify system volume:
- pyalsaaudio (needs libasound2's headers).
# installation
- Archlinux: PKGBUILD in AUR

View File

@ -6,8 +6,7 @@ General:
read highlighted text mode
- be more event based (vcsa sets POLLPRI)
http://scotdoyle.com/python-epoll-howto.html
- try to make it more asynchronus
- multpible threads
- try to make it more asynchronus with multpible threads
- leave review on typing (Easy for contribution)
- implement commands
@ -47,12 +46,12 @@ Driver:
https://stackoverflow.com/questions/6396659/how-do-you-get-the-encoding-of-the-terminal-from-within-a-python-script
Settings:
- configuration should be overwritable with parameter and alternative paths
- write settings
- menue for settings configuration #storm
- configuration should be overwritable with parameter and alternative paths (Easy for contribution)
- write settings (Easy for contribution)
- menue for settings configuration (Easy for contribution)
Application Profiles
- reimplement process detection without subprocessing
- reimplement process detection without subprocessing // this is started by chrys
- fenrir is not able to detect the current application inside of screen.
ps -e -H -o pid,pgrp,ppid,tty,cmd
http://stackoverflow.com/questions/24861351/how-to-detect-if-python-script-is-being-run-as-a-background-process/24862213

View File

@ -108,5 +108,8 @@ KEY_FENRIR,KEY_X=set_mark
KEY_FENRIR,KEY_SHIFT,KEY_X=marked_text
KEY_FENRIR,KEY_C=copy_marked_to_clipboard
KEY_FENRIR,KEY_V=paste_clipboard
# linux specific
#=export_clipboard_to_x
KEY_FENRIR,KEY_CTRL,KEY_UP=inc_alsa_volume
KEY_FENRIR,KEY_CTRL,KEY_DOWN=dec_alsa_volume

View File

@ -110,3 +110,5 @@ KEY_FENRIR,KEY_C=copy_marked_to_clipboard
KEY_FENRIR,KEY_V=paste_clipboard
# linux specific
#=export_clipboard_to_x
KEY_FENRIR,KEY_CTRL,KEY_UP=inc_alsa_volume
KEY_FENRIR,KEY_CTRL,KEY_DOWN=dec_alsa_volume

View File

@ -41,6 +41,8 @@ if [ -f "/etc/fenrir/settings/settings.conf" ]; then
else
install -m644 -D "config/settings/settings.conf" /etc/fenrir/settings/settings.conf.current
fi
else
install -m644 -D "config/settings/settings.conf" /etc/fenrir/settings/settings.conf
fi

View File

@ -1,6 +1,5 @@
Known Bugs (Problems with the logic ):
- fenrir crashes on device unplug (remove device graceful)
- no autodetection of X if you start without GUI and use startx manual
- word echo triggers twice if there are two spaces after an word and you arrow over them
- spellcheck triggers twice if there are two spaces after an word and you arrow over them

Binary file not shown.

View File

@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2017-02-20 10:45+UTC\n"
"PO-Revision-Date: 2017-02-20 04:52-0600\n"
"POT-Creation-Date: 2017-02-26 22:19+UTC\n"
"PO-Revision-Date: 2017-02-26 17:01-0600\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: es\n"
@ -22,6 +22,9 @@ msgid "adds the current word to the exceptions dictionary"
msgstr "añade la palabra actual al diccionario"
#: ../src/fenrir/commands/commands/add_word_to_spell_check.py:34
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:34
#: ../src/fenrir/commands/commands/spell_check.py:29
#: ../src/fenrir/commands/commands/spell_check.py:36
msgid "pyenchant is not installed"
msgstr "Pyenchant no está instalado"
@ -94,6 +97,24 @@ msgstr "El marcador para la aplicación {0} no se ha establecido"
#: ../src/fenrir/commands/commands/bookmark_9.py:43
#: ../src/fenrir/commands/commands/curr_screen_after_cursor.py:27
#: ../src/fenrir/commands/commands/curr_screen_before_cursor.py:30
#: ../src/fenrir/commands/commands/cursor_read_to_end_of_line.py:27
#: ../src/fenrir/commands/commands/indent_curr_line.py:31
#: ../src/fenrir/commands/commands/marked_text.py:33
#: ../src/fenrir/commands/commands/present_first_line.py:25
#: ../src/fenrir/commands/commands/present_last_line.py:25
#: ../src/fenrir/commands/commands/review_curr_char_phonetic.py:27
#: ../src/fenrir/commands/commands/review_curr_line.py:27
#: ../src/fenrir/commands/commands/review_curr_word.py:27
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:27
#: ../src/fenrir/commands/commands/review_line_begin.py:27
#: ../src/fenrir/commands/commands/review_next_line.py:29
#: ../src/fenrir/commands/commands/review_next_word.py:29
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:27
#: ../src/fenrir/commands/commands/review_prev_line.py:27
#: ../src/fenrir/commands/commands/review_prev_word.py:27
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:27
#: ../src/fenrir/commands/onInput/55000-present_line_if_cursor_change_vertical.py:38
#: ../src/fenrir/commands/onInput/72000-history.py:50
msgid "blank"
msgstr "en blanco"
@ -137,7 +158,7 @@ msgstr "Eliminar marcador {0}"
#: ../src/fenrir/commands/commands/clear_bookmark_8.py:24
#: ../src/fenrir/commands/commands/clear_bookmark_9.py:24
msgid "Bookmark {0} removed for application {1}"
msgstr ""
msgstr "el marcador {0} de la aplicación {1} ha sido eliminado"
#: ../src/fenrir/commands/commands/clear_clipboard.py:17
msgid "clears the currently selected clipboard"
@ -153,7 +174,7 @@ msgstr "Desactiva el modo de ventana para la aplicación"
#: ../src/fenrir/commands/commands/clear_window_application.py:22
msgid "Window Mode off for application {0}"
msgstr ""
msgstr "El modo de ventana está desactivado para la aplicación {0}"
#: ../src/fenrir/commands/commands/clear_window_application.py:24
msgid "Not in window Mode"
@ -172,6 +193,18 @@ msgid "speaks the contents of the currently selected clipboard"
msgstr "Habla el contenido del portapapeles seleccionado"
#: ../src/fenrir/commands/commands/curr_clipboard.py:21
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:29
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:32
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:35
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:38
#: ../src/fenrir/commands/commands/first_clipboard.py:21
#: ../src/fenrir/commands/commands/last_clipboard.py:21
#: ../src/fenrir/commands/commands/next_clipboard.py:21
#: ../src/fenrir/commands/commands/paste_clipboard.py:23
#: ../src/fenrir/commands/commands/paste_clipboard.py:26
#: ../src/fenrir/commands/commands/paste_clipboard.py:29
#: ../src/fenrir/commands/commands/paste_clipboard.py:32
#: ../src/fenrir/commands/commands/prev_clipboard.py:21
msgid "clipboard empty"
msgstr "Portapapeles vacío"
@ -196,12 +229,479 @@ msgid ""
"presents the current column number for review cursor in review mode or the "
"text cursor if not. Starts with 1"
msgstr ""
"Indica el número de columna actual para el cursor de revisión si se está en "
"el modo de revisión, o el cursor de texto si no."
#: ../src/fenrir/commands/commands/cursor_lineno.py:17
msgid ""
"presents the current line number for review cursor in review mode or the "
"text cursor if not. Starts with 1"
msgstr ""
"Indica el número de línea actual para el cursor de revisión si se está en el "
"modo de revisión, o el cursor de texto si no."
#: ../src/fenrir/commands/commands/cursor_position.py:17
msgid "displays the position of the review cursor"
msgstr "Indica la posición del cursor de revisión"
#: ../src/fenrir/commands/commands/cursor_position.py:23
msgid "line {0}, column {1}"
msgstr "Línea {0}, columna {1}"
#: ../src/fenrir/commands/commands/cursor_read_to_end_of_line.py:18
msgid ""
"read to end of line, use review cursor if you are in review mode, otherwhise "
"use text cursor"
msgstr ""
"Leer hasta el fin de línea, utiliza el cursor de revisión cuando el modo de "
"revisión está activo, de lo contrario utiliza el cursor de texto."
#: ../src/fenrir/commands/commands/date.py:18
msgid "presents the date"
msgstr "Lee la fecha"
#: ../src/fenrir/commands/commands/dec_sound_volume.py:18
msgid "decrease sound volume"
msgstr "Reduce el volumen del sonido"
#: ../src/fenrir/commands/commands/dec_sound_volume.py:29
#: ../src/fenrir/commands/commands/inc_sound_volume.py:29
msgid "{0} percent sound volume"
msgstr "volumen de sonido al {0} porciento"
#: ../src/fenrir/commands/commands/dec_speech_pitch.py:18
msgid "decreases the pitch of the speech"
msgstr "Reduce el tono de voz"
#: ../src/fenrir/commands/commands/dec_speech_pitch.py:27
#: ../src/fenrir/commands/commands/inc_speech_pitch.py:27
msgid "{0} percent speech pitch"
msgstr "Tono de voz al {0} porciento"
#: ../src/fenrir/commands/commands/dec_speech_rate.py:18
msgid "decreases the rate of the speech"
msgstr "Reduce la velocidad de voz"
#: ../src/fenrir/commands/commands/dec_speech_rate.py:27
#: ../src/fenrir/commands/commands/inc_speech_rate.py:27
msgid "{0} percent speech rate"
msgstr "Velocidad de voz al {0} porciento"
#: ../src/fenrir/commands/commands/dec_speech_volume.py:18
msgid "decreases the volume of the speech"
msgstr "Reduce el volumen de voz"
#: ../src/fenrir/commands/commands/dec_speech_volume.py:27
#: ../src/fenrir/commands/commands/inc_speech_volume.py:27
msgid "{0} percent speech volume"
msgstr "Volumen de voz al {0} porciento"
#: ../src/fenrir/commands/commands/exit_review.py:17
msgid "exits review mode"
msgstr "Sale del modo de revisión"
#: ../src/fenrir/commands/commands/exit_review.py:21
msgid "Not in review mode"
msgstr "No está en modo de revisión"
#: ../src/fenrir/commands/commands/exit_review.py:25
msgid "leave review mode"
msgstr "Saliendo del modo de revisión"
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:21
msgid "export the current fenrir clipboard to X clipboard"
msgstr "Exporta el contenido del portapapeles de Fenrir al servidor X"
#: ../src/fenrir/commands/commands/first_clipboard.py:17
msgid "selects the first clipboard"
msgstr "Selecciona el primer portapapeles"
#: ../src/fenrir/commands/commands/forward_keypress.py:17
msgid "sends the following keypress to the terminal"
msgstr "Envía la siguiente tecla a la terminal"
#: ../src/fenrir/commands/commands/forward_keypress.py:21
msgid "Forward next keypress"
msgstr "Enviar la siguiente tecla"
#: ../src/fenrir/commands/commands/inc_sound_volume.py:18
msgid "adjusts the volume for in coming sounds"
msgstr "aumenta el volumen del sonido"
#: ../src/fenrir/commands/commands/inc_speech_pitch.py:18
msgid "increases the pitch of the speech"
msgstr "Aumenta el tono de voz"
#: ../src/fenrir/commands/commands/inc_speech_rate.py:18
msgid "increase the speech rate"
msgstr "Aumenta la velocidad de voz"
#: ../src/fenrir/commands/commands/inc_speech_volume.py:18
msgid "increase the speech volume"
msgstr "Aumenta el volumen de voz"
#: ../src/fenrir/commands/commands/indent_curr_line.py:18
msgid "shows the indention level for the current line"
msgstr "Lee el nivel de indentación de la línea actual"
#: ../src/fenrir/commands/commands/indent_curr_line.py:33
msgid "indent {0}"
msgstr ""
#: ../src/fenrir/commands/commands/last_clipboard.py:17
msgid "selects the last clipboard"
msgstr "Selecciona el último portapapeles"
#: ../src/fenrir/commands/commands/last_incoming.py:17
msgid "displays the last received text"
msgstr "Lee el último mensaje recibido"
#: ../src/fenrir/commands/commands/marked_text.py:18
msgid "speaks the currently selected text that will be copied to the clipboard"
msgstr "Lee el texto que será copiado al portapapeles"
#: ../src/fenrir/commands/commands/marked_text.py:23
msgid "please set begin and endmark"
msgstr "Establece una marca de principio y otra para el final de la selección."
#: ../src/fenrir/commands/commands/next_clipboard.py:17
msgid "selects the next clipboard"
msgstr "Selecciona el siguiente portapapeles"
#: ../src/fenrir/commands/commands/next_clipboard.py:26
msgid "First clipboard "
msgstr "Primer portapapeles"
#: ../src/fenrir/commands/commands/paste_clipboard.py:18
msgid "pastes the text from the currently selected clipboard"
msgstr "Pega el texto del portapapeles en uso"
#: ../src/fenrir/commands/commands/present_first_line.py:18
msgid "present first line"
msgstr "lee la primera línea"
#: ../src/fenrir/commands/commands/present_last_line.py:18
#: ../src/fenrir/commands/commands/review_curr_line.py:18
msgid "current line"
msgstr "línea actual"
#: ../src/fenrir/commands/commands/prev_clipboard.py:17
msgid "selects the previous clipboard"
msgstr "Selecciona el portapapeles anterior"
#: ../src/fenrir/commands/commands/prev_clipboard.py:26
msgid "Last clipboard "
msgstr "Último portapapeles"
#: ../src/fenrir/commands/commands/quit_fenrir.py:17
msgid "exits Fenrir"
msgstr "Sale de Fenrir"
#: ../src/fenrir/commands/commands/remove_marks.py:17
msgid "removes marks from selected text"
msgstr "Quitar marcas del texto seleccionado"
#: ../src/fenrir/commands/commands/remove_marks.py:21
msgid "Remove marks"
msgstr "Marcas eliminadas"
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:27
msgid "removes the current word from the exceptions dictionary"
msgstr "Quita la palabra actual del diccionario de excepciones"
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:50
msgid "{0} is already removed from dict"
msgstr "{0} no está en el diccionario"
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:53
msgid "{0} removed"
msgstr "se ha eliminado {0}"
#: ../src/fenrir/commands/commands/review_bottom.py:17
msgid "move review to bottom of screen"
msgstr "Mueve el cursor de revisión al final de la pantalla"
#: ../src/fenrir/commands/commands/review_bottom.py:21
msgid "Bottom"
msgstr "Fin"
#: ../src/fenrir/commands/commands/review_curr_char.py:18
msgid "presents the current character."
msgstr "Lee el carácter actual"
#: ../src/fenrir/commands/commands/review_curr_char_phonetic.py:18
msgid "set review and phonetically presents the current character"
msgstr "Lee fonéticamente el último carácter"
#: ../src/fenrir/commands/commands/review_curr_word.py:18
msgid "current word."
msgstr "Palabra actual. "
#: ../src/fenrir/commands/commands/review_curr_word.py:32
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:36
#: ../src/fenrir/commands/commands/review_down.py:27
#: ../src/fenrir/commands/commands/review_next_char.py:28
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:30
#: ../src/fenrir/commands/commands/review_next_line.py:34
#: ../src/fenrir/commands/commands/review_next_word.py:34
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:36
#: ../src/fenrir/commands/commands/review_prev_char.py:31
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:30
#: ../src/fenrir/commands/commands/review_prev_line.py:32
#: ../src/fenrir/commands/commands/review_prev_word.py:32
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:36
#: ../src/fenrir/commands/commands/review_up.py:27
msgid "end of screen"
msgstr "Fin de pantalla"
#: ../src/fenrir/commands/commands/review_curr_word.py:35
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:39
#: ../src/fenrir/commands/commands/review_next_char.py:31
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:33
#: ../src/fenrir/commands/commands/review_next_word.py:37
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:39
#: ../src/fenrir/commands/commands/review_prev_char.py:34
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:33
#: ../src/fenrir/commands/commands/review_prev_word.py:35
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:39
#: ../src/fenrir/commands/commands/review_up.py:30
msgid "line break"
msgstr "Nueva línea"
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:19
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:19
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:19
msgid "phonetically spells the current word and set review to it"
msgstr "Deletrea fonéticamente la palabra actual"
#: ../src/fenrir/commands/commands/review_down.py:18
msgid "set review cursor to char below the current char and present it."
msgstr "Mueve el cursor de revisión al carácter después del actual y lo lee"
#: ../src/fenrir/commands/commands/review_line_begin.py:18
msgid "set review cursor to begin of current line and display the content"
msgstr "lee la línea actual desde el principio"
#: ../src/fenrir/commands/commands/review_line_begin.py:30
msgid "beginning of line"
msgstr "principio de línea"
#: ../src/fenrir/commands/commands/review_line_end.py:18
#: ../src/fenrir/commands/commands/review_line_first_char.py:19
#: ../src/fenrir/commands/commands/review_line_last_char.py:18
msgid "set review cursor to end of current line and display the content"
msgstr "Lee el final de la línea"
#: ../src/fenrir/commands/commands/review_line_end.py:27
msgid "end of line"
msgstr "Fin de línea"
#: ../src/fenrir/commands/commands/review_line_first_char.py:26
msgid "line is empty"
msgstr "Línea en blanco"
#: ../src/fenrir/commands/commands/review_line_first_char.py:33
msgid "first char in line indent {0}"
msgstr ""
#: ../src/fenrir/commands/commands/review_line_last_char.py:27
msgid "last char in line"
msgstr "último carácter de la línea"
#: ../src/fenrir/commands/commands/review_next_char.py:18
msgid "moves review to the next character and presents it"
msgstr "Lee el siguiente carácter"
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:18
msgid "phonetically presents the next character and set review to it"
msgstr "Lee fonéticamente el siguiente carácter"
#: ../src/fenrir/commands/commands/review_next_line.py:18
msgid "moves review to the next line and presents it"
msgstr "Lee la siguiente línea"
#: ../src/fenrir/commands/commands/review_next_word.py:18
msgid "moves review to the next word and presents it"
msgstr "Lee la siguiente palabra"
#: ../src/fenrir/commands/commands/review_prev_char.py:18
msgid "moves review to the previous character and presents it"
msgstr "Lee el carácter anterior"
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:18
msgid "phonetically presents the previous character and set review to it"
msgstr "Lee fonéticamente el carácter anterior"
#: ../src/fenrir/commands/commands/review_prev_line.py:18
msgid "moves review to the previous line and presents it"
msgstr "Lee la línea anterior"
#: ../src/fenrir/commands/commands/review_prev_word.py:18
msgid "moves review focus to the previous word and presents it"
msgstr "Lee la palabra anterior"
#: ../src/fenrir/commands/commands/review_top.py:18
msgid "move review to top of screen"
msgstr "ir al final de la pantalla"
#: ../src/fenrir/commands/commands/review_top.py:22
msgid "Top"
msgstr "Fin"
#: ../src/fenrir/commands/commands/review_up.py:18
msgid "set review cursor to the char in the line below and present it"
msgstr "Mueve el cursor de revisión al carácter en la siguiente línea y lo lee"
#: ../src/fenrir/commands/commands/set_bookmark_1.py:18
#: ../src/fenrir/commands/commands/set_bookmark_10.py:18
#: ../src/fenrir/commands/commands/set_bookmark_2.py:18
#: ../src/fenrir/commands/commands/set_bookmark_3.py:18
#: ../src/fenrir/commands/commands/set_bookmark_4.py:18
#: ../src/fenrir/commands/commands/set_bookmark_5.py:18
#: ../src/fenrir/commands/commands/set_bookmark_6.py:18
#: ../src/fenrir/commands/commands/set_bookmark_7.py:18
#: ../src/fenrir/commands/commands/set_bookmark_8.py:18
#: ../src/fenrir/commands/commands/set_bookmark_9.py:18
msgid "set Bookmark {0}"
msgstr "Añadir marcador {0}"
#: ../src/fenrir/commands/commands/set_bookmark_1.py:22
#: ../src/fenrir/commands/commands/set_bookmark_10.py:22
#: ../src/fenrir/commands/commands/set_bookmark_2.py:22
#: ../src/fenrir/commands/commands/set_bookmark_3.py:22
#: ../src/fenrir/commands/commands/set_bookmark_4.py:22
#: ../src/fenrir/commands/commands/set_bookmark_5.py:22
#: ../src/fenrir/commands/commands/set_bookmark_6.py:22
#: ../src/fenrir/commands/commands/set_bookmark_7.py:22
#: ../src/fenrir/commands/commands/set_bookmark_8.py:22
#: ../src/fenrir/commands/commands/set_bookmark_9.py:22
msgid "No Mark found"
msgstr "No se han encontrado marcas"
#: ../src/fenrir/commands/commands/set_bookmark_1.py:32
#: ../src/fenrir/commands/commands/set_bookmark_10.py:32
#: ../src/fenrir/commands/commands/set_bookmark_2.py:32
#: ../src/fenrir/commands/commands/set_bookmark_3.py:32
#: ../src/fenrir/commands/commands/set_bookmark_4.py:32
#: ../src/fenrir/commands/commands/set_bookmark_5.py:32
#: ../src/fenrir/commands/commands/set_bookmark_6.py:32
#: ../src/fenrir/commands/commands/set_bookmark_7.py:32
#: ../src/fenrir/commands/commands/set_bookmark_8.py:32
#: ../src/fenrir/commands/commands/set_bookmark_9.py:32
msgid "Bookmark {0} set for application {1}"
msgstr "Añadido marcador {0} para aplicación {1}"
#: ../src/fenrir/commands/commands/set_mark.py:17
msgid "places marks to select text to copy to the clipboard"
msgstr ""
"Establece marcas para seleccionar texto que será copiado al portapapeles"
#: ../src/fenrir/commands/commands/set_mark.py:21
msgid "no review cursor"
msgstr "No hay cursor de revisión"
#: ../src/fenrir/commands/commands/set_mark.py:26
#: ../src/fenrir/commands/commands/set_mark.py:28
msgid "set mark"
msgstr "Marcar"
#: ../src/fenrir/commands/commands/set_window_application.py:17
msgid "set Window Mode, needs 2 marks "
msgstr "se necesitan dos marcas para establecer el modo ventana"
#: ../src/fenrir/commands/commands/set_window_application.py:22
msgid "Window Mode on for application {0}"
msgstr "El modo de ventana está activado para la aplicación {0}"
#: ../src/fenrir/commands/commands/set_window_application.py:25
msgid "Set window begin and end marks"
msgstr "Establece una marca de principio y otra para el final de la ventana"
#: ../src/fenrir/commands/commands/shut_up.py:17
msgid "interrupts the current presentation"
msgstr "Interrumpe el habla y braille."
#: ../src/fenrir/commands/commands/spell_check.py:26
msgid "checks the spelling of the current word"
msgstr "Revisa la ortografía para la palabra actual"
#: ../src/fenrir/commands/commands/spell_check.py:52
#: ../src/fenrir/commands/onInput/62000-spell_check.py:132
msgid "misspelled"
msgstr "mal escrito"
#: ../src/fenrir/commands/commands/spell_check.py:54
msgid "correct"
msgstr "Correcto"
#: ../src/fenrir/commands/commands/subprocess.py:21
msgid "script: {0} fullpath: {1}"
msgstr "Script: {0} Ruta de archivo: {1}"
#: ../src/fenrir/commands/commands/subprocess.py:24
msgid "scriptfile does not exist"
msgstr "el archivo del script no existe"
#: ../src/fenrir/commands/commands/subprocess.py:27
msgid "scriptfile is not a file"
msgstr "El script no es un archivo"
#: ../src/fenrir/commands/commands/subprocess.py:30
msgid "scriptfile is not executable"
msgstr "el script no es ejecutable"
#: ../src/fenrir/commands/commands/temp_disable_speech.py:17
#: ../src/fenrir/commands/onInput/15000-enable_temp_speech.py:17
msgid "disables speech until next keypress"
msgstr "Desactiva el habla hasta la siguiente pulsación de teclas"
#: ../src/fenrir/commands/commands/temp_disable_speech.py:21
msgid "speech temporary disabled"
msgstr "Habla desactivada temporalmente"
#: ../src/fenrir/commands/commands/time.py:18
msgid "presents the time"
msgstr "Lee la hora"
#: ../src/fenrir/commands/commands/toggle_auto_read.py:16
msgid "enables or disables automatic reading of new text as it appears"
msgstr ""
"Activa o desactiva la lectura de texto cuando hay nuevo contenido en la "
"pantalla"
#: ../src/fenrir/commands/commands/toggle_auto_read.py:21
msgid "autoread enabled"
msgstr "Lectura automática activada"
#: ../src/fenrir/commands/commands/toggle_auto_read.py:23
msgid "autoread disabled"
msgstr "Lectura automática desactivada"
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:17
msgid "enables or disables automatic spell checking"
msgstr "Activa o desactiva la corrección ortográfica automática"
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:22
msgid "auto spellcheck enabled"
msgstr "corrección ortográfica automática activada"
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:24
msgid "auto spellcheck disabled"
msgstr "corrección ortográfica automática desactivada"
#: ../src/fenrir/commands/commands/toggle_auto_time.py:16
msgid "enables or disables automatic reading of time after an period"
msgstr ""
"Activa o desactiva la lectura automática de la hora después de un intervalo "
"de tiempo"
#: ../src/fenrir/commands/commands/toggle_auto_time.py:21
msgid "autotime enabled"
msgstr "lectura automática de hora activada"
#: ../src/fenrir/commands/commands/toggle_auto_time.py:23
msgid "autotime disabled"
msgstr "Lectura automática de hora desactivada"
#: ../src/fenrir/commands/commands/toggle_braille.py:17
msgid "enables and disables output in braille"
@ -228,6 +728,7 @@ msgid "emoticons disabled"
msgstr "Emoticonos desactivados"
#: ../src/fenrir/commands/commands/toggle_highlight_tracking.py:16
#: ../src/fenrir/commands/onInput/56000-highlight_tracking.py:16
msgid "enables or disables tracking of highlighted"
msgstr "Activa o desactiva el seguimiento de texto resaltado"
@ -276,6 +777,7 @@ msgid "speech disabled"
msgstr "Habla desactivada"
#: ../src/fenrir/commands/commands/toggle_speech.py:24
#: ../src/fenrir/commands/onInput/15000-enable_temp_speech.py:28
msgid "speech enabled"
msgstr "Habla activada"
@ -296,3 +798,43 @@ msgstr ""
"Has entrado al tutorial. En este modo las combinaciones de teclado no se "
"ejecutarán pero te darán una descripción de lo que hacen. Para salir del "
"tutorial, presiona la misma combinación de teclado de nuevo."
#: ../src/fenrir/commands/onInput/80000-capslock.py:22
msgid "Capslock on"
msgstr "Bloqueo mayúsculas activado"
#: ../src/fenrir/commands/onInput/80000-capslock.py:24
msgid "Capslock off"
msgstr "Bloqueo mayúsculas desactivado"
#: ../src/fenrir/commands/onInput/80300-scrolllock.py:22
msgid "Scrolllock on"
msgstr "Bloqueo de desplazamiento activado"
#: ../src/fenrir/commands/onInput/80300-scrolllock.py:24
msgid "Scrolllock off"
msgstr "Bloqueo de desplazamiento desactivado"
#: ../src/fenrir/commands/onInput/80500-numlock.py:22
msgid "Numlock on"
msgstr "Bloqueo numérico activado"
#: ../src/fenrir/commands/onInput/80500-numlock.py:24
msgid "Numlock off"
msgstr "Bloqueo numérico desactivado"
#: ../src/fenrir/commands/onScreenChanged/80000-screen_change_announcement.py:20
msgid "screen {0}"
msgstr "pantalla {0}"
#: ../src/fenrir/commands/onScreenUpdate/76000-time.py:66
msgid "Autotime: {0}"
msgstr "Hora automática: {0}"
#: ../src/fenrir/fenrir.py:24
msgid "Start Fenrir"
msgstr "Iniciando fenrir"
#: ../src/fenrir/fenrir.py:99
msgid "Quit Fenrir"
msgstr "Cerrando Fenrir"

View File

@ -0,0 +1,48 @@
#!/bin/python
iDevices = {}
iDeviceNo = 0
def updateInputDevices(force = False, init = False):
global iDeviceNo
if init:
iDevices = {}
iDeviceNo = 0
deviceFileList = evdev.list_devices()
if not force:
if len(deviceFileList) == iDeviceNo:
return
iDeviceNo = len(deviceFileList)
mode = 'ALL'
iDevicesFiles = []
for device in iDevices:
iDevicesFiles.append(iDevices[device].fn)
print(len(iDevicesFiles),len(deviceFileList))
if len(iDevicesFiles) == len(deviceFileList):
return
for deviceFile in deviceFileList:
try:
if deviceFile in iDevicesFiles:
print('skip')
continue
open(deviceFile)
# 3 pos absolute
# 2 pos relative
# 1 Keys
currDevice = evdev.InputDevice(deviceFile)
cap = currDevice.capabilities()
if mode in ['ALL','NOMICE']:
if 1 in cap:
if 116 in cap[1] and len(cap[1]) < 5:
print('power')
continue
if mode == 'ALL':
iDevices[currDevice.fd] = currDevice
print('Device added:' + iDevices[currDevice.fd].name)
elif mode == 'NOMICE':
if not ((2 in cap) or (3 in cap)):
iDevices[currDevice.fd] = currDevice
print('Device added:' + iDevices[currDevice.fd].name)
elif currDevice.name.upper() in mode.split(','):
iDevices[currDevice.fd] = currDevice
print('Device added:' + iDevices[currDevice.fd].name)
except Exception as e:
print("Skip Inputdevice : " + deviceFile +' ' + str(e))

View File

@ -14,13 +14,13 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'displays the position of the review cursor'
return _('displays the position of the review cursor')
def run(self):
# Prefer review cursor over text cursor
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
self.env['runtime']['outputManager'].presentText("line "+ str(cursorPos['y']+1) + " column "+ str(cursorPos['x']+1), interrupt=True)
self.env['runtime']['outputManager'].presentText(_("line {0}, column {1}").format(cursorPos['y']+1, cursorPos['x']+1), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'read to end of line, use review cursor if you are in reviewmode, otherwhise use text cursor'
return _('read to end of line, use review cursor if you are in review mode, otherwhise use text cursor')
def run(self):
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
@ -24,7 +24,7 @@ class command():
line_utils.getCurrentLine(cursorPos['x'], cursorPos['y'], self.env['screenData']['newContentText'])
if currLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText(currLine[cursorPos['x']], interrupt=True)
self.env['runtime']['outputManager'].announceActiveCursor()

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'presents the date'
return _('presents the date')
def run(self):
dateFormat = self.env['runtime']['settingsManager'].getSetting('general', 'dateFormat')

View File

@ -0,0 +1,39 @@
#!/bin/python
# -*- coding: utf-8 -*-
# Fenrir TTY screen reader
# By Chrys, Storm Dragon, and contributers.
initialized = False
try:
import alsaaudio
initialized = True
except:
pass
from core import debug
class command():
def __init__(self):
pass
def initialize(self, environment):
self.env = environment
def shutdown(self):
pass
def getDescription(self):
return _("Decrease system volume")
def run(self):
if not initialized:
self.env['runtime']['outputManager'].presentText(_('alsaaudio is not installed'), interrupt=True)
return
mixer = alsaaudio.Mixer()
value = mixer.getvolume()[0]
value = value - 5
if value < 5:
value = 5
mixer.setvolume(value)
self.env['runtime']['outputManager'].presentText(_("{0} percent system volume").format(value), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'decrease sound volume'
return _('decrease sound volume')
def run(self):
@ -26,7 +26,7 @@ class command():
value = 0.1
self.env['runtime']['settingsManager'].setSetting('sound', 'volume', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent sound volume", soundIcon='SoundOff', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("{0} percent sound volume").format(int(value * 100)), soundIcon='SoundOff', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'decreases the pitch of the speech'
return _('decreases the pitch of the speech')
def run(self):
value = self.env['runtime']['settingsManager'].getSettingAsFloat('speech', 'pitch')
@ -23,8 +23,7 @@ class command():
if value < 0.0:
value = 0.0
self.env['runtime']['settingsManager'].setSetting('speech', 'pitch', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent speech pitch", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('{0} percent speech pitch').format(int(value * 100)), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'decreases the rate of the speech'
return _('decreases the rate of the speech')
def run(self):
value = self.env['runtime']['settingsManager'].getSettingAsFloat('speech', 'rate')
@ -24,7 +24,7 @@ class command():
value = 0.0
self.env['runtime']['settingsManager'].setSetting('speech', 'rate', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent speech rate", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("{0} percent speech rate").format(int(value * 100)), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'decreases the volume of the speech'
return _('decreases the volume of the speech')
def run(self):
value = self.env['runtime']['settingsManager'].getSettingAsFloat('speech', 'volume')
@ -24,7 +24,7 @@ class command():
value = 0.1
self.env['runtime']['settingsManager'].setSetting('speech', 'volume', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent speech volume", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("{0} percent speech volume").format(int(value * 100)), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -14,15 +14,15 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'exits review mode'
return _('exits review mode')
def run(self):
if not self.env['runtime']['cursorManager'].isReviewMode():
self.env['runtime']['outputManager'].presentText("Not in review mode", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Not in review mode"), interrupt=True)
return
self.env['runtime']['cursorManager'].clearReviewCursor()
self.env['runtime']['outputManager'].presentText("leve review mode", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("leave review mode"), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -18,7 +18,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'export the current fenrir clipboard to X clipboard'
return _('export the current fenrir clipboard to X clipboard')
def run(self):
_thread.start_new_thread(self._threadRun , ())
@ -26,16 +26,16 @@ class command():
try:
currClipboard = self.env['commandBuffer']['currClipboard']
if currClipboard < 0:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
if not self.env['commandBuffer']['clipboard']:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
if not self.env['commandBuffer']['clipboard'][currClipboard]:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
if self.env['commandBuffer']['clipboard'][currClipboard] == '':
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
p = Popen('su -c "echo -n \"' + self.env['commandBuffer']['clipboard'][currClipboard] +'\" | xclip -selection c' + self.env['generalInformation']['currUser'] , stdout=PIPE, stderr=PIPE, shell=True)

View File

@ -14,11 +14,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'selects the first clipboard'
return _('selects the first clipboard')
def run(self):
if len(self.env['commandBuffer']['clipboard']) == 0:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
self.env['commandBuffer']['currClipboard'] = 0
self.env['runtime']['outputManager'].presentText(self.env['commandBuffer']['clipboard'][self.env['commandBuffer']['currClipboard']], interrupt=True)

View File

@ -14,11 +14,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'sends the following keypress to the terminal'
return _('sends the following keypress to the terminal')
def run(self):
self.env['input']['keyForeward'] = 3
self.env['runtime']['outputManager'].presentText('Foreward next keypress', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Forward next keypress'), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -0,0 +1,39 @@
#!/bin/python
# -*- coding: utf-8 -*-
# Fenrir TTY screen reader
# By Chrys, Storm Dragon, and contributers.
initialized = False
try:
import alsaaudio
initialized = True
except:
pass
from core import debug
class command():
def __init__(self):
pass
def initialize(self, environment):
self.env = environment
def shutdown(self):
pass
def getDescription(self):
return _("Increase system volume")
def run(self):
if not initialized:
self.env['runtime']['outputManager'].presentText(_('alsaaudio is not installed'), interrupt=True)
return
mixer = alsaaudio.Mixer()
value = mixer.getvolume()[0]
value = value + 5
if value > 100:
value = 100
mixer.setvolume(value)
self.env['runtime']['outputManager'].presentText(_("{0} percent system volume").format(value), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'adjusts the volume for in coming sounds'
return _('adjusts the volume for in coming sounds')
def run(self):
@ -26,7 +26,7 @@ class command():
value = 1.0
self.env['runtime']['settingsManager'].setSetting('sound', 'volume', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent sound volume", soundIcon='SoundOn', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("{0} percent sound volume").format(int(value * 100)), soundIcon='SoundOn', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'increases the pitch of the speech'
return _('increases the pitch of the speech')
def run(self):
value = self.env['runtime']['settingsManager'].getSettingAsFloat('speech', 'pitch')
@ -24,7 +24,7 @@ class command():
value = 1.0
self.env['runtime']['settingsManager'].setSetting('speech', 'pitch', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent speech pitch", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("{0} percent speech pitch").format(int(value * 100)), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'increase the speech rate'
return _('increase the speech rate')
def run(self):
value = self.env['runtime']['settingsManager'].getSettingAsFloat('speech', 'rate')
@ -24,7 +24,7 @@ class command():
value = 1.0
self.env['runtime']['settingsManager'].setSetting('speech', 'rate', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent speech rate", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("{0} percent speech rate").format(int(value * 100)), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'increase the speech volume'
return _('increase the speech volume')
def run(self):
value = self.env['runtime']['settingsManager'].getSettingAsFloat('speech', 'volume')
@ -24,7 +24,7 @@ class command():
value = 1.0
self.env['runtime']['settingsManager'].setSetting('speech', 'volume', str(value))
self.env['runtime']['outputManager'].presentText(str(int(value * 100)) + " percent speech volume", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("{0} percent speech volume").format(int(value * 100)), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'shows the indention level for the current line'
return _('shows the indention level for the current line')
def run(self):
# Prefer review cursor over text cursor
@ -28,9 +28,9 @@ class command():
line_utils.getCurrentLine(cursorPos['x'], cursorPos['y'], self.env['screenData']['newContentText'])
if currLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText("indent "+ str(len(currLine) - len(currLine.lstrip())), interrupt=True)
self.env['runtime']['outputManager'].presentText(_("indent {0}").format(len(currLine) - len(currLine.lstrip())), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -14,11 +14,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'selects the last clipboard'
return _('selects the last clipboard')
def run(self):
if len(self.env['commandBuffer']['clipboard']) == 0:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
self.env['commandBuffer']['currClipboard'] = len(self.env['commandBuffer']['clipboard']) -1
self.env['runtime']['outputManager'].presentText(self.env['commandBuffer']['clipboard'][self.env['commandBuffer']['currClipboard']], interrupt=True)

View File

@ -14,7 +14,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'displays the last received text'
return _('displays the last received text')
def run(self):
self.env['runtime']['outputManager'].presentText(self.env['screenData']['newDelta'], interrupt=True)

View File

@ -15,12 +15,12 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'speaks the currently selected text that will be copied to the clipboard'
return _('speaks the currently selected text that will be copied to the clipboard')
def run(self):
if not (self.env['commandBuffer']['Marks']['1'] and \
self.env['commandBuffer']['Marks']['2']):
self.env['runtime']['outputManager'].presentText("please set begin and endmark", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("please set begin and endmark"), interrupt=True)
return
# use the last first and the last setted mark as range
@ -30,7 +30,7 @@ class command():
marked = mark_utils.getTextBetweenMarks(startMark, endMark, self.env['screenData']['newContentText'])
if marked.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText(marked, interrupt=True)

View File

@ -14,16 +14,16 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'selects the next clipboard'
return _('selects the next clipboard')
def run(self):
if len(self.env['commandBuffer']['clipboard']) == 0:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
self.env['commandBuffer']['currClipboard'] += 1
if self.env['commandBuffer']['currClipboard'] > len(self.env['commandBuffer']['clipboard']) -1:
self.env['commandBuffer']['currClipboard'] = 0
self.env['runtime']['outputManager'].presentText('First clipboard ', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('First clipboard '), interrupt=True)
self.env['runtime']['outputManager'].presentText(self.env['commandBuffer']['clipboard'][self.env['commandBuffer']['currClipboard']], interrupt=False)
else:
self.env['runtime']['outputManager'].presentText(self.env['commandBuffer']['clipboard'][self.env['commandBuffer']['currClipboard']], interrupt=True)

View File

@ -15,21 +15,21 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'pastes the text from the currently selected clipboard'
return _('pastes the text from the currently selected clipboard')
def run(self):
currClipboard = self.env['commandBuffer']['currClipboard']
if currClipboard < 0:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
if not self.env['commandBuffer']['clipboard']:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
if not self.env['commandBuffer']['clipboard'][currClipboard]:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
if self.env['commandBuffer']['clipboard'][currClipboard] == '':
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
self.env['runtime']['outputManager'].presentText('paste clipboard', soundIcon='PasteClipboardOnScreen', interrupt=True)
time.sleep(0.01)

View File

@ -15,14 +15,14 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'present first line'
return _('present first line')
def run(self):
x, y, firstLine = \
line_utils.getCurrentLine(0, 0, self.env['screenData']['newContentText'])
if firstLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText(firstLine, interrupt=True)
def setCallback(self, callback):

View File

@ -15,14 +15,14 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'current line'
return _('current line')
def run(self):
x, y, lastLine = \
line_utils.getCurrentLine(0, self.env['screenData']['lines'] -1, self.env['screenData']['newContentText'])
if lastLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText(lastLine, interrupt=True)
def setCallback(self, callback):

View File

@ -14,16 +14,16 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'selects the previous clipboard'
return _('selects the previous clipboard')
def run(self):
if len(self.env['commandBuffer']['clipboard']) == 0:
self.env['runtime']['outputManager'].presentText('clipboard empty', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('clipboard empty'), interrupt=True)
return
self.env['commandBuffer']['currClipboard'] -= 1
if self.env['commandBuffer']['currClipboard'] < 0:
self.env['commandBuffer']['currClipboard'] = len(self.env['commandBuffer']['clipboard']) -1
self.env['runtime']['outputManager'].presentText('Last clipboard ', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Last clipboard '), interrupt=True)
self.env['runtime']['outputManager'].presentText(self.env['commandBuffer']['clipboard'][self.env['commandBuffer']['currClipboard']], interrupt=False)
else:
self.env['runtime']['outputManager'].presentText(self.env['commandBuffer']['clipboard'][self.env['commandBuffer']['currClipboard']], interrupt=True)

View File

@ -14,7 +14,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'exits Fenrir'
return _('exits Fenrir')
def run(self):
self.env['generalInformation']['running'] = False

View File

@ -14,11 +14,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'removes marks from selected text'
return _('removes marks from selected text')
def run(self):
self.env['runtime']['cursorManager'].clearMarks()
self.env['runtime']['outputManager'].presentText('Remove marks', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Remove marks'), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -24,14 +24,14 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'removes the current word from the exceptions dictionary'
return _('removes the current word from the exceptions dictionary')
def updateSpellLanguage(self):
self.spellChecker = enchant.Dict(self.env['runtime']['settingsManager'].getSetting('general', 'spellCheckLanguage'))
self.language = self.env['runtime']['settingsManager'].getSetting('general', 'spellCheckLanguage')
def run(self):
if not initialized:
self.env['runtime']['outputManager'].presentText('pychant is not installed', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('pyenchant is not installed'), interrupt=True)
return
if self.env['runtime']['settingsManager'].getSetting('general', 'spellCheckLanguage') != self.language:
try:
@ -47,9 +47,9 @@ class command():
currWord = currWord.strip(string.whitespace + '!"#$%&\()*+,-./:;<=§>?@[\\]^_{|}~')
if not currWord.isspace():
if self.spellChecker.is_removed(currWord):
self.env['runtime']['outputManager'].presentText(currWord + ' is already removed from dict',soundIcon='Cancel', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('{0} is already removed from dict').format(currWord,), soundIcon='Cancel', interrupt=True)
else:
self.spellChecker.remove(currWord)
self.env['runtime']['outputManager'].presentText(currWord + ' removed',soundIcon='Accept', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('{0} removed').format(currWord,), soundIcon='Accept', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -14,11 +14,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'move review to bottom of screen'
return _('move review to bottom of screen')
def run(self):
self.env['screenData']['newCursorReview'] = { 'x': 0, 'y':self.env['screenData']['lines'] -1}
self.env['runtime']['outputManager'].presentText("Bottom", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("Bottom"), interrupt=True, flush=False)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'presents the current character.'
return _('presents the current character.')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set review and phonetically presents the current character'
return _('set review and phonetically presents the current character')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,7 +24,7 @@ class command():
char_utils.getCurrentChar(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if currChar.isspace():
self.env['runtime']['outputManager'].presentText("blank" ,interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
currChar = char_utils.getPhonetic(currChar)
self.env['runtime']['outputManager'].presentText(currChar ,interrupt=True, announceCapital=True, flush=False)

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'current line'
return _('current line')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,7 +24,7 @@ class command():
line_utils.getCurrentLine(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if currLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(currLine, interrupt=True, flush=False)
def setCallback(self, callback):

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'current word.'
return _('current word.')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,14 +24,14 @@ class command():
word_utils.getCurrentWord(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if currWord.isspace():
self.env['runtime']['outputManager'].presentText("blank", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(currWord, interrupt=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -16,7 +16,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'phonetically spells the current word and set review to it'
return _('phonetically spells the current word and set review to it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,7 +24,7 @@ class command():
word_utils.getCurrentWord(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if currWord.isspace():
self.env['runtime']['outputManager'].presentText("blank", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
firstSequence = True
for c in currWord:
@ -33,9 +33,9 @@ class command():
firstSequence = False
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set review cursor to char below the current char and present it.'
return _('set review cursor to char below the current char and present it.')
def run(self):
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
@ -24,6 +24,6 @@ class command():
self.env['runtime']['outputManager'].presentText(downChar ,interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set review cursor to begin of current line and display the content'
return _('set review cursor to begin of current line and display the content')
def run(self):
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
@ -24,10 +24,10 @@ class command():
char_utils.getCurrentChar(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if currChar.isspace():
self.env['runtime']['outputManager'].presentText("blank" ,interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(currChar ,interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
self.env['runtime']['outputManager'].presentText("beginning of line", interrupt=False)
self.env['runtime']['outputManager'].presentText(_("beginning of line"), interrupt=False)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set review cursor to end of current line and display the content'
return _('set review cursor to end of current line and display the content')
def run(self):
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
@ -24,7 +24,7 @@ class command():
char_utils.getCurrentChar(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
self.env['runtime']['outputManager'].presentText(currChar ,interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
self.env['runtime']['outputManager'].presentText("end of line", interrupt=False)
self.env['runtime']['outputManager'].presentText(_("end of line"), interrupt=False)
def setCallback(self, callback):
pass

View File

@ -16,21 +16,21 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set review cursor to end of current line and display the content'
return _('set review cursor to end of current line and display the content')
def run(self):
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
x, y, currLine = \
line_utils.getCurrentLine(cursorPos['x'], cursorPos['y'], self.env['screenData']['newContentText'])
if currLine.isspace():
self.env['runtime']['outputManager'].presentText("line is empty" ,interrupt=True)
self.env['runtime']['outputManager'].presentText(_("line is empty"), interrupt=True)
return
self.env['runtime']['cursorManager'].setReviewCursorPosition((len(currLine) - len(currLine.lstrip())), cursorPos['y'])
self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], currChar = \
char_utils.getCurrentChar(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
self.env['runtime']['outputManager'].presentText(currChar ,interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
self.env['runtime']['outputManager'].presentText("first char in line indent " + str(len(currLine) - len(currLine.lstrip())), interrupt=False)
self.env['runtime']['outputManager'].presentText(_("first char in line indent {0}").format(str(len(currLine) - len(currLine.lstrip()))), interrupt=False)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set review cursor to end of current line and display the content'
return _('set review cursor to end of current line and display the content')
def run(self):
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
@ -24,7 +24,7 @@ class command():
char_utils.getLastCharInLine(self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
self.env['runtime']['outputManager'].presentText(lastChar ,interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
self.env['runtime']['outputManager'].presentText("last char in line", interrupt=False)
self.env['runtime']['outputManager'].presentText(_("last char in line"), interrupt=False)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'moves review to the next character and presents it'
return _('moves review to the next character and presents it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -25,9 +25,9 @@ class command():
self.env['runtime']['outputManager'].presentText(nextChar, interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'phonetically presents the next character and set review to it'
return _('phonetically presents the next character and set review to it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -27,9 +27,9 @@ class command():
self.env['runtime']['outputManager'].presentText(nextChar ,interrupt=True, announceCapital=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'moves review to the next line and presents it'
return _('moves review to the next line and presents it')
def run(self):
self.env['screenData']['oldCursorReview'] = self.env['screenData']['newCursorReview']
@ -26,11 +26,11 @@ class command():
line_utils.getNextLine(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if nextLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(nextLine, interrupt=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'moves review to the next word and presents it'
return _('moves review to the next word and presents it')
def run(self):
self.env['screenData']['oldCursorReview'] = self.env['screenData']['newCursorReview']
@ -26,14 +26,14 @@ class command():
word_utils.getNextWord(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if nextWord.isspace():
self.env['runtime']['outputManager'].presentText("blank", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(nextWord, interrupt=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -16,7 +16,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'phonetically spells the current word and set review to it'
return _('phonetically spells the current word and set review to it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,7 +24,7 @@ class command():
word_utils.getNextWord(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if nextWord.isspace():
self.env['runtime']['outputManager'].presentText("blank", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
firstSequence = True
for c in nextWord:
@ -33,9 +33,9 @@ class command():
firstSequence = False
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'moves review to the previous character and presents it'
return _('moves review to the previous character and presents it')
def run(self):
self.env['screenData']['oldCursorReview'] = self.env['screenData']['newCursorReview']
@ -28,9 +28,9 @@ class command():
self.env['runtime']['outputManager'].presentText(prevChar, interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'phonetically presents the previous character and set review to it'
return _('phonetically presents the previous character and set review to it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -27,9 +27,9 @@ class command():
self.env['runtime']['outputManager'].presentText(prevChar ,interrupt=True, announceCapital=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'moves review to the previous line and presents it'
return _('moves review to the previous line and presents it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,12 +24,12 @@ class command():
line_utils.getPrevLine(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if prevLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(prevLine, interrupt=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'moves review focus to the previous word and presents it'
return _('moves review focus to the previous word and presents it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,14 +24,14 @@ class command():
word_utils.getPrevWord(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if prevWord.isspace():
self.env['runtime']['outputManager'].presentText("blank", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(prevWord, interrupt=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=False, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=False, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -16,7 +16,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'phonetically spells the current word and set review to it'
return _('phonetically spells the current word and set review to it')
def run(self):
self.env['runtime']['cursorManager'].enterReviewModeCurrTextCursor()
@ -24,7 +24,7 @@ class command():
word_utils.getPrevWord(self.env['screenData']['newCursorReview']['x'], self.env['screenData']['newCursorReview']['y'], self.env['screenData']['newContentText'])
if prevWord.isspace():
self.env['runtime']['outputManager'].presentText("blank", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), interrupt=True, flush=False)
else:
firstSequence = True
for c in prevWord:
@ -33,9 +33,9 @@ class command():
firstSequence = False
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'move review to top of screen'
return _('move review to top of screen')
def run(self):
self.env['screenData']['newCursorReview'] = {'x':0,'y':0}
self.env['runtime']['outputManager'].presentText("Top", interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("Top"), interrupt=True, flush=False)
def setCallback(self, callback):
pass

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set review cursor to the char in the line below and present it'
return _('set review cursor to the char in the line below and present it')
def run(self):
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
@ -24,9 +24,9 @@ class command():
self.env['runtime']['outputManager'].presentText(upChar ,interrupt=True, ignorePunctuation=True, announceCapital=True, flush=False)
if endOfScreen:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'endOfScreen'):
self.env['runtime']['outputManager'].presentText('end of screen' ,interrupt=True, soundIcon='EndOfScreen')
self.env['runtime']['outputManager'].presentText(_('end of screen'), interrupt=True, soundIcon='EndOfScreen')
if lineBreak:
if self.env['runtime']['settingsManager'].getSettingAsBool('review', 'lineBreak'):
self.env['runtime']['outputManager'].presentText('line break' ,interrupt=False, soundIcon='EndOfLine')
self.env['runtime']['outputManager'].presentText(_('line break'), interrupt=False, soundIcon='EndOfLine')
def setCallback(self, callback):
pass

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -15,11 +15,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Bookmark ' + self.ID
return _('set Bookmark {0}').format(self.ID,)
def run(self):
if not self.env['commandBuffer']['Marks']['1']:
self.env['runtime']['outputManager'].presentText("No Mark found", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("No Mark found"), interrupt=True)
return
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['commandBuffer']['bookMarks'][self.ID][currApp] = {}
@ -29,7 +29,7 @@ class command():
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = self.env['commandBuffer']['Marks']['2'].copy()
else:
self.env['commandBuffer']['bookMarks'][self.ID][currApp]['2'] = None
self.env['runtime']['outputManager'].presentText('Bookmark ' + self.ID + " set for application " + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Bookmark {0} set for application {1}').format(self.ID, currApp), interrupt=True)
self.env['commandBuffer']['Marks']['1'] = None
self.env['commandBuffer']['Marks']['2'] = None
def setCallback(self, callback):

View File

@ -14,17 +14,17 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'places marks to select text to copy to the clipboard'
return _('places marks to select text to copy to the clipboard')
def run(self):
if not self.env['runtime']['cursorManager'].isReviewMode():
self.env['runtime']['outputManager'].presentText('no review cursor', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('no review cursor'), interrupt=True)
return
currMark = self.env['runtime']['cursorManager'].setMark()
if currMark == 1:
self.env['runtime']['outputManager'].presentText('set mark',soundIcon='PlaceStartMark', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('set mark'), soundIcon='PlaceStartMark', interrupt=True)
elif currMark == 2:
self.env['runtime']['outputManager'].presentText('set mark',soundIcon='PlaceEndMark', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('set mark'),soundIcon='PlaceEndMark', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -14,15 +14,15 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'set Window Mode, needs 2 marks '
return _('set Window Mode, needs 2 marks ')
def run(self):
if self.env['runtime']['cursorManager'].setWindowForApplication():
currApp = self.env['runtime']['applicationManager'].getCurrentApplication()
self.env['runtime']['outputManager'].presentText('Window Mode on for application ' + currApp, interrupt=True)
self.env['runtime']['outputManager'].presentText(_('Window Mode on for application {0}').format(currApp), interrupt=True)
self.env['runtime']['cursorManager'].clearMarks()
else:
self.env['runtime']['outputManager'].presentText("Set window beginn and end marks", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Set window begin and end marks"), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -14,7 +14,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'interrupts the current presentation'
return _('interrupts the current presentation')
def run(self):
if len(self.env['input']['prevDeepestInput']) > len(self.env['input']['currInput']):
return

View File

@ -23,17 +23,17 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'checks the spelling of the current word'
return _('checks the spelling of the current word')
def updateSpellLanguage(self):
if not initialized:
self.env['runtime']['outputManager'].presentText('pychant is not installed', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('pyenchant is not installed'), interrupt=True)
return
self.spellChecker = enchant.Dict(self.env['runtime']['settingsManager'].getSetting('general', 'spellCheckLanguage'))
self.language = self.env['runtime']['settingsManager'].getSetting('general', 'spellCheckLanguage')
def run(self):
if not initialized:
self.env['runtime']['outputManager'].presentText('pychant is not installed', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('pyenchant is not installed'), interrupt=True)
return
if self.env['runtime']['settingsManager'].getSetting('general', 'spellCheckLanguage') != self.language:
try:
@ -49,8 +49,8 @@ class command():
if not currWord.isspace():
if not self.spellChecker.check(currWord):
self.env['runtime']['outputManager'].presentText('misspelled',soundIcon='mispell', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('misspelled'),soundIcon='mispell', interrupt=True)
elif not ignore:
self.env['runtime']['outputManager'].presentText('correct',soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_('correct'),soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -18,16 +18,16 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'script: ' + os.path.basename(self.scriptPath) + ' fullpath: '+ self.scriptPath
return _('script: {0} fullpath: {1}').format(os.path.basename(self.scriptPath), self.scriptPath)
def run(self):
if not os.path.exists(self.scriptPath):
self.env['runtime']['outputManager'].presentText('scriptfile does not exist' , soundIcon='', interrupt=False)
self.env['runtime']['outputManager'].presentText(_('scriptfile does not exist'), soundIcon='', interrupt=False)
return
if not os.path.isfile(self.scriptPath):
self.env['runtime']['outputManager'].presentText('scriptfile is not a file' , soundIcon='', interrupt=False)
self.env['runtime']['outputManager'].presentText(_('scriptfile is not a file'), soundIcon='', interrupt=False)
return
if not os.access(self.scriptPath, os.X_OK):
self.env['runtime']['outputManager'].presentText('scriptfile is not executable' , soundIcon='', interrupt=False)
self.env['runtime']['outputManager'].presentText(_('scriptfile is not executable'), soundIcon='', interrupt=False)
return
_thread.start_new_thread(self._threadRun , ())

View File

@ -14,11 +14,11 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'disables speech until next keypress'
return _('disables speech until next keypress')
def run(self):
if self.env['runtime']['settingsManager'].getSettingAsBool('speech', 'enabled'):
self.env['runtime']['outputManager'].presentText("speech temporary disabled", soundIcon='SpeechOff', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("speech temporary disabled"), soundIcon='SpeechOff', interrupt=True)
self.env['commandBuffer']['enableSpeechOnKeypress'] = True
self.env['runtime']['settingsManager'].setSetting('speech', 'enabled', str(not self.env['runtime']['settingsManager'].getSettingAsBool('speech', 'enabled')))
self.env['runtime']['outputManager'].interruptOutput()

View File

@ -15,7 +15,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'presents the time'
return _('presents the time')
def run(self):
timeFormat = self.env['runtime']['settingsManager'].getSetting('general', 'timeFormat')

View File

@ -13,14 +13,14 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'enables or disables automatic reading of new text as it appears'
return _('enables or disables automatic reading of new text as it appears')
def run(self):
self.env['runtime']['settingsManager'].setSetting('speech', 'autoReadIncoming', str(not self.env['runtime']['settingsManager'].getSettingAsBool('speech', 'autoReadIncoming')))
if self.env['runtime']['settingsManager'].getSettingAsBool('speech', 'autoReadIncoming'):
self.env['runtime']['outputManager'].presentText("autoread enabled", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("autoread enabled"), soundIcon='', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText("autoread disabled", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("autoread disabled"), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -14,14 +14,14 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'enables or disables automatic spell checking'
return _('enables or disables automatic spell checking')
def run(self):
self.env['runtime']['settingsManager'].setSetting('general', 'autoSpellCheck', str(not self.env['runtime']['settingsManager'].getSettingAsBool('general', 'autoSpellCheck')))
if self.env['runtime']['settingsManager'].getSettingAsBool('general', 'autoSpellCheck'):
self.env['runtime']['outputManager'].presentText("auto spellcheck enabled", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("auto spellcheck enabled"), soundIcon='', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText("auto spellcheck disabled", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("auto spellcheck disabled"), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -13,14 +13,14 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'enables or disables automatic reading of time after an period'
return _('enables or disables automatic reading of time after an period')
def run(self):
self.env['runtime']['settingsManager'].setSetting('time', 'enabled', str(not self.env['runtime']['settingsManager'].getSettingAsBool('time', 'enabled')))
if self.env['runtime']['settingsManager'].getSettingAsBool('time', 'enabled'):
self.env['runtime']['outputManager'].presentText("autotime enabled", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("autotime enabled"), soundIcon='', interrupt=True)
else:
self.env['runtime']['outputManager'].presentText("autotime disabled", soundIcon='', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("autotime disabled"), soundIcon='', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -14,7 +14,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'disables speech until next keypress'
return _('disables speech until next keypress')
def run(self):
if self.env['runtime']['inputManager'].noKeyPressed():
@ -25,7 +25,7 @@ class command():
return
self.env['runtime']['settingsManager'].setSetting('speech', 'enabled', str(self.env['commandBuffer']['enableSpeechOnKeypress']))
self.env['commandBuffer']['enableSpeechOnKeypress'] = False
self.env['runtime']['outputManager'].presentText("speech enabled", soundIcon='SpeechOn', interrupt=True)
self.env['runtime']['outputManager'].presentText(_("speech enabled"), soundIcon='SpeechOn', interrupt=True)
def setCallback(self, callback):
pass

View File

@ -35,7 +35,7 @@ class command():
x, y, currLine = line_utils.getCurrentLine(self.env['screenData']['newCursor']['x'], self.env['screenData']['newCursor']['y'], self.env['screenData']['newContentText'])
if currLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(currLine, interrupt=True, flush=False)

View File

@ -13,7 +13,7 @@ class command():
def shutdown(self):
pass
def getDescription(self):
return 'enables or disables tracking of highlighted'
return _('enables or disables tracking of highlighted')
def run(self):
if not self.env['runtime']['settingsManager'].getSettingAsBool('focus', 'highlight'):

View File

@ -129,7 +129,7 @@ class command():
pass
if not self.spellChecker.check(currWord):
self.env['runtime']['outputManager'].presentText('misspelled',soundIcon='mispell', interrupt=False, flush=False)
self.env['runtime']['outputManager'].presentText(_('misspelled'), soundIcon='mispell', interrupt=False, flush=False)
def setCallback(self, callback):
pass

View File

@ -47,7 +47,7 @@ class command():
announce = currLine
if currLine.isspace():
self.env['runtime']['outputManager'].presentText("blank", soundIcon='EmptyLine', interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("blank"), soundIcon='EmptyLine', interrupt=True, flush=False)
else:
self.env['runtime']['outputManager'].presentText(announce, interrupt=True, flush=False)
self.env['commandsIgnore']['onScreenUpdate']['CHAR_DELETE_ECHO'] = True

View File

@ -19,9 +19,9 @@ class command():
if self.env['input']['oldCapsLock'] == self.env['input']['newCapsLock']:
return
if self.env['input']['newCapsLock']:
self.env['runtime']['outputManager'].presentText("Capslock on", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Capslock on"), interrupt=True)
else:
self.env['runtime']['outputManager'].presentText("Capslock off", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Capslock off"), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -19,9 +19,9 @@ class command():
if self.env['input']['oldScrollLock'] == self.env['input']['newScrollLock']:
return
if self.env['input']['newScrollLock']:
self.env['runtime']['outputManager'].presentText("Scrolllock on", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Scrolllock on"), interrupt=True)
else:
self.env['runtime']['outputManager'].presentText("Scrolllock off", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Scrolllock off"), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -19,9 +19,9 @@ class command():
if self.env['input']['oldNumLock'] == self.env['input']['newNumLock']:
return
if self.env['input']['newNumLock']:
self.env['runtime']['outputManager'].presentText("Numlock on", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Numlock on"), interrupt=True)
else:
self.env['runtime']['outputManager'].presentText("Numlock off", interrupt=True)
self.env['runtime']['outputManager'].presentText(_("Numlock off"), interrupt=True)
def setCallback(self, callback):
pass

View File

@ -17,7 +17,7 @@ class command():
return 'No Description found'
def run(self):
self.env['runtime']['outputManager'].presentText("screen " + str(self.env['screenData']['newTTY']),soundIcon='ChangeTTY', interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(_("screen {0}").format(self.env['screenData']['newTTY']),soundIcon='ChangeTTY', interrupt=True, flush=False)
self.env['runtime']['outputManager'].presentText(self.env['screenData']['newContentText'], interrupt=False, flush=False)
def setCallback(self, callback):

View File

@ -63,7 +63,7 @@ class command():
if presentTime:
# present the time
self.env['runtime']['outputManager'].presentText('Autotime: ' + timeString , soundIcon='', interrupt=False)
self.env['runtime']['outputManager'].presentText(_('Autotime: {0}').format(timeString), soundIcon='', interrupt=False)
# and date if changes
if presentDate:
self.env['runtime']['outputManager'].presentText(dateString , soundIcon='', interrupt=False)

View File

@ -15,38 +15,17 @@ class commandManager():
def initialize(self, environment):
self.env = environment
# commands
self.env['runtime']['commandManager'].loadCommands('commands',
for commandFolder in self.env['generalInformation']['commandFolderList']:
self.env['runtime']['commandManager'].loadCommands(commandFolder,
self.env['runtime']['settingsManager'].getSetting('general', 'commandPath'))
self.env['runtime']['commandManager'].loadCommands('commands')
# onInput
self.env['runtime']['commandManager'].loadCommands('onInput',
self.env['runtime']['settingsManager'].getSetting('general', 'commandPath'))
self.env['runtime']['commandManager'].loadCommands('onInput')
# onScreenUpdate
self.env['runtime']['commandManager'].loadCommands('onScreenUpdate',
self.env['runtime']['settingsManager'].getSetting('general', 'commandPath'))
self.env['runtime']['commandManager'].loadCommands('onScreenUpdate')
# onScreenChanged
self.env['runtime']['commandManager'].loadCommands('onScreenChanged',
self.env['runtime']['settingsManager'].getSetting('general', 'commandPath'))
self.env['runtime']['commandManager'].loadCommands('onScreenChanged')
# onApplicationChange
self.env['runtime']['commandManager'].loadCommands('onApplicationChange',
self.env['runtime']['settingsManager'].getSetting('general', 'commandPath'))
self.env['runtime']['commandManager'].loadCommands('onApplicationChange')
# onSwitchApplicationProfile
self.env['runtime']['commandManager'].loadCommands('onSwitchApplicationProfile',
self.env['runtime']['settingsManager'].getSetting('general', 'commandPath'))
self.env['runtime']['commandManager'].loadCommands('onSwitchApplicationProfile')
self.env['runtime']['commandManager'].loadCommands(commandFolder)
# scripts for scriptKey
self.env['runtime']['commandManager'].loadScriptCommands()
def shutdown(self):
self.env['runtime']['commandManager'].shutdownCommands('commands')
self.env['runtime']['commandManager'].shutdownCommands('onInput')
self.env['runtime']['commandManager'].shutdownCommands('onScreenUpdate')
self.env['runtime']['commandManager'].shutdownCommands('onScreenChanged')
self.env['runtime']['commandManager'].shutdownCommands('onApplicationChange')
self.env['runtime']['commandManager'].shutdownCommands('onSwitchApplicationProfile')
for commandFolder in self.env['generalInformation']['commandFolderList']:
self.env['runtime']['commandManager'].shutdownCommands(commandFolder)
def loadCommands(self, section='commands',commandPath=''):
if commandPath =='':

View File

@ -11,4 +11,8 @@ generalInformation = {
'tutorialMode': False,
'currUser':'',
'prevUser':'',
'managerList':['punctuationManager','cursorManager','applicationManager','commandManager'
,'screenManager','inputManager','outputManager','debug'],
'commandFolderList':['commands','onInput','onScreenUpdate','onScreenChanged'
,'onApplicationChange','onSwitchApplicationProfile',],
}

View File

@ -21,7 +21,7 @@ class fenrir():
raise RuntimeError('Cannot Initialize. Maybe the configfile is not available or not parseable')
except RuntimeError:
raise
self.environment['runtime']['outputManager'].presentText("Start Fenrir", soundIcon='ScreenReaderOn', interrupt=True)
self.environment['runtime']['outputManager'].presentText(_("Start Fenrir"), soundIcon='ScreenReaderOn', interrupt=True)
signal.signal(signal.SIGINT, self.captureSignal)
signal.signal(signal.SIGTERM, self.captureSignal)
self.wasCommand = False
@ -35,8 +35,8 @@ class fenrir():
self.shutdown()
def handleProcess(self):
#startTime = time.time()
eventReceived = self.environment['runtime']['inputManager'].getInputEvent()
startTime = time.time()
if eventReceived:
self.prepareCommand()
if not (self.wasCommand or self.environment['generalInformation']['tutorialMode']) or self.environment['runtime']['screenManager'].isSuspendingScreen():
@ -65,7 +65,7 @@ class fenrir():
self.environment['runtime']['commandManager'].executeDefaultTrigger('onScreenUpdate')
#self.environment['runtime']['outputManager'].brailleText(flush=False)
self.handleCommands()
#print(time.time()-startTime)
print(time.time()-startTime)
def prepareCommand(self):
if self.environment['runtime']['screenManager'].isSuspendingScreen():
@ -84,7 +84,6 @@ class fenrir():
self.environment['runtime']['commandManager'].queueCommand(command)
def handleCommands(self):
if not self.environment['runtime']['commandManager'].isCommandQueued():
return
@ -97,35 +96,11 @@ class fenrir():
self.shutdownRequest()
def shutdown(self):
if self.environment['runtime']['inputManager']:
self.environment['runtime']['inputManager'].shutdown()
del self.environment['runtime']['inputManager']
self.environment['runtime']['outputManager'].presentText("Quit Fenrir", soundIcon='ScreenReaderOff', interrupt=True)
time.sleep(0.9) # wait a little for sound
if self.environment['runtime']['screenManager']:
self.environment['runtime']['screenManager'].shutdown()
del self.environment['runtime']['screenManager']
if self.environment['runtime']['commandManager']:
self.environment['runtime']['commandManager'].shutdown()
del self.environment['runtime']['commandManager']
if self.environment['runtime']['outputManager']:
self.environment['runtime']['outputManager'].shutdown()
del self.environment['runtime']['outputManager']
if self.environment['runtime']['punctuationManager']:
self.environment['runtime']['punctuationManager'].shutdown()
del self.environment['runtime']['punctuationManager']
if self.environment['runtime']['cursorManager']:
self.environment['runtime']['cursorManager'].shutdown()
del self.environment['runtime']['cursorManager']
if self.environment['runtime']['applicationManager']:
self.environment['runtime']['applicationManager'].shutdown()
del self.environment['runtime']['applicationManager']
if self.environment['runtime']['debug']:
self.environment['runtime']['debug'].shutdown()
del self.environment['runtime']['debug']
time.sleep(0.2) # wait a little before splatter it :)
self.environment['runtime']['outputManager'].presentText(_("Quit Fenrir"), soundIcon='ScreenReaderOff', interrupt=True)
for currManager in self.environment['generalInformation']['managerList']:
if self.environment['runtime'][currManager]:
self.environment['runtime'][currManager].shutdown()
del self.environment['runtime'][currManager]
self.environment = None
def main():

View File

@ -22,7 +22,6 @@ class driver():
def __init__(self):
self.iDevices = {}
self.uDevices = {}
self.ledDevices = {}
self._initialized = False
def initialize(self, environment):
@ -36,21 +35,24 @@ class driver():
self.getInputDevices()
def shutdown(self):
pass
def getInputEvent(self):
if not self._initialized:
time.sleep(0.005) # dont flood CPU
return None
if not self.iDevices:
return None
if self.iDevices == {}:
return
def getInputEvent(self):
if not self.hasIDevices():
time.sleep(0.008) # dont flood CPU
return None
event = None
r, w, x = select(self.iDevices, [], [], self.env['runtime']['settingsManager'].getSettingAsFloat('screen', 'screenUpdateDelay'))
if r != []:
for fd in r:
try:
event = self.iDevices[fd].read_one()
except:
#print('jow')
self.removeDevice(fd)
return None
foreward = False
while(event):
self.env['input']['eventBuffer'].append( [self.iDevices[fd], self.uDevices[fd], event])
@ -107,21 +109,17 @@ class driver():
except Exception as e:
self.env['runtime']['debug'].writeDebugOut("Skip Inputdevice : " + dev +' ' + str(e),debug.debugLevel.ERROR)
self.iDevices = map(evdev.InputDevice, (readableDevices))
self.ledDevices = map(evdev.InputDevice, (readableDevices))
# 3 pos absolute
# 2 pos relative
# 17 LEDs
# 1 Keys
# we try to filter out mices and other stuff here
if self.env['runtime']['settingsManager'].getSetting('keyboard', 'device').upper() == 'ALL':
self.iDevices = {dev.fd: dev for dev in self.iDevices if 1 in dev.capabilities()}
self.ledDevices = {dev.fd: dev for dev in self.ledDevices if 1 in dev.capabilities() and 17 in dev.capabilities()}
elif self.env['runtime']['settingsManager'].getSetting('keyboard', 'device').upper() == 'NOMICE':
self.iDevices = {dev.fd: dev for dev in self.iDevices if 1 in dev.capabilities() and not 3 in dev.capabilities() and not 2 in dev.capabilities()}
self.ledDevices = {dev.fd: dev for dev in self.ledDevices if 1 in dev.capabilities() and 17 in dev.capabilities() and not 3 in dev.capabilities() and not 2 in dev.capabilities()}
else:
self.iDevices = {dev.fd: dev for dev in self.iDevices if dev.name.upper() in self.env['runtime']['settingsManager'].getSetting('keyboard', 'device').upper().split(',')}
self.ledDevices = {dev.fd: dev for dev in self.ledDevices if dev.name.upper() in self.env['runtime']['settingsManager'].getSetting('keyboard', 'device').upper().split(',')}
def mapEvent(self, event):
if not self._initialized:
@ -140,30 +138,29 @@ class driver():
return None
def getLedState(self, led = 0):
if not self._initialized:
return None
if not self.hasIDevices():
return False
# 0 = Numlock
# 1 = Capslock
# 2 = Rollen
if self.ledDevices == None:
return False
if self.ledDevices == {}:
return False
for fd, dev in self.ledDevices.items():
return led in dev.leds()
for fd, dev in self.iDevices.items():
if led in dev.leds():
return True
return False
def toggleLedState(self, led = 0):
if not self._initialized:
return None
if not self.hasIDevices():
return False
ledState = self.getLedState(led)
for i in self.ledDevices:
for i in self.iDevices:
# 17 LEDs
if 17 in self.iDevices[i].capabilities():
if ledState == 1:
self.ledDevices[i].set_led(led , 0)
self.iDevices[i].set_led(led , 0)
else:
self.ledDevices[i].set_led(led , 1)
self.iDevices[i].set_led(led , 1)
def grabDevices(self):
if not self._initialized:
return None
return
for fd in self.iDevices:
try:
self.uDevices[fd] = UInput.from_device(self.iDevices[fd].fn)
@ -199,11 +196,7 @@ class driver():
# #'/dev/uinput'
# )
# dev.grab()
def releaseDevices(self):
if not self._initialized:
return None
for fd in self.iDevices:
def removeDevice(self,fd):
try:
self.iDevices[fd].ungrab()
except:
@ -216,13 +209,34 @@ class driver():
self.uDevices[fd].close()
except:
pass
try:
del(self.iDevices[fd])
except:
pass
try:
del(self.uDevices[fd])
except:
pass
def hasIDevices(self):
if not self._initialized:
return False
if not self.iDevices:
return False
if len(self.iDevices) == 0:
return False
return True
def releaseDevices(self):
if not self.hasIDevices():
return
devices = self.iDevices.copy()
for fd in devices:
self.removeDevice(fd)
self.iDevices.clear()
self.uDevices.clear()
def __del__(self):
if not self._initialized:
return None
self.releaseDevices()
return

View File

@ -17,6 +17,7 @@ from utils import screen_utils
class driver():
def __init__(self):
self.vcsaDevicePath = '/dev/vcsa'
self.ListSessions = None
def initialize(self, environment):
self.env = environment
def shutdown(self):
@ -62,24 +63,18 @@ class driver():
return
except Exception as e:
self.env['runtime']['debug'].writeDebugOut(str(e),debug.debugLevel.ERROR)
return
def getSessionInformation(self):
progname = 'org.freedesktop.login1'
objpath = '/org/freedesktop/login1'
intfname = 'org.freedesktop.login1.Manager'
methname = 'ListSessions'
bus = dbus.SystemBus()
if not self.ListSessions:
obj = bus.get_object('org.freedesktop.login1', '/org/freedesktop/login1')
inf = dbus.Interface(obj, 'org.freedesktop.login1.Manager')
self.ListSessions = inf.get_dbus_method('ListSessions')
obj = bus.get_object(progname, objpath)
inf = dbus.Interface(obj, intfname)
meth = inf.get_dbus_method(methname)
sessions = meth()
sessions = self.ListSessions()
self.env['screenData']['autoIgnoreScreens'] = []
for session in sessions:
obj = bus.get_object(progname, session[4])
obj = bus.get_object('org.freedesktop.login1', session[4])
inf = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
sessionType = inf.Get('org.freedesktop.login1.Session', 'Type')
screen = str(inf.Get('org.freedesktop.login1.Session', 'TTY'))

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2017-02-20 10:45+UTC\n"
"POT-Creation-Date: 2017-02-26 22:19+UTC\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,6 +20,9 @@ msgid "adds the current word to the exceptions dictionary"
msgstr ""
#: ../src/fenrir/commands/commands/add_word_to_spell_check.py:34
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:34
#: ../src/fenrir/commands/commands/spell_check.py:29
#: ../src/fenrir/commands/commands/spell_check.py:36
msgid "pyenchant is not installed"
msgstr ""
@ -92,6 +95,24 @@ msgstr ""
#: ../src/fenrir/commands/commands/bookmark_9.py:43
#: ../src/fenrir/commands/commands/curr_screen_after_cursor.py:27
#: ../src/fenrir/commands/commands/curr_screen_before_cursor.py:30
#: ../src/fenrir/commands/commands/cursor_read_to_end_of_line.py:27
#: ../src/fenrir/commands/commands/indent_curr_line.py:31
#: ../src/fenrir/commands/commands/marked_text.py:33
#: ../src/fenrir/commands/commands/present_first_line.py:25
#: ../src/fenrir/commands/commands/present_last_line.py:25
#: ../src/fenrir/commands/commands/review_curr_char_phonetic.py:27
#: ../src/fenrir/commands/commands/review_curr_line.py:27
#: ../src/fenrir/commands/commands/review_curr_word.py:27
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:27
#: ../src/fenrir/commands/commands/review_line_begin.py:27
#: ../src/fenrir/commands/commands/review_next_line.py:29
#: ../src/fenrir/commands/commands/review_next_word.py:29
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:27
#: ../src/fenrir/commands/commands/review_prev_line.py:27
#: ../src/fenrir/commands/commands/review_prev_word.py:27
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:27
#: ../src/fenrir/commands/onInput/55000-present_line_if_cursor_change_vertical.py:38
#: ../src/fenrir/commands/onInput/72000-history.py:50
msgid "blank"
msgstr ""
@ -170,6 +191,18 @@ msgid "speaks the contents of the currently selected clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/curr_clipboard.py:21
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:29
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:32
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:35
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:38
#: ../src/fenrir/commands/commands/first_clipboard.py:21
#: ../src/fenrir/commands/commands/last_clipboard.py:21
#: ../src/fenrir/commands/commands/next_clipboard.py:21
#: ../src/fenrir/commands/commands/paste_clipboard.py:23
#: ../src/fenrir/commands/commands/paste_clipboard.py:26
#: ../src/fenrir/commands/commands/paste_clipboard.py:29
#: ../src/fenrir/commands/commands/paste_clipboard.py:32
#: ../src/fenrir/commands/commands/prev_clipboard.py:21
msgid "clipboard empty"
msgstr ""
@ -197,6 +230,460 @@ msgstr ""
msgid "presents the current line number for review cursor in review mode or the text cursor if not. Starts with 1"
msgstr ""
#: ../src/fenrir/commands/commands/cursor_position.py:17
msgid "displays the position of the review cursor"
msgstr ""
#: ../src/fenrir/commands/commands/cursor_position.py:23
msgid "line {0}, column {1}"
msgstr ""
#: ../src/fenrir/commands/commands/cursor_read_to_end_of_line.py:18
msgid "read to end of line, use review cursor if you are in review mode, otherwhise use text cursor"
msgstr ""
#: ../src/fenrir/commands/commands/date.py:18
msgid "presents the date"
msgstr ""
#: ../src/fenrir/commands/commands/dec_sound_volume.py:18
msgid "decrease sound volume"
msgstr ""
#: ../src/fenrir/commands/commands/dec_sound_volume.py:29
#: ../src/fenrir/commands/commands/inc_sound_volume.py:29
msgid "{0} percent sound volume"
msgstr ""
#: ../src/fenrir/commands/commands/dec_speech_pitch.py:18
msgid "decreases the pitch of the speech"
msgstr ""
#: ../src/fenrir/commands/commands/dec_speech_pitch.py:27
#: ../src/fenrir/commands/commands/inc_speech_pitch.py:27
msgid "{0} percent speech pitch"
msgstr ""
#: ../src/fenrir/commands/commands/dec_speech_rate.py:18
msgid "decreases the rate of the speech"
msgstr ""
#: ../src/fenrir/commands/commands/dec_speech_rate.py:27
#: ../src/fenrir/commands/commands/inc_speech_rate.py:27
msgid "{0} percent speech rate"
msgstr ""
#: ../src/fenrir/commands/commands/dec_speech_volume.py:18
msgid "decreases the volume of the speech"
msgstr ""
#: ../src/fenrir/commands/commands/dec_speech_volume.py:27
#: ../src/fenrir/commands/commands/inc_speech_volume.py:27
msgid "{0} percent speech volume"
msgstr ""
#: ../src/fenrir/commands/commands/exit_review.py:17
msgid "exits review mode"
msgstr ""
#: ../src/fenrir/commands/commands/exit_review.py:21
msgid "Not in review mode"
msgstr ""
#: ../src/fenrir/commands/commands/exit_review.py:25
msgid "leave review mode"
msgstr ""
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:21
msgid "export the current fenrir clipboard to X clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/first_clipboard.py:17
msgid "selects the first clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/forward_keypress.py:17
msgid "sends the following keypress to the terminal"
msgstr ""
#: ../src/fenrir/commands/commands/forward_keypress.py:21
msgid "Forward next keypress"
msgstr ""
#: ../src/fenrir/commands/commands/inc_sound_volume.py:18
msgid "adjusts the volume for in coming sounds"
msgstr ""
#: ../src/fenrir/commands/commands/inc_speech_pitch.py:18
msgid "increases the pitch of the speech"
msgstr ""
#: ../src/fenrir/commands/commands/inc_speech_rate.py:18
msgid "increase the speech rate"
msgstr ""
#: ../src/fenrir/commands/commands/inc_speech_volume.py:18
msgid "increase the speech volume"
msgstr ""
#: ../src/fenrir/commands/commands/indent_curr_line.py:18
msgid "shows the indention level for the current line"
msgstr ""
#: ../src/fenrir/commands/commands/indent_curr_line.py:33
msgid "indent {0}"
msgstr ""
#: ../src/fenrir/commands/commands/last_clipboard.py:17
msgid "selects the last clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/last_incoming.py:17
msgid "displays the last received text"
msgstr ""
#: ../src/fenrir/commands/commands/marked_text.py:18
msgid "speaks the currently selected text that will be copied to the clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/marked_text.py:23
msgid "please set begin and endmark"
msgstr ""
#: ../src/fenrir/commands/commands/next_clipboard.py:17
msgid "selects the next clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/next_clipboard.py:26
msgid "First clipboard "
msgstr ""
#: ../src/fenrir/commands/commands/paste_clipboard.py:18
msgid "pastes the text from the currently selected clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/present_first_line.py:18
msgid "present first line"
msgstr ""
#: ../src/fenrir/commands/commands/present_last_line.py:18
#: ../src/fenrir/commands/commands/review_curr_line.py:18
msgid "current line"
msgstr ""
#: ../src/fenrir/commands/commands/prev_clipboard.py:17
msgid "selects the previous clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/prev_clipboard.py:26
msgid "Last clipboard "
msgstr ""
#: ../src/fenrir/commands/commands/quit_fenrir.py:17
msgid "exits Fenrir"
msgstr ""
#: ../src/fenrir/commands/commands/remove_marks.py:17
msgid "removes marks from selected text"
msgstr ""
#: ../src/fenrir/commands/commands/remove_marks.py:21
msgid "Remove marks"
msgstr ""
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:27
msgid "removes the current word from the exceptions dictionary"
msgstr ""
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:50
msgid "{0} is already removed from dict"
msgstr ""
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:53
msgid "{0} removed"
msgstr ""
#: ../src/fenrir/commands/commands/review_bottom.py:17
msgid "move review to bottom of screen"
msgstr ""
#: ../src/fenrir/commands/commands/review_bottom.py:21
msgid "Bottom"
msgstr ""
#: ../src/fenrir/commands/commands/review_curr_char.py:18
msgid "presents the current character."
msgstr ""
#: ../src/fenrir/commands/commands/review_curr_char_phonetic.py:18
msgid "set review and phonetically presents the current character"
msgstr ""
#: ../src/fenrir/commands/commands/review_curr_word.py:18
msgid "current word."
msgstr ""
#: ../src/fenrir/commands/commands/review_curr_word.py:32
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:36
#: ../src/fenrir/commands/commands/review_down.py:27
#: ../src/fenrir/commands/commands/review_next_char.py:28
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:30
#: ../src/fenrir/commands/commands/review_next_line.py:34
#: ../src/fenrir/commands/commands/review_next_word.py:34
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:36
#: ../src/fenrir/commands/commands/review_prev_char.py:31
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:30
#: ../src/fenrir/commands/commands/review_prev_line.py:32
#: ../src/fenrir/commands/commands/review_prev_word.py:32
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:36
#: ../src/fenrir/commands/commands/review_up.py:27
msgid "end of screen"
msgstr ""
#: ../src/fenrir/commands/commands/review_curr_word.py:35
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:39
#: ../src/fenrir/commands/commands/review_next_char.py:31
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:33
#: ../src/fenrir/commands/commands/review_next_word.py:37
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:39
#: ../src/fenrir/commands/commands/review_prev_char.py:34
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:33
#: ../src/fenrir/commands/commands/review_prev_word.py:35
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:39
#: ../src/fenrir/commands/commands/review_up.py:30
msgid "line break"
msgstr ""
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:19
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:19
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:19
msgid "phonetically spells the current word and set review to it"
msgstr ""
#: ../src/fenrir/commands/commands/review_down.py:18
msgid "set review cursor to char below the current char and present it."
msgstr ""
#: ../src/fenrir/commands/commands/review_line_begin.py:18
msgid "set review cursor to begin of current line and display the content"
msgstr ""
#: ../src/fenrir/commands/commands/review_line_begin.py:30
msgid "beginning of line"
msgstr ""
#: ../src/fenrir/commands/commands/review_line_end.py:18
#: ../src/fenrir/commands/commands/review_line_first_char.py:19
#: ../src/fenrir/commands/commands/review_line_last_char.py:18
msgid "set review cursor to end of current line and display the content"
msgstr ""
#: ../src/fenrir/commands/commands/review_line_end.py:27
msgid "end of line"
msgstr ""
#: ../src/fenrir/commands/commands/review_line_first_char.py:26
msgid "line is empty"
msgstr ""
#: ../src/fenrir/commands/commands/review_line_first_char.py:33
msgid "first char in line indent {0}"
msgstr ""
#: ../src/fenrir/commands/commands/review_line_last_char.py:27
msgid "last char in line"
msgstr ""
#: ../src/fenrir/commands/commands/review_next_char.py:18
msgid "moves review to the next character and presents it"
msgstr ""
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:18
msgid "phonetically presents the next character and set review to it"
msgstr ""
#: ../src/fenrir/commands/commands/review_next_line.py:18
msgid "moves review to the next line and presents it"
msgstr ""
#: ../src/fenrir/commands/commands/review_next_word.py:18
msgid "moves review to the next word and presents it"
msgstr ""
#: ../src/fenrir/commands/commands/review_prev_char.py:18
msgid "moves review to the previous character and presents it"
msgstr ""
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:18
msgid "phonetically presents the previous character and set review to it"
msgstr ""
#: ../src/fenrir/commands/commands/review_prev_line.py:18
msgid "moves review to the previous line and presents it"
msgstr ""
#: ../src/fenrir/commands/commands/review_prev_word.py:18
msgid "moves review focus to the previous word and presents it"
msgstr ""
#: ../src/fenrir/commands/commands/review_top.py:18
msgid "move review to top of screen"
msgstr ""
#: ../src/fenrir/commands/commands/review_top.py:22
msgid "Top"
msgstr ""
#: ../src/fenrir/commands/commands/review_up.py:18
msgid "set review cursor to the char in the line below and present it"
msgstr ""
#: ../src/fenrir/commands/commands/set_bookmark_1.py:18
#: ../src/fenrir/commands/commands/set_bookmark_10.py:18
#: ../src/fenrir/commands/commands/set_bookmark_2.py:18
#: ../src/fenrir/commands/commands/set_bookmark_3.py:18
#: ../src/fenrir/commands/commands/set_bookmark_4.py:18
#: ../src/fenrir/commands/commands/set_bookmark_5.py:18
#: ../src/fenrir/commands/commands/set_bookmark_6.py:18
#: ../src/fenrir/commands/commands/set_bookmark_7.py:18
#: ../src/fenrir/commands/commands/set_bookmark_8.py:18
#: ../src/fenrir/commands/commands/set_bookmark_9.py:18
msgid "set Bookmark {0}"
msgstr ""
#: ../src/fenrir/commands/commands/set_bookmark_1.py:22
#: ../src/fenrir/commands/commands/set_bookmark_10.py:22
#: ../src/fenrir/commands/commands/set_bookmark_2.py:22
#: ../src/fenrir/commands/commands/set_bookmark_3.py:22
#: ../src/fenrir/commands/commands/set_bookmark_4.py:22
#: ../src/fenrir/commands/commands/set_bookmark_5.py:22
#: ../src/fenrir/commands/commands/set_bookmark_6.py:22
#: ../src/fenrir/commands/commands/set_bookmark_7.py:22
#: ../src/fenrir/commands/commands/set_bookmark_8.py:22
#: ../src/fenrir/commands/commands/set_bookmark_9.py:22
msgid "No Mark found"
msgstr ""
#: ../src/fenrir/commands/commands/set_bookmark_1.py:32
#: ../src/fenrir/commands/commands/set_bookmark_10.py:32
#: ../src/fenrir/commands/commands/set_bookmark_2.py:32
#: ../src/fenrir/commands/commands/set_bookmark_3.py:32
#: ../src/fenrir/commands/commands/set_bookmark_4.py:32
#: ../src/fenrir/commands/commands/set_bookmark_5.py:32
#: ../src/fenrir/commands/commands/set_bookmark_6.py:32
#: ../src/fenrir/commands/commands/set_bookmark_7.py:32
#: ../src/fenrir/commands/commands/set_bookmark_8.py:32
#: ../src/fenrir/commands/commands/set_bookmark_9.py:32
msgid "Bookmark {0} set for application {1}"
msgstr ""
#: ../src/fenrir/commands/commands/set_mark.py:17
msgid "places marks to select text to copy to the clipboard"
msgstr ""
#: ../src/fenrir/commands/commands/set_mark.py:21
msgid "no review cursor"
msgstr ""
#: ../src/fenrir/commands/commands/set_mark.py:26
#: ../src/fenrir/commands/commands/set_mark.py:28
msgid "set mark"
msgstr ""
#: ../src/fenrir/commands/commands/set_window_application.py:17
msgid "set Window Mode, needs 2 marks "
msgstr ""
#: ../src/fenrir/commands/commands/set_window_application.py:22
msgid "Window Mode on for application {0}"
msgstr ""
#: ../src/fenrir/commands/commands/set_window_application.py:25
msgid "Set window begin and end marks"
msgstr ""
#: ../src/fenrir/commands/commands/shut_up.py:17
msgid "interrupts the current presentation"
msgstr ""
#: ../src/fenrir/commands/commands/spell_check.py:26
msgid "checks the spelling of the current word"
msgstr ""
#: ../src/fenrir/commands/commands/spell_check.py:52
#: ../src/fenrir/commands/onInput/62000-spell_check.py:132
msgid "misspelled"
msgstr ""
#: ../src/fenrir/commands/commands/spell_check.py:54
msgid "correct"
msgstr ""
#: ../src/fenrir/commands/commands/subprocess.py:21
msgid "script: {0} fullpath: {1}"
msgstr ""
#: ../src/fenrir/commands/commands/subprocess.py:24
msgid "scriptfile does not exist"
msgstr ""
#: ../src/fenrir/commands/commands/subprocess.py:27
msgid "scriptfile is not a file"
msgstr ""
#: ../src/fenrir/commands/commands/subprocess.py:30
msgid "scriptfile is not executable"
msgstr ""
#: ../src/fenrir/commands/commands/temp_disable_speech.py:17
#: ../src/fenrir/commands/onInput/15000-enable_temp_speech.py:17
msgid "disables speech until next keypress"
msgstr ""
#: ../src/fenrir/commands/commands/temp_disable_speech.py:21
msgid "speech temporary disabled"
msgstr ""
#: ../src/fenrir/commands/commands/time.py:18
msgid "presents the time"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_read.py:16
msgid "enables or disables automatic reading of new text as it appears"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_read.py:21
msgid "autoread enabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_read.py:23
msgid "autoread disabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:17
msgid "enables or disables automatic spell checking"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:22
msgid "auto spellcheck enabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:24
msgid "auto spellcheck disabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_time.py:16
msgid "enables or disables automatic reading of time after an period"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_time.py:21
msgid "autotime enabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_auto_time.py:23
msgid "autotime disabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_braille.py:17
msgid "enables and disables output in braille"
msgstr ""
@ -222,6 +709,7 @@ msgid "emoticons disabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_highlight_tracking.py:16
#: ../src/fenrir/commands/onInput/56000-highlight_tracking.py:16
msgid "enables or disables tracking of highlighted"
msgstr ""
@ -270,6 +758,7 @@ msgid "speech disabled"
msgstr ""
#: ../src/fenrir/commands/commands/toggle_speech.py:24
#: ../src/fenrir/commands/onInput/15000-enable_temp_speech.py:28
msgid "speech enabled"
msgstr ""
@ -281,3 +770,44 @@ msgstr ""
msgid "you entered the tutorial mode. In that mode the commands are not executed. but you get a description of what the shortcut does. To leave the tutorial mode, press that shortcut again."
msgstr ""
#: ../src/fenrir/commands/onInput/80000-capslock.py:22
msgid "Capslock on"
msgstr ""
#: ../src/fenrir/commands/onInput/80000-capslock.py:24
msgid "Capslock off"
msgstr ""
#: ../src/fenrir/commands/onInput/80300-scrolllock.py:22
msgid "Scrolllock on"
msgstr ""
#: ../src/fenrir/commands/onInput/80300-scrolllock.py:24
msgid "Scrolllock off"
msgstr ""
#: ../src/fenrir/commands/onInput/80500-numlock.py:22
msgid "Numlock on"
msgstr ""
#: ../src/fenrir/commands/onInput/80500-numlock.py:24
msgid "Numlock off"
msgstr ""
#:
#: ../src/fenrir/commands/onScreenChanged/80000-screen_change_announcement.py:20
msgid "screen {0}"
msgstr ""
#: ../src/fenrir/commands/onScreenUpdate/76000-time.py:66
msgid "Autotime: {0}"
msgstr ""
#: ../src/fenrir/fenrir.py:24
msgid "Start Fenrir"
msgstr ""
#: ../src/fenrir/fenrir.py:99
msgid "Quit Fenrir"
msgstr ""