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

browserFacilities.py (8150B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\industry\browserFacilities.py
      2 from carbonui.control.combo import Combo
      3 from carbonui.primitives.container import Container
      4 from carbonui.util.bunch import Bunch
      5 from eve.client.script.ui.control.eveScroll import Scroll
      6 from eve.client.script.ui.quickFilter import QuickFilterEdit
      7 from eve.client.script.ui.shared.industry import industryUIConst
      8 from eve.client.script.ui.shared.industry.industryUIConst import ACTIVITY_NAMES
      9 from eve.client.script.ui.shared.industry.facilityEntry import FacilityEntry
     10 from eve.client.script.ui.shared.industry.viewModeButtons import ViewModeButtons
     11 import industry
     12 import localization
     13 import carbonui.const as uiconst
     14 import blue
     15 from eve.common.script.sys import idCheckers
     16 OWNER_ANY = 1
     17 OWNER_NPC = 2
     18 OWNER_CORP = 3
     19 RANGE_MAX_SKILL = -2
     20 RANGE_REGION = -1
     21 RANGE_OPTIONS = [('UI/Generic/CurrentSystem', 0),
     22  ('UI/Industry/RangeWithin5Jumps', 5),
     23  ('UI/Industry/RangeWithin10Jumps', 10),
     24  ('UI/Generic/CurrentRegion', RANGE_REGION),
     25  ('UI/Industry/RangeMaxSkill', RANGE_MAX_SKILL)]
     26 
     27 class BrowserFacilities(Container):
     28     default_name = 'BrowserFacilities'
     29     __notifyevents__ = ['OnFacilitiesReloaded']
     30 
     31     def ApplyAttributes(self, attributes):
     32         Container.ApplyAttributes(self, attributes)
     33         sm.RegisterNotify(self)
     34         self.callback = attributes.callback
     35         self.isInitialized = False
     36 
     37     def _OnClose(self, *args):
     38         sm.UnregisterNotify(self)
     39 
     40     def OnTabSelect(self):
     41         if self.isInitialized:
     42             self.UpdateScroll()
     43             return
     44         self.isInitialized = True
     45         self.topPanel = Container(name='topPanel', parent=self, align=uiconst.TOTOP, height=32, padding=(0, 6, 0, 6))
     46         self.scroll = Scroll(parent=self, id='InstallationBrowser')
     47         self.scroll.OnSelectionChange = self.OnScrollSelectionChange
     48         self.ownerCombo = Combo(name='ownerCombo', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnOwnerCombo, options=self.GetOwnerOptions(), select=settings.user.ui.Get('BrowserFacilitiesOwner', 0), width=120, padRight=4)
     49         self.activityCombo = Combo(name='activityCombo', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnActivityCombo, options=self.GetActivityOptions(), select=settings.user.ui.Get('BrowserFacilitiesActivity', 0), width=120, padRight=4, maxVisibleEntries=7)
     50         self.rangeCombo = Combo(name='rangeCombo', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnRangeCombo, options=self.GetRangeOptions(), select=settings.user.ui.Get('BrowserFacilitiesRange', 0), width=140, padRight=4)
     51         self.viewModeButtons = ViewModeButtons(parent=self.topPanel, align=uiconst.TORIGHT, controller=self, settingsID='IndustryBlueprintBrowserViewMode')
     52         self.filterEdit = QuickFilterEdit(name='searchField', parent=self.topPanel, maxLength=64, align=uiconst.TORIGHT, OnClearFilter=self.OnFilterEditCleared, padRight=4, width=144)
     53         self.filterEdit.ReloadFunction = self.OnFilterEdit
     54         self.UpdateScroll()
     55 
     56     def OnFacilitiesReloaded(self, *args):
     57         if self.isInitialized and self.display:
     58             self.UpdateScroll()
     59 
     60     def OnScrollSelectionChange(self, entries, activityID = None):
     61         self.callback(entries[0].facilityData)
     62 
     63     def OnFilterEdit(self):
     64         self.UpdateScroll()
     65 
     66     def OnFilterEditCleared(self):
     67         self.UpdateScroll()
     68 
     69     def UpdateScroll(self):
     70         self.scroll.ShowLoading()
     71         blue.pyos.synchro.Yield()
     72         installations = self.GetInstallationData()
     73         scrollList = self.GetScrollList(installations)
     74         self.scroll.sr.defaultColumnWidth = FacilityEntry.GetDefaultColumnWidth()
     75         self.scroll.sr.fixedColumns = FacilityEntry.GetFixedColumns(self.viewModeButtons.GetViewMode())
     76         self.scroll.LoadContent(contentList=scrollList, headers=FacilityEntry.GetHeaders(showTax=self.activityCombo.GetValue() in industry.ACTIVITIES), noContentHint=localization.GetByLabel('UI/Industry/NoFacilitiesFound'))
     77         self.scroll.HideLoading()
     78 
     79     def GetInstallationData(self):
     80         installations = sm.GetService('facilitySvc').GetFacilities()
     81         cfg.evelocations.Prime((facilityData.facilityID for facilityData in installations))
     82         cfg.eveowners.Prime((facilityData.ownerID for facilityData in installations))
     83         return installations
     84 
     85     def GetScrollList(self, installations):
     86         scrollList = []
     87         if installations:
     88             sm.GetService('facilitySvc').InitMaxActivityModifiers()
     89         showTax = self.activityCombo.GetValue() in industry.ACTIVITIES
     90         for facilityData in installations:
     91             blue.pyos.BeNice()
     92             jumps = self.GetJumpsTo(facilityData.solarSystemID)
     93             if self.IsFilteredOut(facilityData):
     94                 continue
     95             activityID = self.activityCombo.GetValue()
     96             node = Bunch(facilityData=facilityData, decoClass=FacilityEntry, sortValues=FacilityEntry.GetColumnSortValues(facilityData, jumps, activityID, showTax), viewMode=self.viewModeButtons.GetViewMode(), jumps=jumps, charIndex=facilityData.GetName(), activityID=activityID)
     97             scrollList.append(node)
     98 
     99         return scrollList
    100 
    101     def IsFilteredOut(self, facilityData):
    102         if not facilityData.activities:
    103             return True
    104         filterText = self.filterEdit.GetValue().strip().lower()
    105         if filterText:
    106             text = facilityData.GetName() + facilityData.GetOwnerName() + facilityData.GetTypeName()
    107             if text.lower().find(filterText) == -1:
    108                 return True
    109         activityValue = self.activityCombo.GetValue()
    110         if activityValue and activityValue not in facilityData.activities:
    111             return True
    112         ownerValue = self.ownerCombo.GetValue()
    113         if ownerValue != OWNER_ANY:
    114             isCorporation = facilityData.ownerID == session.corpid
    115             if not isCorporation and ownerValue != OWNER_NPC:
    116                 return True
    117             if isCorporation and ownerValue != OWNER_CORP:
    118                 return True
    119         solarSystemID = facilityData.solarSystemID
    120         if idCheckers.IsWormholeSystem(solarSystemID) and solarSystemID != session.solarsystemid2:
    121             return True
    122         rangeValue = self.rangeCombo.GetValue()
    123         if rangeValue != RANGE_MAX_SKILL:
    124             if rangeValue == RANGE_REGION and cfg.mapSystemCache.Get(solarSystemID).regionID != session.regionid:
    125                 return True
    126             if 0 <= rangeValue < self.GetJumpsTo(solarSystemID):
    127                 return True
    128         return False
    129 
    130     def GetJumpsTo(self, solarsystemID):
    131         return sm.GetService('clientPathfinderService').GetJumpCountFromCurrent(solarsystemID)
    132 
    133     def OnViewModeChanged(self, viewMode):
    134         self.UpdateScroll()
    135 
    136     def OnRangeCombo(self, combo, key, value):
    137         settings.user.ui.Set('BrowserFacilitiesRange', value)
    138         self.UpdateScroll()
    139 
    140     def GetRangeOptions(self):
    141         return [ (localization.GetByLabel(label), value) for label, value in RANGE_OPTIONS ]
    142 
    143     def OnActivityCombo(self, combo, key, value):
    144         settings.user.ui.Set('BrowserFacilitiesActivity', value)
    145         self.UpdateScroll()
    146 
    147     def GetActivityOptions(self):
    148         ret = [ (localization.GetByLabel(ACTIVITY_NAMES[activityID]),
    149          activityID,
    150          None,
    151          industryUIConst.ACTIVITY_ICONS_SMALL[activityID]) for activityID in industry.ACTIVITIES ]
    152         ret.insert(0, (localization.GetByLabel('UI/Industry/AllActivities'), 0))
    153         return ret
    154 
    155     def GetOwnerOptions(self):
    156         return [(localization.GetByLabel('UI/Industry/AllFacilities'), OWNER_ANY), (localization.GetByLabel('UI/Industry/PublicFacilities'),
    157           OWNER_NPC,
    158           None,
    159           'res:/UI/Texture/Classes/Inventory/readOnly.png'), (localization.GetByLabel('UI/Industry/CorpOwnedFacilities'),
    160           OWNER_CORP,
    161           None,
    162           'res:/UI/Texture/Classes/Industry/iconCorp.png')]
    163 
    164     def OnOwnerCombo(self, combo, key, value):
    165         settings.user.ui.Set('BrowserFacilitiesOwner', value)
    166         self.UpdateScroll()