standingsPanel.py (7836B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\neocom\charsheet\standingsPanel\standingsPanel.py 2 import localization 3 from carbonui import uiconst 4 from carbonui.control.dragResizeCont import DragResizeCont 5 from carbonui.primitives.container import Container 6 from carbonui.primitives.containerAutoSize import ContainerAutoSize 7 from eve.client.script.ui.control.eveLabel import Label 8 from eve.client.script.ui.control.eveScroll import Scroll 9 from carbonui.button.menu import MenuButtonIcon 10 from eve.client.script.ui.quickFilter import QuickFilterEdit 11 from eve.client.script.ui.shared.neocom.charsheet.standingsPanel import standingsFilterSettings, standingsConst 12 from eve.client.script.ui.shared.neocom.charsheet.standingsPanel.standingCompositionScroll import StandingCompositionScroll 13 from eve.client.script.ui.shared.neocom.charsheet.standingsPanel.standingsHeader import StandingsHeader 14 from eve.client.script.ui.shared.neocom.charsheet.standingsPanel.standingsHistoryScroll import StandingsHistoryScroll 15 from eve.client.script.ui.shared.standings.standingsBar import StandingsBar 16 from eve.client.script.ui.shared.standings.standingsGraph import StandingsGraph 17 from eve.client.script.ui.shared.standings.standingsUIUtil import GetStandingScrollGroups, STANDING_SETTING_CONFIG_NAME 18 from eve.common.script.sys import idCheckers 19 import eveicon 20 21 class StandingsPanel(Container): 22 default_name = 'StandingsPanel' 23 __notifyevents__ = ['OnStandingNotificationClicked', 'OnNPCStandingsClicked', 'OnNPCStandingChange'] 24 25 def ApplyAttributes(self, attributes): 26 Container.ApplyAttributes(self, attributes) 27 self.toID = attributes.toID 28 self.fromID = None 29 self.leftCont = DragResizeCont(parent=self, align=uiconst.TOLEFT_PROP, minSize=0.33, maxSize=0.6, settingsID='StandingsPanelResizeCont') 30 filterContainer = ContainerAutoSize(parent=self.leftCont.mainCont, align=uiconst.TOTOP, alignMode=uiconst.TOPRIGHT, padding=(0, 4, 0, 4)) 31 self.searchBar = QuickFilterEdit(name='searchBar', parent=filterContainer, align=uiconst.TOPRIGHT) 32 self.searchBar.ReloadFunction = self.PopulateOwnerScroll 33 self.settingMenu = MenuButtonIcon(parent=filterContainer, align=uiconst.CENTERRIGHT, texturePath=eveicon.bars_sort_ascending, iconSize=16, pos=(self.searchBar.width + 8, 34 0, 35 18, 36 18), get_menu_func=standingsFilterSettings.get_menu, hint=localization.GetByLabel('UI/Common/SortBy')) 37 self.rightCont = Container(parent=self, padLeft=2) 38 self.standingBar = StandingsBar(parent=self, align=uiconst.TOTOP, height=72, padding=(4, 0, 6, 0), idx=0) 39 self.ConstructLeftCont() 40 self.ConstructRightCont() 41 sm.RegisterNotify(self) 42 standingsConst.STANDING_SORT_SETTING.on_change.connect(self.OnSortingSettingChanged) 43 44 def ConstructRightCont(self): 45 self.standingsHeader = StandingsHeader(parent=self.rightCont, align=uiconst.TOTOP, height=64, padRight=6) 46 if idCheckers.IsCorporation(self.toID): 47 self.compositionDescription = Label(name='CompositionDescriptionLabel', parent=self.rightCont, align=uiconst.TOTOP, padding=(0, 6, 2, 6), text=localization.GetByLabel('UI/Standings/CompositionWindow/NPCToPlayerCorp')) 48 scrollClass = StandingCompositionScroll 49 else: 50 self.graphResizeCont = DragResizeCont(parent=self.rightCont, align=uiconst.TOTOP, minSize=60, maxSize=250, defaultSize=150, settingsID='StandingsPanelRight') 51 self.standingsGraph = StandingsGraph(parent=self.graphResizeCont.mainCont, align=uiconst.TOALL, padTop=3, padBottom=3) 52 scrollClass = StandingsHistoryScroll 53 self.standingsScroll = scrollClass(parent=self.rightCont, align=uiconst.TOALL, ownerID=self.fromID) 54 55 def ConstructLeftCont(self): 56 self.scroll = Scroll(parent=self.leftCont.mainCont, padding=(0, 0, 0, 0), multiSelect=False) 57 self.scroll.OnSelectionChange = self.OnScrollSelectionChange 58 self.scroll.sr.id = 'charsheet_standings' 59 60 def OnScrollSelectionChange(self, nodes): 61 if not nodes: 62 return 63 self.standingData = nodes[0].standingData 64 if self.standingData.GetOwnerID2() == self.fromID: 65 return 66 self.fromID = self.standingData.GetOwnerID2() 67 self.toID = self.standingData.GetOwnerID1() 68 self.UpdateSelectedEntry() 69 70 def UpdateStandingsScroll(self): 71 if idCheckers.IsCorporation(self.toID): 72 transactions = self.GetStandingsCompositions() 73 else: 74 transactions = self.GetStandingsTransactions() 75 if transactions: 76 self.graphResizeCont.Show() 77 self.standingsGraph.Update(self.fromID, self.toID, transactions) 78 else: 79 self.graphResizeCont.Hide() 80 self.standingsScroll.Update(transactions, self.fromID) 81 82 def UpdateSelectedEntry(self): 83 self.standingsHeader.Update(self.standingData) 84 self.UpdateStandingsScroll() 85 self.standingBar.Update(self.fromID, self.toID) 86 87 def GetStandingsTransactions(self): 88 return sm.GetService('standing').GetStandingTransactions(self.fromID, self.toID) 89 90 def GetStandingsCompositions(self): 91 return sm.GetService('standing').GetStandingCompositions(self.fromID, self.toID) 92 93 def Load(self, *args): 94 self.LoadPanel() 95 96 def LoadPanel(self, *args): 97 self.PopulateOwnerScroll() 98 ownerIDFromSettings = settings.char.ui.Get(STANDING_SETTING_CONFIG_NAME, None) 99 standingNodes = [] 100 nodes = self.scroll.GetNodes() 101 for node in nodes: 102 ownerID = node.standingData and node.standingData.GetOwnerID2() 103 if ownerID is None: 104 continue 105 standingNodes.append(node) 106 if ownerID == ownerIDFromSettings: 107 self.SelectEntry(ownerID) 108 return 109 110 if standingNodes: 111 self.scroll.SelectNode(standingNodes[0]) 112 113 def PopulateOwnerScroll(self): 114 standingSvc = sm.GetService('standing') 115 if self.toID == session.charid: 116 standings = standingSvc.GetStandingsDataNPCsToMyCharacter() 117 else: 118 standings = standingSvc.GetStandingsDataNPCsToMyCorp() 119 searchText = self.searchBar.GetValue().lower() 120 scrolllist = GetStandingScrollGroups(standings, self.toID, searchText=searchText) 121 scrolllist = standingsFilterSettings.get_nodes_sorted(scrolllist) 122 self.scroll.Load(contentList=scrolllist, noContentHint=localization.GetByLabel('UI/Standings/NoResultsFound')) 123 124 def OnSortingSettingChanged(self, *args): 125 self._ApplyScrollSorting() 126 127 def _ApplyScrollSorting(self): 128 nodes = standingsFilterSettings.get_nodes_sorted(self.scroll.GetNodes()) 129 self.scroll.SetNodes(nodes) 130 self.scroll.ReloadNodes() 131 132 def SelectEntry(self, ownerID): 133 if sm.GetService('standing').AppendZeroStandingIfNeeded(ownerID): 134 self.PopulateOwnerScroll() 135 for node in self.scroll.GetNodes(): 136 if node.standingData and node.standingData.GetOwnerID2() == ownerID: 137 self.standingData = node.standingData 138 self.fromID = ownerID 139 self.scroll.SetSelected(node.idx) 140 self.scroll.ScrollToSelectedNode() 141 self.UpdateSelectedEntry() 142 break 143 144 def OnStandingNotificationClicked(self, entryToOpen): 145 self.SelectEntry(entryToOpen) 146 147 def OnNPCStandingsClicked(self, ownerID): 148 self.SelectEntry(ownerID) 149 150 def OnNPCStandingChange(self, fromID, newStandingsValue, oldStandingsValue): 151 if fromID == self.fromID: 152 self.PopulateOwnerScroll() 153 self.SelectEntry(self.fromID)