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

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