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

bookmarkvisibilitymanager.py (2535B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\sensorsuite\overlay\bookmarkvisibilitymanager.py
      2 import logging
      3 import yaml
      4 from carbon.common.script.util.timerstuff import AutoTimer
      5 logger = logging.getLogger(__name__)
      6 FOLDER_VISIBILITY_SETTING = 'sensor_overlay_bookmark_folder_visibility'
      7 FOLDER_VISIBILITY_SETTING_NEW = 'sensor_overlay_acl_bookmark_folder_visibility'
      8 
      9 class BookmarkFolderVisibilityManager:
     10 
     11     def __init__(self):
     12         self.bookmarkFolderKeysHiddenFromSensorOverlay = None
     13 
     14     def LoadFolderVisibility(self):
     15         logger.debug('Loading folder visibility settings')
     16         settingsYaml = sm.GetService('characterSettings').Get(FOLDER_VISIBILITY_SETTING_NEW) or ''
     17         tempSettings = yaml.safe_load(settingsYaml) or []
     18         try:
     19             self.bookmarkFolderKeysHiddenFromSensorOverlay = set(((f, s) for f, s in tempSettings))
     20         except Exception:
     21             logger.exception('Failed to load folder visibility settings')
     22             self.bookmarkFolderKeysHiddenFromSensorOverlay = set()
     23 
     24     def PersistVisibleFolders(self):
     25         logger.debug('Persisting folder visibility settings')
     26         settingsYaml = yaml.safe_dump(list(self.bookmarkFolderKeysHiddenFromSensorOverlay))
     27         sm.GetService('characterSettings').Save(FOLDER_VISIBILITY_SETTING_NEW, settingsYaml)
     28         self.persistVisibleFoldersTimer = None
     29 
     30     def IsFolderVisible(self, folderKey):
     31         if self.bookmarkFolderKeysHiddenFromSensorOverlay is None:
     32             self.LoadFolderVisibility()
     33         return folderKey not in self.bookmarkFolderKeysHiddenFromSensorOverlay
     34 
     35     def SetFolderVisibility(self, folderKey, isVisible):
     36         logger.debug('Setting bookmark folder %s visibility to %s', folderKey, isVisible)
     37         if isVisible:
     38             self.bookmarkFolderKeysHiddenFromSensorOverlay.discard(folderKey)
     39         else:
     40             self.bookmarkFolderKeysHiddenFromSensorOverlay.add(folderKey)
     41         self.persistVisibleFoldersTimer = AutoTimer(5000, self.PersistVisibleFolders)
     42 
     43 
     44 _bookmarkVisibilityManager = None
     45 
     46 def GetBookmarkFolderVisibilityManager():
     47     global _bookmarkVisibilityManager
     48     if _bookmarkVisibilityManager is None:
     49         _bookmarkVisibilityManager = BookmarkFolderVisibilityManager()
     50     return _bookmarkVisibilityManager
     51 
     52 
     53 def ReleaseBookmarkFolderVisibilityManager():
     54     global _bookmarkVisibilityManager
     55     if _bookmarkVisibilityManager is not None:
     56         del _bookmarkVisibilityManager
     57         _bookmarkVisibilityManager = None