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

missionentry.py (3404B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\station\missions\missionentry.py
      2 import localization
      3 import utillib
      4 from carbonui.control.scrollentries import SE_BaseClassCore
      5 from carbonui.primitives.container import Container
      6 from eve.client.script.ui.control import eveIcon, eveLabel
      7 from eve.client.script.ui.util import uix
      8 import carbonui.const as uiconst
      9 from eveservices.menu import GetMenuService
     10 from menu import MenuLabel
     11 from eve.common.lib import appConst as const
     12 
     13 class VirtualBaseMissionEntry(SE_BaseClassCore):
     14     __guid__ = 'listentry.VirtualBaseMissionEntry'
     15     OnSelectCallback = None
     16 
     17     def Startup(self, *etc):
     18         self.sr.label = eveLabel.EveLabelMedium(text='', parent=self, left=5, state=uiconst.UI_DISABLED, color=None, maxLines=1, align=uiconst.CENTERLEFT)
     19         self.sr.line = Container(name='lineparent', align=uiconst.TOBOTTOM, parent=self, height=1)
     20 
     21     def GetHeight(_self, *args):
     22         node, width = args
     23         node.height = uix.GetTextHeight(node.label, maxLines=1) + 4
     24         return node.height
     25 
     26     def OnSelect(self, *args):
     27         if getattr(self, 'OnSelectCallback', None):
     28             self.OnSelectCallback(*args)
     29 
     30     def OnClick(self, *args):
     31         self.sr.node.scroll.SelectNode(self.sr.node)
     32         self.OnSelect(self)
     33 
     34     def NoEvent(self, *args):
     35         pass
     36 
     37     @classmethod
     38     def GetCopyData(cls, node):
     39         return node.label
     40 
     41 
     42 class VirtualAgentMissionEntry(VirtualBaseMissionEntry):
     43     __guid__ = 'listentry.VirtualAgentMissionEntry'
     44     isDragObject = True
     45 
     46     def Load(self, node):
     47         self.sr.node = node
     48         self.sr.label.text = node.label
     49         self.sr.iconList = []
     50         textOffset = 1
     51         for iconID, hintText in node.missionIconData:
     52             self.sr.iconList.append(eveIcon.Icon(icon=iconID, parent=self, pos=(textOffset,
     53              1,
     54              16,
     55              16), align=uiconst.TOPLEFT, idx=0))
     56             self.sr.iconList[-1].hint = hintText
     57             textOffset += self.sr.iconList[-1].width
     58 
     59         self.sr.label.left = textOffset + 4
     60         self.rightClickMenu = []
     61         self.rightClickMenu.append((MenuLabel('UI/Agents/Commands/ReadDetails'), self.OpenDetails))
     62         self.rightClickMenu.append((MenuLabel('UI/Agents/Commands/StartConversationWith', {'agentID': self.sr.node.agentID}), self.Convo))
     63         if node.missionState == const.agentMissionStateOffered:
     64             self.rightClickMenu.append((MenuLabel('UI/Agents/Commands/RemoveOffer'), self.RemoveOffer))
     65 
     66     def OpenDetails(self):
     67         sm.GetService('agents').PopupMission(self.sr.node.agentID)
     68 
     69     def RemoveOffer(self):
     70         sm.StartService('agents').RemoveOfferFromJournal(self.sr.node.agentID)
     71 
     72     def OnDblClick(self, *args):
     73         self.OpenDetails()
     74 
     75     def Convo(self):
     76         sm.GetService('agents').OpenDialogueWindow(self.sr.node.agentID)
     77 
     78     def GetMenu(self):
     79         return self.rightClickMenu
     80 
     81     def GetDragData(self, *args):
     82         fakeNode = []
     83         if session.fleetid:
     84             _fakeNode = utillib.KeyVal()
     85             _fakeNode.__guid__ = 'listentry.VirtualAgentMissionEntry'
     86             _fakeNode.agentID = self.sr.node.agentID
     87             _fakeNode.charID = session.charid
     88             _fakeNode.label = localization.GetByLabel('UI/Agents/MissionJournal')
     89             fakeNode = [_fakeNode]
     90         return fakeNode