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

upgradeScrollCont.py (6044B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\sov\sovHub\upgradeScrollCont.py
      2 from carbonui.control.scroll import Scroll, VERSION
      3 from carbonui.primitives.container import Container
      4 from eve.client.script.ui import eveColor
      5 from eve.client.script.ui.control.entries.util import GetFromClass
      6 from eve.client.script.ui.control.scrollUtil import TabFinder, TabAdjuster
      7 from eve.client.script.ui.shared.sov.sovHub.hubController import NOT_AVAILABLE
      8 from eve.client.script.ui.shared.sov.sovHub.upgradeEntry import UpgradeEntry, UpgradeLastEntry, PosIndicatorLine
      9 import carbonui
     10 from eveexceptions import ExceptionEater
     11 from localization import GetByLabel
     12 MIN_COL_WIDTH = 30
     13 
     14 class UpgradeScrollCont(Container):
     15 
     16     def ApplyAttributes(self, attributes):
     17         self.scroll = None
     18         self.hubController = attributes.hubController
     19         super(UpgradeScrollCont, self).ApplyAttributes(attributes)
     20         self.hubController.on_online_state_changed.connect(self.OnOnlineStateChanged)
     21         self.scroll = Scroll(name='upgradeScroll', parent=self, id='SovHubUpgradeScroll')
     22         self.tabFinder = TabFinder()
     23         self.scroll.GetTabStops = self.GetTabStops
     24         self.scroll.ChangeSortBy = self.ChangeSortBy
     25         self.scroll.sr.content.OnDropData = self.DoDropData
     26         self.scroll.sr.content.OnDragEnter = self.OnContentDragEnter
     27         self.scroll.sr.content.OnDragExit = self.OnContentDragExit
     28         self.changeIndicator = PosIndicatorLine(parent=self.scroll, align=carbonui.Align.TOBOTTOM, pickState=carbonui.PickState.OFF, height=2, padTop=-2, opacity=1.0, idx=0)
     29 
     30     def ChangeSortBy(self, *args):
     31         pass
     32 
     33     def LoadScroll(self):
     34         self.scroll.ShowLoading()
     35         try:
     36             headers = UpgradeEntry.GetHeaders()
     37             scrollList = self.GetScrollList()
     38             if self.destroyed:
     39                 return
     40             if scrollList == NOT_AVAILABLE:
     41                 self.scroll.LoadContent(contentList=[], noContentHint=GetByLabel('UI/Sovereignty/NotAvailable'))
     42             else:
     43                 if scrollList:
     44                     lastDropEntry = GetFromClass(UpgradeLastEntry)
     45                     scrollList.append(lastDropEntry)
     46                 noContentHint = self.hubController.GetNoInstalledUpgradesHint()
     47                 self.scroll.LoadContent(contentList=scrollList, headers=headers, noContentHint=noContentHint)
     48                 self.UpdateHeaderHints()
     49         finally:
     50             self.scroll.HideLoading()
     51 
     52     def UpdateHeaderHints(self):
     53         for i, eachHeaderChild in enumerate(self.scroll.GetHeadersChildren()):
     54             eachHeaderChild.GetHint = lambda idx = i: self.GetHeaderHint(idx)
     55 
     56     def GetHeaderHint(self, idx, *args):
     57         hint = None
     58         textList = [UpgradeEntry.GetHeaderText(idx) or None, UpgradeEntry.GetHeadersHint(idx)]
     59         textList = filter(None, textList)
     60         if textList:
     61             hint = '<br>'.join(textList)
     62         if hint:
     63             from carbonui.uicore import uicore
     64             uicore.uilib.auxiliaryTooltip = None
     65         return hint
     66 
     67     def GetScrollList(self):
     68         entryControllers = self.hubController.GetInstalledUpgradesEntryControllers()
     69         if entryControllers == NOT_AVAILABLE:
     70             return NOT_AVAILABLE
     71         scrollList = []
     72         for data in entryControllers:
     73             entry = GetFromClass(UpgradeEntry, {'entryController': data,
     74              'typeID': data.typeID,
     75              'hubController': self.hubController})
     76             scrollList.append(entry)
     77 
     78         return scrollList
     79 
     80     def DoDropData(self, dragObj, entries, idx = -1):
     81         self.hubController.DoDropData(dragObj, entries, idx)
     82         self.HidePositionIndicator()
     83 
     84     def OnContentDragEnter(self, dragObj, entries, *args):
     85         dropError = self.hubController.GetDropError(entries[0])
     86         if dropError:
     87             color = eveColor.DANGER_RED
     88         else:
     89             color = eveColor.ICE_WHITE
     90         self.ShowPositionIndicator(color)
     91 
     92     def ShowPositionIndicator(self, color = None):
     93         if not self.scroll.IsScrollbarVisible() and self.scroll.GetNodes():
     94             lastDropEntry = self.GetLastDropEntry()
     95             if lastDropEntry:
     96                 lastDropEntry.ShowIndicator(color)
     97         else:
     98             self.changeIndicator.ShowPosIndicator(color)
     99             if self.scroll.GetNodes():
    100                 self.changeIndicator.align = carbonui.Align.TOBOTTOM
    101             else:
    102                 self.changeIndicator.align = carbonui.Align.TOTOP_NOPUSH
    103 
    104     def OnContentDragExit(self, *args):
    105         self.HidePositionIndicator()
    106 
    107     def HidePositionIndicator(self):
    108         self.changeIndicator.HidePosIndicator()
    109         lastDropEntry = self.GetLastDropEntry()
    110         if lastDropEntry:
    111             lastDropEntry.HideIndicator()
    112 
    113     def GetLastDropEntry(self):
    114         nodes = self.scroll.GetNodes()
    115         if nodes:
    116             return nodes[-1].panel
    117 
    118     def OnOnlineStateChanged(self, typeID):
    119         self.UpdateUpgradeStates()
    120 
    121     def UpdateUpgradeStates(self):
    122         self.hubController.UpdateEffectiveStatesForSimulatedUpgrades()
    123         for node in self.scroll.GetNodes():
    124             panel = node.panel
    125             if not panel or isinstance(panel, UpgradeLastEntry):
    126                 continue
    127             panel.UpdateEffectiveState()
    128             panel.UpdateOnlineState()
    129 
    130     def GetTabStops(self, headertabs, idx = None):
    131         upgradeColumnIdx = UpgradeEntry.headerInfo.keys().index('upgrade')
    132         tabAdjuster = TabAdjuster(self.scroll, UpgradeEntry, upgradeColumnIdx)
    133         tabStops = tabAdjuster.GetAdjustedTabStops(headertabs, idx)
    134         return tabStops
    135 
    136     def OnWndEndScale(self):
    137         if self.scroll:
    138             self.scroll.UpdateTabStops()
    139 
    140     def Close(self):
    141         with ExceptionEater('Closing UpgradeScrollCont'):
    142             self.hubController.on_online_state_changed.disconnect(self.OnOnlineStateChanged)
    143             self.hubController = None
    144         super(UpgradeScrollCont, self).Close()