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

dockPanelManager.py (3360B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\mapView\dockPanelManager.py
      2 from eve.client.script.ui.shared.mapView.dockPanelUtil import RegisterPanelSettings
      3 import carbonui.const as uiconst
      4 from carbonui.uicore import uicore
      5 
      6 class DockablePanelManager(object):
      7     __notifyevents__ = ['OnSetDevice', 'OnShowUI', 'OnHideUI']
      8 
      9     def __init__(self):
     10         self.panels = {}
     11         settings.char.CreateGroup('dockPanels')
     12         sm.RegisterNotify(self)
     13 
     14     def GetIfOpen(self, panelID):
     15         panel = self.panels.get(panelID, None)
     16         if panel and not panel.destroyed:
     17             return panel
     18 
     19     def GetAllOpen(self):
     20         return self.panels.values()
     21 
     22     def GetCurrentFullscreenPanel(self):
     23         for panel in self.GetAllOpen():
     24             if panel.IsFullscreen():
     25                 return panel
     26 
     27     def RegisterPanel(self, dockPanel):
     28         if dockPanel.panelID in self.panels:
     29             prevPanel = self.panels[dockPanel.panelID]
     30             if not prevPanel.destroyed:
     31                 prevPanel.Close()
     32         self.panels[dockPanel.panelID] = dockPanel
     33 
     34     def UnregisterPanel(self, dockPanel):
     35         if dockPanel.panelID in self.panels:
     36             del self.panels[dockPanel.panelID]
     37         self.CheckViewState()
     38 
     39     def CheckViewState(self):
     40         self.UpdateCameraCenter()
     41 
     42     def GetFullScreenView(self):
     43         for panel in self.panels.values():
     44             if panel.IsFullscreen() and not panel.IsMinimized():
     45                 return panel
     46 
     47     def UpdateCameraCenter(self):
     48         if self.IsAnyPanelDockedToSide() and sm.GetService('ui').IsUiVisible():
     49             pLeft, pRight = uicore.layer.sidePanels.GetSideOffset()
     50             viewCenter = pLeft + (uicore.desktop.width - pLeft - pRight) / 2
     51             viewCenterProportion = viewCenter / float(uicore.desktop.width)
     52             sm.GetService('sceneManager').SetCameraOffsetOverride(-100 + int(200 * viewCenterProportion))
     53         else:
     54             sm.GetService('sceneManager').SetCameraOffsetOverride(None)
     55 
     56     def IsAnyPanelDockedToSide(self):
     57         for panel in self.panels.values():
     58             if panel.IsDockedLeft() or panel.IsDockedRight():
     59                 return True
     60 
     61         return False
     62 
     63     def OnSetDevice(self, *args, **kwds):
     64         for panel in self.panels.values():
     65             if not panel.IsFullscreen() and not panel.IsMinimized():
     66                 panel.InitDockPanelPosition()
     67 
     68     def OnHideUI(self, *args):
     69         self.UpdateCameraCenter()
     70 
     71     def OnShowUI(self, *args):
     72         self.UpdateCameraCenter()
     73 
     74     def UpdatePanelsPushedBySettings(self):
     75         for panel in self.panels.values():
     76             if panel.align not in (uiconst.TOLEFT, uiconst.TORIGHT):
     77                 continue
     78             pushedBy = []
     79             for each in uicore.layer.sidePanels.children:
     80                 if each is panel:
     81                     break
     82                 if each.align == panel.align:
     83                     pushedBy.append(each.name)
     84 
     85             currentSettings = panel.GetPanelSettings()
     86             currentSettings['pushedBy'] = pushedBy
     87             RegisterPanelSettings(panel.panelID, currentSettings)
     88 
     89     def ResetAllPanelSettings(self):
     90         settings.char.Remove('dockPanels')
     91         for panel in self.GetAllOpen():
     92             panel.Close()
     93             panel.Open()