add initial barrier function and fix history
This commit is contained in:
parent
8ba049ff1f
commit
9b87a34ab0
@ -186,6 +186,7 @@ shell=
|
|||||||
[focus]
|
[focus]
|
||||||
cursor=True
|
cursor=True
|
||||||
highlight=False
|
highlight=False
|
||||||
|
barrier=True
|
||||||
|
|
||||||
[review]
|
[review]
|
||||||
lineBreak=True
|
lineBreak=True
|
||||||
|
@ -196,6 +196,7 @@ shell=
|
|||||||
cursor=True
|
cursor=True
|
||||||
#follow highlighted text changes
|
#follow highlighted text changes
|
||||||
highlight=False
|
highlight=False
|
||||||
|
barrier=True
|
||||||
|
|
||||||
[review]
|
[review]
|
||||||
lineBreak=True
|
lineBreak=True
|
||||||
|
@ -197,6 +197,7 @@ shell=
|
|||||||
cursor=True
|
cursor=True
|
||||||
#follow highlighted text changes
|
#follow highlighted text changes
|
||||||
highlight=False
|
highlight=False
|
||||||
|
barrier=True
|
||||||
|
|
||||||
[review]
|
[review]
|
||||||
lineBreak=True
|
lineBreak=True
|
||||||
|
@ -142,6 +142,7 @@ shell=
|
|||||||
cursor=True
|
cursor=True
|
||||||
#follow highlighted text changes
|
#follow highlighted text changes
|
||||||
highlight=False
|
highlight=False
|
||||||
|
barrier=True
|
||||||
|
|
||||||
[review]
|
[review]
|
||||||
lineBreak=True
|
lineBreak=True
|
||||||
|
@ -196,6 +196,7 @@ shell=
|
|||||||
cursor=True
|
cursor=True
|
||||||
#follow highlighted text changes
|
#follow highlighted text changes
|
||||||
highlight=False
|
highlight=False
|
||||||
|
barrier=True
|
||||||
|
|
||||||
[review]
|
[review]
|
||||||
lineBreak=True
|
lineBreak=True
|
||||||
|
@ -33,10 +33,10 @@ class command():
|
|||||||
return
|
return
|
||||||
|
|
||||||
x, y, currLine = line_utils.getCurrentLine(self.env['screen']['newCursor']['x'], self.env['screen']['newCursor']['y'], self.env['screen']['newContentText'])
|
x, y, currLine = line_utils.getCurrentLine(self.env['screen']['newCursor']['x'], self.env['screen']['newCursor']['y'], self.env['screen']['newContentText'])
|
||||||
|
|
||||||
if currLine.isspace():
|
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:
|
else:
|
||||||
|
# ident
|
||||||
currIdent = len(currLine) - len(currLine.lstrip())
|
currIdent = len(currLine) - len(currLine.lstrip())
|
||||||
if self.lastIdent == -1:
|
if self.lastIdent == -1:
|
||||||
self.lastIdent = currIdent
|
self.lastIdent = currIdent
|
||||||
@ -45,7 +45,12 @@ class command():
|
|||||||
if self.lastIdent != currIdent:
|
if self.lastIdent != currIdent:
|
||||||
self.env['runtime']['outputManager'].presentText(_('indented ') + str(currIdent) + ' ', interrupt=doInterrupt, flush=False)
|
self.env['runtime']['outputManager'].presentText(_('indented ') + str(currIdent) + ' ', interrupt=doInterrupt, flush=False)
|
||||||
doInterrupt = False
|
doInterrupt = False
|
||||||
self.env['runtime']['outputManager'].presentText(currLine, interrupt=doInterrupt, flush=False)
|
# barrier
|
||||||
|
sayLine = currLine
|
||||||
|
if self.env['runtime']['settingsManager'].getSettingAsBool('focus', 'barrier'):
|
||||||
|
sayLine = self.env['runtime']['textManager'].getBarrierText(sayLine, self.env['screen']['newCursor']['x'])
|
||||||
|
# output
|
||||||
|
self.env['runtime']['outputManager'].presentText(sayLine, interrupt=doInterrupt, flush=False)
|
||||||
self.lastIdent = currIdent
|
self.lastIdent = currIdent
|
||||||
def setCallback(self, callback):
|
def setCallback(self, callback):
|
||||||
pass
|
pass
|
||||||
|
@ -24,8 +24,7 @@ class command():
|
|||||||
return
|
return
|
||||||
# hack for pdmenu and maybe other dialog apps that place the cursor at last cell/row
|
# hack for pdmenu and maybe other dialog apps that place the cursor at last cell/row
|
||||||
# this is not to be identified as history
|
# this is not to be identified as history
|
||||||
if self.env['screen']['newCursor']['x'] == == self.env['runtime']['screenManager'].getColums() - 1 and\
|
if (self.env['screen']['newCursor']['x'] == self.env['runtime']['screenManager'].getColumns() - 1) and (self.env['screen']['newCursor']['y'] == self.env['runtime']['screenManager'].getRows() - 1):
|
||||||
self.env['screen']['newCursor']['y'] == self.env['runtime']['screenManager'].getRows() - 1):
|
|
||||||
return
|
return
|
||||||
if self.env['runtime']['inputManager'].getShortcutType() in ['KEY']:
|
if self.env['runtime']['inputManager'].getShortcutType() in ['KEY']:
|
||||||
if not (self.env['runtime']['inputManager'].getLastDeepestInput() in [['KEY_UP'],['KEY_DOWN']]):
|
if not (self.env['runtime']['inputManager'].getLastDeepestInput() in [['KEY_UP'],['KEY_DOWN']]):
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
#!/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# Fenrir TTY screen reader
|
|
||||||
# By Chrys, Storm Dragon, and contributers.
|
|
||||||
|
|
||||||
from fenrirscreenreader.core import debug
|
|
||||||
import re, string
|
|
||||||
|
|
||||||
class headLineManager():
|
|
||||||
def __init__(self):
|
|
||||||
self.regExSingle = re.compile(r'(([^\w\s])\2{5,})')
|
|
||||||
self.regExDouble = re.compile(r'([^\w\s]{2,}){5,}')
|
|
||||||
def initialize(self, environment):
|
|
||||||
self.env = environment
|
|
||||||
def shutdown(self):
|
|
||||||
pass
|
|
||||||
def replaceHeadLines(self, text):
|
|
||||||
# fast len check for bigger typing echo
|
|
||||||
if len(text) < 5:
|
|
||||||
return text
|
|
||||||
# more strong check, to not match if not needed:
|
|
||||||
if len(text.strip(string.ascii_letters+string.digits+string.whitespace)) < 5:
|
|
||||||
return text
|
|
||||||
result = ''
|
|
||||||
newText = ''
|
|
||||||
lastPos = 0
|
|
||||||
for match in self.regExDouble.finditer(text):
|
|
||||||
span = match.span()
|
|
||||||
newText += text[lastPos:span[0]]
|
|
||||||
numberOfChars = len(text[span[0]:span[1]])
|
|
||||||
name = text[span[0]:span[1]][:2]
|
|
||||||
if name[0] == name[1]:
|
|
||||||
newText += ' ' + str(numberOfChars) + ' ' + self.env['runtime']['punctuationManager'].proceedPunctuation(name[0], True) + ' '
|
|
||||||
else:
|
|
||||||
newText += ' ' + str(int(numberOfChars / 2)) + ' ' + self.env['runtime']['punctuationManager'].proceedPunctuation(name, True) + ' '
|
|
||||||
lastPos = span[1]
|
|
||||||
if lastPos != 0:
|
|
||||||
newText += ' '
|
|
||||||
newText += text[lastPos:]
|
|
||||||
lastPos = 0
|
|
||||||
for match in self.regExSingle.finditer(newText):
|
|
||||||
span = match.span()
|
|
||||||
result += text[lastPos:span[0]]
|
|
||||||
numberOfChars = len(newText[span[0]:span[1]])
|
|
||||||
name = newText[span[0]:span[1]][:2]
|
|
||||||
if name[0] == name[1]:
|
|
||||||
result += ' ' + str(numberOfChars) + ' ' + self.env['runtime']['punctuationManager'].proceedPunctuation(name[0], True) + ' '
|
|
||||||
else:
|
|
||||||
result += ' ' + str(int(numberOfChars / 2)) + ' ' + self.env['runtime']['punctuationManager'].proceedPunctuation(name, True) + ' '
|
|
||||||
lastPos = span[1]
|
|
||||||
if lastPos != 0:
|
|
||||||
result += ' '
|
|
||||||
result += newText[lastPos:]
|
|
||||||
return result
|
|
@ -101,7 +101,7 @@ class outputManager():
|
|||||||
else:
|
else:
|
||||||
cleanText = text.replace('\n',' ')
|
cleanText = text.replace('\n',' ')
|
||||||
|
|
||||||
cleanText = self.env['runtime']['headLineManager'].replaceHeadLines(cleanText)
|
cleanText = self.env['runtime']['textManager'].replaceHeadLines(cleanText)
|
||||||
cleanText = self.env['runtime']['punctuationManager'].proceedPunctuation(cleanText, ignorePunctuation)
|
cleanText = self.env['runtime']['punctuationManager'].proceedPunctuation(cleanText, ignorePunctuation)
|
||||||
cleanText = re.sub(' +$',' ', cleanText)
|
cleanText = re.sub(' +$',' ', cleanText)
|
||||||
self.env['runtime']['speechDriver'].speak(cleanText)
|
self.env['runtime']['speechDriver'].speak(cleanText)
|
||||||
|
@ -80,6 +80,7 @@ settingsData = {
|
|||||||
'focus':{
|
'focus':{
|
||||||
'cursor': True,
|
'cursor': True,
|
||||||
'highlight': False,
|
'highlight': False,
|
||||||
|
'barrier': True,
|
||||||
},
|
},
|
||||||
'review':{
|
'review':{
|
||||||
'lineBreak': True,
|
'lineBreak': True,
|
||||||
|
@ -21,7 +21,7 @@ from fenrirscreenreader.core import punctuationManager
|
|||||||
from fenrirscreenreader.core import cursorManager
|
from fenrirscreenreader.core import cursorManager
|
||||||
from fenrirscreenreader.core import applicationManager
|
from fenrirscreenreader.core import applicationManager
|
||||||
from fenrirscreenreader.core import helpManager
|
from fenrirscreenreader.core import helpManager
|
||||||
from fenrirscreenreader.core import headLineManager
|
from fenrirscreenreader.core import textManager
|
||||||
from fenrirscreenreader.core import tableManager
|
from fenrirscreenreader.core import tableManager
|
||||||
from fenrirscreenreader.core import byteManager
|
from fenrirscreenreader.core import byteManager
|
||||||
from fenrirscreenreader.core import attributeManager
|
from fenrirscreenreader.core import attributeManager
|
||||||
@ -323,8 +323,8 @@ class settingsManager():
|
|||||||
environment['runtime']['cursorManager'].initialize(environment)
|
environment['runtime']['cursorManager'].initialize(environment)
|
||||||
environment['runtime']['applicationManager'] = applicationManager.applicationManager()
|
environment['runtime']['applicationManager'] = applicationManager.applicationManager()
|
||||||
environment['runtime']['applicationManager'].initialize(environment)
|
environment['runtime']['applicationManager'].initialize(environment)
|
||||||
environment['runtime']['headLineManager'] = headLineManager.headLineManager()
|
environment['runtime']['textManager'] = textManager.textManager()
|
||||||
environment['runtime']['headLineManager'].initialize(environment)
|
environment['runtime']['textManager'].initialize(environment)
|
||||||
environment['runtime']['tableManager'] = tableManager.tableManager()
|
environment['runtime']['tableManager'] = tableManager.tableManager()
|
||||||
environment['runtime']['tableManager'].initialize(environment)
|
environment['runtime']['tableManager'].initialize(environment)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user