From 2208e7ccb2a3e61fda586d1074021a0d76d2b7df Mon Sep 17 00:00:00 2001 From: chrys Date: Wed, 23 May 2018 23:27:20 +0200 Subject: [PATCH] begin attribute refactoring --- src/fenrirscreenreader/core/screenManager.py | 97 ++++++++++++++++--- .../screenDriver/ptyDriver.py | 14 ++- 2 files changed, 89 insertions(+), 22 deletions(-) diff --git a/src/fenrirscreenreader/core/screenManager.py b/src/fenrirscreenreader/core/screenManager.py index 545e5e9d..8795d63c 100644 --- a/src/fenrirscreenreader/core/screenManager.py +++ b/src/fenrirscreenreader/core/screenManager.py @@ -163,41 +163,110 @@ class screenManager(): self.env['runtime']['debug'].writeDebugOut('screenManager:update:highlight: ' + str(e),debug.debugLevel.ERROR) def formatAttributes(self, attribute, attributeFormatString = None): + # "black", + # "red", + # "green", + # "brown", + # "blue", + # "magenta", + # "cyan", + # "white", + # "default" # white. + # _order_ + # "fg", + # "bg", + # "bold", + # "italics", + # "underscore", + # "strikethrough", + # "reverse", + # "blink" + # "fontsieze" + # "fontfamily" if not attributeFormatString: attributeFormatString = self.env['runtime']['settingsManager'].getSetting('general', 'attributeFormatString') if not attributeFormatString: return '' if attributeFormatString == '': return '' + if not attribute: + return '' + if len(attribute) != 10: + return '' + # 0 FG color (name) try: - attributeFormatString = attributeFormatString.replace('fenrirBGColor', self.env['runtime']['screenDriver'].getFenrirBGColor(attribute)) + attributeFormatString = attributeFormatString.replace('fenrirFGColor', _(attribute[0])) except Exception as e: - pass + attributeFormatString = attributeFormatString.replace('fenrirFGColor', '') + # 1 BG color (name) try: - attributeFormatString = attributeFormatString.replace('fenrirFGColor', self.env['runtime']['screenDriver'].getFenrirFGColor(attribute)) + attributeFormatString = attributeFormatString.replace('fenrirBGColor', _(attribute[1])) except Exception as e: - pass + attributeFormatString = attributeFormatString.replace('fenrirBGColor', '') + # 2 bold (True/ False) try: - attributeFormatString = attributeFormatString.replace('fenrirUnderline', self.env['runtime']['screenDriver'].getFenrirUnderline(attribute)) + if attribute[2]: + attributeFormatString = attributeFormatString.replace('fenrirBold', _('bold')) except Exception as e: - pass + pass + attributeFormatString = attributeFormatString.replace('fenrirBold', '') + # 3 italics (True/ False) try: - attributeFormatString = attributeFormatString.replace('fenrirBold', self.env['runtime']['screenDriver'].getFenrirBold(attribute)) + if attribute[3]: + attributeFormatString = attributeFormatString.replace('fenrirItalics', _('italic')) except Exception as e: - pass + pass + attributeFormatString = attributeFormatString.replace('fenrirItalics', '') + # 4 underline (True/ False) try: - attributeFormatString = attributeFormatString.replace('fenrirBlink', self.env['runtime']['screenDriver'].getFenrirBlink(attribute)) + if attribute[4]: + attributeFormatString = attributeFormatString.replace('fenrirUnderline', _('underline')) except Exception as e: - pass + pass + attributeFormatString = attributeFormatString.replace('fenrirUnderline', '') + # 5 strikethrough (True/ False) try: - attributeFormatString = attributeFormatString.replace('fenrirFontSize', self.env['runtime']['screenDriver'].getFenrirFontSize(attribute)) + if attribute[5]: + attributeFormatString = attributeFormatString.replace('fenrirStrikethrough', _('strikethrough')) except Exception as e: - pass + pass + attributeFormatString = attributeFormatString.replace('fenrirStrikethrough', '') + # 6 reverse (True/ False) try: - attributeFormatString = attributeFormatString.replace('fenrirFont', self.env['runtime']['screenDriver'].getFenrirFont(attribute)) + if attribute[6]: + attributeFormatString = attributeFormatString.replace('fenrirReverse', _('reverse')) except Exception as e: - pass + pass + attributeFormatString = attributeFormatString.replace('fenrirReverse', '') + # 7 blink (True/ False) + try: + if attribute[7]: + attributeFormatString = attributeFormatString.replace('fenrirBlink', _('blink')) + except Exception as e: + pass + attributeFormatString = attributeFormatString.replace('fenrirBlink', '') + # 8 font size (int/ string) + try: + try: + attributeFormatString = attributeFormatString.replace('fenrirFontSize', int(attribute[8])) + except: + pass + try: + attributeFormatString = attributeFormatString.replace('fenrirFontSize', str(attribute[8])) + except: + pass + except Exception as e: + pass + attributeFormatString = attributeFormatString.replace('fenrirFontSize', _('default')) + # 9 font family (string) + try: + attributeFormatString = attributeFormatString.replace('fenrirFont', attribute[9]) + except Exception as e: + pass + attributeFormatString = attributeFormatString.replace('fenrirFont', _('default')) + return attributeFormatString + def isSuspendingScreen(self, screen = None): if screen == None: screen = self.env['screen']['newTTY'] diff --git a/src/fenrirscreenreader/screenDriver/ptyDriver.py b/src/fenrirscreenreader/screenDriver/ptyDriver.py index 1f8b6758..ac45230a 100644 --- a/src/fenrirscreenreader/screenDriver/ptyDriver.py +++ b/src/fenrirscreenreader/screenDriver/ptyDriver.py @@ -36,14 +36,12 @@ class Terminal: cursor = self.screen.cursor allAttributes = [] text = '\n'.join(self.screen.display) - - #start = time.time() - #for y in range(self.screen.lines): - # line = self.screen.buffer[y] - # attributes = [(char.reverse, char.fg, char.bg, char.bold, char.italics, char.underscore, char.strikethrough) - # for char in (line[x] for x in range(self.screen.columns))] - # allAttributes.append((attributes)) - #print(time.time() -start) + start = time.time() + for y in range(self.screen.lines): + line = self.screen.buffer[y] + attributes = [char[1:] for char in (line[x] for x in range(self.screen.columns)),False, 'default', 'default'] + allAttributes.append((attributes)) + print(time.time() -start) self.screen.dirty.clear() return {"cursor": (cursor.x, cursor.y), 'lines': self.screen.lines,