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()