universe.py (6062B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\entries\universe.py 2 from carbonui.primitives.sprite import Sprite 3 from evePathfinder.core import IsUnreachableJumpCount 4 import utillib 5 from carbonui import uiconst 6 from carbonui.primitives.container import Container 7 from carbonui.util.color import Color 8 from eve.client.script.ui import eveColor 9 from eve.client.script.ui.control.entries.generic import Generic 10 from eve.client.script.ui.control.entries.header import Header 11 from eve.client.script.ui.control.entries.label_text import LabelTextTop 12 from eve.client.script.ui.control.entries.text import Text 13 from eve.client.script.ui.control.itemIcon import ItemIcon 14 from eve.client.script.ui.control.listgroup import ListGroup 15 from eve.client.script.ui.shared.maps import maputils 16 from localization import GetByLabel 17 from structures import UPKEEP_STATE_ABANDONED, UPKEEP_STATE_LOW_POWER 18 19 class SolarSystem(Generic): 20 __params__ = ['label', 'solarSystemID'] 21 isDragObject = True 22 23 def Startup(self, *args): 24 Generic.Startup(self, args) 25 self.labelCont = Container(name='labelCont', parent=self, padRight=16) 26 self.sr.label.SetParent(self.labelCont) 27 self.sr.label.autoFadeSides = 16 28 29 def _GetText(self): 30 node = self.sr.node 31 security = sm.GetService('map').GetSystemSecurityValue(node.solarSystemID) 32 securityModificationIconText = sm.GetService('securitySvc').get_security_modifier_icon_text(node.solarSystemID) 33 text = maputils.GetSecurityStatusText(security) + securityModificationIconText 34 numJumps = sm.GetService('clientPathfinderService').GetAutopilotJumpCount(session.solarsystemid2, node.solarSystemID) 35 if IsUnreachableJumpCount(numJumps): 36 numJumps = sm.GetService('clientPathfinderService').GetNoRouteFoundText(node.solarSystemID) 37 else: 38 numJumps = GetByLabel('UI/Fleet/FleetRegistry/NumberOfJumps', numJumps=numJumps) 39 return '%s %s (%s)' % (text, node.label, numJumps) 40 41 def GetDragData(self, *args): 42 selectedNodes = self.sr.node.scroll.GetSelectedNodes(self.sr.node) 43 retNodes = [] 44 for node in selectedNodes: 45 fakeNode = utillib.KeyVal(__guid__='xtriui.ListSurroundingsBtn', typeID=node.Get('typeID', None), itemID=node.Get('itemID', None), label=node.label) 46 retNodes.append(fakeNode) 47 48 return retNodes 49 50 51 class SolarSystemStructure(SolarSystem): 52 53 def Startup(self, *args): 54 SolarSystem.Startup(self, args) 55 self.sr.icon = ItemIcon(parent=self, pos=(1, 2, 24, 24), align=uiconst.TOPLEFT, idx=0) 56 57 def Load(self, node): 58 SolarSystem.Load(self, node) 59 self.sr.icon.SetTypeIDandItemID(self.typeID, self.itemID) 60 self.sr.icon.left = node.get('sublevel', 0) * 16 61 self.sr.label.left = self.height + 4 + node.get('sublevel', 0) * 16 62 63 def GetHeight(self, *args): 64 node, width = args 65 node.height = 29 66 return node.height 67 68 69 class LocationTextEntry(Text): 70 __guid__ = 'listentry.LocationTextEntry' 71 isDragObject = True 72 default_showHilite = True 73 74 def GetDragData(self, *args): 75 nodes = [self.sr.node] 76 return nodes 77 78 79 class LabelLocationTextTop(LabelTextTop): 80 __guid__ = 'listentry.LabelLocationTextTop' 81 isDragObject = True 82 83 def GetDragData(self, *args): 84 nodes = [self.sr.node] 85 return nodes 86 87 88 class LocationGroup(ListGroup): 89 __guid__ = 'listentry.LocationGroup' 90 COLOR_BY_STRUCTURE_POWER_LEVEL = {UPKEEP_STATE_LOW_POWER: eveColor.WARNING_ORANGE, 91 UPKEEP_STATE_ABANDONED: eveColor.CHERRY_RED} 92 isDragObject = True 93 94 def _ConstructLabel(self): 95 self.rightSpriteCont = Container(parent=self, align=uiconst.TORIGHT, pos=(0, 0, 20, 20)) 96 self.rightSpriteCont.display = False 97 self.rightSprite = Sprite(parent=self.rightSpriteCont, align=uiconst.CENTER, pos=(0, 0, 16, 16), opacity=0.75) 98 super(LocationGroup, self)._ConstructLabel() 99 100 def GetDragData(self, *args): 101 dragDataFunc = self.sr.node.get('GetDragDataFunc', None) 102 if dragDataFunc: 103 return dragDataFunc(self.sr.node) 104 nodes = [self.sr.node] 105 return nodes 106 107 def Load(self, node): 108 super(LocationGroup, self).Load(node) 109 if node.inMyPath: 110 self.sr.label.color = Color.YELLOW 111 if node.upkeepState in (UPKEEP_STATE_LOW_POWER, UPKEEP_STATE_ABANDONED): 112 texturePath = 'res:/UI/Texture/classes/StructureBrowser/bolt.png' 113 self.sr.icon.state = uiconst.UI_NORMAL 114 self.sr.icon.SetTexturePath(texturePath) 115 self.sr.icon.SetSize(9, 9) 116 self.sr.label.left = self.sr.icon.left + self.sr.icon.width + 4 117 color = self.COLOR_BY_STRUCTURE_POWER_LEVEL.get(node.upkeepState, None) 118 if color is not None: 119 self.sr.icon.SetRGBA(*color) 120 if node.upkeepState == UPKEEP_STATE_LOW_POWER: 121 self.sr.icon.hint = GetByLabel('UI/Structures/LowPowerStructureModeHint') 122 elif node.upkeepState == UPKEEP_STATE_ABANDONED: 123 self.sr.icon.hint = GetByLabel('UI/Structures/AbandonedStructureModeHint') 124 rightIconInfo = node.get('rightIconInfo', None) 125 if rightIconInfo: 126 path, hint = rightIconInfo 127 self.rightSprite.SetTexturePath(path) 128 self.rightSprite.hint = hint 129 self.rightSpriteCont.display = True 130 else: 131 self.rightSpriteCont.display = False 132 133 134 class SystemNameHeader(Header): 135 136 def Load(self, node): 137 super(SystemNameHeader, self).Load(node) 138 if node.tabs: 139 self.sr.label.tabs = node.tabs 140 labelState = uiconst.UI_NORMAL 141 if node.labelState: 142 labelState = node.labelState 143 self.sr.label.state = labelState 144 145 def GetMenu(self): 146 if self.sr.get('node', None) and self.sr.node.get('OnGetMenu', None): 147 return self.sr.node.OnGetMenu(self) 148 return []