To make Fenrir easier to approach for new developer, start code migration to be pep8 compliant.

This commit is contained in:
Storm Dragon
2025-07-01 22:23:50 -04:00
parent 4bcf82178e
commit 7408951152
345 changed files with 8688 additions and 3852 deletions

View File

@ -4,37 +4,42 @@
# Fenrir TTY screen reader
# By Chrys, Storm Dragon, and contributers.
import os, inspect
from fenrirscreenreader.core import environment
from fenrirscreenreader.utils import module_utils
from fenrirscreenreader.core import debug
from fenrirscreenreader.core.settingsData import settingsData
from fenrirscreenreader.core import quickMenuManager
from fenrirscreenreader.core import sayAllManager
from fenrirscreenreader.core import remoteManager
from fenrirscreenreader.core import barrierManager
from fenrirscreenreader.core import attributeManager
from fenrirscreenreader.core import byteManager
from fenrirscreenreader.core import tableManager
from fenrirscreenreader.core import textManager
from fenrirscreenreader.core import vmenuManager
from fenrirscreenreader.core import helpManager
from fenrirscreenreader.core import applicationManager
from fenrirscreenreader.core import cursorManager
from fenrirscreenreader.core import punctuationManager
from fenrirscreenreader.core import screenManager
from fenrirscreenreader.core import commandManager
from fenrirscreenreader.core import outputManager
from fenrirscreenreader.core import inputManager
from fenrirscreenreader.core import eventManager
from fenrirscreenreader.core import processManager
from fenrirscreenreader.core import memoryManager
from fenrirscreenreader.core import debugManager
from configparser import ConfigParser
import os
import inspect
currentdir = os.path.dirname(os.path.realpath(os.path.abspath(inspect.getfile(inspect.currentframe()))))
currentdir = os.path.dirname(
os.path.realpath(
os.path.abspath(
inspect.getfile(
inspect.currentframe()))))
fenrirPath = os.path.dirname(currentdir)
from configparser import ConfigParser
from fenrirscreenreader.core import debugManager
from fenrirscreenreader.core import memoryManager
from fenrirscreenreader.core import processManager
from fenrirscreenreader.core import eventManager
from fenrirscreenreader.core import inputManager
from fenrirscreenreader.core import outputManager
from fenrirscreenreader.core import commandManager
from fenrirscreenreader.core import screenManager
from fenrirscreenreader.core import punctuationManager
from fenrirscreenreader.core import cursorManager
from fenrirscreenreader.core import applicationManager
from fenrirscreenreader.core import helpManager
from fenrirscreenreader.core import vmenuManager
from fenrirscreenreader.core import textManager
from fenrirscreenreader.core import tableManager
from fenrirscreenreader.core import byteManager
from fenrirscreenreader.core import attributeManager
from fenrirscreenreader.core import barrierManager
from fenrirscreenreader.core import remoteManager
from fenrirscreenreader.core import sayAllManager
from fenrirscreenreader.core import quickMenuManager
from fenrirscreenreader.core import environment
from fenrirscreenreader.core.settingsData import settingsData
from fenrirscreenreader.core import debug
from fenrirscreenreader.utils import module_utils
class settingsManager():
def __init__(self):
@ -42,30 +47,34 @@ class settingsManager():
self.settingArgDict = {}
self.bindingsBackup = None
self.settingsFile = ''
def initialize(self, environment):
self.env = environment
def shutdown(self):
pass
def getBindingBackup(self):
return self.bindingsBackup.copy()
def loadSoundIcons(self, soundIconPath):
try:
with open(soundIconPath + '/soundicons.conf', "r") as siConfig:
while(True):
while (True):
line = siConfig.readline()
if not line:
break
line = line.replace('\n','')
if line.replace(" ","") == '':
line = line.replace('\n', '')
if line.replace(" ", "") == '':
continue
if line.replace(" ","").startswith("#"):
if line.replace(" ", "").startswith("#"):
continue
if line.count("=") != 1:
continue
Values = line.split('=')
soundIcon = Values[0].upper()
Values[1] = Values[1].replace("'","")
Values[1] = Values[1].replace('"',"")
Values[1] = Values[1].replace("'", "")
Values[1] = Values[1].replace('"', "")
soundIconFile = ''
if os.path.exists(Values[1]):
soundIconFile = Values[1]
@ -75,17 +84,28 @@ class settingsManager():
if os.path.exists(soundIconPath + Values[1]):
soundIconFile = soundIconPath + Values[1]
self.env['soundIcons'][soundIcon] = soundIconFile
self.env['runtime']['debug'].writeDebugOut("SoundIcon: " + soundIcon + '.' + soundIconFile, debug.debugLevel.INFO, onAnyLevel=True)
self.env['runtime']['debug'].writeDebugOut(
"SoundIcon: " + soundIcon + '.' + soundIconFile,
debug.debugLevel.INFO,
onAnyLevel=True)
except (IOError, OSError) as e:
self.env['runtime']['debug'].writeDebugOut('loadSoundIcons: failed to load sound icons from ' + soundIconPath + '. Error: ' + str(e), debug.debugLevel.ERROR)
self.env['runtime']['debug'].writeDebugOut(
'loadSoundIcons: failed to load sound icons from ' +
soundIconPath +
'. Error: ' +
str(e),
debug.debugLevel.ERROR)
def getSettingsFile(self):
return self.settingsFile
def setSettingsFile(self, settingsFile):
if not os.path.exists(settingsFile):
return
if not os.access(settingsFile, os.R_OK):
return
return
self.settingsFile = settingsFile
def loadSettings(self, settingConfigPath):
if not os.path.exists(settingConfigPath):
return False
@ -95,30 +115,39 @@ class settingsManager():
try:
self.env['settings'].read(settingConfigPath)
except Exception as e:
self.env['runtime']['debug'].writeDebugOut('settingsManager loadSettings: Error reading config file: ' + str(e), debug.debugLevel.ERROR)
self.env['runtime']['debug'].writeDebugOut(
'settingsManager loadSettings: Error reading config file: ' + str(e),
debug.debugLevel.ERROR)
return False
self.setSettingsFile(settingConfigPath)
return True
def saveSettings(self, settingConfigPath):
# set opt dict here
# save file
try:
#print('file: ',settingConfigPath)
# print('file: ',settingConfigPath)
for section, settings in self.settingArgDict.items():
for setting, value in settings.items():
#print(section, setting, value)
# print(section, setting, value)
self.env['settings'].set(section, setting, value)
#print('full',self.env['settings'])
# print('full',self.env['settings'])
configFile = open(settingConfigPath, 'w')
self.env['settings'].write(configFile)
configFile.close()
os.chmod(settingConfigPath, 0o644)
except Exception as e:
self.env['runtime']['debug'].writeDebugOut('saveSettings: save settingsfile:' + settingConfigPath + 'failed. Error:' + str(e), debug.debugLevel.ERROR)
self.env['runtime']['debug'].writeDebugOut(
'saveSettings: save settingsfile:' +
settingConfigPath +
'failed. Error:' +
str(e),
debug.debugLevel.ERROR)
def setSetting(self, section, setting, value):
self.setOptionArgDict(section, setting, value)
#self.env['settings'].set(section, setting, value)
# self.env['settings'].set(section, setting, value)
def getSetting(self, section, setting):
value = ''
@ -162,7 +191,8 @@ class settingsManager():
def getSettingAsBool(self, section, setting):
value = False
try:
value = self.settingArgDict[section][setting].upper() in ['1','YES','JA','TRUE']
value = self.settingArgDict[section][setting].upper() in [
'1', 'YES', 'JA', 'TRUE']
return value
except Exception as e:
pass
@ -177,22 +207,34 @@ class settingsManager():
if self.env['runtime'][driverType] is not None:
self.env['runtime'][driverType].shutdown(self.env)
except Exception as e:
self.env['runtime']['debug'].writeDebugOut('settingsManager loadDriver: Error shutting down driver: ' + str(e), debug.debugLevel.ERROR)
self.env['runtime']['debug'].writeDebugOut(
'settingsManager loadDriver: Error shutting down driver: ' + str(e),
debug.debugLevel.ERROR)
try:
driver_mod = module_utils.importModule(driverName,
fenrirPath + "/" + driverType + '/' + driverName + '.py')
driver_mod = module_utils.importModule(
driverName, fenrirPath + "/" + driverType + '/' + driverName + '.py')
self.env['runtime'][driverType] = driver_mod.driver()
self.env['runtime'][driverType].initialize(self.env)
self.env['runtime']['debug'].writeDebugOut('Loading Driver ' + driverType + ' (' + driverName +") OK",debug.debugLevel.INFO, onAnyLevel=True)
self.env['runtime']['debug'].writeDebugOut(
'Loading Driver ' + driverType + ' (' + driverName + ") OK",
debug.debugLevel.INFO,
onAnyLevel=True)
except Exception as e:
self.env['runtime']['debug'].writeDebugOut('Loading Driver ' + driverType + ' (' + driverName +") FAILED:"+ str(e), debug.debugLevel.ERROR)
self.env['runtime']['debug'].writeDebugOut(
'Loading Driver ' + driverType + ' (' + driverName + ") FAILED:" + str(e),
debug.debugLevel.ERROR)
try:
driver_mod = module_utils.importModule(driverName,
fenrirPath + "/" + driverType + '/dummyDriver.py')
driver_mod = module_utils.importModule(
driverName, fenrirPath + "/" + driverType + '/dummyDriver.py')
self.env['runtime'][driverType] = driver_mod.driver()
self.env['runtime'][driverType].initialize(self.env)
except Exception as e:
self.env['runtime']['debug'].writeDebugOut('(fallback) Loading Driver ' + driverType + ' (dummyDriver) FAILED:'+ str(e), debug.debugLevel.ERROR)
self.env['runtime']['debug'].writeDebugOut(
'(fallback) Loading Driver ' +
driverType +
' (dummyDriver) FAILED:' +
str(e),
debug.debugLevel.ERROR)
def shutdownDriver(self, driverType):
try:
@ -205,20 +247,23 @@ class settingsManager():
keys = keys.upper()
keyList = keys.split(',')
for key in keyList:
if not key in self.env['input']['fenrirKey']:
if key not in self.env['input']['fenrirKey']:
self.env['input']['fenrirKey'].append(key)
def setScriptKeys(self, keys):
keys = keys.upper()
keyList = keys.split(',')
for key in keyList:
if not key in self.env['input']['scriptKey']:
if key not in self.env['input']['scriptKey']:
self.env['input']['scriptKey'].append(key)
def resetSettingArgDict(self):
self.settingArgDict = {}
self.env['runtime']['outputManager'].resetSpeechDriver()
def setOptionArgDict(self, section, setting, value):
#section = section.lower()
#setting = setting.lower()
# section = section.lower()
# setting = setting.lower()
try:
e = self.settingArgDict[section]
except KeyError:
@ -226,79 +271,102 @@ class settingsManager():
try:
t = self.settings[section][setting]
except Exception as e:
print(section,setting, 'not found')
print(section, setting, 'not found')
return
try:
if isinstance(self.settings[section][setting], str):
v = str(value)
elif isinstance(self.settings[section][setting], bool):
if not value in ['True','False']:
raise ValueError('could not convert string to bool: '+ value)
if value not in ['True', 'False']:
raise ValueError(
'could not convert string to bool: ' + value)
v = value == 'True'
elif isinstance(self.settings[section][setting], int):
v = int(value)
elif isinstance(self.settings[section][setting], float):
v = float(value)
# Content validation for critical settings
self._validateSettingValue(section, setting, v)
self.settingArgDict[section][setting] = str(value)
except Exception as e:
print('settingsManager:setOptionArgDict:Datatype missmatch: '+ section + '#' + setting + '=' + value + ' Error:' + str(e))
#self.env['runtime']['debug'].writeDebugOut('settingsManager:setOptionArgDict:Datatype missmatch: '+ section + '#' + setting + '=' + value + ' Error:' + str(e), debug.debugLevel.ERROR)
print('settingsManager:setOptionArgDict:Datatype missmatch: ' +
section + '#' + setting + '=' + value + ' Error:' + str(e))
# self.env['runtime']['debug'].writeDebugOut('settingsManager:setOptionArgDict:Datatype
# missmatch: '+ section + '#' + setting + '=' + value + ' Error:'
# + str(e), debug.debugLevel.ERROR)
return
def _validateSettingValue(self, section, setting, value):
"""Validate setting values for critical screen reader functionality.
Only validates settings that could cause crashes or accessibility issues.
Invalid values raise ValueError which is caught by the calling method."""
# Speech settings validation - critical for accessibility
if section == 'speech':
if setting == 'rate':
if not (0.0 <= value <= 3.0):
raise ValueError(f'Speech rate must be between 0.0 and 3.0, got {value}')
raise ValueError(
f'Speech rate must be between 0.0 and 3.0, got {value}')
elif setting == 'pitch':
if not (0.0 <= value <= 2.0):
raise ValueError(f'Speech pitch must be between 0.0 and 2.0, got {value}')
raise ValueError(
f'Speech pitch must be between 0.0 and 2.0, got {value}')
elif setting == 'volume':
if not (0.0 <= value <= 1.5):
raise ValueError(f'Speech volume must be between 0.0 and 1.5, got {value}')
raise ValueError(
f'Speech volume must be between 0.0 and 1.5, got {value}')
elif setting == 'driver':
valid_drivers = ['speechdDriver', 'genericDriver', 'dummyDriver']
valid_drivers = [
'speechdDriver',
'genericDriver',
'dummyDriver']
if value not in valid_drivers:
raise ValueError(f'Invalid speech driver: {value}. Valid options: {valid_drivers}')
raise ValueError(
f'Invalid speech driver: {value}. Valid options: {valid_drivers}')
# Sound settings validation
elif section == 'sound':
if setting == 'volume':
if not (0.0 <= value <= 1.5):
raise ValueError(f'Sound volume must be between 0.0 and 1.5, got {value}')
raise ValueError(
f'Sound volume must be between 0.0 and 1.5, got {value}')
elif setting == 'driver':
valid_drivers = ['genericDriver', 'gstreamerDriver', 'dummyDriver']
valid_drivers = [
'genericDriver',
'gstreamerDriver',
'dummyDriver']
if value not in valid_drivers:
raise ValueError(f'Invalid sound driver: {value}. Valid options: {valid_drivers}')
raise ValueError(
f'Invalid sound driver: {value}. Valid options: {valid_drivers}')
# Screen settings validation
elif section == 'screen':
if setting == 'driver':
valid_drivers = ['vcsaDriver', 'ptyDriver', 'dummyDriver']
valid_drivers = ['vcsaDriver', 'ptyDriver', 'dummyDriver']
if value not in valid_drivers:
raise ValueError(f'Invalid screen driver: {value}. Valid options: {valid_drivers}')
raise ValueError(
f'Invalid screen driver: {value}. Valid options: {valid_drivers}')
# Input settings validation
elif section == 'keyboard':
if setting == 'driver':
valid_drivers = ['evdevDriver', 'ptyDriver', 'atspiDriver', 'dummyDriver']
valid_drivers = [
'evdevDriver',
'ptyDriver',
'atspiDriver',
'dummyDriver']
if value not in valid_drivers:
raise ValueError(f'Invalid input driver: {value}. Valid options: {valid_drivers}')
# General settings validation
raise ValueError(
f'Invalid input driver: {value}. Valid options: {valid_drivers}')
# General settings validation
elif section == 'general':
if setting == 'debugLevel':
if not (0 <= value <= 3):
raise ValueError(f'Debug level must be between 0 and 3, got {value}')
raise ValueError(
f'Debug level must be between 0 and 3, got {value}')
def parseSettingArgs(self, settingArgs):
for optionElem in settingArgs.split(';'):
@ -307,7 +375,7 @@ class settingsManager():
section = ''
option = ''
value = ''
settingValList = optionElem.split('=',1)
settingValList = optionElem.split('=', 1)
if len(settingValList) != 2:
continue
if '#' in settingValList[0]:
@ -328,14 +396,18 @@ class settingsManager():
value = str(settingValList[1])
self.setOptionArgDict(section, option, value)
def initFenrirConfig(self, cliArgs, fenrirManager = None, environment = environment.environment):
def initFenrirConfig(
self,
cliArgs,
fenrirManager=None,
environment=environment.environment):
settingsRoot = '/etc/fenrirscreenreader/'
settingsFile = cliArgs.setting
soundRoot = '/usr/share/sounds/fenrirscreenreader/'
# get fenrir settings root
if not os.path.exists(settingsRoot):
if os.path.exists(fenrirPath +'/../../config/'):
settingsRoot = fenrirPath +'/../../config/'
if os.path.exists(fenrirPath + '/../../config/'):
settingsRoot = fenrirPath + '/../../config/'
else:
return None
# get settings file
@ -349,10 +421,11 @@ class settingsManager():
if os.path.exists(fenrirPath + '/../../config/sound/'):
soundRoot = fenrirPath + '/../../config/sound/'
environment['runtime']['settingsManager'] = self
environment['runtime']['settingsManager'] = self
environment['runtime']['settingsManager'].initialize(environment)
validConfig = environment['runtime']['settingsManager'].loadSettings(settingsFile)
validConfig = environment['runtime']['settingsManager'].loadSettings(
settingsFile)
if not validConfig:
return None
if cliArgs.options != '':
@ -366,59 +439,108 @@ class settingsManager():
self.setSetting('screen', 'driver', 'ptyDriver')
self.setSetting('keyboard', 'driver', 'ptyDriver')
# TODO needs cleanup use dict
#self.setOptionArgDict('keyboard', 'keyboardLayout', 'pty')
# self.setOptionArgDict('keyboard', 'keyboardLayout', 'pty')
self.setSetting('keyboard', 'keyboardLayout', 'pty')
if cliArgs.emulated_evdev:
self.setSetting('screen', 'driver', 'ptyDriver')
self.setSetting('keyboard', 'driver', 'evdevDriver')
self.setFenrirKeys(self.getSetting('general','fenrirKeys'))
self.setScriptKeys(self.getSetting('general','scriptKeys'))
self.setFenrirKeys(self.getSetting('general', 'fenrirKeys'))
self.setScriptKeys(self.getSetting('general', 'scriptKeys'))
environment['runtime']['debug'] = debugManager.debugManager(self.env['runtime']['settingsManager'].getSetting('general','debugFile'))
environment['runtime']['debug'] = debugManager.debugManager(
self.env['runtime']['settingsManager'].getSetting('general', 'debugFile'))
environment['runtime']['debug'].initialize(environment)
if cliArgs.force_all_screens:
environment['runtime']['force_all_screens'] = True
if cliArgs.ignore_screen:
currentIgnoreScreen = self.getSetting('screen', 'ignoreScreen')
if currentIgnoreScreen:
ignoreScreens = currentIgnoreScreen.split(',') + cliArgs.ignore_screen
ignoreScreens = currentIgnoreScreen.split(
',') + cliArgs.ignore_screen
else:
ignoreScreens = cliArgs.ignore_screen
self.setSetting('screen', 'ignoreScreen', ','.join(ignoreScreens))
if not os.path.exists(self.getSetting('sound','theme') + '/soundicons.conf'):
if os.path.exists(soundRoot + self.getSetting('sound','theme')):
self.setSetting('sound', 'theme', soundRoot + self.getSetting('sound','theme'))
if os.path.exists(self.getSetting('sound','theme') + '/soundicons.conf'):
environment['runtime']['settingsManager'].loadSoundIcons(self.getSetting('sound','theme'))
if not os.path.exists(
self.getSetting(
'sound',
'theme') +
'/soundicons.conf'):
if os.path.exists(soundRoot + self.getSetting('sound', 'theme')):
self.setSetting(
'sound',
'theme',
soundRoot +
self.getSetting(
'sound',
'theme'))
if os.path.exists(
self.getSetting(
'sound',
'theme') +
'/soundicons.conf'):
environment['runtime']['settingsManager'].loadSoundIcons(
self.getSetting('sound', 'theme'))
else:
environment['runtime']['settingsManager'].loadSoundIcons(self.getSetting('sound','theme'))
environment['runtime']['settingsManager'].loadSoundIcons(
self.getSetting('sound', 'theme'))
environment['runtime']['punctuationManager'] = punctuationManager.punctuationManager()
environment['runtime']['punctuationManager'].initialize(environment)
environment['runtime']['punctuationManager'].initialize(environment)
environment['runtime']['textManager'] = textManager.textManager()
environment['runtime']['textManager'].initialize(environment)
if not os.path.exists(self.getSetting('general','punctuationProfile')):
if os.path.exists(settingsRoot + 'punctuation/' + self.getSetting('general','punctuationProfile')):
self.setSetting('general', 'punctuationProfile', settingsRoot + 'punctuation/' + self.getSetting('general','punctuationProfile'))
environment['runtime']['punctuationManager'].loadDicts(self.getSetting('general','punctuationProfile'))
if os.path.exists(settingsRoot + 'punctuation/' + self.getSetting('general','punctuationProfile') + '.conf'):
self.setSetting('general', 'punctuationProfile', settingsRoot + 'punctuation/' + self.getSetting('general','punctuationProfile') + '.conf')
environment['runtime']['punctuationManager'].loadDicts(self.getSetting('general','punctuationProfile'))
if not os.path.exists(
self.getSetting(
'general',
'punctuationProfile')):
if os.path.exists(
settingsRoot +
'punctuation/' +
self.getSetting(
'general',
'punctuationProfile')):
self.setSetting(
'general',
'punctuationProfile',
settingsRoot +
'punctuation/' +
self.getSetting(
'general',
'punctuationProfile'))
environment['runtime']['punctuationManager'].loadDicts(
self.getSetting('general', 'punctuationProfile'))
if os.path.exists(
settingsRoot +
'punctuation/' +
self.getSetting(
'general',
'punctuationProfile') +
'.conf'):
self.setSetting(
'general',
'punctuationProfile',
settingsRoot +
'punctuation/' +
self.getSetting(
'general',
'punctuationProfile') +
'.conf')
environment['runtime']['punctuationManager'].loadDicts(
self.getSetting('general', 'punctuationProfile'))
else:
environment['runtime']['punctuationManager'].loadDicts(self.getSetting('general','punctuationProfile'))
environment['runtime']['punctuationManager'].loadDicts(
self.getSetting('general', 'punctuationProfile'))
if fenrirManager:
environment['runtime']['fenrirManager'] = fenrirManager
environment['runtime']['memoryManager'] = memoryManager.memoryManager()
environment['runtime']['memoryManager'].initialize(environment)
environment['runtime']['memoryManager'].initialize(environment)
environment['runtime']['attributeManager'] = attributeManager.attributeManager()
environment['runtime']['attributeManager'].initialize(environment)
@ -426,7 +548,7 @@ class settingsManager():
environment['runtime']['eventManager'] = eventManager.eventManager()
environment['runtime']['eventManager'].initialize(environment)
environment['runtime']['processManager'] = processManager.processManager()
environment['runtime']['processManager'] = processManager.processManager()
environment['runtime']['processManager'].initialize(environment)
environment['runtime']['outputManager'] = outputManager.outputManager()
@ -450,27 +572,90 @@ class settingsManager():
environment['runtime']['remoteManager'] = remoteManager.remoteManager()
environment['runtime']['remoteManager'].initialize(environment)
if environment['runtime']['inputManager'].getShortcutType() == 'KEY':
if not os.path.exists(self.getSetting('keyboard','keyboardLayout')):
if os.path.exists(settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout')):
self.setSetting('keyboard', 'keyboardLayout', settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout'))
environment['runtime']['inputManager'].loadShortcuts(self.getSetting('keyboard','keyboardLayout'))
if os.path.exists(settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout') + '.conf'):
self.setSetting('keyboard', 'keyboardLayout', settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout') + '.conf')
environment['runtime']['inputManager'].loadShortcuts(self.getSetting('keyboard','keyboardLayout'))
if not os.path.exists(
self.getSetting(
'keyboard',
'keyboardLayout')):
if os.path.exists(
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout')):
self.setSetting(
'keyboard',
'keyboardLayout',
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout'))
environment['runtime']['inputManager'].loadShortcuts(
self.getSetting('keyboard', 'keyboardLayout'))
if os.path.exists(
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout') +
'.conf'):
self.setSetting(
'keyboard',
'keyboardLayout',
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout') +
'.conf')
environment['runtime']['inputManager'].loadShortcuts(
self.getSetting('keyboard', 'keyboardLayout'))
else:
environment['runtime']['inputManager'].loadShortcuts(self.getSetting('keyboard','keyboardLayout'))
environment['runtime']['inputManager'].loadShortcuts(
self.getSetting('keyboard', 'keyboardLayout'))
elif environment['runtime']['inputManager'].getShortcutType() == 'BYTE':
if not os.path.exists(self.getSetting('keyboard','keyboardLayout')):
if os.path.exists(settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout')):
self.setSetting('keyboard', 'keyboardLayout', settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout'))
environment['runtime']['byteManager'].loadByteShortcuts(self.getSetting('keyboard','keyboardLayout'))
if os.path.exists(settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout') + '.conf'):
self.setSetting('keyboard', 'keyboardLayout', settingsRoot + 'keyboard/' + self.getSetting('keyboard','keyboardLayout') + '.conf')
environment['runtime']['byteManager'].loadByteShortcuts(self.getSetting('keyboard','keyboardLayout'))
if not os.path.exists(
self.getSetting(
'keyboard',
'keyboardLayout')):
if os.path.exists(
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout')):
self.setSetting(
'keyboard',
'keyboardLayout',
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout'))
environment['runtime']['byteManager'].loadByteShortcuts(
self.getSetting('keyboard', 'keyboardLayout'))
if os.path.exists(
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout') +
'.conf'):
self.setSetting(
'keyboard',
'keyboardLayout',
settingsRoot +
'keyboard/' +
self.getSetting(
'keyboard',
'keyboardLayout') +
'.conf')
environment['runtime']['byteManager'].loadByteShortcuts(
self.getSetting('keyboard', 'keyboardLayout'))
else:
environment['runtime']['byteManager'].loadByteShortcuts(self.getSetting('keyboard','keyboardLayout'))
environment['runtime']['byteManager'].loadByteShortcuts(
self.getSetting('keyboard', 'keyboardLayout'))
environment['runtime']['cursorManager'] = cursorManager.cursorManager()
environment['runtime']['cursorManager'].initialize(environment)
@ -489,16 +674,25 @@ class settingsManager():
environment['runtime']['quickMenuManager'] = quickMenuManager.quickMenuManager()
environment['runtime']['quickMenuManager'].initialize(environment)
# only possible after having input and screen managers with clean buffer
# only possible after having input and screen managers with clean
# buffer
environment['runtime']['inputManager'].writeEventBuffer()
environment['runtime']['inputManager'].handleDeviceGrab(force = True)
environment['runtime']['inputManager'].handleDeviceGrab(force=True)
environment['runtime']['debug'].writeDebugOut(r'/-------environment-------/',debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(str(environment), debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(r'/-------settings.conf-------/', debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(str(environment['settings']._sections) , debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(r'/-------self.settingArgDict-------/',debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(str( self.settingArgDict) ,debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(
r'/-------environment-------/', debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(
str(environment), debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(
r'/-------settings.conf-------/', debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(
str(environment['settings']._sections), debug.debugLevel.INFO, onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(
r'/-------self.settingArgDict-------/',
debug.debugLevel.INFO,
onAnyLevel=True)
environment['runtime']['debug'].writeDebugOut(
str(self.settingArgDict), debug.debugLevel.INFO, onAnyLevel=True)
self.bindingsBackup = environment['bindings'].copy()
return environment