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

debugwindow.py (3726B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\agentinteraction\debugwindow.py
      2 from npcs.divisions import get_division_name
      3 from carbonui.control.combo import Combo
      4 import uthread2
      5 from carbonui.button.group import ButtonGroup
      6 from carbonui.util.sortUtil import SortListOfTuples
      7 from eve.client.script.ui.shared.userentry import AgentEntry
      8 from eve.client.script.ui.control.entries.util import GetFromClass
      9 from eve.client.script.ui.control.eveScroll import Scroll
     10 from carbonui.control.window import Window
     11 import eve.common.lib.appConst as appConst
     12 import carbonui.const as uiconst
     13 import blue
     14 
     15 class CareerAgentDebugWnd(Window):
     16     default_caption = 'Career Agents Debug'
     17     default_width = 350
     18     default_height = 350
     19     default_minSize = (340, 220)
     20     default_windowID = 'careerAgentDebugWnd'
     21 
     22     def ApplyAttributes(self, attributes):
     23         super(CareerAgentDebugWnd, self).ApplyAttributes(attributes)
     24         btnGroup = ButtonGroup(parent=self.content, align=uiconst.TOBOTTOM)
     25         self.AddCombo()
     26         self.agentScroll = Scroll(parent=self.content, padBottom=20)
     27         btnGroup.AddButton(label='Open All Agents in view', func=self.OpenAll)
     28         btnGroup.AddButton(label='Close All Agent wnds', func=self.CloseAllAgentWnds)
     29         self.LoadAgents()
     30 
     31     def AddCombo(self):
     32         options = []
     33         for careerID in appConst.agentDivisionsCareer:
     34             options.append((get_division_name(careerID), careerID))
     35 
     36         options.sort(key=lambda x: x[0])
     37         factionOptions = []
     38         for factionID in appConst.factionsEmpires:
     39             factionOptions.append((cfg.eveowners.Get(factionID).name, factionID))
     40 
     41         factionOptions.sort(key=lambda x: x[0])
     42         options.extend(factionOptions)
     43         options.insert(0, ('All', None))
     44         comboPrefsKey = ('char', 'ui', 'careerAgentDebugFilter')
     45         self.filterCombo = Combo(parent=self.content, align=uiconst.TOTOP, options=options, padBottom=20, callback=self.OnComboChanged, prefskey=comboPrefsKey, select=settings.char.ui.Get(comboPrefsKey[2], None), maxVisibleEntries=10)
     46 
     47     def LoadAgents(self):
     48         allCareerAgents = self.GetAllCareerAgents()
     49         toPrime = set()
     50         for agent in allCareerAgents:
     51             toPrime.add(agent.agentID)
     52 
     53         cfg.eveowners.Prime(toPrime)
     54         filterValue = self.filterCombo.GetValue()
     55         scrollList = []
     56         for agent in allCareerAgents:
     57             if filterValue and filterValue not in (agent.divisionID, agent.factionID):
     58                 continue
     59             agentName = cfg.eveowners.Get(agent.agentID).name
     60             entry = GetFromClass(AgentEntry, {'charID': agent.agentID})
     61             scrollList.append((agentName, entry))
     62 
     63         scrollList = SortListOfTuples(scrollList)
     64         self.agentScroll.LoadContent(contentList=scrollList)
     65 
     66     def GetAllCareerAgents(self):
     67         allCareerAgents = sm.GetService('agents').GetAgentsByType(appConst.agentTypeCareerAgent)
     68         return allCareerAgents
     69 
     70     def OpenAll(self, *args):
     71         uthread2.StartTasklet(self._OpenAll_thread)
     72 
     73     def _OpenAll_thread(self):
     74         allCareerAgents = self.GetAllCareerAgents()
     75         for node in self.agentScroll.GetNodes():
     76             sm.GetService('agents').OpenDialogueWindow(node.charID)
     77             blue.pyos.BeNice()
     78 
     79     def CloseAllAgentWnds(self, *args):
     80         agentSvc = sm.GetService('agents')
     81         for agentID in agentSvc.agentDialogWindows.keys():
     82             window = agentSvc.agentDialogWindows.pop(agentID, None)
     83             if window or not window.destroyed:
     84                 window.Close()
     85 
     86     def OnComboChanged(self, *args):
     87         self.filterCombo.UpdateSettings()
     88         self.LoadAgents()