characterSettingsSvc.py (1650B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\characterSettingsSvc.py 2 from carbon.common.script.sys.service import Service 3 4 class CharacterSettingsSvc(Service): 5 __guid__ = 'svc.characterSettings' 6 __update_on_reload__ = 1 7 __notifyevents__ = ['OnSessionReset'] 8 9 def __init__(self): 10 super(CharacterSettingsSvc, self).__init__() 11 self._charMgr = None 12 self._settings = None 13 14 @property 15 def charMgr(self): 16 if self._charMgr is None: 17 self._charMgr = session.ConnectToRemoteService('charMgr') 18 return self._charMgr 19 20 def OnSessionReset(self): 21 self._charMgr = None 22 self._settings = None 23 24 def _GetSettings(self): 25 if self._settings is None: 26 self._settings = self.charMgr.GetCharacterSettings() 27 return self._settings 28 29 def Get(self, settingKey): 30 try: 31 return self._GetSettings()[settingKey] 32 except KeyError: 33 return None 34 35 def Save(self, settingKey, value): 36 if value is None or value == '': 37 self.Delete(settingKey) 38 else: 39 if len(value) > 102400: 40 raise RuntimeError("We don't want to send too large character settings to the server", settingKey, len(value)) 41 self.charMgr.SaveCharacterSetting(settingKey, value) 42 self._GetSettings()[settingKey] = value 43 44 def Delete(self, settingKey): 45 settings = self._GetSettings() 46 if settingKey in settings: 47 self.charMgr.DeleteCharacterSetting(settingKey) 48 del settings[settingKey]