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

yamldefaultoverview.py (5037B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\parklife\overview\default\yamldefaultoverview.py
      2 from eve.client.script.parklife.overview.default import categories
      3 from eve.client.script.parklife.overview.default.const import YAML_OVERVIEWS
      4 from eve.client.script.parklife.overview.default.defaultoverview import BaseDefaultOverview, PresetData, TabData
      5 from eve.client.script.parklife.overview.default.errors import FailedToLoadDefaultOverview, LoadedDefaultOverviewIsEmpty
      6 from localization import GetByMessageID
      7 from logging import getLogger
      8 from overviewPresets.overviewPresetUtil import GetDictFromList, ReplaceInnerListsWithDicts
      9 from overviewPresets.overviewSettingsConst import PRESET_SETTINGS_GROUPS, PRESET_SETTINGS_ALWAYS_SHOWN_STATES, PRESET_SETTINGS_FILTERED_STATES
     10 from overviewPresets.overviewSharingConst import OVERVIEW_SHARING_PRESETS, OVERVIEW_SHARING_TAB_SETUP
     11 import yaml
     12 logger = getLogger(__name__)
     13 
     14 class YamlDefaultOverview(BaseDefaultOverview):
     15 
     16     def __init__(self, overview_id, should_inform_of_update, general_settings_loader = None):
     17         super(YamlDefaultOverview, self).__init__(should_inform_of_update)
     18         self.overview = YAML_OVERVIEWS[overview_id]
     19         self.general_settings_loader = general_settings_loader
     20         self.data = None
     21 
     22     def _get_localized_name(self, name_id):
     23         if name_id:
     24             return GetByMessageID(name_id)
     25         return ''
     26 
     27     def _get_preset_name(self, preset_name):
     28         name_id = self._get_preset_name_id(preset_name)
     29         if name_id:
     30             return self._get_localized_name(name_id)
     31         return preset_name
     32 
     33     def _get_preset_name_id(self, preset_name):
     34         name_id = self.overview['preset_name_ids'].get(preset_name, None)
     35         return name_id
     36 
     37     def _get_preset_description(self, preset_name):
     38         name_id = self._get_preset_description_id(preset_name)
     39         if name_id:
     40             return self._get_localized_name(name_id)
     41         return preset_name
     42 
     43     def _get_preset_description_id(self, preset_name):
     44         name_id = self.overview['preset_name_ids'].get(preset_name, None)
     45         return name_id
     46 
     47     def _get_tab_name(self, tab_id):
     48         name_id = self._get_tab_name_id(tab_id)
     49         if name_id:
     50             return self._get_localized_name(name_id)
     51         return str(tab_id)
     52 
     53     def _get_tab_name_id(self, tab_id):
     54         name_id = self.overview['tab_name_ids'].get(tab_id, None)
     55         return name_id
     56 
     57     def activate(self):
     58         if callable(self.general_settings_loader):
     59             self.general_settings_loader(self.data)
     60 
     61     def _load_yaml(self):
     62         try:
     63             source = self.overview['yaml']
     64             data = yaml.load(source, Loader=yaml.CLoader)
     65         except Exception as exc:
     66             raise FailedToLoadDefaultOverview('Failed to read YAML: {exc}'.format(exc=exc))
     67 
     68         if data is None:
     69             raise LoadedDefaultOverviewIsEmpty('Loaded YAML data is empty: {source}'.format(source=source))
     70         return data
     71 
     72     def _do_load(self):
     73         self._all_presets = {}
     74         self._sorted_preset_names = []
     75         self._default_tabs = {}
     76         self.data = {}
     77         try:
     78             self.data = self._load_yaml()
     79         except (FailedToLoadDefaultOverview, LoadedDefaultOverviewIsEmpty) as exc:
     80             logger.exception(exc)
     81             return
     82 
     83         if callable(self.general_settings_loader):
     84             self.general_settings_loader(self.data)
     85         presets_dict = GetDictFromList(self.data[OVERVIEW_SHARING_PRESETS])
     86         presets = ReplaceInnerListsWithDicts(presets_dict)
     87         for short_name, preset_data in presets.iteritems():
     88             if 'DefaultPreset' in short_name:
     89                 name_id = int(short_name.replace('DefaultPreset_', ''))
     90                 name = self._get_localized_name(name_id)
     91             else:
     92                 name_id = self._get_preset_name_id(short_name)
     93                 name = self._get_preset_name(short_name)
     94             preset = PresetData(name=name, short_name=short_name, name_id=name_id, description_id=preset_data.get('description_id', None), category_id=preset_data.get('category_id', categories.CATEGORY_NONE), groups=preset_data.get(PRESET_SETTINGS_GROUPS, []), always_shown_states=preset_data.get(PRESET_SETTINGS_ALWAYS_SHOWN_STATES, []), filtered_states=preset_data.get(PRESET_SETTINGS_FILTERED_STATES, []))
     95             self._all_presets[short_name] = preset
     96 
     97         self._sorted_preset_names = [ preset.short_name for preset in sorted(self._all_presets.values(), key=lambda k: k.name) ]
     98         self._default_preset = self.overview['default_preset']
     99         tabs_dict = GetDictFromList(self.data.get(OVERVIEW_SHARING_TAB_SETUP, []))
    100         tabs = ReplaceInnerListsWithDicts(tabs_dict)
    101         for tab_id, tab_data in tabs.iteritems():
    102             self._default_tabs[tab_id] = TabData(name=self._get_tab_name(tab_id), color=tab_data.get('color', None), overview_preset=tab_data.get('overview', None), bracket_preset=tab_data.get('bracket', None))