directionalScannerWindow.py (5841B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\scannerFiles\directionalScannerWindow.py 2 import eveicon 3 from carbon.client.script.environment.AudioUtil import PlaySound 4 from carbonui.window.widget import WidgetWindow 5 from carbonui.window.control.action import WindowActionImportance, WindowToggleAction 6 from carbonui.window.header.small import SmallWindowHeader 7 from eve.client.script.ui.inflight.scannerFiles.directionalScannerPalette import DirectionalScannerPalette 8 from carbonui.control.window import Window 9 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import IsDirectionalScanPanelEmbedded 10 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import SetDirectionalScanPanelEmbedded 11 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import SetDirectionalScanPanelWindowed 12 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import IsShortuctExecutionAllowed 13 from eveuniverse.solar_systems import is_directional_scanner_suppressed 14 from localization import GetByLabel 15 from carbonui.uicore import uicore 16 import carbonui.const as uiconst 17 import eve.client.script.ui.shared.pointerTool.pointerToolConst as pConst 18 MIN_WINDOW_WIDTH = 300 19 MIN_WINDOW_HEIGHT = 124 20 21 class DirectionalScannerCompactHeader(SmallWindowHeader): 22 default_height = 32 23 24 25 class DirectionalScanner(WidgetWindow): 26 __notifyevents__ = ['OnOverviewPresetSaved', 'OnBallparkSetState', 'OnSessionChanged'] 27 default_windowID = 'directionalScannerWindow' 28 default_width = 400 29 default_height = 350 30 default_minSize = (MIN_WINDOW_WIDTH, MIN_WINDOW_HEIGHT) 31 default_captionLabelPath = 'UI/Inflight/Scanner/DirectionalScanner' 32 default_scope = uiconst.SCOPE_INFLIGHT 33 default_iconNum = eveicon.directional_scanner 34 35 def ApplyAttributes(self, attributes): 36 super(DirectionalScanner, self).ApplyAttributes(attributes) 37 self.scannerPalette = DirectionalScannerPalette(parent=self.GetMainArea(), uniqueUiName=pConst.UNIQUE_NAME_DIRECTIONAL_SCANNER, window=self) 38 sm.ScatterEvent('OnDirectionalScannerOpened') 39 self.on_compact_mode_changed.connect(self.OnWindowStateChanged) 40 self.on_stacked_changed.connect(self.OnWindowStateChanged) 41 self.on_collapsed_changed.connect(self.OnWindowStateChanged) 42 43 def OnWindowStateChanged(self, *args): 44 self.Prepare_Header_() 45 self.scannerPalette.Reconstruct() 46 47 def Confirm(self, *args): 48 self.scannerPalette.Confirm() 49 50 @classmethod 51 def ToggleOpenCloseDirectionalScanner(cls): 52 if IsDirectionalScanPanelEmbedded(): 53 uicore.cmd.GetCommandAndExecute('CmdToggleSolarSystemMap', openDirectionalScanPanel=True) 54 else: 55 cls.ToggleOpenClose() 56 57 @classmethod 58 def OpenDirectionalScanner(cls): 59 if IsDirectionalScanPanelEmbedded(): 60 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 61 solarSystem = SolarSystemViewPanel.GetIfOpen() 62 if solarSystem: 63 solarSystem.mapView.OpenDirectionalScanPanelEmbedded() 64 else: 65 DirectionalScanner.Open() 66 67 def CloseByUser(self, *args): 68 Window.CloseByUser(self, *args) 69 sm.ScatterEvent('OnDirectionalScannerClosed') 70 71 def GetCustomHeaderButtons(self): 72 return [DockWindowAction(self)] 73 74 def DockInMap(self, *args): 75 SetDirectionalScanPanelEmbedded() 76 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 77 SolarSystemViewPanel.Open() 78 self.Close(setClosed=True) 79 sm.ScatterEvent('OnDirectionalScannerDocked') 80 81 def UndockFromMap(self, *args): 82 SetDirectionalScanPanelWindowed() 83 sm.ScatterEvent('OnDirectionalScannerUndocked') 84 85 def OnSetActive_(self, *args): 86 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 87 if SolarSystemViewPanel.IsOpen(): 88 PlaySound('scanner_atmo_window_loop_play') 89 90 def OnSetInactive(self, *args): 91 Window.OnSetInactive(self, *args) 92 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 93 if SolarSystemViewPanel.IsOpen(): 94 PlaySound('scanner_atmo_loop_play') 95 96 def OnShortcutKeyDown(self, modkey, vkey, flag): 97 if IsShortuctExecutionAllowed(self): 98 return self.scannerPalette.ToggleFitlerShortcut(vkey) 99 return False 100 101 def Prepare_Header_(self): 102 if self.compact: 103 self._SetHeader(DirectionalScannerCompactHeader(show_caption=False)) 104 else: 105 super(DirectionalScanner, self).Prepare_Header_() 106 107 def OnSessionChanged(self, isremote, session, change): 108 if 'solarsystemid2' in change: 109 if is_directional_scanner_suppressed(session.solarsystemid2): 110 self.Close() 111 112 113 class DockWindowAction(WindowToggleAction): 114 115 def __init__(self, window): 116 super(DockWindowAction, self).__init__(window=window, callback=self._toggle_docked, toggled_on_icon='res:/UI/Texture/classes/DockPanel/floatButton.png', toggled_off_icon='res:/UI/Texture/classes/DockPanel/fullscreenButton.png', toggled_on_label=GetByLabel('UI/Inflight/Scanner/OpenInWindow'), toggled_off_label=GetByLabel('UI/Inflight/Scanner/DockInSolarSystemMap'), toggled_check=lambda _window: IsDirectionalScanPanelEmbedded(), importance_check=self._get_importance) 117 118 @staticmethod 119 def _toggle_docked(window): 120 if IsDirectionalScanPanelEmbedded(): 121 window.UndockFromMap() 122 else: 123 window.DockInMap() 124 125 @staticmethod 126 def _get_importance(window): 127 if window.compact: 128 return WindowActionImportance.extra 129 else: 130 return WindowActionImportance.core