sovHubHackingResultWnd.py (5412B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\sov\sovHubHackingResultWnd.py 2 import eveicon 3 import evetypes 4 import trinity 5 from carbonui import Align, PickState, TextColor 6 from carbonui.text.styles import TextHeader, TextBody 7 from carbonui.control.button import Button 8 from carbonui.control.scrollContainer import ScrollContainer 9 from carbonui.primitives.container import Container 10 from carbonui.primitives.containerAutoSize import ContainerAutoSize 11 from carbonui.primitives.layoutGrid import LayoutGrid 12 from carbonui.primitives.sprite import StreamingVideoSprite, Sprite 13 from carbonui.control.window import Window 14 from carbonui.uicore import uicore 15 from eve.client.script.ui import eveColor, eveThemeColor 16 from eve.client.script.ui.hacking.hackingUIConst import COLOR_WINDOW_BG 17 import blue 18 from eveservices.menu import GetMenuService 19 from localization import GetByLabel 20 from sovereignty.client.sovHub.hubUtil import GetTypeListTexturePathForType, GetTypeListHintForType 21 22 class SovHubHackingResultWnd(Window): 23 default_name = 'sovHubHackingResultWnd' 24 default_windowID = 'sovHubHackingResultWnd' 25 default_width = 898 26 default_height = 631 27 default_isCollapseable = False 28 default_captionLabelPath = 'UI/Sovereignty/SovHub/HackingWindow/HackingResults' 29 30 def ApplyAttributes(self, attributes): 31 Window.ApplyAttributes(self, attributes) 32 self.sovHubID = attributes.sovHubID 33 upgradesDataList = attributes.upgradesDataList or [] 34 self.SetCaption(self.GetSovHubName()) 35 self.ConstructTop() 36 innerMain = Container(name='innerMain', parent=self.content, aling=Align.TOALL, padding=10) 37 self.centerCont = Container(name='centerCont', parent=innerMain, align=Align.CENTER, pos=(0, 0, 1, 1)) 38 self.backgroundVideo = StreamingVideoSprite(bgParent=innerMain, videoPath='res:/video/hacking/bgLoop_alpha.webm', videoLoop=True, spriteEffect=trinity.TR2_SFX_COPY, color=COLOR_WINDOW_BG) 39 self.scrollContainer = ScrollContainer(parent=innerMain, align=Align.TOALL) 40 self.LoadWndWithResult(attributes.sovHubID, upgradesDataList) 41 42 def ConstructTop(self): 43 self.topCont = Container(parent=self.content, align=Align.TOTOP, height=48, bgColor=eveThemeColor.THEME_FOCUSDARK[:3] + (0.3,)) 44 headerCont = ContainerAutoSize(parent=self.topCont, align=Align.CENTER) 45 Sprite(name='hackingComplete', parent=headerCont, align=Align.CENTERLEFT, pos=(0, 0, 16, 16), texturePath=eveicon.checkmark, color=eveThemeColor.THEME_ACCENT) 46 self.headerLabel = TextHeader(parent=headerCont, text=GetByLabel('UI/Sovereignty/SovHackingComplete'), align=Align.CENTERLEFT, left=24) 47 self.copyBtn = Button(name='copyBtn', parent=self.topCont, label=GetByLabel('UI/Sovereignty/CopyHackedData'), func=self.CopyContents, align=Align.CENTERRIGHT, left=8, texturePath=eveicon.copy) 48 49 def LoadWndWithResult(self, sovHubID, upgradesDataList): 50 self.sovHubID = sovHubID 51 self.SetCaption(self.GetSovHubName()) 52 self.upgradesDataList = upgradesDataList 53 self.scrollContainer.Flush() 54 grid = LayoutGrid(parent=self.scrollContainer, align=Align.CENTERTOP, columns=3, cellSpacing=(8, 4)) 55 grid.FillRow() 56 for idx, upgradeData in enumerate(upgradesDataList): 57 typeID = upgradeData.typeID 58 color = TextColor.NORMAL if upgradeData.isPowerStateFunctional else eveColor.DANGER_RED 59 row = grid.AddRow() 60 row.pickState = PickState.ON 61 TextBody(parent=row, text='%s.' % (idx + 1), align=Align.CENTERRIGHT, color=color) 62 Sprite(parent=row, align=Align.CENTERLEFT, pos=(0, 0, 16, 16), texturePath=GetTypeListTexturePathForType(typeID), hint=GetTypeListHintForType(typeID), color=color) 63 TextBody(parent=row, text=evetypes.GetName(typeID), color=color) 64 row.OnClick = lambda t = upgradeData.typeID: sm.GetService('info').ShowInfo(typeID=t) 65 row.GetMenu = lambda t = upgradeData.typeID: GetMenuService().GetMenuFromItemIDTypeID(None, t) 66 67 w, h = grid.GetAbsoluteSize() 68 self.UpdateWndSize(w, h) 69 70 def UpdateWndSize(self, gridWidth, gridHeight): 71 topWidth = 2 * (self.copyBtn.width + self.copyBtn.left) + self.headerLabel.left + self.headerLabel.width + 50 72 minWidth = max(300, topWidth, gridWidth) + 30 73 minHeight = min(800, max(200, self.topCont.height, gridHeight)) 74 w, h = self.GetWindowSizeForContentSize(minWidth, minHeight) 75 self.fixed_width = w 76 self.fixed_height = h 77 78 def CopyContents(self, *args): 79 name = self.GetSovHubName() 80 lines = [name] 81 for idx, upgradeData in enumerate(self.upgradesDataList): 82 stateName = GetByLabel('UI/Common/Online') if upgradeData.isPowerStateFunctional else GetByLabel('UI/Common/Offline') 83 textList = [idx + 1, evetypes.GetName(upgradeData.typeID), stateName] 84 lines.append('\t'.join([ unicode(x) for x in textList ])) 85 86 text = u'\n'.join(lines) 87 if text: 88 blue.pyos.SetClipboardData(text) 89 90 def GetSovHubName(self): 91 systemID = cfg.evelocations.Get(self.sovHubID).solarSystemID 92 systemName = cfg.evelocations.Get(systemID).name 93 name = GetByLabel('UI/Sovereignty/SovHub/HubWnd/SovHubName', solarSystemName=systemName) 94 return name