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

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)