extaColumnUtil.py (3445B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\structureBrowser\extaColumnUtil.py 2 from eve.client.script.ui.station.stationServiceConst import serviceDataByNameID, serviceIDAlwaysPresent 3 from eve.common.script.util.eveFormat import FmtISK 4 from localization import GetByLabel 5 import structures 6 7 def GetSettingDataObjectForServiceName(serviceName): 8 serviceData = serviceDataByNameID.get(serviceName, None) 9 if not serviceData or serviceData.serviceID == serviceIDAlwaysPresent: 10 return 11 settingIDForService = structures.SERVICES_ACCESS_SETTINGS.get(serviceData.serviceID, None) 12 if settingIDForService is None: 13 return 14 settingInfo = structures.SETTING_OBJECT_BY_SETTINGID.get(settingIDForService, None) 15 return settingInfo 16 17 18 def GetHeaderForService(serviceName): 19 settingData = GetSettingDataObjectForServiceName(serviceName) 20 if settingData is None: 21 return 22 labelPath = settingData.labelPath 23 if labelPath: 24 return GetByLabel(labelPath) 25 26 27 class ExtraColumnProvider(object): 28 NO_VALUE_FOUND_CHAR = '-' 29 NOT_AVAILABLE = '_' 30 31 def GetServicesForUniqueColumns(self, allServicesChecked): 32 settingsAdded = [] 33 servicesToUseForColumns = [] 34 for eachServiceName in allServicesChecked: 35 settingData = GetSettingDataObjectForServiceName(eachServiceName) 36 if settingData and settingData.settingID not in settingsAdded: 37 settingsAdded.append(settingData.settingID) 38 servicesToUseForColumns.append(eachServiceName) 39 40 return servicesToUseForColumns 41 42 def GetColumnText(self, controller, serviceName): 43 dataAndValue = self._GetSettingDataAndValueForColumn(controller, serviceName) 44 if dataAndValue == self.NOT_AVAILABLE: 45 return 46 settingData, value = dataAndValue 47 if value is None: 48 return self.NO_VALUE_FOUND_CHAR 49 text = FormatColumnValue(value, settingData.valueType, settingData.settingID) 50 return text 51 52 def GetValueForColumn(self, controller, serviceName): 53 dataAndValue = self._GetSettingDataAndValueForColumn(controller, serviceName) 54 if dataAndValue == self.NOT_AVAILABLE: 55 return self.NOT_AVAILABLE 56 return dataAndValue[1] 57 58 def _GetSettingDataAndValueForColumn(self, controller, serviceName): 59 serviceData = serviceDataByNameID.get(serviceName, None) 60 if not serviceData: 61 return self.NOT_AVAILABLE 62 settingData = GetSettingDataObjectForServiceName(serviceName) 63 if settingData is None: 64 return self.NOT_AVAILABLE 65 value = controller.GetInfoForExtraColumns(serviceData.serviceID) 66 return (settingData, value) 67 68 69 def FormatColumnValue(value, valueType, settingID): 70 if settingID == structures.SETTING_HOUSING_CAN_DOCK: 71 return bool(value is not None) 72 if settingID == structures.SETTING_JUMP_BRIDGE_ACTIVATION: 73 return bool(value is not None) 74 if valueType == structures.SETTINGS_TYPE_INT: 75 return int(value) 76 if valueType == structures.SETTINGS_TYPE_PERCENTAGE: 77 return GetByLabel('UI/Structures/Browser/PercentageText', value=value) 78 if valueType == structures.SETTINGS_TYPE_BOOL: 79 return bool(value) 80 if valueType == structures.SETTINGS_TYPE_ISK: 81 return FmtISK(value, showFractionsAlways=0) 82 return value