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

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 ])