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

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)