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))