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] = []