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