blocker.py (3125B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\parklife\overview\blocker.py 2 from eve.client.script.parklife.overview.window import reset_overview_window 3 from logging import getLogger 4 logger = getLogger(__name__) 5 SETTINGS_GROUP_IN_USE = 'overview' 6 SETTINGS_GROUP_BACKUP = 'overview_overridden' 7 8 class OverviewBlocker(object): 9 __notifyevents__ = ['OnSessionReset'] 10 11 def __init__(self, initialize_function, reset_function, set_read_only_function, default_settings): 12 self._is_blocked = False 13 self._initialize_function = initialize_function 14 self._reset_function = reset_function 15 self._set_read_only_function = set_read_only_function 16 self._default_settings = default_settings 17 if self._is_overridden(): 18 self._restore_overview_settings() 19 sm.RegisterNotify(self) 20 21 def block(self): 22 if self._is_blocked: 23 return 24 self._block() 25 26 def unblock(self): 27 if not self._is_blocked: 28 return 29 self._unblock() 30 31 def _clear(self): 32 if self._is_overridden(): 33 self._unblock() 34 35 @reset_overview_window 36 def _block(self): 37 self._log_debug('Started blocking') 38 self._is_blocked = True 39 self._backup_overview_settings() 40 self._delete_overview_settings() 41 self._reset_function() 42 self._make_overview_read_only() 43 self._log_debug('Completed blocking') 44 45 @reset_overview_window 46 def _unblock(self): 47 self._log_debug('Started unblocking') 48 self._is_blocked = False 49 self._restore_overview_settings() 50 self._initialize_function() 51 self._make_overview_editable() 52 self._log_debug('Completed unblocking') 53 54 def _backup_overview_settings(self): 55 user_settings = settings.user 56 user_settings.DuplicateGroup(SETTINGS_GROUP_IN_USE, SETTINGS_GROUP_BACKUP) 57 user_settings.WriteToDiskImmediate() 58 59 def _delete_overview_settings(self): 60 user_settings = settings.user 61 user_settings.ClearGroup(SETTINGS_GROUP_IN_USE) 62 user_settings.WriteToDiskImmediate() 63 64 def _restore_overview_settings(self): 65 user_settings = settings.user 66 user_settings.RemoveGroup(SETTINGS_GROUP_IN_USE) 67 user_settings.WriteToDiskImmediate() 68 user_settings.RenameGroup(SETTINGS_GROUP_BACKUP, SETTINGS_GROUP_IN_USE) 69 user_settings.WriteToDiskImmediate() 70 71 def _make_overview_read_only(self): 72 self._set_read_only_function(True) 73 74 def _make_overview_editable(self): 75 self._set_read_only_function(False) 76 77 def _is_overridden(self): 78 user_settings = settings.user 79 return user_settings.HasGroup(SETTINGS_GROUP_BACKUP) 80 81 def OnSessionReset(self): 82 self._clear() 83 84 def _log_debug(self, text): 85 settings_text = self._default_settings.get_settings_report() 86 msg = 'Overview Blocker: {text}. \nIs Overriden: {is_overriden} \n{settings_text}'.format(text=text, is_overriden=self._is_overridden(), settings_text=settings_text) 87 logger.debug(msg)