mapViewNavigation.py (6972B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\mapView\mapViewNavigation.py 2 import eveicon 3 from carbon.common.script.sys.serviceConst import ROLE_GML 4 from carbon.common.script.util.timerstuff import AutoTimer 5 from carbonui.control.contextMenu.menuEntryData import MenuEntryData 6 from carbonui.primitives.container import Container 7 import carbonui.const as uiconst 8 from eve.client.script.ui.camera.mapCameraController import MapCameraController 9 from carbonui.uicore import uicore 10 from eve.client.script.ui.shared.mapView.categories.category_setting_listener import CategorySettingListener 11 from localization import GetByLabel 12 from menu import MenuLabel 13 import evespacemouse 14 spaceMouseSupportEnabled = False 15 16 class MapViewNavigation(Container): 17 default_cursor = uiconst.UICURSOR_DEFAULT 18 lastPickInfo = None 19 isTabStop = True 20 pickInfo = None 21 pickPosition = None 22 cameraUpdateTimer = None 23 rightMouseDownPosition = None 24 25 def Close(self, *args): 26 Container.Close(self, *args) 27 self.mapView = None 28 self.pickTimer = None 29 self.cameraUpdateTimer = None 30 evespacemouse.StopListening(self._OnSpaceMousePosition, None) 31 32 def ApplyAttributes(self, attributes): 33 Container.ApplyAttributes(self, attributes) 34 self.mapView = attributes.mapView 35 self.pickTimer = AutoTimer(20, self.CheckPick) 36 self.mouseDownPick = None 37 self.categorySettingListener = CategorySettingListener() 38 self.ConstructCameraController() 39 if spaceMouseSupportEnabled: 40 evespacemouse.StartListening(None, self._OnSpaceMousePosition, None, 100) 41 42 def _OnSpaceMousePosition(self, dt, translation, rotation): 43 mo = uicore.uilib.mouseOver 44 parent = self.parent 45 while mo != parent: 46 if not mo.parent or mo is uicore.uilib.desktop: 47 break 48 mo = mo.parent 49 50 if mo != parent: 51 return 52 spaceMouseScale = 1000.0 / 16.0 53 camera = self.cameraController.GetCamera() 54 if rotation[0] or rotation[1]: 55 orbitScale = 0.012 * spaceMouseScale * dt 56 camera.OrbitImmediate(rotation[1] * orbitScale, rotation[0] * orbitScale) 57 if translation[0] or translation[1] or translation[2]: 58 if camera.IsAttached(): 59 camera.Zoom(-translation[2] * 0.01 * spaceMouseScale * dt) 60 else: 61 panScale = 30 * spaceMouseScale * dt 62 camera.PanImmediate(translation[0] * panScale, translation[1] * panScale, -translation[2] * panScale) 63 raise evespacemouse.StopPropagation() 64 65 def ConstructCameraController(self): 66 self.cameraController = MapCameraController(self.mapView.mapViewID, self.mapView.cameraID) 67 68 def CheckPick(self): 69 if uicore.uilib.mouseOver is not self or uicore.uilib.leftbtn or uicore.uilib.rightbtn: 70 return 71 mx, my = uicore.uilib.x, uicore.uilib.y 72 if self.pickPosition: 73 dX = abs(mx - self.pickPosition[0]) 74 dY = abs(my - self.pickPosition[1]) 75 picked = self.pickPosition[-1] 76 if dX == 0 and dY == 0: 77 if not picked: 78 self.PickScene(mx, my) 79 self.pickPosition = (mx, my, True) 80 return 81 self.pickPosition = (mx, my, False) 82 83 def PickScene(self, mouseX, mouseY): 84 pickInfo = self.mapView.GetPickObjects(mouseX, mouseY, getMarkers=False) 85 if pickInfo: 86 self.mapView.OnMarkerHovered(pickInfo[0]) 87 else: 88 self.mapView.OnMarkerHovered(None) 89 90 def MapMarkerPickingOverride(self, *args, **kwds): 91 return False 92 93 def PickRegionID(self): 94 return None 95 96 def OnDblClick(self, *args): 97 if self.destroyed: 98 return 99 pickInfo = self.GetPickInfo() 100 if pickInfo: 101 self.mapView.SetSelectedMarker(pickInfo[0][1]) 102 else: 103 self.mapView.LookAtCurrentLocation() 104 105 def ClickPickedObject(self): 106 pickInfo = self.GetPickInfo() 107 if pickInfo: 108 self.mapView.SetSelectedMarker(pickInfo[0][1]) 109 110 def GetPickInfo(self): 111 mouseX, mouseY = uicore.uilib.x, uicore.uilib.y 112 if self.destroyed: 113 return None 114 pickInfo = self.mapView.GetPickObjects(mouseX, mouseY, getMarkers=True) 115 return pickInfo 116 117 def OnMouseWheel(self, *args): 118 self.cameraController.OnMouseWheel() 119 120 def OnMouseMove(self, *args): 121 if not uicore.IsDragging(): 122 self.cameraController.OnMouseMove() 123 124 def OnMouseDown(self, *args): 125 self.cameraController.OnMouseDown(*args) 126 self.mouseDownPick = self.GetPickInfo() 127 self.mapView.infoLayer.state = uiconst.UI_DISABLED 128 129 def OnClick(self, *args): 130 pickInfo = self.GetPickInfo() 131 if pickInfo and pickInfo == self.mouseDownPick: 132 self.mapView.SetSelectedMarker(pickInfo[0][1]) 133 self.mouseDownPick = None 134 135 def OnMouseUp(self, *args): 136 self.mapView.infoLayer.state = uiconst.UI_PICKCHILDREN 137 138 def GetMenuForObjectID(self, objectID): 139 return self.mapView.GetItemMenu(objectID) 140 141 def GetMenu(self): 142 pickInfo = self.mapView.GetPickObjects(uicore.uilib.x, uicore.uilib.y) 143 if pickInfo and len(pickInfo) == 1: 144 return self.GetMenuForObjectID(pickInfo[0][0]) 145 locations = [(MenuLabel('UI/Map/Navigation/menuSystem'), self.mapView.SetActiveItemID, (session.solarsystemid2,)), (MenuLabel('UI/Map/Navigation/menuConstellation'), self.mapView.SetActiveItemID, (session.constellationid,)), (MenuLabel('UI/Map/Navigation/menuRegion'), self.mapView.SetActiveItemID, (session.regionid,))] 146 m = [(MenuLabel('UI/Map/Navigation/menuSelectCurrent'), locations)] 147 mapSvc = sm.GetService('map') 148 waypoints = sm.StartService('starmap').GetWaypoints() 149 if len(waypoints): 150 waypointList = [] 151 wpCount = 1 152 for waypointID in waypoints: 153 waypointItem = mapSvc.GetItem(waypointID) 154 caption = MenuLabel('UI/Map/Navigation/menuWaypointEntry', {'itemName': waypointItem.itemName, 155 'wpCount': wpCount}) 156 waypointList += [(caption, self.mapView.SetActiveItemID, (waypointID,))] 157 wpCount += 1 158 159 m.append((MenuLabel('UI/Map/Navigation/menuSelectWaypoint'), waypointList)) 160 m.append(None) 161 m.append((MenuLabel('UI/Map/Navigation/menuClearWaypoints'), sm.StartService('starmap').ClearWaypoints, (None,))) 162 m.append(MenuEntryData(text=GetByLabel('UI/Map/MapUtils/ManageFilterCategories'), subMenuData=self.categorySettingListener.get_menu())) 163 if session.role & ROLE_GML: 164 m.append(('GM: Debug Run All Filters', self.mapView.DebugRunAllFilters)) 165 return m 166 167 def OnDockModeChanged(self): 168 pass