def GetDragData(self, *args): return if settings.user.ui.Get('lockModules', 0): return [] if self.charge: fakeNode = uix.GetItemData(self.charge, 'icons') fakeNode.isCharge = 1 else: fakeNode = uix.GetItemData(self.moduleinfo, 'icons') fakeNode.isCharge = 0 fakeNode.__guid__ = 'xtriui.ShipUIModule' fakeNode.slotFlag = self.moduleinfo.flagID uicore.layer.shipui.StartSwapMode() return [fakeNode]
def GetSubContentDivision(self, nodedata, *args): items = sm.RemoteSvc('corpmgr').GetAssetInventoryForLocation(eve.session.corpid, nodedata.locationID, FLAGNAME_OFFICES) scrolllist = [] if len(items) == 0: label = localization.GetByLabel('UI/Corporations/Assets/UnusedCorpOffice') data = util.KeyVal() data.label = label data.sublevel = nodedata.Get('sublevel', 1) + 1 data.id = nodedata.flag return [listentry.Get('Generic', data=data)] if not set(['groupID', 'categoryID']) & {i[0] for i in items.header.virtual}: items.header.virtual = items.header.virtual + [('groupID', lambda row: evetypes.GetGroupID(row.typeID)), ('categoryID', lambda row: evetypes.GetCategoryID(row.typeID))] sm.GetService('corp').GetLockedItemsByLocation(nodedata.locationID) for each in items: if each.flagID != nodedata.flag: continue data = uix.GetItemData(each, nodedata.viewMode, viewOnly=1, scrollID=nodedata.scrollID) data.id = each.itemID data.remote = True data.sublevel = nodedata.Get('sublevel', 1) + 1 if each.categoryID == const.categoryBlueprint: data.locked = sm.GetService('corp').IsItemLocked(each) scrolllist.append(listentry.Get('InvItemWithVolume', data=data)) return scrolllist
def GetDragData(self, *args): inv = sm.GetService('invCache').GetInventoryFromId(self.containerID) return [ uix.GetItemData(item, 'icons') for item in inv.List(const.flagSpecializedMaterialBay) if item.typeID == self.typeID ]
def UpdateItem(self, rec, *etc): lg.Info('vcont', 'UpdateItem', rec and '[%s %s]' % (rec.stacksize, cfg.invtypes.Get(rec.typeID).name)) if self.viewMode in ('details', 'list'): idx = 0 for each in self.items: if each.itemID == rec.itemID: self.items[idx] = rec break idx += 1 for entry in self.scroll.sr.nodes: if entry.item.itemID == rec.itemID: newentry = uix.GetItemData(rec, self.viewMode, self.invController.viewOnly, container=self, scrollID=self.scroll.sr.id) for key, value in newentry.iteritems(): entry[key] = value if entry.panel: entry.panel.Load(entry) self.UpdateHint() return else: i = 0 for rowNode in self.scroll.sr.nodes: for entry in rowNode.internalNodes: if entry is not None and entry.item and entry.item.itemID == rec.itemID: self.SetItem(i, rec) return i += 1 lg.Warn('vcont', 'Tried to update an item that is not there??')
def ShowLockdownSubcontent(self, nodedata, *args): scrolllist = [] items = sm.GetService('corp').GetLockedItemsByLocation( nodedata.locationID) locationID = nodedata.locationID offices = sm.GetService( 'corp').GetMyCorporationsOffices().SelectByUniqueColumnValues( 'stationID', [locationID]) if offices and len(offices): for office in offices: if locationID == office.stationID: locationID = office.officeID header = [ 'itemID', 'typeID', 'ownerID', 'groupID', 'categoryID', 'quantity', 'singleton', 'stacksize', 'locationID', 'flagID' ] for it in items.itervalues(): typeInfo = cfg.invtypes.Get(it.typeID) line = [ it.itemID, it.typeID, eve.session.corpid, typeInfo.groupID, typeInfo.categoryID, 1, const.singletonBlueprintOriginal, 1, locationID, 4 ] fakeItem = Row(header, line) data = uix.GetItemData(fakeItem, self.sr.viewMode, viewOnly=1, scrollID=nodedata.scrollID) data.GetMenu = self.OnGetEmptyMenu scrolllist.append(listentry.Get('InvItem', data)) return scrolllist
def GetContainerSubContent(self, nodedata, *args): scrollList = [] self.PrimeLocationNames(nodedata.groupItems) for each in nodedata.groupItems: data = uix.GetItemData(each, 'details', scrollID=nodedata.scrollID) data.sublevel = nodedata.sublevel scrollList.append(listentry.Get('InvAssetItem', data=data)) return scrollList
def GetSubContent(self, data, *args): if data.key == 'search': scrolllist = [] items = [] for solarsystemID, stationID, station in self.searchlist: if stationID == data.location.locationID: items = station break self.PrimeVoucherNames(items) for each in items: if each.flagID not in (const.flagHangar, const.flagWallet): continue scrolllist.append(listentry.Get('InvAssetItem', data=uix.GetItemData(each, 'details', scrollID=data.scrollID))) return scrolllist if eve.session.stationid and data.location.locationID == eve.session.stationid: hangarInv = sm.GetService('invCache').GetInventory(const.containerHangar) items = hangarInv.List() scrolllist = [] self.PrimeVoucherNames(items) for each in items: if each.flagID not in (const.flagHangar, const.flagWallet): continue scrolllist.append(listentry.Get('InvAssetItem', data=uix.GetItemData(each, 'details', scrollID=data.scrollID))) return scrolllist items = sm.GetService('invCache').GetInventory(const.containerGlobal).ListStationItems(data.location.locationID) badLocations = [const.locationTemp, const.locationSystem, eve.session.charid] scrolllist = [] self.PrimeVoucherNames(items) for each in items: if util.IsJunkLocation(each.locationID) or each.locationID in badLocations: continue if each.stacksize == 0: continue data = uix.GetItemData(each, 'details', scrollID=data.scrollID) if util.IsStation(each.locationID): station = sm.GetService('map').GetStation(each.locationID) if station: data.factionID = sm.StartService('faction').GetFactionOfSolarSystem(station.solarSystemID) scrolllist.append(listentry.Get('InvAssetItem', data=data)) return scrolllist
def GetSubContent(self, nodedata, *args): which = FLAG_TO_FLAGNAME[nodedata.flag] items = sm.RemoteSvc('corpmgr').GetAssetInventoryForLocation(eve.session.corpid, nodedata.locationID, which) scrolllist = [] if len(items) == 0: label = localization.GetByLabel('/Carbon/UI/Controls/Common/NoItem') if nodedata.flag == FLAG_OFFICES: label = localization.GetByLabel('UI/Corporations/Assets/UnusedCorpOffice') return [listentry.Get('Generic', {'label': label, 'sublevel': nodedata.Get('sublevel', 0) + 1})] items.header.virtual = items.header.virtual + [('groupID', lambda row: evetypes.GetGroupID(row.typeID)), ('categoryID', lambda row: evetypes.GetCategoryID(row.typeID))] searchCondition = nodedata.Get('searchCondition', None) if which == FLAGNAME_OFFICES and searchCondition is None: divisionNames = sm.GetService('corp').GetDivisionNames() if util.IsStation(nodedata.locationID): divisionIdFromHangarFlag = {const.flagHangar: 1} else: divisionIdFromHangarFlag = {const.flagCorpSAG1: 1} divisionIdFromHangarFlag.update({const.flagCorpSAG2: 2, const.flagCorpSAG3: 3, const.flagCorpSAG4: 4, const.flagCorpSAG5: 5, const.flagCorpSAG6: 6, const.flagCorpSAG7: 7}) for flag, divisionNumber in divisionIdFromHangarFlag.iteritems(): label = divisionNames[divisionNumber] data = {'GetSubContent': self.GetSubContentDivision, 'label': label, 'groupItems': None, 'flag': flag, 'id': ('corpofficeassets', (nodedata.locationID, flag)), 'tabs': [], 'state': 'locked', 'locationID': nodedata.locationID, 'showicon': 'hide', 'sublevel': nodedata.Get('sublevel', 0) + 1, 'viewMode': self.sr.viewMode, 'scrollID': nodedata.scrollID} scrolllist.append(listentry.Get('Group', data)) uicore.registry.SetListGroupOpenState(('corpofficeassets', (nodedata.locationID, flag)), 0) else: if nodedata.flag in (FLAG_OFFICES, FLAG_JUNK): sm.GetService('corp').GetLockedItemsByLocation(nodedata.locationID) for each in items: if searchCondition is not None: if searchCondition.typeID is not None and searchCondition.typeID != each.typeID or searchCondition.groupID is not None and searchCondition.groupID != each.groupID or searchCondition.categoryID is not None and searchCondition.categoryID != each.categoryID or searchCondition.qty > each.stacksize: continue data = uix.GetItemData(each, self.sr.viewMode, viewOnly=1, scrollID=nodedata.scrollID) data.id = each.itemID data.remote = True if nodedata.flag in (FLAG_OFFICES, FLAG_JUNK) and each.categoryID == const.categoryBlueprint: data.locked = sm.GetService('corp').IsItemLocked(each) scrolllist.append(listentry.Get('InvItem', data=data)) return scrolllist
def GetDragData(self, itemID): if itemID in self.items: return [uix.GetItemData(self.items[itemID], 'icons')] dogmaItem = self.dogmaItems[itemID] data = uiutil.Bunch() data.__guid__ = 'listentry.InvItem' data.item = util.KeyVal(itemID=dogmaItem.itemID, typeID=dogmaItem.typeID, groupID=dogmaItem.groupID, categoryID=dogmaItem.categoryID, flagID=dogmaItem.flagID, ownerID=dogmaItem.ownerID, locationID=dogmaItem.locationID, stacksize=self.GetAttributeValue(itemID, const.attributeQuantity)) data.rec = data.item data.itemID = itemID data.viewMode = 'icons' return [data]
def GetDragData(self, *args): ret = [] for node in self.sr.node.scroll.GetSelectedNodes(self.sr.node): if node.item is not None: item = uix.GetItemData(node.item, 'icon') item.scroll = node.scroll item.itemID = node.itemID item.typeID = node.typeID item.quantity = node.quantity ret.append(item) else: ret.append(node) return ret
def AddItem(self, rec, index = None, fromWhere = None): if self.quickFilterInput: if not self.QuickFilter(rec): return if not self.FilterItems([rec]): return lg.Info('vcont', 'AddItem', fromWhere, rec.stacksize, cfg.invtypes.Get(rec.typeID).name) for node in self.scroll.sr.nodes: if self.viewMode in ('details', 'list'): if node is not None and node.Get('item', None) and node.item.itemID == rec.itemID: lg.Warn('vcont', 'Tried to add an item that is already there??') self.UpdateItem(node.item) return else: for internalNode in node.internalNodes: if internalNode is not None and internalNode.item.itemID == rec.itemID: lg.Warn('vcont', 'Tried to add an item that is already there??') self.UpdateItem(internalNode.item) return import listentry if self.viewMode in ('details', 'list'): self.items.append(rec) self.scroll.AddEntries(-1, [listentry.Get('InvItem', data=uix.GetItemData(rec, self.viewMode, self.invController.viewOnly, container=self, scrollID=self.scroll.sr.id))]) self.UpdateHint() else: if index is not None: while index < len(self.items): if self.items[index] is None: return self.SetItem(index, rec) index += 1 while index >= len(self.scroll.sr.nodes) * self.cols: self.AddRow() return self.SetItem(index, rec) if len(self.items) and None in self.items: idx = self.tmpDropIdx.get(rec.itemID, None) if idx is None: idx = self.items.index(None) return self.SetItem(idx, rec) if not self.cols: self.RefreshCols() if index >= len(self.scroll.sr.nodes) * self.cols: self.AddRow() return self.SetItem(0, rec)
def SetItem(self, index, rec): lg.Info('vcont', 'SetItem', index, rec and '[%s %s]' % (rec.stacksize, cfg.invtypes.Get(rec.typeID).name)) if not self or self.destroyed: return if index < len(self.items) and rec and self.items[index] is not None and self.items[index].itemID != rec.itemID: while index < len(self.items) and self.items[index] is not None: index += 1 if self.cols: rowIndex = index // self.cols else: rowIndex = 0 while rowIndex >= len(self.scroll.sr.nodes): self.AddRow() while index >= len(self.items): self.items += [None] self.items[index] = rec try: self.scroll.sr.nodes[rowIndex].rec[index % self.cols] = rec self.UpdateHint() node = None if rec: node = uix.GetItemData(rec, self.viewMode, self.invController.viewOnly, container=self, scrollID=self.scroll.sr.id) if not self or self.destroyed: return node.scroll = self.scroll node.panel = None node.idx = index node.__guid__ = 'xtriui.InvItem' self.scroll.sr.nodes[index // self.cols].internalNodes[index % self.cols] = node except IndexError: return icon = self.GetIcon(index) if icon: if rec is None: icon.state = uiconst.UI_HIDDEN icon.sr.node = None else: icon.state = uiconst.UI_NORMAL node.panel = icon node.viewOnly = self.invController.viewOnly icon.Load(node)
def ShowStationItems(self, key): self.ShowLoad() hangarInv = sm.GetService('invCache').GetInventory(const.containerHangar) items = hangarInv.List() if not len(items): self.SetHint(localization.GetByLabel('UI/Inventory/AssetsWindow/NoAssets')) return assetsList = [] self.sr.scroll.Load(fixedEntryHeight=42, contentList=[], headers=uix.GetInvItemDefaultHeaders()) itemname = ' ' + key for each in items: if each.flagID not in (const.flagHangar, const.flagWallet): continue if key == 'ships': if each.categoryID != const.categoryShip: continue elif key == 'modules': if not cfg.invtypes.Get(each.typeID).Group().Category().IsHardware(): continue elif key == 'minerals': if each.groupID != const.groupMineral: continue elif key == 'charges': if each.categoryID != const.categoryCharge: continue else: itemname = None if each.categoryID == const.categoryShip or cfg.invtypes.Get(each.typeID).Group().Category().IsHardware() or each.groupID == const.groupMineral or each.categoryID == const.categoryCharge: continue assetsList.append(listentry.Get('InvAssetItem', data=uix.GetItemData(each, 'details', scrollID=self.sr.scroll.sr.id))) locText = {'ships': localization.GetByLabel('UI/Inventory/AssetsWindow/NoShipsAtStation'), 'modules': localization.GetByLabel('UI/Inventory/AssetsWindow/NoModulesAtStation'), 'minerals': localization.GetByLabel('UI/Inventory/AssetsWindow/NoMineralsAtStation'), 'charges': localization.GetByLabel('UI/Inventory/AssetsWindow/NoChargesAtStation')} if not assetsList: if not itemname: self.SetHint(localization.GetByLabel('UI/Inventory/AssetsWindow/NoAssetsInCategoryAtStation')) else: self.SetHint(locText[key]) else: self.SetHint() self.sr.scroll.Load(contentList=assetsList, sortby='label', headers=uix.GetInvItemDefaultHeaders()) self.HideLoad()
def __LoadItems(self, *args): if self is None or self.destroyed: return self.__EnterCriticalSection('__LoadItems') try: self.sr.itemscroll.ShowHint() itemtypes = {} for each in self.items.itervalues(): if each.flagID == const.flagReward: continue itemtypes[each.typeID] = 0 optionsByItemType = sm.GetService( 'reprocessing').GetOptionsForItemTypes(itemtypes) scrolllist = [] for item in self.items.itervalues(): if item.flagID == const.flagReward: continue option = optionsByItemType[item.typeID] if option.isRecyclable or option.isRefinable: if item.categoryID == const.categoryAsteroid or item.groupID == const.groupHarvestableCloud: flag = 1 else: flag = 0 itemName = '' isContainer = item.groupID in ( const.groupCargoContainer, const.groupSecureCargoContainer, const.groupAuditLogSecureContainer, const.groupFreightContainer) and item.singleton if item.categoryID == const.categoryShip or isContainer: shipName = cfg.evelocations.GetIfExists(item.itemID) if shipName is not None: itemName = shipName.locationName ty = cfg.invtypes.Get(item.typeID) data = uix.GetItemData(item, 'details', scrollID=self.sr.itemscroll.sr.id) isChecked = [True, False ][not not item.stacksize < ty.portionSize] if isChecked: if not self.selectedItemIDs.has_key(item.itemID): isChecked = False if not isChecked: if self.selectedItemIDs.has_key(item.itemID): del self.selectedItemIDs[item.itemID] if not self.showAllItems and not isChecked: continue data.info = item data.typeID = item.typeID data.getIcon = 1 data.item = item data.flag = flag data.checked = isChecked data.cfgname = item.itemID data.retval = item.itemID data.OnChange = self.OnItemSelectedChanged data.scrollID = self.sr.itemscroll.sr.id scrolllist.append(listentry.Get('ItemCheckbox', data)) self.sr.itemscroll.sr.iconMargin = 24 self.sr.itemscroll.sr.fixedEntryHeight = 24 self.sr.itemscroll.Load( None, scrolllist, headers=uix.GetInvItemDefaultHeaders(), noContentHint=localization.GetByLabel( 'UI/Reprocessing/ReprocessingWindow/NoItemsSelectedMessage' )) if not len(scrolllist): self.sr.itemscroll.ShowHint( localization.GetByLabel( 'UI/Reprocessing/ReprocessingWindow/NoItemsSelectedMessage' )) finally: self.__LeaveCriticalSection('__LoadItems')
def RefreshView(self, *args): if self.refreshingView: return self.refreshingView = 1 try: if self.viewMode in ('details', 'list'): self.scroll.sr.id = 'containerWnd_%s' % self.invController.GetName() self.scroll.hiliteSorted = 1 scrolllist = [] import listentry for rec in self.items: if rec: id = self.scroll.sr.id theData = uix.GetItemData(rec, self.viewMode, self.invController.viewOnly, container=self, scrollID=id) list = listentry.Get('InvItem', data=theData) scrolllist.append(list) hdr = uix.GetInvItemDefaultHeaders() scrll = self.scroll.GetScrollProportion() theSc = self.scroll theSc.Load(contentList=scrolllist, headers=hdr, scrollTo=scrll) else: if not self.cols: self.RefreshCols() while self.items and self.items[-1] is None: self.items = self.items[:-1] content = [] selectedItems = [ node.item for node in self.scroll.GetSelected() ] import listentry for i in xrange(len(self.items)): blue.pyos.BeNice() if not i % self.cols: entry = [None] * self.cols nodes = [None] * self.cols content.append(listentry.Get('VirtualContainerRow', {'lenitems': i, 'rec': entry, 'internalNodes': nodes, 'parentWindow': self, 'hilightable': False, 'container': self})) if self.items[i]: node = uix.GetItemData(self.items[i], self.viewMode, self.invController.viewOnly, container=self) node.scroll = self.scroll node.panel = None node.__guid__ = 'xtriui.InvItem' node.idx = i node.selected = node.item in selectedItems nodes[i % self.cols] = node entry[i % self.cols] = self.items[i] self.scroll.sr.sortBy = None self.scroll.sr.id = None self.scroll.Load(fixedEntryHeight=self.iconHeight + rowMargin, contentList=content, scrollTo=self.scroll.GetScrollProportion()) self.CleanupRows() self.UpdateHint() self.initialized = True sm.ScatterEvent('OnInvContRefreshed', self) finally: if not self.destroyed: if self.viewMode == 'details': self.scroll.sr.minColumnWidth = {localization.GetByLabel('UI/Common/Name'): 44} self.scroll.UpdateTabStops() else: self.scroll.sr.minColumnWidth = {} self.refreshingView = 0 if self.reRefreshView: self.reRefreshView = False self.RefreshCols() uthread.new(self.RefreshView)