accessMemberEntry.py (6376B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\accessGroups\accessMemberEntry.py 2 import carbonui 3 from carbon.client.script.environment.AudioUtil import PlaySound 4 from carbonui.control.contextMenu import contextMenu 5 from carbonui.primitives.container import Container 6 from carbonui.primitives.sprite import Sprite 7 from carbonui.control.buttonIcon import ButtonIcon 8 from eve.client.script.ui.control.eveLabel import EveLabelMedium 9 from eve.client.script.ui.shared.stateFlag import FlagIconWithState, GetRelationShipFlag 10 from eve.client.script.ui.util.uix import GetOwnerLogo 11 from localization import GetByLabel 12 from ownergroups.ownergroupConst import MEMBERSHIP_TYPE_MEMBER, PUBLIC_MEMBER_ID 13 from ownergroups.ownergroupsUIUtil import GetMembershipTypeTextureAndLabelPaths 14 from sovDashboard.sovStatusEntries import MouseInsideScrollEntry 15 import carbonui.const as uiconst 16 from utillib import KeyVal 17 from carbonui.uicore import uicore 18 19 class AccessMemberEntry(MouseInsideScrollEntry): 20 __guid__ = 'AccessMemberEntry' 21 default_name = 'DashboardEntry' 22 portraitSize = 32 23 ENTRYHEIGHT = 37 24 isDragObject = True 25 __notifyevents__ = ['OnContactChange'] 26 27 def ApplyAttributes(self, attributes): 28 MouseInsideScrollEntry.ApplyAttributes(self, attributes) 29 node = attributes.node 30 self.controller = node.controller 31 self.memberID = node.memberID 32 self.groupID = node.groupID 33 self.entryType = node.entryType 34 self.ownerPicture = Container(name='ownerPicture', parent=self, align=uiconst.TOPLEFT, pos=(2, 35 2, 36 self.portraitSize, 37 self.portraitSize)) 38 membershipLeft = self.ownerPicture.left + self.ownerPicture.width + 4 39 self.membershipTypeSprite = Sprite(name='membershipTypeSprite', parent=self, align=uiconst.CENTERLEFT, pos=(membershipLeft, 40 -1, 41 27, 42 27), opacity=0.75) 43 ownerLabelLeft = self.membershipTypeSprite.left + self.membershipTypeSprite.width + 8 44 self.ownerNameLabel = EveLabelMedium(name='ownerNameLabel', parent=self, left=ownerLabelLeft, align=uiconst.CENTERLEFT) 45 texturePath = 'res:/UI/Texture/Icons/73_16_50.png' 46 self.optionIcon = ButtonIcon(name='MyButtonIcon', parent=self, align=uiconst.TOPRIGHT, pos=(2, 2, 16, 16), iconSize=16, texturePath=texturePath, func=self.OnClickOption) 47 self.optionIcon.opacity = 0.0 48 self.stateFlag = FlagIconWithState(parent=self, align=uiconst.BOTTOMRIGHT, left=4, top=4) 49 sm.RegisterNotify(self) 50 51 def Load(self, node): 52 if node.selected: 53 self.Select() 54 else: 55 self.Deselect() 56 membershipType = node.membershipType 57 self.ownerNameLabel.text = node.ownerName 58 self.LoadOwnerPicture() 59 if membershipType == MEMBERSHIP_TYPE_MEMBER: 60 self.membershipTypeSprite.display = False 61 else: 62 accessTexturePath, hintPath, textureSize = GetMembershipTypeTextureAndLabelPaths(membershipType) 63 self.membershipTypeSprite.texturePath = accessTexturePath 64 self.membershipTypeSprite.SetSize(*textureSize) 65 self.membershipTypeSprite.hint = GetByLabel(hintPath) 66 self.membershipTypeSprite.display = True 67 68 def LoadOwnerPicture(self): 69 self.ownerPicture.Flush() 70 if self.entryType == PUBLIC_MEMBER_ID: 71 texturePath = 'res:/UI/Texture/classes/AccessGroups/browser.png' 72 Sprite(parent=self.ownerPicture, align=uiconst.CENTER, pos=(0, 0, 32, 32), texturePath=texturePath) 73 else: 74 GetOwnerLogo(self.ownerPicture, self.memberID, size=32, noServerCall=True) 75 self.LoadOwnerFlag() 76 77 def GetMenu(self, *args): 78 selectedNodes = self.sr.node.scroll.GetSelectedNodes(self.sr.node) 79 return self.controller.GetMenuForMember(self.groupID, selectedNodes) 80 81 def OnClick(self, *args): 82 PlaySound(uiconst.SOUND_ENTRY_SELECT) 83 self.sr.node.scroll.SelectNode(self.sr.node) 84 85 def GetDragData(self, *args): 86 selectedNodes = self.sr.node.scroll.GetSelectedNodes(self.sr.node) 87 ret = [] 88 for eachNode in selectedNodes: 89 memberID = eachNode.memberID 90 if memberID == PUBLIC_MEMBER_ID: 91 continue 92 ownerInfo = eachNode.ownerInfo 93 k = KeyVal(__guid__='listentry.User', itemID=memberID, charID=memberID, info=ownerInfo, membershipType=eachNode.membershipType) 94 ret.append(k) 95 96 return ret 97 98 def OnClickOption(self, *args): 99 contextMenu.ShowMenu(self) 100 101 def OnMouseEnter(self, *args): 102 MouseInsideScrollEntry.OnMouseEnter(self, *args) 103 self.FadeOptionIcon(self.optionIcon.opacity, 1.0) 104 105 def OnMouseNoLongerInEntry(self): 106 MouseInsideScrollEntry.OnMouseNoLongerInEntry(self) 107 self.FadeOptionIcon(self.optionIcon.opacity, 0.0) 108 109 def FadeOptionIcon(self, fromValue, toValue): 110 uicore.animations.FadeTo(self.optionIcon, startVal=fromValue, endVal=toValue, duration=0.1, loops=1) 111 112 def OnContactChange(self, contactIDs, contactType = None): 113 if self.memberID in contactIDs: 114 self.LoadOwnerFlag() 115 116 def LoadOwnerFlag(self): 117 ownerInfo = self.sr.node.ownerInfo 118 if ownerInfo is None: 119 return 120 flagInfo = self.GetOwnerFlagInfo(ownerInfo) 121 self.stateFlag.ModifyIcon(flagInfo) 122 123 def GetOwnerFlagInfo(self, ownerInfo): 124 allianceID = None 125 corpID = None 126 charID = None 127 if ownerInfo.typeID == const.typeAlliance: 128 allianceID = ownerInfo.ownerID 129 elif ownerInfo.typeID == const.typeCorporation: 130 corpID = ownerInfo.ownerID 131 else: 132 charID = ownerInfo.ownerID 133 flag, _ = GetRelationShipFlag(charID, corpID, allianceID) 134 flagInfo = sm.GetService('stateSvc').GetStatePropsColorAndBlink(flag) 135 return flagInfo 136 137 def OnDropData(self, dragObj, nodes): 138 data = self.sr.node 139 if data.OnDropData: 140 data.OnDropData(dragObj, nodes) 141 142 @classmethod 143 def GetCopyData(cls, node): 144 _, hintPath, _ = GetMembershipTypeTextureAndLabelPaths(node.membershipType) 145 textList = [node.ownerName, GetByLabel(hintPath)] 146 return '\t'.join([ unicode(x) for x in textList ])