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

groupCont.py (6289B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\accessGroups\groupCont.py
      2 from carbonui.primitives.container import Container
      3 from eve.client.script.ui.control.eveLabel import EveCaptionSmall, EveLabelLarge, EveCaptionMedium
      4 import carbonui.const as uiconst
      5 from carbonui.control.tabGroup import TabGroup
      6 from eve.client.script.ui.structure import ChangeSignalConnect
      7 from eve.client.script.ui.structure.accessGroups.accessGroupMemberCont import AccessGroupMemberCont
      8 from eve.client.script.ui.structure.accessGroups.addCont import AddMemberCont, AddPublic
      9 from eve.client.script.ui.structure.accessGroups.auditLogCont import AuditLogCont
     10 from eve.client.script.ui.structure.accessGroups.dropBar import DropCont
     11 import ownergroups.ownergroupConst as ownergroupConst
     12 from localization import GetByLabel
     13 
     14 class GroupCont(Container):
     15 
     16     def ApplyAttributes(self, attributes):
     17         self.currentGroupID = None
     18         self.tabs = None
     19         Container.ApplyAttributes(self, attributes)
     20         self.controller = attributes.controller
     21         self.ChangeSignalConnection(connect=True)
     22         self.ConstructUI()
     23 
     24     def ChangeSignalConnection(self, connect = True):
     25         signalAndCallback = [(self.controller.on_group_updated, self.UpdateGroup), (self.controller.on_group_selected, self.GroupSelected)]
     26         ChangeSignalConnect(signalAndCallback, connect)
     27 
     28     def ConstructUI(self):
     29         self.hintLabel = EveCaptionMedium(parent=self, align=uiconst.TOTOP, top=50, text='<center>%s' % GetByLabel('UI/Structures/AccessGroups/CreateGroup'))
     30         self.innerCont = Container(parent=self, name='innerCont')
     31         self.nameAndDescCont = NameAndDescCont(name='nameAndDescCont', parent=self.innerCont, align=uiconst.TOTOP)
     32         self.dropCont = DropCont(parent=self.innerCont, align=uiconst.TOTOP, controller=self.controller)
     33         btnText = GetByLabel('UI/Structures/AccessGroups/AddPublic')
     34         self.addParent = Container(parent=self.innerCont, align=uiconst.TOBOTTOM, height=32)
     35         self.addMemberCont = AddPublic(parent=self.addParent, padBottom=2, func=self.AddPublicGroup)
     36         self.addMemberCont = AddMemberCont(parent=self.addParent, func=self.AddMembers, padBottom=2, padRight=4)
     37         self.groupCont = Container(name='browserCont', parent=self.innerCont, padding=(0, 2, 0, 4))
     38         self.groupMemberCont = AccessGroupMemberCont(name='groupMemberCont', parent=self.groupCont, controller=self.controller)
     39         self.auditLogCont = AuditLogCont(name='auditLogCont', parent=self.groupCont, controller=self.controller)
     40         tabs = ((GetByLabel('UI/Structures/AccessGroups/GroupMembers'),
     41           self.groupMemberCont,
     42           None,
     43           'groupMemberCont',
     44           None), (GetByLabel('UI/Structures/AccessGroups/GroupLogs'),
     45           self.auditLogCont,
     46           None,
     47           'auditLogCont',
     48           None))
     49         self.tabs = TabGroup(parent=self.groupCont, tabs=tabs, height=26, labelPadding=12, idx=0, padLeft=0, groupID='groupMemberConts', callback=self.OnTabSelected, autoselecttab=True)
     50 
     51     def UpdateGroup(self, groupID):
     52         if groupID == self.currentGroupID:
     53             self.LoadGroup(groupID)
     54 
     55     def LoadGroup(self, groupID):
     56         myGroupInfo = self.controller.GetMyGroupInfo(groupID)
     57         if myGroupInfo is None:
     58             return
     59         self.currentGroupID = groupID
     60         self.dropCont.dropGridCont.SetCurrentGroupID(groupID, myGroupInfo.membershipType)
     61         isDefaultCorpGroup = myGroupInfo.creatorID == session.corpid
     62         groupDisplayName = cfg.eveowners.Get(session.corpid).name if isDefaultCorpGroup else myGroupInfo.name
     63         self.nameAndDescCont.SetNameAndDescription(groupDisplayName, myGroupInfo.description)
     64 
     65     def Close(self, *args):
     66         self.ChangeSignalConnection(connect=False)
     67         Container.Close(self)
     68 
     69     def GroupSelected(self, groupID):
     70         if groupID is None:
     71             self.innerCont.display = False
     72             self.hintLabel.display = True
     73             return
     74         self.innerCont.display = True
     75         self.hintLabel.display = False
     76         if self.controller.IsGroupCorpOwned(groupID):
     77             self.dropCont.display = False
     78             self.addParent.display = False
     79         else:
     80             self.dropCont.display = True
     81             self.addParent.display = True
     82         self.LoadGroup(groupID)
     83         if self.tabs is None or self.tabs.destroyed:
     84             return
     85         selectedTabName = self.tabs.GetSelectedArgs()
     86         if selectedTabName == 'groupMemberCont':
     87             self.groupMemberCont.LoadGroup(groupID)
     88         elif selectedTabName == 'auditLogCont':
     89             self.auditLogCont.LoadGroup(groupID)
     90 
     91     def OnTabSelected(self, tabIdx, oldTabID):
     92         selectedGroupID = self.controller.GetSelectedGroupID()
     93         self.GroupSelected(selectedGroupID)
     94 
     95     def AddPublicGroup(self, *args):
     96         self.controller.AddPublicMember(self.currentGroupID)
     97 
     98     def AddMembers(self, characters):
     99         members = {characterID:ownergroupConst.MEMBERSHIP_TYPE_MEMBER for characterID in characters}
    100         self.controller.AddMembers(self.currentGroupID, members)
    101 
    102 
    103 class NameAndDescCont(Container):
    104     MAX_DESC_HEIGHT = 100
    105 
    106     def ApplyAttributes(self, attributes):
    107         Container.ApplyAttributes(self, attributes)
    108         self.groupNameLabel = EveCaptionSmall(name='groupName', parent=self, padLeft=10, align=uiconst.TOTOP)
    109         self.groupDescLabel = EveLabelLarge(name='groupDescLabel', parent=self, padLeft=10, align=uiconst.TOTOP)
    110 
    111     def SetNameAndDescription(self, name, description):
    112         self.groupNameLabel.text = name
    113         self.groupDescLabel.text = description
    114         if description:
    115             self.groupDescLabel.display = True
    116         else:
    117             self.groupDescLabel.display = False
    118 
    119     def UpdateAlignment(self, *args, **kwds):
    120         retVal = Container.UpdateAlignment(self, *args, **kwds)
    121         if getattr(self, 'groupNameLabel', None) and getattr(self, 'groupDescLabel', None):
    122             self.groupDescLabel.SetBottomAlphaFade(self.MAX_DESC_HEIGHT, 10)
    123             newHeight = self.groupNameLabel.height + min(self.MAX_DESC_HEIGHT, self.groupDescLabel.textheight) + 4
    124             self.height = newHeight
    125         return retVal