skyhookEntry.py (7638B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\structureBrowser\entries\skyhookEntry.py 2 from carbon.common.script.util.commonutils import StripTags 3 from carbon.common.script.util.timerstuff import AutoTimer 4 from eve.client.script.ui.control.baseListEntry import BaseListEntryCustomColumns 5 from eve.client.script.ui.control.itemIcon import ItemIcon 6 from eve.client.script.ui.control.eveLabel import Label 7 from carbonui.fontconst import EVE_MEDIUM_FONTSIZE 8 from localization import GetByLabel 9 import carbonui.const as uiconst 10 from utillib import KeyVal 11 from carbonui.uicore import uicore 12 from eveservices.menu import GetMenuService 13 from carbonui.util.bunch import Bunch 14 from carbonui.control.contextMenu.menuEntryData import MenuEntryData 15 from menu import MenuLabel 16 import eveicon 17 from menucheckers import CelestialChecker 18 from carbon.common.script.sys.serviceConst import ROLE_WORLDMOD, ROLE_GML 19 HEIGHT = 48 20 ICONSIZE = 20 21 LABEL_PARAMS = (EVE_MEDIUM_FONTSIZE, 0, 0) 22 VULNERABILITY_LABEL_UPDATE_DELAY = 1000 23 24 class SkyhookEntry(BaseListEntryCustomColumns): 25 default_name = 'SkyhookEntry' 26 27 def __init__(self, *args, **kwargs): 28 self.controller = None 29 super(SkyhookEntry, self).__init__(*args, **kwargs) 30 31 def ApplyAttributes(self, attributes): 32 BaseListEntryCustomColumns.ApplyAttributes(self, attributes) 33 self.controller = self.node.controller 34 self.AddColumnText(self.controller.GetNumJumps()) 35 self.AddColumnText(self.controller.GetSecurityWithColor()) 36 self.AddColumnText(self.controller.GetSolarSystemName()) 37 self.AddColumnName() 38 self.AddColumnText(self.controller.GetStateText()) 39 self.AddColumnText(self.controller.GetHarvestText()) 40 self._theftVulnerabilityLabel = self.AddColumnText(self.controller.GetTheftVulnerabilityText()) 41 self._updateThread = AutoTimer(VULNERABILITY_LABEL_UPDATE_DELAY, self.UpdateTheftVulnerabilityText) 42 43 def UpdateTheftVulnerabilityText(self): 44 if self.destroyed: 45 if self._updateThread: 46 self._updateThread.KillTimer() 47 self._updateThread = None 48 return 49 self._theftVulnerabilityLabel.text = self.controller.GetTheftVulnerabilityText() 50 51 def AddColumnName(self): 52 column = self.AddColumnContainer() 53 name = self.controller.GetName() 54 size = HEIGHT - 4 55 ItemIcon(name='skyhookIcon_%s' % name.replace('<br>', '_'), parent=column, align=uiconst.CENTERLEFT, typeID=self.controller.GetTypeID(), pos=(0, 56 0, 57 size, 58 size), state=uiconst.UI_PICKCHILDREN) 59 label = Label(parent=column, text=name, align=uiconst.CENTERLEFT, left=HEIGHT, state=uiconst.UI_NORMAL) 60 label.GetMenu = None 61 label.DelegateEventsNotImplemented(self) 62 63 def GetDragData(self): 64 nodesSelected = self.sr.node.scroll.GetSelectedNodes(self.sr.node) 65 data = [] 66 for eachNode in nodesSelected: 67 k = KeyVal(__guid__='xtriui.ListSurroundingsBtn', itemID=eachNode.controller.GetItemID(), typeID=eachNode.controller.GetTypeID(), label=StripTags(eachNode.controller.GetCleanName().replace('<br>', '-'))) 68 data.append(k) 69 70 return data 71 72 @staticmethod 73 def GetColumnSortValues(controller): 74 baseColumns = (controller.GetNumJumps(), 75 controller.GetSecurity(), 76 controller.GetSystemName(), 77 '%s %s' % (controller.GetSystemName(), StripTags(controller.GetName()).lower()), 78 controller.GetStateText(), 79 controller.GetHarvestText(), 80 controller.GetTheftVulnerabilitySortValue()) 81 return baseColumns 82 83 @staticmethod 84 def GetSortValue(node, by, sortDirection, idx): 85 return (node.columnSortValues[idx],) + tuple(node.columnSortValues) 86 87 @staticmethod 88 def GetHeaders(): 89 baseColumns = [GetByLabel('UI/Common/Jumps'), 90 GetByLabel('UI/Common/Security'), 91 GetByLabel('UI/Common/SolarSystem'), 92 GetByLabel('UI/Common/Name'), 93 GetByLabel('UI/StructureBrowser/SkyhookState'), 94 GetByLabel('UI/StructureBrowser/SkyhookHarvest'), 95 GetByLabel('UI/StructureBrowser/SkyhookTheftVulnerability')] 96 return baseColumns 97 98 @staticmethod 99 def GetDynamicHeight(node, width): 100 return HEIGHT 101 102 @staticmethod 103 def GetDefaultColumnWidth(): 104 return {GetByLabel('UI/Industry/SolarSystem'): 70, 105 GetByLabel('UI/Common/Name'): 230} 106 107 def GetMenu(self): 108 menuSvc = GetMenuService() 109 m = GetMenuService().GetMenuFromItemIDTypeID(itemID=self.controller.GetItemID(), typeID=self.controller.GetTypeID()) 110 ballpark = sm.GetService('michelle').GetBallpark() 111 if not ballpark or ballpark.GetInvItem(self.controller.GetItemID()) is None: 112 celestialChecker = CelestialChecker((self.controller.GetItemID(), self.controller.GetTypeID()), cfg) 113 celestialChecker.item.ownerID = session.corpid 114 if celestialChecker.OfferConfigureOrbitalSkyhook(): 115 orbitalItem = Bunch(itemID=self.controller.GetItemID(), typeID=self.controller.GetTypeID(), categoryID=self.controller.GetCategoryID(), locationID=self.controller.GetSolarSystemID()) 116 m += [[MenuLabel('UI/DustLink/ConfigureOrbital'), 117 menuSvc.ConfigureOrbital, 118 (orbitalItem,), 119 eveicon.settings]] 120 if self.controller.GetSolarSystemID() != session.solarsystemid2: 121 m.append(None) 122 m.append(MenuEntryData(MenuLabel('UI/Common/Location'), subMenuData=menuSvc.CelestialMenu(self.controller.GetSolarSystemID()), texturePath=eveicon.location)) 123 return m 124 125 @staticmethod 126 def GetColWidths(node, idx = None): 127 controller = node.controller 128 widths = [] 129 if idx is None or idx == 0: 130 jumpText = unicode(controller.GetNumJumps()) 131 widths.append(uicore.font.MeasureTabstops([(jumpText,) + LABEL_PARAMS])[0]) 132 if idx is None or idx == 1: 133 securityText = unicode(controller.GetSecurity()) 134 widths.append(uicore.font.MeasureTabstops([(securityText,) + LABEL_PARAMS])[0]) 135 if idx is None or idx == 2: 136 widths.append(uicore.font.MeasureTabstops([(controller.GetSolarSystemID(),) + LABEL_PARAMS])[0]) 137 if idx is None or idx == 3: 138 nameToUse = max(StripTags(controller.GetName(), ignoredTags=('br',)).split('<br>'), key=len) 139 widths.append(uicore.font.MeasureTabstops([(nameToUse,) + LABEL_PARAMS])[0] + HEIGHT - 4) 140 if idx is None or idx == 4: 141 widths.append(uicore.font.MeasureTabstops([(controller.GetStateText(),) + LABEL_PARAMS])[0]) 142 if idx is None or idx == 5: 143 widths.append(uicore.font.MeasureTabstops([(controller.GetHarvestText(),) + LABEL_PARAMS])[0]) 144 if idx is None or idx == 6: 145 widths.append(uicore.font.MeasureTabstops([(controller.GetTheftVulnerabilityText(),) + LABEL_PARAMS])[0]) 146 return widths 147 148 @classmethod 149 def GetCopyData(cls, node): 150 controller = node.controller 151 textList = [controller.GetNumJumps(), 152 controller.GetSecurity(), 153 controller.GetSystemName(), 154 controller.GetCleanName(), 155 controller.GetStateText(), 156 controller.GetHarvestText(), 157 controller.GetTheftVulnerabilityText()] 158 vulnerabilityStartAndEnd = controller.GetTheftVulnerabilityStartAndEnd() 159 textList.append(vulnerabilityStartAndEnd[0]) 160 return '\t'.join([ unicode(x) for x in textList ])