Exemplo n.º 1
0
 def init(self):
     from messenger.proto import ServerSettings
     self.server = ServerSettings()
     doc_loaders.load(self)
     self.lobby.onSettingsLoaded(self)
     from account_helpers.settings_core.SettingsCore import g_settingsCore
     g_settingsCore.onSettingsChanged += self.__accs_onSettingsChanged
Exemplo n.º 2
0
 def init(self):
     from messenger.proto import ServerSettings
     self.server = ServerSettings()
     doc_loaders.load(self)
     self.lobby.onSettingsLoaded(self)
     from account_helpers.settings_core.SettingsCore import g_settingsCore
     g_settingsCore.onSettingsChanged += self.__accs_onSettingsChanged
Exemplo n.º 3
0
 def init(self):
     self.__colorsSchemes.update({
         'groups':
         _ColorScheme(['default']),
         'rosters':
         _ColorScheme(['online', 'offline']),
         'contacts':
         _ColorScheme(['online', 'offline']),
         'battle/player':
         _ColorScheme(['default', 'colorBlind']),
         'battle/message':
         _ColorScheme(['default', 'colorBlind']),
         'battle/receiver':
         _ColorScheme(['default', 'colorBlind'])
     })
     from messenger.proto import ServerSettings
     self.server = ServerSettings()
     doc_loaders.load(self)
     self.lobby.onSettingsLoaded(self)
     self.settingsCore.onSettingsChanged += self.__accs_onSettingsChanged
Exemplo n.º 4
0
class MessengerSettings(object):
    __slots__ = ('__colorsSchemes', '__messageFormatters', '__eManager', '__isUserPrefsInited', 'lobby', 'battle', 'userPrefs', 'htmlTemplates', 'msgTemplates', 'server', 'onUserPreferencesUpdated', 'onColorsSchemesUpdated')

    def __init__(self):
        self.__colorsSchemes = {'groups': _ColorScheme(['default']),
         'rosters': _ColorScheme(['online', 'offline']),
         'contacts': _ColorScheme(['online', 'offline']),
         'battle/player': _ColorScheme(['default', 'colorBlind']),
         'battle/message': _ColorScheme(['default', 'colorBlind']),
         'battle/receiver': _ColorScheme(['default', 'colorBlind'])}
        self.lobby = _LobbySettings()
        self.battle = _BattleSettings()
        self.userPrefs = _makeDefUserPrefs()
        self.__isUserPrefsInited = False
        self.htmlTemplates = XMLCollection('', '')
        self.msgTemplates = MessageTemplates('', '')
        self.__messageFormatters = {}
        self.server = None
        self.__eManager = Event.EventManager()
        self.onUserPreferencesUpdated = Event.Event(self.__eManager)
        self.onColorsSchemesUpdated = Event.Event(self.__eManager)
        return

    def init(self):
        from messenger.proto import ServerSettings
        self.server = ServerSettings()
        doc_loaders.load(self)
        self.lobby.onSettingsLoaded(self)
        from account_helpers.settings_core.SettingsCore import g_settingsCore
        g_settingsCore.onSettingsChanged += self.__accs_onSettingsChanged

    def fini(self):
        from account_helpers.settings_core.SettingsCore import g_settingsCore
        g_settingsCore.onSettingsChanged -= self.__accs_onSettingsChanged
        self.__eManager.clear()
        self.__colorsSchemes.clear()
        self.__messageFormatters.clear()

    def update(self):
        repository = _getAccountRepository()
        if repository:
            settings = repository.serverSettings
        else:
            settings = {}
        self.server.update(settings)
        from account_helpers.settings_core.SettingsCore import g_settingsCore
        if g_settingsCore.getSetting('isColorBlind'):
            csName = 'colorBlind'
        else:
            csName = 'default'
        for colorScheme in self.__colorsSchemes.itervalues():
            colorScheme.setCurrent(csName)

    def getColorScheme(self, key):
        try:
            return self.__colorsSchemes[key]
        except KeyError:
            LOG_ERROR('Color scheme not found', key)
            return None

        return None

    def resetUserPreferences(self):
        self.userPrefs = _makeDefUserPrefs()
        self.__isUserPrefsInited = False

    def saveUserPreferences(self, data):
        if doc_loaders.user_prefs.flush(self, data) or not self.__isUserPrefsInited:
            self.__isUserPrefsInited = True
            self.onUserPreferencesUpdated()

    def resetBattleReceiverIfNeed(self):
        if not self.userPrefs.storeReceiverInBattle:
            self.battle.lastReceiver = BATTLE_CHANNEL.TEAM.name

    def __accs_onSettingsChanged(self, diff):
        if 'isColorBlind' in diff:
            result = False
            for colorScheme in self.__colorsSchemes.itervalues():
                csName = 'colorBlind' if diff['isColorBlind'] else 'default'
                if colorScheme.setCurrent(csName):
                    result = True

            if result:
                self.onColorsSchemesUpdated()
class MessengerSettings(object):
    __slots__ = ('__colorsSchemes', '__messageFormatters', '__eManager',
                 '__isUserPrefsInited', '__defaultUserPrefsSnapshot', 'lobby',
                 'battle', 'userPrefs', 'htmlTemplates', 'msgTemplates',
                 'server', 'onUserPreferencesUpdated',
                 'onColorsSchemesUpdated')
    settingsCore = dependency.descriptor(ISettingsCore)

    def __init__(self):
        self.__colorsSchemes = {}
        self.lobby = _LobbySettings()
        self.battle = _BattleSettings()
        self.userPrefs = _makeDefUserPrefs()
        self.__isUserPrefsInited = False
        self.__defaultUserPrefsSnapshot = ()
        self.htmlTemplates = XMLCollection('', '')
        self.msgTemplates = MessageTemplates('', '')
        self.__messageFormatters = {}
        self.server = None
        self.__eManager = Event.EventManager()
        self.onUserPreferencesUpdated = Event.Event(self.__eManager)
        self.onColorsSchemesUpdated = Event.Event(self.__eManager)
        return

    def init(self):
        self.__colorsSchemes.update({
            'groups':
            _ColorScheme(['default']),
            'rosters':
            _ColorScheme(['online', 'offline']),
            'contacts':
            _ColorScheme(['online', 'offline']),
            'battle/player':
            _ColorScheme(['default', 'colorBlind']),
            'battle/message':
            _ColorScheme(['default', 'colorBlind']),
            'battle/receiver':
            _ColorScheme(['default', 'colorBlind'])
        })
        from messenger.proto import ServerSettings
        self.server = ServerSettings()
        doc_loaders.load(self)
        self.__defaultUserPrefsSnapshot = self.userPrefs[:]
        self.lobby.onSettingsLoaded(self)
        self.settingsCore.onSettingsChanged += self.__accs_onSettingsChanged

    def fini(self):
        self.settingsCore.onSettingsChanged -= self.__accs_onSettingsChanged
        self.__eManager.clear()
        self.__colorsSchemes.clear()
        self.__messageFormatters.clear()

    def update(self):
        repository = _getAccountRepository()
        if repository:
            settings = repository.serverSettings
        else:
            settings = {}
        self.server.update(settings)
        if self.settingsCore.getSetting('isColorBlind'):
            csName = 'colorBlind'
        else:
            csName = 'default'
        for colorScheme in self.__colorsSchemes.itervalues():
            colorScheme.setCurrent(csName)

    def getColorScheme(self, key):
        try:
            return self.__colorsSchemes[key]
        except KeyError:
            LOG_ERROR('Color scheme not found', key)
            return None

        return None

    def resetUserPreferences(self):
        if self.__defaultUserPrefsSnapshot:
            self.userPrefs = _UserPrefs(*self.__defaultUserPrefsSnapshot)
        else:
            self.userPrefs = _makeDefUserPrefs()
        self.__isUserPrefsInited = False

    def saveUserPreferences(self, data):
        if doc_loaders.user_prefs.flush(self,
                                        data) or not self.__isUserPrefsInited:
            self.__isUserPrefsInited = True
            self.onUserPreferencesUpdated()

    def resetBattleReceiverIfNeed(self):
        if not self.userPrefs.storeReceiverInBattle:
            self.battle.lastReceiver = BATTLE_CHANNEL.TEAM.name

    def __accs_onSettingsChanged(self, diff):
        if 'isColorBlind' in diff:
            result = False
            for colorScheme in self.__colorsSchemes.itervalues():
                csName = 'colorBlind' if diff['isColorBlind'] else 'default'
                if colorScheme.setCurrent(csName):
                    result = True

            if result:
                self.onColorsSchemesUpdated()