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