hardwareBrowser.py (5048B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fittingScreen\browsers\hardwareBrowser.py 2 from eve.client.script.ui.control.entries.util import GetFromClass 3 from eve.client.script.ui.shared.fittingScreen.browsers.browserUtil import GetTypesByMetaGroups, ShoulAddMetaGroupFolder, GetMetaGroupNameAndEntry, GetScrollListFromTypeListInNodedata, GetScrollListFromTypeList 4 from eve.client.script.ui.shared.fittingScreen.browsers.filtering import GetValidTypeIDs 5 from eve.client.script.ui.shared.market.entries import MarketGroupEntry 6 from localization.util import Sort 7 import telemetry 8 9 class HardwareBrowserListProvider(object): 10 11 def __init__(self, searchFittingHelper, onDropDataFunc, validTypeIDsFunc = None, bannedMarketGroups = (), moduleFilterSettings = None, chargeFilterSettings = None, browserID = None): 12 self.searchFittingHelper = searchFittingHelper 13 self.onDropDataFunc = onDropDataFunc 14 self.validTypeIDsFunc = validTypeIDsFunc or GetValidTypeIDs 15 self.moduleFilterSettings = moduleFilterSettings 16 self.chargeFilterSettings = chargeFilterSettings 17 self.bannedMarketGroups = bannedMarketGroups 18 self.browserID = browserID 19 20 @telemetry.ZONE_METHOD 21 def GetGroupListForBrowse(self, nodedata = None, marketGroupID = None, sublevel = 0): 22 if nodedata and nodedata.marketGroupInfo.hasTypes: 23 scrolllist = self.GetSubfoldersForScrolllist(nodedata) 24 else: 25 scrolllist = [] 26 level = sublevel 27 if marketGroupID is None and nodedata: 28 marketGroupID = nodedata.marketGroupInfo.marketGroupID 29 level = nodedata.sublevel + 1 30 grouplist = sm.GetService('marketutils').GetMarketGroups()[marketGroupID] 31 for marketGroupInfo in grouplist: 32 if not len(marketGroupInfo.types): 33 continue 34 if marketGroupInfo.marketGroupID in self.bannedMarketGroups: 35 continue 36 groupEntry, groupID = GetMarketGroupFromMarketGroupInfo(marketGroupInfo, level, subContentFunc=self.GetGroupListForBrowse, onDropDataFunc=self.onDropDataFunc, searchHelper=self.searchFittingHelper, validTypeIDsFunc=self.validTypeIDsFunc, moduleFilterSettings=self.moduleFilterSettings, chargeFilterSettings=self.chargeFilterSettings, browserID=self.browserID) 37 if groupEntry is None: 38 continue 39 scrolllist.append(((marketGroupInfo.hasTypes, marketGroupInfo.marketGroupName), groupEntry)) 40 41 scrolllist = self.SortScolllist(scrolllist) 42 return scrolllist 43 44 def SortScolllist(self, scrolllist): 45 scrolllist = [ item for item in Sort(scrolllist, key=lambda x: x[0][1]) ] 46 scrolllist = [ item[1] for item in sorted(scrolllist, key=lambda x: x[0][0]) ] 47 return scrolllist 48 49 @telemetry.ZONE_METHOD 50 def GetSubfoldersForScrolllist(self, nodedata): 51 scrolllist = [] 52 typesByMetaGroupID = GetTypesByMetaGroups(nodedata.typeIDs) 53 for metaGroupID, typeIDList in sorted(typesByMetaGroupID.items()): 54 if len(typeIDList) == 0: 55 continue 56 if ShoulAddMetaGroupFolder(metaGroupID): 57 marketGroupID = GetMarketGroupID(nodedata) 58 labelAndEntry = GetMetaGroupNameAndEntry(metaGroupID, typeIDList, nodedata, subContentFunc=GetScrollListFromTypeListInNodedata, onDropDataFunc=self.onDropDataFunc, idTuple=(marketGroupID, metaGroupID)) 59 subList = [labelAndEntry[1]] 60 else: 61 subList = GetScrollListFromTypeList(typeIDList, nodedata.sublevel, nodedata.DropData) 62 scrolllist += subList 63 64 return scrolllist 65 66 67 def GetMarketGroupID(nodedata): 68 if nodedata is None: 69 return 70 else: 71 return nodedata.marketGroupInfo.marketGroupID 72 73 74 @telemetry.ZONE_METHOD 75 def GetMarketGroupFromMarketGroupInfo(marketGroupInfo, level, subContentFunc, onDropDataFunc, searchHelper, validTypeIDsFunc, moduleFilterSettings = None, chargeFilterSettings = None, browserID = None): 76 typeIDs = validTypeIDsFunc(marketGroupInfo.types, searchHelper, moduleFilterSettings, chargeFilterSettings) 77 if not typeIDs: 78 return (None, None) 79 if level in (0, 1): 80 groupHint = marketGroupInfo.description 81 else: 82 groupHint = '' 83 groupID = (browserID, marketGroupInfo.marketGroupName, marketGroupInfo.marketGroupID) 84 groupEntry = GetFromClass(MarketGroupEntry, {'GetSubContent': subContentFunc, 85 'label': marketGroupInfo.marketGroupName, 86 'id': groupID, 87 'typeIDs': typeIDs, 88 'iconMargin': 18, 89 'showlen': 0, 90 'marketGroupInfo': marketGroupInfo, 91 'sublevel': level, 92 'state': 'locked', 93 'showicon': 'hide' if marketGroupInfo.hasTypes else None, 94 'iconID': marketGroupInfo.iconID, 95 'selected': False, 96 'BlockOpenWindow': 1, 97 'hint': groupHint, 98 'DropData': onDropDataFunc}) 99 return (groupEntry, groupID)