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)