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

highlightscontroller.py (4873B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\conversations\conversationswithhighlights\highlightscontroller.py
      2 from collections import defaultdict
      3 from localization import GetByLabel
      4 from uthread2 import start_tasklet, sleep
      5 
      6 class ConversationHighlightsController(object):
      7     __notifyevents__ = ['OnConversationStarted', 'OnConversationEnded', 'OnConversationMinimized']
      8 
      9     def __init__(self, conversation_service):
     10         self.conversation_service = conversation_service
     11         self._ui_highlighting_service = None
     12         self._ui_blinks_service = None
     13         self._active_ui_highlights_by_conversation = defaultdict(list)
     14         self._active_space_highlights_by_conversation = defaultdict(list)
     15         self._active_ui_blinks_by_conversation = defaultdict(list)
     16         sm.RegisterNotify(self)
     17 
     18     @property
     19     def ui_highlighting_service(self):
     20         if self._ui_highlighting_service is None:
     21             self._ui_highlighting_service = sm.GetService('uiHighlightingService')
     22         return self._ui_highlighting_service
     23 
     24     @property
     25     def ui_blinks_service(self):
     26         if not self._ui_blinks_service:
     27             from uiblinker import get_service
     28             self._ui_blinks_service = get_service()
     29         return self._ui_blinks_service
     30 
     31     def OnConversationStarted(self, conversation_id):
     32         self._clear_highlighting_for_conversation(conversation_id)
     33         start_tasklet(self._process_conversation_started, conversation_id)
     34 
     35     def OnConversationEnded(self, conversation_id):
     36         self._clear_highlighting_for_conversation(conversation_id)
     37 
     38     def OnConversationMinimized(self, _conversation_id):
     39         if not settings.char.ui.Get('hasSeenAuraHighlight', False):
     40             sleep(0.5)
     41             self._highlight_aura()
     42             settings.char.ui.Set('hasSeenAuraHighlight', True)
     43 
     44     def _highlight_aura(self):
     45         self.ui_highlighting_service.highlight_ui_element_by_name('neocom.InstructionsConversationWindow', GetByLabel('UI/Conversations/HighlightAuraOnFirstMinimize'), fadeout_seconds=5, title='')
     46 
     47     def _process_conversation_started(self, conversation_id):
     48         if self.conversation_service.get_active_conversation_id() != conversation_id:
     49             return
     50         self._reveal_ui_highlights(conversation_id)
     51         self._reveal_space_object_highlights(conversation_id)
     52         self._reveal_menu_highlights(conversation_id)
     53         self._reveal_ui_blinks(conversation_id)
     54 
     55     def _reveal_menu_highlights(self, conversation_id):
     56         menu_highlight_ids = self.conversation_service.get_active_menu_highlights_by_conversation_id(conversation_id)
     57         if menu_highlight_ids:
     58             self.ui_highlighting_service.highlight_menu_by_ids(menu_highlight_ids)
     59 
     60     def _reveal_space_object_highlights(self, conversation_id):
     61         space_object_highlight_ids = self.conversation_service.get_active_space_object_highlights_by_conversation_id(conversation_id)
     62         if space_object_highlight_ids:
     63             for space_object_highlight_id in space_object_highlight_ids:
     64                 self.ui_highlighting_service.highlight_space_object(space_object_highlight_id)
     65 
     66             self._active_space_highlights_by_conversation[conversation_id] += space_object_highlight_ids
     67 
     68     def _reveal_ui_highlights(self, conversation_id):
     69         ui_highlight_ids = self.conversation_service.get_active_ui_highlights_by_conversation_id(conversation_id)
     70         if ui_highlight_ids:
     71             self.ui_highlighting_service.highlight_ui_elements(ui_highlight_ids)
     72             self._active_ui_highlights_by_conversation[conversation_id] += ui_highlight_ids
     73 
     74     def _reveal_ui_blinks(self, conversation_id):
     75         ui_blinks = self.conversation_service.get_active_ui_blinks_by_conversation_id(conversation_id)
     76         if ui_blinks:
     77             self.ui_blinks_service.start_blinkers_by_id(ui_blinks)
     78             self._active_ui_blinks_by_conversation[conversation_id] += ui_blinks
     79 
     80     def _clear_highlighting_for_conversation(self, conversation_id):
     81         self.ui_highlighting_service.clear_menu_highlighting()
     82         for space_highlight_id in self._active_space_highlights_by_conversation[conversation_id]:
     83             self.ui_highlighting_service.clear_space_object_highlight(space_highlight_id)
     84 
     85         self._active_space_highlights_by_conversation[conversation_id] = []
     86         for ui_highlight_id in self._active_ui_highlights_by_conversation[conversation_id]:
     87             self.ui_highlighting_service.remove_highlight_from_ui_element_by_id(ui_highlight_id)
     88 
     89         self._active_ui_highlights_by_conversation[conversation_id] = []
     90         blink_ids = self._active_ui_blinks_by_conversation[conversation_id]
     91         if blink_ids:
     92             self.ui_blinks_service.stop_blinkers_by_id(blink_ids)
     93             self._active_ui_blinks_by_conversation[conversation_id] = []