facilityEntry.py (7162B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\industry\facilityEntry.py 2 from evePathfinder.core import IsUnreachableJumpCount 3 from math import pi 4 import carbonui.const as uiconst 5 import eveformat.client 6 import industry 7 import localization 8 import structures 9 from carbonui.primitives.gradientSprite import GradientSprite 10 from carbonui.primitives.sprite import Sprite 11 from eve.client.script.ui.control.baseListEntry import BaseListEntryCustomColumns 12 from eve.client.script.ui.control.eveLabel import Label 13 from eve.client.script.ui.shared.industry import industryUIConst 14 from eve.client.script.ui.shared.industry.industryUIConst import VIEWMODE_ICONLIST 15 from eve.client.script.ui.shared.industry.installationActivityIcon import InstallationActivityIcon 16 from eveservices.menu import GetMenuService 17 from utillib import KeyVal 18 19 class FacilityEntry(BaseListEntryCustomColumns): 20 default_name = 'FacilityEntry' 21 22 def ApplyAttributes(self, attributes): 23 BaseListEntryCustomColumns.ApplyAttributes(self, attributes) 24 self.facilityData = self.node.facilityData 25 self.item = self.node.item 26 self.viewMode = self.node.viewMode 27 self.showTax = self.node.activityID in industry.ACTIVITIES 28 self.AddColumnJumps() 29 self.AddColumnText(self.GetSecurityLabel()) 30 self.AddColumnText(self.facilityData.GetName()) 31 self.AddColumnsActivities() 32 if self.showTax: 33 self.AddColumnsTax() 34 self.AddColumnText(self.facilityData.GetTypeName()) 35 self.AddColumnText(self.facilityData.GetOwnerName()) 36 37 def AddColumnJumps(self): 38 jumps = self.node.jumps 39 if not IsUnreachableJumpCount(jumps): 40 self.AddColumnText(jumps) 41 else: 42 col = self.AddColumnContainer() 43 Sprite(name='infinityIcon', parent=col, align=uiconst.CENTERLEFT, pos=(6, 0, 11, 6), texturePath='res:/UI/Texture/Classes/Industry/infinity.png', opacity=Label.default_color[3]) 44 45 def AddColumnsActivities(self): 46 costIndexes = self.facilityData.GetCostIndexByActivityID() 47 iconSize = 20 if self.viewMode == VIEWMODE_ICONLIST else 14 48 for i, activityID in enumerate(industry.ACTIVITIES): 49 col = self.AddColumnContainer() 50 isEnabled = activityID in self.facilityData.activities 51 isFilterTarget = isEnabled and (self.node.activityID not in self.facilityData.activities or self.node.activityID == activityID) 52 btn = InstallationActivityIcon(parent=col, align=uiconst.CENTER, pos=(0, 53 -1, 54 iconSize, 55 iconSize), iconSize=iconSize, activityID=activityID, isEnabled=isEnabled, isFilterTarget=isFilterTarget, facilityData=self.facilityData) 56 systemCostIndex = costIndexes.get(activityID, None) 57 if systemCostIndex: 58 maxIndex = sm.GetService('facilitySvc').GetMaxActivityModifier(activityID) 59 value = systemCostIndex / maxIndex 60 self.ConstructSystemCostGradient(col, value) 61 62 def AddColumnsTax(self): 63 taxRates = self.facilityData.GetServiceTaxes() 64 text = '' 65 for serviceID, tax in taxRates.iteritems(): 66 if tax is None or structures.GetActivityID(serviceID) != self.node.activityID: 67 continue 68 text += '%.2f/' % tax 69 70 self.AddColumnText(text[:-1]) 71 72 def ConstructSystemCostGradient(self, col, systemCostIndex): 73 GradientSprite(name='systemCostGradient', align=uiconst.TOLEFT_PROP, state=uiconst.UI_DISABLED, parent=col, width=systemCostIndex, padding=0, rgbData=((0.0, industryUIConst.COLOR_SYSTEMCOSTINDEX[:3]),), rotation=pi / 2, alphaData=((0.0, 1.0), 74 (0.075, 1.0), 75 (0.075001, 0.2), 76 (0.8, 0.0))) 77 78 @staticmethod 79 def GetDynamicHeight(node, width): 80 if node.viewMode == VIEWMODE_ICONLIST: 81 return 28 82 else: 83 return 20 84 85 @staticmethod 86 def GetDefaultColumnWidth(): 87 return {localization.GetByLabel('UI/Industry/Facility'): 230, 88 localization.GetByLabel('UI/Common/Owner'): 230} 89 90 @staticmethod 91 def GetFixedColumns(viewMode): 92 ret = {} 93 if viewMode == VIEWMODE_ICONLIST: 94 iconSize = 36 95 ret[localization.GetByLabel('UI/Industry/Activities')] = 154 96 else: 97 iconSize = 22 98 ret[localization.GetByLabel('UI/Industry/Activities')] = 130 99 ret.update({localization.GetByLabel('UI/Industry/ActivityManufacturing'): iconSize, 100 localization.GetByLabel('UI/Industry/ActivityCopying'): iconSize, 101 localization.GetByLabel('UI/Industry/ActivityMaterialEfficiencyResearch'): iconSize, 102 localization.GetByLabel('UI/Industry/ActivityTimeEfficiencyResearch'): iconSize, 103 localization.GetByLabel('UI/Industry/ActivityInvention'): iconSize, 104 localization.GetByLabel('UI/Industry/ActivityReaction'): iconSize}) 105 return ret 106 107 def GetSecurityLabel(self): 108 return eveformat.solar_system_security_status(self.facilityData.solarSystemID) 109 110 @staticmethod 111 def GetColumnSortValues(facilityData, jumps, activityID, showTax): 112 if facilityData.facilityID == session.stationid: 113 jumps = -1 114 costIndexes = facilityData.GetCostIndexByActivityID() 115 costIndexValues = tuple((costIndexes.get(activityID, None) for activityID in industry.ACTIVITIES)) 116 ret = (jumps, sm.GetService('map').GetSecurityStatus(facilityData.solarSystemID), facilityData.GetName()) + costIndexValues 117 if showTax: 118 taxes = [] 119 taxRates = facilityData.GetServiceTaxes() 120 for serviceID, tax in taxRates.iteritems(): 121 if tax is None or structures.GetActivityID(serviceID) != activityID: 122 continue 123 taxes.append(tax) 124 125 if taxes: 126 facilityTaxSortValue = float(sum(taxes)) / len(taxes) 127 else: 128 facilityTaxSortValue = facilityData.tax 129 ret += (facilityTaxSortValue,) 130 ret += (facilityData.GetTypeName(), facilityData.GetOwnerName().lower()) 131 return ret 132 133 @staticmethod 134 def GetHeaders(showTax = False): 135 activityTexts = [ localization.GetByLabel(industryUIConst.ACTIVITY_NAMES[activityID]) for activityID in industry.ACTIVITIES ] 136 ret = [localization.GetByLabel('UI/Common/Jumps'), localization.GetByLabel('UI/Common/Security'), localization.GetByLabel('UI/Industry/Facility')] + activityTexts 137 if showTax: 138 ret.append(localization.GetByLabel('UI/Industry/Tax')) 139 ret.extend([localization.GetByLabel('UI/Industry/FacilityType'), localization.GetByLabel('UI/Common/Owner')]) 140 return tuple(ret) 141 142 def GetMenu(self): 143 return GetMenuService().GetMenuFromItemIDTypeID(itemID=self.facilityData.facilityID, typeID=self.facilityData.typeID) 144 145 def GetDragData(self): 146 ret = KeyVal(__guid__='xtriui.ListSurroundingsBtn', typeID=self.facilityData.typeID, itemID=self.facilityData.facilityID, label=self.facilityData.GetName()) 147 return (ret,)