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

browserResearch.py (4066B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\industry\browserResearch.py
      2 import carbonui.const as uiconst
      3 from carbonui.primitives.container import Container
      4 from carbonui.control.scrollentries import SE_BaseClassCore
      5 import evetypes
      6 from eve.client.script.ui.control.eveScroll import Scroll
      7 from eve.client.script.ui.control.entries.util import GetFromClass
      8 from eve.client.script.ui.control.eveLabel import EveLabelMedium
      9 from eve.client.script.ui.util import uix
     10 from eveservices.menu import GetMenuService
     11 import localization
     12 HEADERS = ['UI/Agents/Agent',
     13  'UI/Agents/Research/ResearchFieldShort',
     14  'UI/Agents/Research/CurrentResearchPointsTitle',
     15  'UI/Agents/Research/ResearchPointsRateTitle',
     16  'UI/Agents/AgentLevel',
     17  'UI/Common/Location']
     18 NO_CONTENT_HINT = 'UI/Agents/Research/NoResearchBeingPerformed'
     19 
     20 class BrowserResearch(Container):
     21     __notifyevents__ = ['OnSessionChanged', 'OnAgentMissionChange']
     22 
     23     def ApplyAttributes(self, attributes):
     24         Container.ApplyAttributes(self, attributes)
     25         self.isInitialized = False
     26         sm.RegisterNotify(self)
     27 
     28     def GetResearchData(self):
     29         return sm.GetService('journal').GetMyAgentJournalDetails()[1]
     30 
     31     def OnTabSelect(self):
     32         self.UpdateScroll()
     33 
     34     def UpdateScroll(self):
     35         if not self.isInitialized:
     36             self.scroll = Scroll(parent=self, id='ResearchBrowser')
     37             self.isInitialized = True
     38         self.scroll.ShowLoading()
     39         scrollList = []
     40         research = self.GetResearchData()
     41         for data in research:
     42             researchEntry = self._MakeResearchEntry(data)
     43             scrollList.append(researchEntry)
     44 
     45         self.scroll.Load(contentList=scrollList, headers=[ localization.GetByLabel(header) for header in HEADERS ], noContentHint=localization.GetByLabel(NO_CONTENT_HINT))
     46         self.scroll.HideLoading()
     47 
     48     def _MakeResearchEntry(self, data):
     49         agentID, researchFieldTypeID, pointsPerDay, currentPoints, level, quality, stationID = data
     50         researchFieldName = evetypes.GetName(researchFieldTypeID)
     51         agentName = cfg.eveowners.Get(agentID).name
     52         stationName = cfg.evelocations.Get(stationID).name
     53         solarSystemID = sm.GetService('ui').GetStationStaticInfo(stationID).solarSystemID
     54         text = '<t>'.join([agentName,
     55          researchFieldName,
     56          localization.formatters.FormatNumeric(currentPoints, decimalPlaces=2, useGrouping=True),
     57          localization.formatters.FormatNumeric(pointsPerDay, decimalPlaces=2, useGrouping=True),
     58          localization.formatters.FormatNumeric(level, decimalPlaces=0),
     59          stationName])
     60         return GetFromClass(ResearchEntry, {'agentID': agentID,
     61          'text': text,
     62          'label': text,
     63          'solarSystemID': solarSystemID})
     64 
     65     def OnAgentMissionChange(self, _action, _agentID):
     66         self.UpdateScroll()
     67 
     68     def OnSessionChanged(self, _isRemote, _session, _change):
     69         self.UpdateScroll()
     70 
     71 
     72 class ResearchEntry(SE_BaseClassCore):
     73     __guid__ = 'listentry.ResearchEntry'
     74 
     75     def Startup(self, *etc):
     76         self.sr.label = EveLabelMedium(parent=self, left=5, maxLines=1, align=uiconst.CENTERLEFT)
     77         self.sr.line = Container(name='lineparent', align=uiconst.TOBOTTOM, parent=self, height=1)
     78 
     79     def GetHeight(_self, *args):
     80         node, width = args
     81         node.height = uix.GetTextHeight(node.label, maxLines=1) + 4
     82         return node.height
     83 
     84     def OnClick(self, *args):
     85         self.sr.node.scroll.SelectNode(self.sr.node)
     86 
     87     @classmethod
     88     def GetCopyData(cls, node):
     89         return node.label
     90 
     91     def Load(self, node):
     92         self.sr.node = node
     93         self.sr.label.text = node.label
     94 
     95     @property
     96     def agentID(self):
     97         return self.sr.node.agentID
     98 
     99     @property
    100     def agentTypeID(self):
    101         return cfg.eveowners.Get(self.agentID).typeID
    102 
    103     def ShowInfo(self):
    104         sm.GetService('info').ShowInfo(self.agentTypeID, self.agentID)
    105 
    106     def GetMenu(self):
    107         return GetMenuService().CharacterMenu(self.agentID)