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

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