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

containerContentWindow.py (4989B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\inventory\containerContentWindow.py
      2 import evetypes
      3 from carbonui import uiconst
      4 from carbonui.primitives.container import Container
      5 from eve.client.script.ui.control.entries.item import Item
      6 from eve.client.script.ui.control.entries.util import GetFromClass
      7 from eve.client.script.ui.control.eveLabel import EveLabelMedium
      8 from eve.client.script.ui.control.eveScroll import Scroll
      9 from carbonui.control.window import Window
     10 from eve.client.script.ui.quickFilter import QuickFilterEdit
     11 from eve.common.lib import appConst as const
     12 from eve.common.script.sys.eveCfg import GetShipFlagLocationName
     13 from localization import GetByLabel
     14 
     15 class ContainerContentWindow(Window):
     16     __guid__ = 'ContainerContentWindow'
     17     default_width = 500
     18     default_height = 400
     19     default_minSize = (500, 256)
     20     default_windowID = 'containerContentWindow'
     21     default_captionLabelPath = 'UI/Menusvc/ItemsInContainerHint'
     22 
     23     def ApplyAttributes(self, attributes):
     24         Window.ApplyAttributes(self, attributes)
     25         self.itemID = None
     26         self.typeID = None
     27         self.stationID = None
     28         self.contentsList = None
     29         self.topHint = EveLabelMedium(text='', parent=self.sr.main, top=4, state=uiconst.UI_DISABLED, align=uiconst.TOTOP, padding=4)
     30         self.topRightCont = Container(name='topRightCont2', parent=self.sr.main, align=uiconst.TOTOP, height=24, padBottom=1, clipChildren=True)
     31         self.filterEdit = QuickFilterEdit(name='topRightCont2', parent=self.topRightCont, hintText=GetByLabel('UI/Inventory/Filter'), maxLength=64, left=4, align=uiconst.CENTERRIGHT, OnClearFilter=self.OnFilterEditCleared, width=120, isTypeField=True)
     32         self.filterEdit.ReloadFunction = self.OnFilterEdit
     33         self.scroll = Scroll(parent=self.sr.main, padding=(const.defaultPadding,
     34          const.defaultPadding,
     35          const.defaultPadding,
     36          const.defaultPadding), id='containerContentWindow')
     37 
     38     def LoadContent(self, itemID, stationID, containerTypeID, invCacheSvc, contentsList = None):
     39         self.itemID = itemID
     40         self.typeID = containerTypeID
     41         self.stationID = stationID
     42         typeName = evetypes.GetName(containerTypeID)
     43         hasFlag = evetypes.GetCategoryID(containerTypeID) == const.categoryShip
     44         if evetypes.GetCategoryID(containerTypeID) == const.categoryShip:
     45             hint = '<center>' + GetByLabel('UI/Menusvc/ItemsInShipHint2', containerName=typeName)
     46             self.SetCaption('UI/Menusvc/ItemsInShipHint')
     47         else:
     48             hint = '<center>' + GetByLabel('UI/Menusvc/ItemsInContainerHint2', containerName=typeName)
     49             self.SetCaption('UI/Menusvc/ItemsInContainerHint')
     50         self.topHint.SetText(hint)
     51         hdr = [GetByLabel('UI/Inventory/InvItemNameShort'), GetByLabel('UI/Inventory/ItemGroup')]
     52         if hasFlag:
     53             hdr += [GetByLabel('UI/Common/Location'), GetByLabel('UI/Common/Quantity')]
     54         else:
     55             hdr += [GetByLabel('UI/Common/Quantity')]
     56         contentList = self.GetContentsList(itemID, hasFlag, stationID, invCacheSvc, contentsList)
     57         self.scroll.Load(contentList=contentList, headers=hdr, noContentHint=GetByLabel('UI/Common/NothingFound'))
     58 
     59     def GetContentsList(self, itemID, hasFlag, stationID, invCacheSvc, contentsList = None):
     60         if contentsList is None:
     61             contents = invCacheSvc.GetInventoryMgr().GetContainerContents(itemID, stationID)
     62             self.contentsList = contents
     63         else:
     64             contents = self.contentsList
     65         lst = []
     66         filterText = self.filterEdit.GetValue().strip().lower()
     67         for c in contents:
     68             flag = c.flagID
     69             if flag == const.flagPilot:
     70                 continue
     71             locationName = GetShipFlagLocationName(flag)
     72             typeName = evetypes.GetName(c.typeID)
     73             groupID = evetypes.GetGroupID(c.typeID)
     74             txt = '%s<t>%s<t>' % (typeName, evetypes.GetGroupNameByGroup(groupID))
     75             if hasFlag:
     76                 txt += '%s<t><right>%s' % (locationName, c.stacksize)
     77             else:
     78                 txt += '<right>%s' % c.stacksize
     79             if filterText and typeName.lower().find(filterText) < 0:
     80                 continue
     81             data = {'label': txt,
     82              'typeID': c.typeID,
     83              'itemID': c.itemID,
     84              'getIcon': True}
     85             if c.categoryID == const.categoryBlueprint and c.singleton == const.singletonBlueprintCopy:
     86                 data['isCopy'] = True
     87             entry = GetFromClass(Item, data)
     88             lst.append(entry)
     89 
     90         return lst
     91 
     92     def ReloadContent(self):
     93         if self.itemID and self.typeID and self.stationID:
     94             self.LoadContent(self.itemID, self.stationID, self.typeID, sm.GetService('invCache'), self.contentsList)
     95 
     96     def OnFilterEditCleared(self):
     97         self.ReloadContent()
     98 
     99     def OnFilterEdit(self):
    100         self.ReloadContent()