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

btnDataNodeRoot.py (3342B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\neocom\neocom\btnData\btnDataNodeRoot.py
      2 import localization
      3 import uthread
      4 from carbonui import uiconst
      5 from eve.client.script.ui.shared.neocom.neocom import neocomConst
      6 from eve.client.script.ui.shared.neocom.neocom.btnData.btnDataNode import BtnDataNode
      7 from eve.client.script.ui.shared.neocom.neocom.btnData.btnDataNodeGroup import BtnDataNodeGroup
      8 from eve.client.script.ui.shared.neocom.neocom.neocomConst import NOTPERSISTED_BTNTYPES
      9 from eve.client.script.ui.shared.neocom.neocom.neocomGroupNamePopup import NeocomGroupNamePopup
     10 
     11 class BtnDataNodeRoot(BtnDataNode):
     12     __guid__ = 'neocom.BtnDataNodeRoot'
     13 
     14     def __init__(self, parent = None, children = None, iconPath = None, label = None, btnID = None, btnType = None, isRemovable = True, isDraggable = True, isOpen = False, isBlinking = False, labelAbbrev = None, wndCls = None, cmdName = None, isTopLevel = True, **kw):
     15         self._persistThread = None
     16         self.isTopLevel = isTopLevel
     17         BtnDataNode.__init__(self, parent, children, iconPath, label, btnID, btnType, isRemovable, isDraggable, isOpen, isBlinking, labelAbbrev, wndCls, cmdName, **kw)
     18 
     19     def __repr__(self):
     20         return '<BtnDataNodeRoot: %s children>' % len(self._children)
     21 
     22     def Persist(self):
     23         if not self.IsPersistant():
     24             return
     25         if not self._persistThread:
     26             self._persistThread = uthread.new(self._Persist)
     27 
     28     def _Persist(self):
     29         if self.persistChildren:
     30             savedData = []
     31             for btnData in self._children:
     32                 if btnData.btnType not in NOTPERSISTED_BTNTYPES:
     33                     savedData.append(btnData.GetRawData())
     34 
     35             settingsKey = '%sButtonRawData' % self.id
     36             settings.char.ui.Set(settingsKey, savedData)
     37         self._persistThread = None
     38 
     39     def IsTopLevel(self):
     40         return self.isTopLevel
     41 
     42     def GetRootNode(self):
     43         return self
     44 
     45     def IsDescendantOf(self, btnData):
     46         return False
     47 
     48     def _IsDescendantOf(self, btnData):
     49         return btnData == self
     50 
     51     def AddNewGroup(self):
     52         wnd = NeocomGroupNamePopup.Open()
     53         ret = wnd.ShowModal()
     54         if ret in (uiconst.ID_CLOSE, uiconst.ID_CANCEL):
     55             return
     56         BtnDataNodeGroup(parent=self, children=[], iconPath=neocomConst.ICONPATH_GROUP, label=ret.label or localization.GetByLabel('UI/Neocom/ButtonGroup'), btnID='group_%s' % ret.label, btnType=neocomConst.BTNTYPE_GROUP, labelAbbrev=ret.labelAbbrev)
     57 
     58     def IsValidDropData(self, btnData):
     59         if not isinstance(btnData, BtnDataNode):
     60             try:
     61                 btnData = btnData[0]
     62                 if not isinstance(btnData, BtnDataNode):
     63                     return False
     64             except Exception:
     65                 return False
     66 
     67         if btnData.GetRootNode() != self:
     68             if btnData.btnType == neocomConst.BTNTYPE_GROUP:
     69                 if self.GetBtnDataByTypeAndID(btnData.id, neocomConst.BTNTYPE_GROUP, recursive=True):
     70                     return False
     71             else:
     72                 foundBtnData = self.GetBtnDataByWndCls(btnData.wndCls, recursive=True)
     73                 if foundBtnData and foundBtnData.btnType != neocomConst.BTNTYPE_WINDOW:
     74                     return False
     75         return True