NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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