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

setting.py (9086B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\clientsettings\setting.py
      2 import uuid
      3 from signals import Signal
      4 
      5 class _UserSettingMixin(object):
      6 
      7     @property
      8     def settings_path(self):
      9         return settings.user.ui
     10 
     11 
     12 class _CharSettingMixin(object):
     13 
     14     @property
     15     def settings_path(self):
     16         return settings.char.ui
     17 
     18 
     19 class _PublicSettingMixin(object):
     20 
     21     @property
     22     def settings_path(self):
     23         return settings.public.ui
     24 
     25 
     26 class _DeviceSettingMixin(object):
     27 
     28     @property
     29     def settings_path(self):
     30         return settings.public.device
     31 
     32 
     33 class _AudioSettingMixin(object):
     34 
     35     @property
     36     def settings_path(self):
     37         return settings.public.audio
     38 
     39 
     40 class _WindowSettingMixin(object):
     41 
     42     @property
     43     def settings_path(self):
     44         return settings.char.windows
     45 
     46 
     47 class _SuppressSettingMixin(object):
     48 
     49     @property
     50     def settings_path(self):
     51         return settings.user.suppress
     52 
     53 
     54 class _BaseSetting(object):
     55     NOT_SET = 'not_set'
     56 
     57     def __init__(self, settings_key, default_value):
     58         super(_BaseSetting, self).__init__()
     59         self.settings_key = settings_key
     60         self._current_value = self.NOT_SET
     61         self._default_value = default_value
     62         self.on_change = Signal('%s.on_change (%s)' % (self.__class__.__name__, self.settings_key))
     63 
     64     def get(self):
     65         return self.settings_path.Get(self.settings_key, self.get_default())
     66         if self._current_value == self.NOT_SET:
     67             self._current_value = self.settings_path.Get(self.settings_key, self.get_default())
     68         return self._current_value
     69 
     70     def is_default(self):
     71         return self.is_equal(self.get_default())
     72 
     73     def get_default(self):
     74         if callable(self._default_value):
     75             return self._default_value()
     76         else:
     77             return self._default_value
     78 
     79     def is_equal(self, value):
     80         return value == self.get()
     81 
     82     def set(self, value):
     83         self._validate(value)
     84         if not self.is_equal(value):
     85             self._set(value)
     86             self._trigger_on_change(value)
     87 
     88     def _trigger_on_change(self, value):
     89         self.on_change(value)
     90 
     91     def _set(self, value):
     92         self._current_value = value
     93         self.settings_path.Set(self.settings_key, value)
     94 
     95     def _validate(self, value):
     96         return True
     97 
     98     def reset(self):
     99         self.set(self.get_default())
    100 
    101 
    102 class _BaseSettingEnum(_BaseSetting):
    103 
    104     def __init__(self, settings_key, default_value, options = None):
    105         super(_BaseSettingEnum, self).__init__(settings_key, default_value)
    106         self.options = tuple(options) if options else None
    107 
    108     def _validate(self, value):
    109         if self.options and value not in self.options:
    110             raise ValueError('Unexpected settings value %s (allowed values: %s)' % (value, repr(self.options)))
    111 
    112 
    113 class _BaseSettingBool(_BaseSetting):
    114 
    115     def enable(self):
    116         self.set(True)
    117 
    118     def disable(self):
    119         self.set(False)
    120 
    121     def toggle(self):
    122         self.set(not self.is_enabled())
    123 
    124     def is_enabled(self):
    125         return self.get()
    126 
    127 
    128 class _BaseSettingNumeric(_BaseSetting):
    129 
    130     def __init__(self, settings_key, default_value, min_value = None, max_value = None):
    131         super(_BaseSettingNumeric, self).__init__(settings_key, default_value)
    132         self.min_value = min_value
    133         self.max_value = max_value
    134 
    135     def _validate(self, value):
    136         if self.min_value is not None and value < self.min_value:
    137             raise ValueError('Unexpected settings value %s (min_value=%s)' % (value, self.min_value))
    138         elif self.max_value is not None and value > self.max_value:
    139             raise ValueError('Unexpected settings value %s (max_value=%s)' % (value, self.max_value))
    140 
    141 
    142 class _BaseSettingNumericList(_BaseSetting):
    143 
    144     def __init__(self, settings_key, default_value, min_value = None, max_value = None):
    145         super(_BaseSettingNumericList, self).__init__(settings_key, default_value)
    146         self.min_value = min_value
    147         self.max_value = max_value
    148 
    149     def _validate(self, value):
    150         for x in value:
    151             if self.min_value is not None and x < self.min_value:
    152                 raise ValueError('Unexpected settings value %s (min_value=%s)' % (x, self.min_value))
    153             elif self.max_value is not None and x > self.max_value:
    154                 raise ValueError('Unexpected settings value %s (max_value=%s)' % (x, self.max_value))
    155 
    156 
    157 class _BaseSettingString(_BaseSetting):
    158     pass
    159 
    160 
    161 class _BaseSettingUUID(_BaseSetting):
    162 
    163     def __init__(self, settings_key, default_value):
    164         super(_BaseSettingUUID, self).__init__(settings_key, default_value)
    165 
    166     def _validate(self, value):
    167         if value is None:
    168             return True
    169         try:
    170             uuid.UUID(value)
    171         except ValueError:
    172             raise ValueError('Unexpected settings value %s (not a valid uuid) ' % value)
    173 
    174     def get(self):
    175         value = super(_BaseSettingUUID, self).get()
    176         if value is None:
    177             return
    178         else:
    179             return uuid.UUID(value)
    180 
    181     def set(self, value):
    182         strValue = str(value) if value is not None else None
    183         self._validate(strValue)
    184         self.settings_path.Set(self.settings_key, strValue)
    185         self.on_change(value)
    186 
    187 
    188 class _BaseSettingUUIDList(_BaseSetting):
    189 
    190     def __init__(self, settings_key, default_value):
    191         super(_BaseSettingUUIDList, self).__init__(settings_key, default_value)
    192 
    193     def _validate(self, value):
    194         if value is None:
    195             return True
    196         try:
    197             [ uuid.UUID(x) for x in value ]
    198             return True
    199         except ValueError:
    200             raise ValueError('Unexpected settings value %s (contains invalid uuid) ' % value)
    201 
    202     def get(self):
    203         values = super(_BaseSettingUUIDList, self).get()
    204         if values is None:
    205             return
    206         else:
    207             return [ uuid.UUID(x) for x in values ]
    208 
    209     def set(self, value):
    210         str_value = [ str(x) for x in value ] if value is not None else None
    211         self._validate(str_value)
    212         self.settings_path.Set(self.settings_key, str_value)
    213         self.on_change(value)
    214 
    215 
    216 class CharSettingBool(_BaseSettingBool, _CharSettingMixin):
    217     pass
    218 
    219 
    220 class CharSettingNumeric(_BaseSettingNumeric, _CharSettingMixin):
    221     pass
    222 
    223 
    224 class CharSettingNumericList(_BaseSettingNumericList, _CharSettingMixin):
    225     pass
    226 
    227 
    228 class CharSettingEnum(_BaseSettingEnum, _CharSettingMixin):
    229     pass
    230 
    231 
    232 class CharSettingString(_BaseSettingString, _CharSettingMixin):
    233     pass
    234 
    235 
    236 class CharSettingUUID(_BaseSettingUUID, _CharSettingMixin):
    237     pass
    238 
    239 
    240 class CharSettingUUIDList(_BaseSettingUUIDList, _CharSettingMixin):
    241     pass
    242 
    243 
    244 class UserSettingBool(_BaseSettingBool, _UserSettingMixin):
    245     pass
    246 
    247 
    248 class UserSettingNumeric(_BaseSettingNumeric, _UserSettingMixin):
    249     pass
    250 
    251 
    252 class UserSettingEnum(_BaseSettingEnum, _UserSettingMixin):
    253     pass
    254 
    255 
    256 class UserSettingString(_BaseSettingString, _UserSettingMixin):
    257     pass
    258 
    259 
    260 class UserSettingUUID(_BaseSettingUUID, _UserSettingMixin):
    261     pass
    262 
    263 
    264 class PublicSettingBool(_BaseSettingBool, _PublicSettingMixin):
    265     pass
    266 
    267 
    268 class PublicSettingNumeric(_BaseSettingNumeric, _PublicSettingMixin):
    269     pass
    270 
    271 
    272 class PublicSettingEnum(_BaseSettingEnum, _PublicSettingMixin):
    273     pass
    274 
    275 
    276 class PublicSettingString(_BaseSettingString, _PublicSettingMixin):
    277     pass
    278 
    279 
    280 class DeviceSettingBool(_BaseSettingBool, _DeviceSettingMixin):
    281     pass
    282 
    283 
    284 class DeviceSettingEnum(_BaseSettingEnum, _DeviceSettingMixin):
    285     pass
    286 
    287 
    288 class AudioSettingBool(_BaseSettingBool, _AudioSettingMixin):
    289     pass
    290 
    291 
    292 class AudioSettingNumeric(_BaseSettingNumeric, _AudioSettingMixin):
    293     pass
    294 
    295 
    296 class AudioSettingEnum(_BaseSettingEnum, _AudioSettingMixin):
    297     pass
    298 
    299 
    300 class SuppressSettingBool(_BaseSettingBool, _SuppressSettingMixin):
    301     pass
    302 
    303 
    304 class SessionSettingBool(_BaseSettingBool):
    305 
    306     def __init__(self, default_value):
    307         super(SessionSettingBool, self).__init__(None, default_value)
    308         self._value = default_value
    309 
    310     def _set(self, value):
    311         self._value = value
    312 
    313     def get(self):
    314         return self._value
    315 
    316 
    317 class SessionSettingNumeric(_BaseSettingNumeric):
    318 
    319     def __init__(self, default_value, min_value = None, max_value = None):
    320         super(SessionSettingNumeric, self).__init__(None, default_value, min_value, max_value)
    321         self._value = default_value
    322 
    323     def _set(self, value):
    324         self._value = value
    325 
    326     def get(self):
    327         return self._value
    328 
    329 
    330 class SessionSettingEnum(_BaseSettingEnum):
    331 
    332     def __init__(self, default_value, options = None):
    333         super(SessionSettingEnum, self).__init__(None, default_value, options)
    334         self._value = default_value
    335 
    336     def _set(self, value):
    337         self._value = value
    338 
    339     def get(self):
    340         return self._value
    341 
    342 
    343 class SessionSettingString(_BaseSettingString):
    344 
    345     def __init__(self, default_value):
    346         super(SessionSettingString, self).__init__(None, default_value)
    347         self._value = default_value
    348 
    349     def _set(self, value):
    350         self._value = value
    351 
    352     def get(self):
    353         return self._value