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

proximitySensor.py (1568B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\mapView\controls\proximitySensor.py
      2 import signals
      3 from carbonui import uiconst
      4 from carbonui.primitives.container import Container
      5 from carbonui.uicore import uicore
      6 
      7 class ProximitySensor(Container):
      8     default_state = uiconst.UI_DISABLED
      9 
     10     def __init__(self, **kwargs):
     11         super(ProximitySensor, self).__init__(**kwargs)
     12         self._mouse_inside = False
     13         self.on_mouse_enter = signals.Signal()
     14         self.on_mouse_exit = signals.Signal()
     15         self._register_mouse_events()
     16 
     17     def Close(self):
     18         self._unregister_mouse_events()
     19         super(ProximitySensor, self).Close()
     20 
     21     def mouse_inside(self):
     22         return self._mouse_inside
     23 
     24     def _register_mouse_events(self):
     25         self._mouse_move_cookie = uicore.event.RegisterForTriuiEvents(uiconst.UI_MOUSEMOVE, self._on_global_mouse_move)
     26 
     27     def _unregister_mouse_events(self):
     28         uicore.event.UnregisterForTriuiEvents(self._mouse_move_cookie)
     29 
     30     def _on_global_mouse_move(self, *args):
     31         mouseX = uicore.uilib.x
     32         mouseY = uicore.uilib.y
     33         mouseOutside = mouseX < self.absoluteLeft or mouseX > self.absoluteRight or mouseY < self.absoluteTop or mouseY > self.absoluteBottom
     34         if not mouseOutside:
     35             if not self._mouse_inside:
     36                 self._mouse_inside = True
     37                 self.on_mouse_enter()
     38         elif self._mouse_inside:
     39             self._mouse_inside = False
     40             self.on_mouse_exit()
     41         return True