accessGroupEntry.py (4141B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\accessGroups\accessGroupEntry.py 2 import carbonui 3 from carbon.client.script.environment.AudioUtil import PlaySound 4 from carbonui.control.contextMenu import contextMenu 5 from carbonui.control.buttonIcon import ButtonIcon 6 from eve.client.script.ui.control.eveLabel import EveLabelLarge 7 from eve.client.script.ui.control.themeColored import FillThemeColored 8 from eve.client.script.ui.structure import ChangeSignalConnect 9 from eve.client.script.ui.structure.accessGroups.ownerGroupUtils import GetOwnerIDsAndMembershipTypeFromNodes 10 from ownergroups.ownergroupConst import MEMBERSHIP_TYPE_ADMIN 11 from sovDashboard.sovStatusEntries import MouseInsideScrollEntry 12 import carbonui.const as uiconst 13 from utillib import KeyVal 14 from carbonui.uicore import uicore 15 ADMIN_OPACITY = 1.0 16 OTHER_MEMBERSHIPTYPE_OPACITY = 0.4 17 18 class AccessGroupEntry(MouseInsideScrollEntry): 19 default_name = 'AccessGroupEntry' 20 ENTRYHEIGHT = 36 21 isDragObject = True 22 23 def ApplyAttributes(self, attributes): 24 MouseInsideScrollEntry.ApplyAttributes(self, attributes) 25 node = attributes.node 26 self.controller = node.controller 27 isNormal = node.isNormal 28 self.groupID = node.groupInfo.groupID 29 self.ChangeSignalConnection(connect=True) 30 self.ConstructHiliteFill() 31 membershipType = node.groupInfo.membershipType 32 if membershipType == MEMBERSHIP_TYPE_ADMIN: 33 fillOpacity = ADMIN_OPACITY 34 else: 35 fillOpacity = OTHER_MEMBERSHIPTYPE_OPACITY 36 self.bgFill = FillThemeColored(name='bgFill', bgParent=self, padding=(1, 1, 1, 1), colorType=uiconst.COLORTYPE_UIBASECONTRAST, opacity=fillOpacity) 37 self.groupNameLabel = EveLabelLarge(name='groupName', parent=self, left=10, align=uiconst.CENTERLEFT) 38 texturePath = 'res:/UI/Texture/Icons/73_16_50.png' 39 self.optionIcon = ButtonIcon(name='MyButtonIcon', parent=self, align=uiconst.TOPRIGHT, pos=(2, 2, 16, 16), iconSize=16, texturePath=texturePath, func=self.OnClickOption) 40 self.optionIcon.opacity = 0.0 41 if not isNormal: 42 self.opacity = 0.1 43 44 def ChangeSignalConnection(self, connect = True): 45 signalAndCallback = [(self.controller.on_group_selected, self.OnGroupSelected)] 46 ChangeSignalConnect(signalAndCallback, connect) 47 48 def Load(self, node): 49 groupInfo = node.groupInfo 50 self.groupNameLabel.text = node.get('groupDisplayName', None) or groupInfo.name 51 self.hint = groupInfo.description 52 53 def OnClick(self, *args): 54 PlaySound(uiconst.SOUND_ENTRY_SELECT) 55 self.Select() 56 self.controller.SelectGroup(self.groupID) 57 58 def GetMenu(self, *args): 59 return self.controller.GetMenuForGroupID(self.sr.node) 60 61 def GetDragData(self): 62 ret = KeyVal(nodeType='AccessGroupEntry', groupID=self.groupID, label=self.sr.node.groupInfo.name) 63 return [ret] 64 65 def OnGroupSelected(self, groupID): 66 if groupID == self.groupID: 67 self.Select() 68 else: 69 self.Deselect() 70 71 def OnDropData(self, dragSource, dragData): 72 if not dragData: 73 return 74 groupID = self.groupID 75 membershipTypesByMemberID = GetOwnerIDsAndMembershipTypeFromNodes(dragData, useNodeMembershipType=True) 76 if membershipTypesByMemberID: 77 self.controller.AddMembers(groupID, membershipTypesByMemberID) 78 79 def OnClickOption(self, *args): 80 contextMenu.ShowMenu(self) 81 82 def OnMouseEnter(self, *args): 83 MouseInsideScrollEntry.OnMouseEnter(self, *args) 84 self.FadeOptionIcon(self.optionIcon.opacity, 1.0) 85 86 def OnMouseNoLongerInEntry(self): 87 MouseInsideScrollEntry.OnMouseNoLongerInEntry(self) 88 self.FadeOptionIcon(self.optionIcon.opacity, 0.0) 89 90 def FadeOptionIcon(self, fromValue, toValue): 91 uicore.animations.FadeTo(self.optionIcon, startVal=fromValue, endVal=toValue, duration=0.1, loops=1) 92 93 def Close(self): 94 self.ChangeSignalConnection(connect=False) 95 MouseInsideScrollEntry.Close(self)