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)