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

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