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

layer.py (4242B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\control\layer.py
      2 import carbonui.const as uiconst
      3 from carbonui.primitives.container import Container
      4 from carbonui.uicore import uicore
      5 
      6 class LayerManager(object):
      7     __guid__ = 'uicls.LayerManager'
      8 
      9     def __getattr__(self, k):
     10         return self.GetLayer(k)
     11 
     12     def GetLayer(self, name):
     13         for layer in uicore.desktop.children:
     14             if hasattr(layer, 'GetLayer'):
     15                 found = layer.GetLayer(name.lower())
     16                 if found:
     17                     return found
     18 
     19     Get = GetLayer
     20 
     21 
     22 class LayerCore(Container):
     23     __guid__ = 'uicls.LayerCore'
     24     isTopLevelWindow = False
     25 
     26     def ApplyAttributes(self, attributes):
     27         Container.ApplyAttributes(self, attributes)
     28         self.isopen = 0
     29         self.isopening = 0
     30         self.decoClass = None
     31         self.form = self
     32         self.uiwindow = self
     33 
     34     @property
     35     def analyticID(self):
     36         return self.name
     37 
     38     def ReloadUIObject(self):
     39         newInstance = self.CloseView()
     40         if newInstance:
     41             newInstance.OpenView()
     42             return newInstance
     43         else:
     44             self.display = True
     45             return self
     46 
     47     def GetLayer(self, name):
     48         if name.lower() == self.name[2:].lower():
     49             return self
     50         if name.lower() == self.name.lower():
     51             return self
     52         for layer in self.children:
     53             if hasattr(layer, 'GetLayer'):
     54                 found = layer.GetLayer(name)
     55                 if found:
     56                     return found
     57 
     58     def OpenView(self, **kwargs):
     59         self.display = True
     60         if self.isopen or self.decoClass is None:
     61             return
     62         if self.isopening:
     63             return
     64         self.isopening = True
     65         if getattr(self, '__notifyevents__', None):
     66             sm.RegisterNotify(self)
     67         try:
     68             self.OnOpenView(**kwargs)
     69             self.isopen = True
     70         finally:
     71             self.isopening = False
     72 
     73     def OnOpenView(self, **kwargs):
     74         pass
     75 
     76     def OnCloseView(self, *args):
     77         pass
     78 
     79     def CloseView(self, recreate = True, *args):
     80         if not self.isopen:
     81             return
     82         for l in self.children[:]:
     83             if hasattr(l, 'CloseView'):
     84                 l.CloseView(recreate=True)
     85             elif recreate:
     86                 l.Close()
     87 
     88         wasopen = self.isopen
     89         self.isopen = 0
     90         if wasopen:
     91             self.OnCloseView()
     92         if getattr(self, '__notifyevents__', None):
     93             sm.UnregisterNotify(self)
     94         if uicore.uilib.GetMouseCapture() is self:
     95             uicore.uilib.ReleaseCapture()
     96         if recreate:
     97             parent = None
     98             name = None
     99             if self.parent:
    100                 parent = self.parent
    101                 name = self.name
    102                 idx = parent.children.index(self)
    103             self.Close()
    104             if parent is not None:
    105                 decoClass, subLayers = uicore.layerData.get(name, (None, None))
    106                 newInstance = parent.AddLayer(name, decoClass, subLayers, idx=idx)
    107                 return newInstance
    108         else:
    109             self.display = False
    110 
    111     def AddLayer(self, name, decoClass = None, subLayers = None, idx = -1):
    112         if decoClass:
    113             layer = decoClass(parent=self, name=name, idx=idx, align=uiconst.TOALL, state=uiconst.UI_PICKCHILDREN)
    114         else:
    115             layer = LayerCore(parent=self, name=name, idx=idx, align=uiconst.TOALL, state=uiconst.UI_PICKCHILDREN)
    116         layer.decoClass = decoClass or LayerCore
    117         uicore.layerData[name] = (decoClass or LayerCore, subLayers)
    118         if name.startswith('l_'):
    119             name = name[2:]
    120         setattr(uicore.layer, name.lower(), layer)
    121         if subLayers is not None:
    122             for _layerName, _decoClass, _subLayers in subLayers:
    123                 subLayer = layer.AddLayer(_layerName, _decoClass, _subLayers)
    124                 if _layerName.startswith('l_'):
    125                     _layerName = _layerName[2:]
    126                 setattr(layer, _layerName, subLayer)
    127 
    128         return layer
    129 
    130     def IsClosed(self):
    131         return not self.isopen and not self.isopening
    132 
    133     def ZoomBy(self, amount):
    134         pass