NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)