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()