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()