From 68c216a8456ee0e11751ed48ab54af39438de7f5 Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 09:23:35 +0200 Subject: [PATCH 01/11] Update spell_check.py --- .../commands/commands/spell_check.py | 48 +++++++------------ 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/src/fenrir-package/commands/commands/spell_check.py b/src/fenrir-package/commands/commands/spell_check.py index c2090159..a603633e 100644 --- a/src/fenrir-package/commands/commands/spell_check.py +++ b/src/fenrir-package/commands/commands/spell_check.py @@ -5,11 +5,11 @@ try: import enchant initialized = True except: - print('nööP') + pass class command(): def __init__(self): - pass + self.language = '' def run(self, environment): if not environment['runtime']['settingsManager'].getSettingAsBool(environment, 'general', 'autoSpellCheck'): @@ -17,38 +17,24 @@ class command(): if not initialized: environment['runtime']['outputManager'].presentText(environment, 'pychant is not installed', interrupt=True) - return environment - spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) - - # just when cursor move worddetection is needed - if environment['screenData']['newCursor']['x'] == environment['screenData']['oldCursor']['x']: - return environment - - # for now no new line - if environment['screenData']['newCursor']['y'] != environment['screenData']['oldCursor']['y']: - return environment - if len(environment['screenData']['newDelta']) > 1: - return environment - - # TTY Change is no new word - if environment['screenData']['newTTY'] != environment['screenData']['oldTTY']: - return environment - - # first place could not be the end of a word - if environment['screenData']['newCursor']['x'] == 0: - return environment + return environment + if environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage') != self.language: + try: + spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) + except: + return environment + + if not newContent[environment['screenData']['newCursor']['x']].strip() == '': + return environment + + if (environment['screenData']['newCursorReview'] != None): + cursorPos = environment['screenData']['newCursorReview'].copy() + else: + cursorPos = environment['screenData']['newCursor'].copy() # get the word newContent = environment['screenData']['newContentText'].split('\n')[environment['screenData']['newCursor']['y']] - x, y, currWord = word_utils.getCurrentWord(environment['screenData']['newCursor']['x'], 0, newContent) - # was this a typed word? - if environment['screenData']['newDelta'] != '': - if not(newContent[environment['screenData']['oldCursor']['x']].strip() == '' and x != environment['screenData']['oldCursor']['x']): - return environment - else: - # or just arrow arround? - if not(newContent[environment['screenData']['newCursor']['x']].strip() == '' and x != environment['screenData']['newCursor']['x']): - return environment + x, y, currWord = word_utils.getCurrentWord(cursorPos['x'], cursorPos['y'], newContent) if currWord != '': if not spellChecker.check(currWord): From cfd17f1bd9db72e6e2e693959da30ee08c1ea497 Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 09:26:05 +0200 Subject: [PATCH 02/11] Update 62000-spell_check.py --- .../commands/onScreenChanged/62000-spell_check.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py b/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py index c81fdb12..9c5ad11b 100644 --- a/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py +++ b/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py @@ -5,20 +5,24 @@ try: import enchant initialized = True except: - print('nööP') + pass class command(): def __init__(self): - pass + self.language = '' def run(self, environment): if not environment['runtime']['settingsManager'].getSettingAsBool(environment, 'general', 'autoSpellCheck'): return environment if not initialized: - return environment - spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) - + return environment + if environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage') != self.language: + try: + spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) + except: + return environment + # just when cursor move worddetection is needed if environment['screenData']['newCursor']['x'] == environment['screenData']['oldCursor']['x']: return environment From 3a5c37ff6a6ecf09eb637dbc85094f235d46bb1b Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 09:27:52 +0200 Subject: [PATCH 03/11] Update spell_check.py --- src/fenrir-package/commands/commands/spell_check.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/fenrir-package/commands/commands/spell_check.py b/src/fenrir-package/commands/commands/spell_check.py index a603633e..b6ac878e 100644 --- a/src/fenrir-package/commands/commands/spell_check.py +++ b/src/fenrir-package/commands/commands/spell_check.py @@ -23,9 +23,6 @@ class command(): spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) except: return environment - - if not newContent[environment['screenData']['newCursor']['x']].strip() == '': - return environment if (environment['screenData']['newCursorReview'] != None): cursorPos = environment['screenData']['newCursorReview'].copy() @@ -34,7 +31,7 @@ class command(): # get the word newContent = environment['screenData']['newContentText'].split('\n')[environment['screenData']['newCursor']['y']] - x, y, currWord = word_utils.getCurrentWord(cursorPos['x'], cursorPos['y'], newContent) + x, y, currWord = word_utils.getCurrentWord(cursorPos['x'], 0, newContent) if currWord != '': if not spellChecker.check(currWord): From 375031d3f6f4cdc09bed0ff4021ead36c753da40 Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 09:41:43 +0200 Subject: [PATCH 04/11] Update spell_check.py --- src/fenrir-package/commands/commands/spell_check.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/fenrir-package/commands/commands/spell_check.py b/src/fenrir-package/commands/commands/spell_check.py index b6ac878e..0716ee50 100644 --- a/src/fenrir-package/commands/commands/spell_check.py +++ b/src/fenrir-package/commands/commands/spell_check.py @@ -10,6 +10,7 @@ except: class command(): def __init__(self): self.language = '' + self.spellChecker = None def run(self, environment): if not environment['runtime']['settingsManager'].getSettingAsBool(environment, 'general', 'autoSpellCheck'): @@ -20,7 +21,7 @@ class command(): return environment if environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage') != self.language: try: - spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) + self.spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) except: return environment @@ -34,7 +35,7 @@ class command(): x, y, currWord = word_utils.getCurrentWord(cursorPos['x'], 0, newContent) if currWord != '': - if not spellChecker.check(currWord): + if not self.spellChecker.check(currWord): environment['runtime']['outputManager'].presentText(environment, 'misspelled', interrupt=True) return environment From 698a9b295f567c54177ffcbb4bf37ad617c24f09 Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 09:44:17 +0200 Subject: [PATCH 05/11] Update 62000-spell_check.py --- .../commands/onScreenChanged/62000-spell_check.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py b/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py index 9c5ad11b..b1bf22c7 100644 --- a/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py +++ b/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py @@ -10,6 +10,7 @@ except: class command(): def __init__(self): self.language = '' + self.spellChecker = '' def run(self, environment): if not environment['runtime']['settingsManager'].getSettingAsBool(environment, 'general', 'autoSpellCheck'): @@ -19,7 +20,8 @@ class command(): return environment if environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage') != self.language: try: - spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) + self.spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) + self.language = environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage') except: return environment @@ -54,7 +56,7 @@ class command(): return environment if currWord != '': - if not spellChecker.check(currWord): + if not self.spellChecker.check(currWord): environment['runtime']['outputManager'].presentText(environment, 'misspelled', interrupt=True) return environment From a2f72455790c8126db92905ba30927b49fa98068 Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 09:44:53 +0200 Subject: [PATCH 06/11] Update spell_check.py --- src/fenrir-package/commands/commands/spell_check.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fenrir-package/commands/commands/spell_check.py b/src/fenrir-package/commands/commands/spell_check.py index 0716ee50..95f1dae1 100644 --- a/src/fenrir-package/commands/commands/spell_check.py +++ b/src/fenrir-package/commands/commands/spell_check.py @@ -22,6 +22,7 @@ class command(): if environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage') != self.language: try: self.spellChecker = enchant.Dict(environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage')) + self.language = environment['runtime']['settingsManager'].getSetting(environment, 'general', 'spellCheckLanguage') except: return environment From 2e0c1654d0aa80e9bda1f51a8b3d6aa1a89b3832 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Tue, 6 Sep 2016 07:46:36 -0400 Subject: [PATCH 07/11] Mispell sound. --- config/sound/default/mispell.opus | Bin 0 -> 1440 bytes config/sound/default/mispell.wav | Bin 0 -> 76880 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 config/sound/default/mispell.opus create mode 100644 config/sound/default/mispell.wav diff --git a/config/sound/default/mispell.opus b/config/sound/default/mispell.opus new file mode 100644 index 0000000000000000000000000000000000000000..a4839140a543026a928cb8260413fc08de35280c GIT binary patch literal 1440 zcmeZIPY-5bVt|6F^R{M!n5`^+28_b~1*OFvsfj6!Ocsm{yFua%VC7&IhyW>PWME*} zllo1C`TzfaAPpgj>BW)^3=BD$N%;k(#R`UchI+=jmKM6{si`I=X=xVB3=9ma3=9me ze$M_bu0ggSRjGN&3TZ|8xe6eTZb^QAPO*Z4o}r$lEJ9(te?W+*zhAJeu5MChNl{`+ zs)CV0wgdwMgL8gvZfahMZ9q|ea%ypLYKlTqr9yCi1jvb_cr*m)5(40y!LmaQVi_oB zfO3^ve$P&BQ$r(jD|165b904?R^QG}W4^wthwO!J|1gp*xgh^`bH8QN`)E#+xen1+ z*FD@SSGQ0%Y0r)g!djCPXWUw*THIgJ@>q~>OU{MhIjetuKbokphB3=WdRacZ^t*u1 zdn)4=PuuCpQFAGs(SYZIzD`u#lA9H+!TB#_48Din&)%GS_RW%8nn5)w((CqhFdbQC zq4(y?dIzZ$ZXaA(;)I(P*8Srbn=`Xwm);x3E%(12f3Wep?A1$RMR$51bm}rCIlkq+ zXB;Vf(3jVze_!Dvy29(=M}{Sn zKX%3Ke)qrKaGA5MYwDIQ%-t%-rr(JC!*-%BecI0ItK8o|bTK@xXw}+qA#K5<=W|Xo zT-W@$VMV}+EnAE)YkCVbeBfngjbX2SCFfQjT)?{HcSYaqj~xp7I(-xQAAy2`HQ~6v zQ;Or!N9NUX$6`gBs`BSOUsLw9PJZ&k1+_Qg%%uP5o@uNN00+fPq@W0IHu(Hu<9W>m zGbg&ey6kiF-I==E-&!Sfd7Svmy>@6}4~l%1gNaUQldJ@fX&+&KV|ZVMGh25Z&kpZv zF1EE|N(Oo|9lq`8L9zO$@Y92Oua=!{yXdVNA+qv!&)lp=2Gc#N0h2_x7S8jyn!P|> sdRAj)0w^5p{yG>%JY8IMf~_iI>7+T2&$#63eO@4!mQm(-&Gu&l0BO%)vj6}9 literal 0 HcmV?d00001 diff --git a/config/sound/default/mispell.wav b/config/sound/default/mispell.wav new file mode 100644 index 0000000000000000000000000000000000000000..2497c3d3176e2769dc4c4eb30102792474eefc5c GIT binary patch literal 76880 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%0AbMGgCGpLdk};{cMpPayb&V< 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 SfdPbz85kHqxSoN50fYhkBRH%8 literal 0 HcmV?d00001 From dc2ecdc6d1f7e31c8a653ef420de78a16a9977ab Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 14:00:09 +0200 Subject: [PATCH 08/11] Update soundicons.conf --- config/sound/default/soundicons.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/sound/default/soundicons.conf b/config/sound/default/soundicons.conf index 12b7c8c0..f2ccf032 100644 --- a/config/sound/default/soundicons.conf +++ b/config/sound/default/soundicons.conf @@ -44,3 +44,5 @@ ErrorScreen='ErrorScreen.opus' HasAttributes='HasAttributes.opus' # fenrir can promote strings if they appear on the screen. PromotedText='PromotedText.opus' +# missspelled indicator +mispell='mispell.opus' From c2b128e91cd4922c046b8b712565df350cfed02b Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 14:00:49 +0200 Subject: [PATCH 09/11] Update soundicons.conf --- config/sound/template/soundicons.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/sound/template/soundicons.conf b/config/sound/template/soundicons.conf index 178a7f05..f8ff12f9 100644 --- a/config/sound/template/soundicons.conf +++ b/config/sound/template/soundicons.conf @@ -44,3 +44,5 @@ ErrorScreen='' HasAttributes='' # fenrir can promote strings if they appear on the screen. PromotedText='' +# misspelled indicator +mispell='' From 5b734dee9ec4b3a89b2c7a13385fd1690ab2628d Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 14:01:49 +0200 Subject: [PATCH 10/11] Update 62000-spell_check.py --- .../commands/onScreenChanged/62000-spell_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py b/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py index b1bf22c7..02fa03fb 100644 --- a/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py +++ b/src/fenrir-package/commands/onScreenChanged/62000-spell_check.py @@ -57,7 +57,7 @@ class command(): if currWord != '': if not self.spellChecker.check(currWord): - environment['runtime']['outputManager'].presentText(environment, 'misspelled', interrupt=True) + environment['runtime']['outputManager'].presentText(environment, 'misspelled',soundIcon='mispell', interrupt=True) return environment def setCallback(self, callback): From ad9cf0fd0e02b2d76ea57a1df10b390c431e8446 Mon Sep 17 00:00:00 2001 From: chrys87 Date: Tue, 6 Sep 2016 14:04:07 +0200 Subject: [PATCH 11/11] Update spell_check.py --- src/fenrir-package/commands/commands/spell_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fenrir-package/commands/commands/spell_check.py b/src/fenrir-package/commands/commands/spell_check.py index 95f1dae1..0d8a1f1c 100644 --- a/src/fenrir-package/commands/commands/spell_check.py +++ b/src/fenrir-package/commands/commands/spell_check.py @@ -37,7 +37,7 @@ class command(): if currWord != '': if not self.spellChecker.check(currWord): - environment['runtime']['outputManager'].presentText(environment, 'misspelled', interrupt=True) + environment['runtime']['outputManager'].presentText(environment, 'misspelled',soundIcon='mispell', interrupt=True) return environment def setCallback(self, callback):