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

statesPanel.py (5216B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\overviewSettings\statesPanel.py
      2 import localization
      3 from carbonui import uiconst
      4 from carbonui.primitives.container import Container
      5 from carbonui.primitives.sprite import Sprite
      6 from eve.client.script.parklife import states as stateFlagcConst
      7 from eve.client.script.ui.control.entries.util import GetFromClass
      8 from eve.client.script.ui.control.eveScroll import Scroll
      9 from eve.client.script.ui.inflight.overviewSettings.overviewSettingEntries import StateOverviewEntry
     10 from globalConfig import IsPlayerBountyHidden
     11 from overviewPresets import overviewSettingsConst
     12 
     13 class StatesPanel(Container):
     14     default_name = 'StatesPanel'
     15 
     16     def ApplyAttributes(self, attributes):
     17         Container.ApplyAttributes(self, attributes)
     18         self.presetSvc = sm.GetService('overviewPresetSvc')
     19         self.presetName = attributes.presetName
     20         self.initialized = False
     21 
     22     def SetPresetName(self, presetName):
     23         self.presetName = presetName
     24 
     25     def CreateIfNeeded(self):
     26         if self.initialized:
     27             return
     28         self.initialized = True
     29         self.iconCont = Container(parent=self, name='iconCont', align=uiconst.TOTOP, height=20, state=uiconst.UI_PICKCHILDREN)
     30         showSprite = Sprite(parent=self.iconCont, pos=(64, 0, 16, 16), name='showSprite', state=uiconst.UI_NORMAL, texturePath='res:/ui/texture/icons/generic/visible_default_16.png', align=uiconst.CENTERRIGHT, hint=localization.GetByLabel('UI/Overview/FilterStateAlwaysShowLong'))
     31         showSprite.SetRGBA(0.1, 1.0, 0.1, 0.75)
     32         showSprite.OnClick = (self.OnIconClicked, 'alwaysShow')
     33         hideSprite = Sprite(parent=self.iconCont, pos=(34, 0, 16, 16), name='hideSprite', state=uiconst.UI_NORMAL, texturePath='res:/ui/texture/icons/generic/visible_dontshow_16.png', align=uiconst.CENTERRIGHT, hint=localization.GetByLabel('UI/Overview/FilterStateFilterOutLong'))
     34         hideSprite.OnClick = (self.OnIconClicked, 'filterOut')
     35         hideSprite.SetRGBA(1.0, 0.05, 0.05, 0.75)
     36         neutralSprite = Sprite(parent=self.iconCont, pos=(4, 0, 16, 16), name='neutralSprite', state=uiconst.UI_NORMAL, texturePath='res:/ui/texture/icons/generic/visible_matchstate_16.png', align=uiconst.CENTERRIGHT, hint=localization.GetByLabel('UI/Overview/FilterStateNotFilterOutLong'))
     37         neutralSprite.SetRGBA(0.2, 0.4, 0.6, 0.75)
     38         neutralSprite.OnClick = (self.OnIconClicked, 'unfiltered')
     39 
     40         def ChangeOpaacity(sprite, opacity):
     41             sprite.opacity = opacity
     42 
     43         for sprite in (showSprite, hideSprite, neutralSprite):
     44             sprite.OnMouseEnter = (ChangeOpaacity, sprite, 1.2)
     45             sprite.OnMouseExit = (ChangeOpaacity, sprite, 1.0)
     46 
     47         self.statesScroll = Scroll(name='statesScroll', parent=self)
     48 
     49     def Load(self):
     50         self.CreateIfNeeded()
     51         includedList = []
     52         allFlagsAndProps = sm.GetService('stateSvc').GetStateProps()
     53         alwaysShow = self.presetSvc.GetAlwaysShownStates(presetName=self.presetName) or []
     54         filtered = self.presetSvc.GetFilteredStates(presetName=self.presetName) or []
     55         playerBountyHidden = IsPlayerBountyHidden(sm.GetService('machoNet'))
     56         for flag, props in allFlagsAndProps.iteritems():
     57             if flag == stateFlagcConst.flagForcedOn:
     58                 continue
     59             if flag == stateFlagcConst.flagIsWanted and playerBountyHidden:
     60                 continue
     61             entry = GetFromClass(StateOverviewEntry, {'label': props.text,
     62              'isAlwaysShow': flag in alwaysShow,
     63              'isFilterOut': flag in filtered,
     64              'flag': flag,
     65              'hint': props.hint,
     66              'props': props,
     67              'onChangeFunc': self.OnFilteredStatesChange})
     68             includedList.append(entry)
     69 
     70         includedList = localization.util.Sort(includedList, key=lambda x: x.label)
     71         self.statesScroll.Load(contentList=includedList, keepPosition=True)
     72         self.AdjustIcons()
     73 
     74     def _OnResize(self, *args):
     75         Container._OnResize(self)
     76         self.AdjustIcons()
     77 
     78     def OnIconClicked(self, configName, *args):
     79         self.OnFilteredStatesChange(None, configName)
     80 
     81     def AdjustIcons(self):
     82         scroll = getattr(self, 'statesScroll', None)
     83         if not scroll:
     84             return
     85         if scroll._scrollbar_vertical.display:
     86             self.iconCont.padRight = 24
     87         else:
     88             self.iconCont.padRight = 8
     89 
     90     def OnFilteredStatesChange(self, node, configToChange, *args):
     91         if node:
     92             selected = self.statesScroll.GetSelectedNodes(node)
     93         else:
     94             selected = self.statesScroll.GetSelected()
     95         flags = [ x.flag for x in selected ]
     96         addAlwaysShow = False
     97         addFilterOut = False
     98         if configToChange == 'alwaysShow':
     99             addAlwaysShow = True
    100         elif configToChange == 'filterOut':
    101             addFilterOut = True
    102         changeList = [(overviewSettingsConst.PRESET_SETTINGS_FILTERED_STATES, flags, addFilterOut), (overviewSettingsConst.PRESET_SETTINGS_ALWAYS_SHOWN_STATES, flags, addAlwaysShow)]
    103         self.presetSvc.ChangeSettings(changeList=changeList, presetName=self.presetName)