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

combatLogPanel.py (7272B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\neocom\charsheet\combatLogPanel.py
      2 from carbonui.control.combo import Combo
      3 from carbonui.primitives.container import Container
      4 from carbonui.control.button import Button
      5 from carbonui.control.checkbox import Checkbox
      6 from eve.client.script.ui.control.eveScroll import Scroll
      7 from eve.client.script.ui.quickFilter import QuickFilterEdit
      8 from eve.client.script.ui.shared.neocom.charsheet.charSheetUtil import GetCombatEntries
      9 from eve.common.lib import appConst as const
     10 import carbonui.const as uiconst
     11 from localization import GetByLabel
     12 import eve.client.script.ui.shared.pointerTool.pointerToolConst as pConst
     13 
     14 class CombatLogPanel(Container):
     15     default_name = 'KillsPanel'
     16     __notifyevents__ = []
     17 
     18     def ApplyAttributes(self, attributes):
     19         Container.ApplyAttributes(self, attributes)
     20         sm.RegisterNotify(self)
     21         self.killentries = 25
     22         self.topCont = Container(name='combatlogpanel', parent=self, align=uiconst.TOTOP, padTop=const.defaultPadding)
     23         combatValues = ((GetByLabel('UI/Corporations/Wars/Killmails/ShowKills'), 0), (GetByLabel('UI/Corporations/Wars/Killmails/ShowLosses'), 1))
     24         selectedCombatType = settings.user.ui.Get('CombatLogCombo', 0)
     25         self.combatCombo = Combo(parent=self.topCont, name='combo', select=selectedCombatType, align=uiconst.TOPLEFT, left=1, callback=self.OnCombatChange, options=combatValues, idx=0, adjustWidth=True, uniqueUiName=pConst.UNIQUE_NAME_SHOW_KILLS_LOSSES)
     26         self.sr.combatSetting = Checkbox(parent=self.topCont, align=uiconst.TOPLEFT, pos=(0,
     27          self.combatCombo.height + const.defaultPadding,
     28          300,
     29          14), settingsKey='charsheet_condensedcombatlog', text=GetByLabel('UI/CharacterSheet/CharacterSheetWindow/KillsTabs/CondensedCombatLog'), checked=settings.user.ui.Get('charsheet_condensedcombatlog', 0), callback=self.CheckBoxChange)
     30         self.killReportQuickFilter = QuickFilterEdit(parent=self.topCont, left=const.defaultPadding, align=uiconst.TOPRIGHT, width=150)
     31         self.killReportQuickFilter.ReloadFunction = self.ReloadKillReports
     32         self.topCont.height = self.combatCombo.height + self.sr.combatSetting.height + const.defaultPadding
     33         self.btnContainer = Container(name='pageBtnContainer', parent=self, align=uiconst.TOBOTTOM, idx=0, padBottom=4)
     34         Button(parent=self.btnContainer, align=uiconst.CENTERRIGHT, left=4, texturePath='res:/UI/Texture/Icons/23_64_2.png', iconSize=24, hint=GetByLabel('UI/CharacterSheet/CharacterSheetWindow/KillsTabs/ViewMore'))
     35         Button(parent=self.btnContainer, align=uiconst.CENTERLEFT, left=4, texturePath='res:/UI/Texture/Icons/23_64_1.png', iconSize=24, hint=GetByLabel('UI/CharacterSheet/CharacterSheetWindow/KillsTabs/ViewPrevious'))
     36         self.btnContainer.height = max([ c.height for c in self.btnContainer.children ])
     37         self.scroll = Scroll(parent=self, padding=(0, 4, 0, 4))
     38 
     39     def CheckBoxChange(self, checkbox, *args):
     40         if checkbox.name == 'charsheet_condensedcombatlog':
     41             settings.user.ui.Set('charsheet_condensedcombatlog', checkbox.checked)
     42             self.ShowKills()
     43 
     44     def OnCombatChange(self, *args):
     45         selected = self.combatCombo.GetValue()
     46         settings.user.ui.Set('CombatLogCombo', selected)
     47         self.combatPageNum = 0
     48         if selected == 0:
     49             self.ShowCombatKills()
     50         else:
     51             self.ShowCombatLosses()
     52 
     53     def LoadPanel(self, *args):
     54         self.ShowKills()
     55 
     56     def ShowKillsEx(self, recent, func, combatType, pageNum):
     57         if combatType == 'kills':
     58             prevType = self.prevKillIDs
     59         else:
     60             prevType = self.prevLossIDs
     61         filterText = self.killReportQuickFilter.GetValue().lower()
     62         scrolllist, headers = GetCombatEntries(recent, filterText=filterText)
     63         for c in self.btnContainer.children:
     64             c.state = uiconst.UI_HIDDEN
     65 
     66         self.btnContainer.state = uiconst.UI_HIDDEN
     67         killIDs = [ k.killID for k in recent ]
     68         prevbtn = self.btnContainer.children[1]
     69         nextbtn = self.btnContainer.children[0]
     70         if pageNum > 0:
     71             self.btnContainer.state = uiconst.UI_NORMAL
     72             prevbtn.state = uiconst.UI_NORMAL
     73             if combatType == 'kills':
     74                 pageIndex = min(pageNum, len(self.prevKillIDs) - 1)
     75                 prevType = self.prevKillIDs[pageIndex - 1]
     76             else:
     77                 pageIndex = min(pageNum, len(self.prevLossIDs) - 1)
     78                 prevType = self.prevLossIDs[pageIndex - 1]
     79             prevbtn.OnClick = (func, prevType, -1)
     80         maxKillIDs = max(killIDs) + 1 if killIDs else 0
     81         if combatType == 'kills' and pageNum + 1 > len(self.prevKillIDs):
     82             self.prevKillIDs.append(maxKillIDs)
     83         elif pageNum + 1 > len(self.prevLossIDs):
     84             self.prevLossIDs.append(maxKillIDs)
     85         if len(recent) >= self.killentries:
     86             self.btnContainer.state = uiconst.UI_NORMAL
     87             nextbtn.state = uiconst.UI_NORMAL
     88             nextbtn.OnClick = (func, min(killIDs), 1)
     89         isCondensed = settings.user.ui.Get('charsheet_condensedcombatlog', 0)
     90         if isCondensed:
     91             self.scroll.sr.id = 'charsheet_kills'
     92         else:
     93             self.scroll.sr.id = 'charsheet_kills2'
     94         noContentHintText = ''
     95         if combatType == 'kills':
     96             noContentHintText = GetByLabel('UI/CharacterSheet/CharacterSheetWindow/KillsTabs/NoKillsFound')
     97         elif combatType == 'losses':
     98             noContentHintText = GetByLabel('UI/CharacterSheet/CharacterSheetWindow/KillsTabs/NoLossesFound')
     99         pos = self.scroll.GetScrollProportion()
    100         self.scroll.Load(contentList=scrolllist, headers=headers, scrollTo=pos, noContentHint=noContentHintText)
    101 
    102     def ShowCombatKills(self, startFrom = None, pageChange = 0, *args):
    103         recent = sm.GetService('info').GetKillsRecentKills(self.killentries, startFrom)
    104         self.combatPageNum = max(0, self.combatPageNum + pageChange)
    105         self.ShowKillsEx(recent, self.ShowCombatKills, 'kills', pageNum=self.combatPageNum)
    106 
    107     def ShowCombatLosses(self, startFrom = None, pageChange = 0, *args):
    108         recent = sm.GetService('info').GetKillsRecentLosses(self.killentries, startFrom)
    109         self.combatPageNum = max(0, self.combatPageNum + pageChange)
    110         self.ShowKillsEx(recent, self.ShowCombatLosses, 'losses', pageNum=self.combatPageNum)
    111 
    112     def ShowKills(self):
    113         self.prevKillIDs = []
    114         self.prevLossIDs = []
    115         self.combatPageNum = 0
    116         selectedCombatType = settings.user.ui.Get('CombatLogCombo', 0)
    117         if selectedCombatType == 0:
    118             self.ShowCombatKills()
    119         else:
    120             self.ShowCombatLosses()
    121 
    122     def ReloadKillReports(self):
    123         combatSetting = settings.user.ui.Get('CombatLogCombo', 0)
    124         offset = None
    125         if combatSetting == 0:
    126             if self.prevKillIDs and self.combatPageNum:
    127                 offset = self.prevKillIDs[self.combatPageNum]
    128             self.ShowCombatKills(offset)
    129         else:
    130             if self.prevLossIDs and self.combatPageNum:
    131                 offset = self.prevLossIDs[self.combatPageNum]
    132             self.ShowCombatLosses(offset)