probeScannerWindow.py (5948B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\probeScannerWindow.py 2 import carbonui.const as uiconst 3 import eveicon 4 from carbon.client.script.environment.AudioUtil import PlaySound 5 from carbonui.window.widget import WidgetWindow 6 from carbonui.uicore import uicore 7 from carbonui.window.control.action import WindowActionImportance, WindowToggleAction 8 from carbonui.window.header.small import SmallWindowHeader 9 from eve.client.script.ui.inflight.scannerFiles.probeScannerPalette import ProbeScannerPalette 10 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import IsProbeScanPanelEmbedded 11 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import SetProbeScanPanelEmbedded 12 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import SetProbeScanPanelWindowed 13 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import IsShortuctExecutionAllowed 14 from eve.client.script.ui.shared.mapView.mapViewUtil import OpenSolarSystemMap 15 from eveuniverse.solar_systems import is_scanning_suppressed 16 from localization import GetByLabel 17 import eve.client.script.ui.shared.pointerTool.pointerToolConst as pConst 18 MIN_WINDOW_WIDTH = 300 19 MIN_WINDOW_HEIGHT = 150 20 21 class ProbeScannerCompactHeader(SmallWindowHeader): 22 default_height = 32 23 24 25 class ProbeScannerWindow(WidgetWindow): 26 __notifyevents__ = ['OnCosmicAnomalyAdded', 'OnCosmicSignatureAdded', 'OnSessionChanged'] 27 default_windowID = 'probeScannerWindow' 28 default_width = 400 29 default_height = 400 30 default_minSize = (MIN_WINDOW_WIDTH, MIN_WINDOW_HEIGHT) 31 default_captionLabelPath = 'UI/Inflight/Scanner/ProbeScanner' 32 default_iconNum = eveicon.probe_scanner 33 34 def ApplyAttributes(self, attributes): 35 super(ProbeScannerWindow, self).ApplyAttributes(attributes) 36 self.scope = uiconst.SCOPE_INFLIGHT 37 self.probeScannerPalette = ProbeScannerPalette(parent=self.GetMainArea(), align=uiconst.TOALL, state=uiconst.UI_PICKCHILDREN, idx=0, uniqueUiName=pConst.UNIQUE_NAME_PROBE_SCANNER, window=self) 38 sm.ScatterEvent('OnProbeScannerOpened') 39 sm.RegisterNotify(self) 40 self.on_compact_mode_changed.connect(self.OnWindowStateChanged) 41 self.on_stacked_changed.connect(self.OnWindowStateChanged) 42 self.on_collapsed_changed.connect(self.OnWindowStateChanged) 43 44 def OnWindowStateChanged(self, *args): 45 self.Prepare_Header_() 46 self.probeScannerPalette.Reconstruct() 47 48 def Prepare_Header_(self): 49 if self.compact: 50 self._SetHeader(ProbeScannerCompactHeader(show_caption=False)) 51 else: 52 super(ProbeScannerWindow, self).Prepare_Header_() 53 54 def Confirm(self, *args): 55 self.probeScannerPalette.Confirm() 56 57 @classmethod 58 def OpenProbeScanner(cls, *args, **kwargs): 59 if IsProbeScanPanelEmbedded(): 60 OpenSolarSystemMap(openProbeScanPanel=True) 61 else: 62 super(ProbeScannerWindow, cls).Open(cls, *args, **kwargs) 63 64 @classmethod 65 def ToggleOpenCloseProbeScanner(cls): 66 if IsProbeScanPanelEmbedded(): 67 uicore.cmd.GetCommandAndExecute('CmdToggleSolarSystemMap', openProbeScanPanel=True) 68 else: 69 cls.ToggleOpenClose() 70 71 def CloseByUser(self, *args): 72 super(ProbeScannerWindow, self).CloseByUser(*args) 73 sm.ScatterEvent('OnProbeScannerClosed') 74 75 def GetCustomHeaderButtons(self): 76 return [DockWindowAction(self)] 77 78 def DockInMap(self, *args): 79 SetProbeScanPanelEmbedded() 80 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 81 SolarSystemViewPanel.Open() 82 sm.ScatterEvent('OnProbeScannerDocked') 83 self.Close(setClosed=True) 84 85 def UndockFromMap(self, *args): 86 SetProbeScanPanelWindowed() 87 sm.ScatterEvent('OnProbeScannerUndocked') 88 89 def OnSetActive_(self, *args): 90 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 91 if SolarSystemViewPanel.IsOpen(): 92 PlaySound('scanner_atmo_window_loop_play') 93 94 def OnSetInactive(self, *args): 95 super(ProbeScannerWindow, self).OnSetInactive(*args) 96 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 97 if SolarSystemViewPanel.IsOpen(): 98 PlaySound('scanner_atmo_loop_play') 99 100 def OnShortcutKeyDown(self, modkey, vkey, flag): 101 if IsShortuctExecutionAllowed(self): 102 return self.probeScannerPalette.ToggleFilterShortcut(vkey) 103 return False 104 105 def OnCosmicAnomalyAdded(self, *args): 106 self._HighlightResult() 107 108 def OnCosmicSignatureAdded(self, *args): 109 self._HighlightResult() 110 111 def _HighlightResult(self): 112 if self.InStack() and not self.IsVisible(): 113 self.Blink() 114 115 def OnSessionChanged(self, isremote, session, change): 116 if 'solarsystemid2' in change: 117 if is_scanning_suppressed(session.solarsystemid2): 118 self.Close() 119 120 121 class DockWindowAction(WindowToggleAction): 122 123 def __init__(self, window): 124 super(DockWindowAction, self).__init__(window=window, callback=self._toggle_docked, toggled_check=lambda _window: IsProbeScanPanelEmbedded(), 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'), importance_check=self._get_importance) 125 126 @staticmethod 127 def _toggle_docked(window): 128 if IsProbeScanPanelEmbedded(): 129 window.UndockFromMap() 130 else: 131 window.DockInMap() 132 133 @staticmethod 134 def _get_importance(window): 135 if window.compact: 136 return WindowActionImportance.extra 137 else: 138 return WindowActionImportance.core