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

accessGroupListCont.py (3580B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\accessGroups\accessGroupListCont.py
      2 from collections import defaultdict
      3 from carbonui.primitives.container import Container
      4 from carbonui.util.bunch import Bunch
      5 from eve.client.script.ui.control.entries.space import Space
      6 from eve.client.script.ui.control.entries.util import GetFromClass
      7 from eve.client.script.ui.control.eveScroll import Scroll
      8 from eve.client.script.ui.structure import ChangeSignalConnect
      9 from eve.client.script.ui.structure.accessGroups.accessGroupEntry import AccessGroupEntry
     10 from carbonui.util.various_unsorted import SortListOfTuples
     11 from eve.client.script.ui.structure.accessGroups.addCont import AddGroupCont
     12 from ownergroups.ownergroupsUIUtil import ACCESS_SORT_ORDER
     13 DEFAULT_CORP_GROUP = -2
     14 
     15 class GroupListCont(Container):
     16 
     17     def ApplyAttributes(self, attributes):
     18         Container.ApplyAttributes(self, attributes)
     19         self.controller = attributes.controller
     20         self.ChangeSignalConnection(connect=True)
     21         self.addCont = AddGroupCont(parent=self, controller=self.controller)
     22         self.scroll = Scroll(name='groupListScroll', parent=self, padBottom=4)
     23         self.LoadGroups()
     24 
     25     def ChangeSignalConnection(self, connect = True):
     26         signalAndCallback = [(self.controller.on_new_group_created, self.LoadGroups),
     27          (self.controller.on_group_deleted, self.LoadGroups),
     28          (self.controller.on_group_updated, self.LoadGroups),
     29          (self.controller.on_groups_reload, self.LoadGroups)]
     30         ChangeSignalConnect(signalAndCallback, connect)
     31 
     32     def LoadGroups(self, *args):
     33         myGroups = self.controller.GetMyGroups()
     34         searchResults = self.controller.GetCurrentSearchResults()
     35         groupIDs = set()
     36         nodesByMembership = defaultdict(list)
     37         for groupID, g in myGroups.iteritems():
     38             groupIDs.add(groupID)
     39             groupName = g.name
     40             nodeData = Bunch(decoClass=AccessGroupEntry, controller=self.controller, groupInfo=g, isNormal=self.IsNormalGroup(groupID, searchResults))
     41             node = (groupName.lower(), nodeData)
     42             isDefaultCorpGroup = g.creatorID == session.corpid
     43             if isDefaultCorpGroup:
     44                 myMembership = DEFAULT_CORP_GROUP
     45                 nodeData.groupDisplayName = cfg.eveowners.Get(session.corpid).name
     46             else:
     47                 myMembership = g.membershipType
     48             nodesByMembership[myMembership].append(node)
     49 
     50         scrollList = []
     51         for eachMemberShipType in [DEFAULT_CORP_GROUP] + ACCESS_SORT_ORDER:
     52             nodes = nodesByMembership.get(eachMemberShipType)
     53             if nodes:
     54                 sortedNodes = SortListOfTuples(nodes)
     55                 scrollList += sortedNodes
     56                 scrollList.append(GetFromClass(Space, {'height': 12}))
     57 
     58         self.scroll.Load(contentList=scrollList)
     59         groupID = None
     60         lastLoadedGroupID = settings.user.ui.Get('accessGroup_lastGroup', None)
     61         if lastLoadedGroupID in groupIDs:
     62             groupID = lastLoadedGroupID
     63         elif len(scrollList) > 1:
     64             firstNode = scrollList[0]
     65             groupID = firstNode.groupInfo.groupID
     66         self.controller.SelectGroup(groupID)
     67 
     68     def IsNormalGroup(self, groupID, searchResults):
     69         if searchResults is None:
     70             return True
     71         _, groupsWithMatchedMembers = searchResults
     72         return groupID in groupsWithMatchedMembers
     73 
     74     def Close(self):
     75         self.ChangeSignalConnection(connect=False)
     76         Container.Close(self)