fix has attribute

This commit is contained in:
chrys 2018-06-04 06:09:51 +02:00
parent 0c02532dba
commit c25bda45b2
3 changed files with 35 additions and 25 deletions

View File

@ -14,7 +14,7 @@ class attributeManager():
self.currAttributeDelta = '' self.currAttributeDelta = ''
self.currAttributeCursor = None self.currAttributeCursor = None
self.prefAttributeCursor = None self.prefAttributeCursor = None
self.setDefaultAttributes() self.initDefaultAttributes()
self.prevLastCursorAttribute = None self.prevLastCursorAttribute = None
self.currLastCursorAttribute = None self.currLastCursorAttribute = None
@ -30,7 +30,7 @@ class attributeManager():
self.currLastCursorAttribute = None self.currLastCursorAttribute = None
def isLastCursorAttributeChange(self): def isLastCursorAttributeChange(self):
if self.prevLastCursorAttribute == None: if self.prevLastCursorAttribute == None:
return True return False
return self.prevLastCursorAttribute != self.currLastCursorAttribute return self.prevLastCursorAttribute != self.currLastCursorAttribute
def getCurrAttributeCursor(self): def getCurrAttributeCursor(self):
return self.currAttributeCursor return self.currAttributeCursor
@ -76,7 +76,13 @@ class attributeManager():
except: except:
pass pass
return None return None
def setDefaultAttributes(self): def appendDefaultAttributes(self, attribute):
if not attribute:
return
if len(attribute) != 10:
return
self.defaultAttributes.append(attribute)
def initDefaultAttributes(self):
self.defaultAttributes = [None] self.defaultAttributes = [None]
self.defaultAttributes.append([ self.defaultAttributes.append([
'default', # fg 'default', # fg
@ -89,19 +95,7 @@ class attributeManager():
False, # blink False, # blink
'default', # fontsize 'default', # fontsize
'default' # fontfamily 'default' # fontfamily
]) #end attribute ]) #end attribute
self.defaultAttributes.append([
'white', # fg
'black', # bg
False, # bold
False, # italics
False, # underscore
False, # strikethrough
False, # reverse
False, # blink
'default', # fontsize
'default' # fontfamily
]) #end attribute
def isDefaultAttribute(self,attribute): def isDefaultAttribute(self,attribute):
return attribute in self.defaultAttributes return attribute in self.defaultAttributes
def hasAttributes(self, cursor, update=True): def hasAttributes(self, cursor, update=True):
@ -110,16 +104,19 @@ class attributeManager():
cursorPos = cursor.copy() cursorPos = cursor.copy()
try: try:
attribute = self.getAttributeByXY( cursorPos['x'], cursorPos['y']) attribute = self.getAttributeByXY( cursorPos['x'], cursorPos['y'])
if self.isDefaultAttribute(attribute):
return False
if update: if update:
self.setLastCursorAttribute(attribute) self.setLastCursorAttribute(attribute)
if not self.isLastCursorAttributeChange(): if not self.isLastCursorAttributeChange():
return False return False
if self.isDefaultAttribute(attribute):
return False
except Exception as e: except Exception as e:
return False return False
return True return True
def formatAttributes(self, attribute, attributeFormatString = ''): def formatAttributes(self, attribute, attributeFormatString = ''):
# "black", # "black",
# "red", # "red",

View File

@ -175,7 +175,6 @@ class screenManager():
self.env['runtime']['attributeManager'].setAttributeCursor(attributeCursor) self.env['runtime']['attributeManager'].setAttributeCursor(attributeCursor)
self.env['runtime']['attributeManager'].setAttributeDelta(attributeDelta) self.env['runtime']['attributeManager'].setAttributeDelta(attributeDelta)
except Exception as e: except Exception as e:
print(e)
self.env['runtime']['debug'].writeDebugOut('screenManager:update:highlight: ' + str(e),debug.debugLevel.ERROR) self.env['runtime']['debug'].writeDebugOut('screenManager:update:highlight: ' + str(e),debug.debugLevel.ERROR)
def isSuspendingScreen(self, screen = None): def isSuspendingScreen(self, screen = None):

View File

@ -34,6 +34,18 @@ class driver(screenDriver):
self.hichar = None self.hichar = None
def initialize(self, environment): def initialize(self, environment):
self.env = environment self.env = environment
self.env['runtime']['attributeManager'].appendDefaultAttributes([
self.fgColorValues[7], # fg
self.bgColorValues[0], # bg
False, # bold
False, # italics
False, # underscore
False, # strikethrough
False, # reverse
False, # blink
'default', # fontsize
'default' # fontfamily
]) #end attribute )
self.env['runtime']['processManager'].addCustomEventThread(self.updateWatchdog, multiprocess=True) self.env['runtime']['processManager'].addCustomEventThread(self.updateWatchdog, multiprocess=True)
def getCurrScreen(self): def getCurrScreen(self):
self.env['screen']['oldTTY'] = self.env['screen']['newTTY'] self.env['screen']['oldTTY'] = self.env['screen']['newTTY']
@ -205,8 +217,8 @@ class driver(screenDriver):
#ink = 7 #ink = 7
#paper = 0 #paper = 0
#ch = ' ' #ch = ' '
charAttrib = ( charAttrib = [
self.fgColorValues[15], # fg self.fgColorValues[7], # fg
self.bgColorValues[0], # bg self.bgColorValues[0], # bg
False, # bold False, # bold
False, # italics False, # italics
@ -215,7 +227,7 @@ class driver(screenDriver):
False, # reverse False, # reverse
False, # blink False, # blink
'default', # fontsize 'default', # fontsize
'default') # fontfamily 'default'] # fontfamily
lineAttrib.append(charAttrib) lineAttrib.append(charAttrib)
lineText += ' ' lineText += ' '
continue continue
@ -229,6 +241,8 @@ class driver(screenDriver):
blink = 0 blink = 0
if attr & 1: if attr & 1:
blink = 1 blink = 1
# blink seems to be set always, ignore for now
blink = 0
bold = 0 bold = 0
if attr & 16: if attr & 16:
bold = 1 bold = 1
@ -240,7 +254,7 @@ class driver(screenDriver):
lineText += self.charmap[ch] lineText += self.charmap[ch]
except KeyError: except KeyError:
lineText += '?' lineText += '?'
charAttrib = ( charAttrib = [
self.fgColorValues[ink], self.fgColorValues[ink],
self.bgColorValues[paper], self.bgColorValues[paper],
bold == 1, # bold bold == 1, # bold
@ -250,7 +264,7 @@ class driver(screenDriver):
False, # reverse False, # reverse
blink == 1, # blink blink == 1, # blink
'default', # fontsize 'default', # fontsize
'default') # fontfamily 'default'] # fontfamily
lineAttrib.append(charAttrib) lineAttrib.append(charAttrib)
allText += lineText allText += lineText
if y + 1 < rows: if y + 1 < rows: