transmissionMgr.py (6505B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\parklife\transmissionMgr.py 2 import sys 3 import carbonui.const as uiconst 4 import evelink 5 import localization 6 import log 7 from carbon.common.script.sys import service 8 from carbonui.control.scrollContainer import ScrollContainer 9 from carbonui.control.window import Window 10 from carbonui.primitives.container import Container 11 from carbonui.uicore import uicore 12 from eve.client.script.ui.control import eveEditPlainText, eveLabel 13 from eve.client.script.ui.control.themeColored import SpriteThemeColored 14 from eve.client.script.ui.shared.agencyNew.contentGroups import contentGroupConst 15 from eve.client.script.ui.station.agents.agentTransmissionWindow import AgentTransmissionWindow 16 from fsdBuiltData.common.iconIDs import GetIconFile 17 18 class TransmissionSvc(service.Service): 19 __guid__ = 'svc.transmission' 20 __notifyevents__ = ['OnIncomingTransmission', 'OnIncomingAgentMessage'] 21 22 def Run(self, ms): 23 service.Service.Run(self, ms) 24 self.delayedTransmission = None 25 26 def Stop(self, stream): 27 service.Service.Stop(self) 28 self.Cleanup() 29 30 def Cleanup(self): 31 for each in uicore.layer.main.children[:]: 32 if each.name == 'telecom': 33 each.Close() 34 35 def OnIncomingTransmission(self, transmission, isAgentMission = 0, *args): 36 if transmission.header is not None: 37 if isinstance(transmission.header, (int, long)): 38 transmission.header = localization.GetByMessageID(transmission.header) 39 if isinstance(transmission.text, (int, long)): 40 transmission.text = localization.GetByMessageID(transmission.text) 41 if transmission.header.startswith('[d]'): 42 transmission.header = transmission.header[3:] 43 self.delayedTransmission = transmission 44 else: 45 self.ShowTransmission(transmission) 46 47 def ShowTransmission(self, transmission): 48 wnd = Telecom.Open(transmission=transmission) 49 if wnd: 50 wnd.ShowMessage(transmission.header, transmission.text, transmission.icon) 51 52 def CloseTransmission(self, *args): 53 self.Cleanup() 54 55 def StopWarpIndication(self): 56 if self.delayedTransmission: 57 self.ShowTransmission(self.delayedTransmission) 58 self.delayedTransmission = None 59 60 def OnIncomingAgentMessage(self, agentID, message): 61 self.ShowAgentAlert(agentID, message) 62 63 def ShowAgentAlert(self, agentID, message): 64 windowID = 'agentalert_%s' % agentID 65 wnd = AgentTransmissionWindow.GetIfOpen(windowID=windowID) 66 if wnd and not wnd.destroyed: 67 wnd.LoadWnd(agentID, message) 68 else: 69 AgentTransmissionWindow.Open(windowID=windowID, agentID=agentID, message=message) 70 71 72 class Telecom(Window): 73 __guid__ = 'form.Telecom' 74 default_windowID = 'telecom' 75 default_scope = uiconst.SCOPE_INFLIGHT 76 default_width = 400 77 default_height = 400 78 default_minSize = (360, 240) 79 80 def ApplyAttributes(self, attributes): 81 super(Telecom, self).ApplyAttributes(attributes) 82 self.isDockWnd = 0 83 transmission = attributes.transmission 84 caption = getattr(transmission, 'caption', None) or localization.GetByLabel('UI/Generic/Information') 85 hasDungeonWarp = getattr(transmission, 'hasDungeonWarp', False) 86 try: 87 self.isEscalation = transmission.rec.rec.pathStep 88 except AttributeError: 89 self.isEscalation = False 90 91 self.sr.header = eveLabel.EveCaptionMedium(parent=self.content, align=uiconst.TOTOP) 92 scrollCont = ScrollContainer(parent=self.content, padTop=8) 93 self.label = eveLabel.EveLabelMedium(parent=scrollCont, align=uiconst.TOTOP) 94 self.SetCaption(caption) 95 if not hasDungeonWarp: 96 self.DefineButtons(uiconst.OK, okLabel=localization.GetByLabel('UI/Generic/Close'), okFunc=self.Close) 97 else: 98 self.sr.instanceID = getattr(transmission.rec.rec, 'instanceID', 0) 99 self.sr.solarSystemID = getattr(transmission.rec.rec, 'solarSystemID', 0) 100 if self.sr.solarSystemID == session.solarsystemid: 101 okLabel = localization.GetByLabel('UI/Commands/WarpTo') 102 okFunc = self.WarpToEPLocation 103 else: 104 inFleet = bool(session.fleetid) 105 isLeader = sm.GetService('menu').ImFleetLeaderOrCommander() 106 if inFleet and isLeader: 107 okLabel = localization.GetByLabel('UI/Fleet/FleetBroadcast/Commands/BroadcastTravelTo') 108 okFunc = self.SetFleetDestination 109 else: 110 okLabel = localization.GetByLabel('UI/Inflight/SetDestination') 111 okFunc = self.SetDestination 112 if self.sr.instanceID and self.sr.solarSystemID: 113 self.DefineButtons(uiconst.OKCANCEL, okLabel=okLabel, okFunc=okFunc, cancelLabel=localization.GetByLabel('UI/Generic/Close'), cancelFunc=self.Close) 114 else: 115 self.DefineButtons(uiconst.OK, okLabel=localization.GetByLabel('UI/Generic/Close'), okFunc=self.Close) 116 117 def SetDestination(self, *args): 118 sm.StartService('starmap').SetWaypoint(self.sr.solarSystemID, clearOtherWaypoints=True) 119 self.Close() 120 121 def SetFleetDestination(self, *args): 122 sol = self.sr.solarSystemID 123 sm.StartService('fleet').SendBroadcast_TravelTo(sol) 124 self.SetDestination() 125 126 def WarpToEPLocation(self, *args): 127 if self.sr.instanceID is not None: 128 sm.GetService('michelle').CmdWarpToStuff('epinstance', self.sr.instanceID) 129 self.Close() 130 131 def ShowMessage(self, header, text, icon): 132 self.sr.header.text = header 133 if icon: 134 try: 135 icon = GetIconFile(int(icon.split(' ', 1)[0])) 136 self.icon = icon 137 except: 138 self.icon = 'res:/ui/Texture/WindowIcons/satellite.png' 139 log.LogWarn('Failed adding ', icon, ' as icon in transmission window') 140 sys.exc_clear() 141 142 else: 143 self.icon = 'res:/ui/Texture/WindowIcons/satellite.png' 144 if self.isEscalation: 145 text = u'{text}\n{link}'.format(text=text, link=evelink.local_service_link('AgencyOpenAndShow', localization.GetByLabel('UI/Agency/OpenAgencyForDetails'), contentGroupID=contentGroupConst.contentGroupEscalations)) 146 self.label.SetText(text)