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)