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

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)