def GetInvController(self): groupID = evetypes.GetGroupID(self.typeID) if groupID in CONTAINERGROUPS: invController = invCtrl.StationContainer(self.itemID, self.typeID) elif self.typeID == const.typeOffice: divisionNum = const.corporationDivisionFromFlag.get(self.flagID) invController = invCtrl.StationCorpHangar(self.itemID, divisionNum) elif groupID in (const.groupAssemblyArray, const.groupMobileLaboratory): divisionNum = const.corporationDivisionFromFlag.get(self.flagID) invController = invCtrl.POSCorpHangar(self.itemID, divisionNum) else: invController = invCtrl.StationItems(self.itemID) return invController
def GetInvController(self): typeObj = cfg.invtypes.Get(self.typeID) if typeObj.groupID in CONTAINERGROUPS: invController = invCtrl.StationContainer(self.itemID, self.typeID) elif typeObj.typeID == const.typeOffice: corpFlags = const.corpHangarTakeRolesByFlag.keys() divisionNum = corpFlags.index(self.flagID) invController = invCtrl.StationCorpHangar(self.itemID, divisionNum) elif typeObj.groupID in (const.groupAssemblyArray, const.groupMobileLaboratory): corpFlags = const.corpHangarTakeRolesByFlag.keys() divisionNum = corpFlags.index(self.flagID) invController = invCtrl.POSCorpHangar(self.itemID, divisionNum) else: invController = invCtrl.StationItems(self.itemID) return invController
def OnDropData(self, dragObj, nodes): if self.blinkBG: uicore.animations.FadeOut(self.blinkBG, duration=0.2) if len(nodes) and getattr(nodes[0], 'scroll', None): nodes[0].scroll.ClearSelection() if not nodes[0].rec: return if not hasattr(nodes[0].rec, 'locationID'): return locationID = nodes[0].rec.locationID if locationID != self.rec.locationID: if not sm.GetService('crimewatchSvc').CheckCanTakeItems( locationID): sm.GetService('crimewatchSvc').SafetyActivated( const.shipSafetyLevelPartial) return if self.isShip: if invCtrl.ShipCargo(self.rec.itemID).OnDropData(nodes): self.Blink() return if self.isContainer: if invCtrl.StationContainer(self.rec.itemID).OnDropData(nodes): self.Blink() return mergeToMe = [] notUsed = [] sourceID = None for node in nodes: if getattr(node, '__guid__', None) not in ('xtriui.ShipUIModule', 'xtriui.InvItem', 'listentry.InvItem'): notUsed.append(node) continue if node.item.itemID == self.sr.node.item.itemID: notUsed.append(node) continue if node.item.typeID == self.sr.node.item.typeID and not isinstance( self.sr.node.item.itemID, tuple) and not getattr( node.item, 'singleton', False) and not self.sr.node.item.singleton: mergeToMe.append(node.item) else: notUsed.append(node) if sourceID is None: sourceID = node.rec.locationID if sourceID is None: log.LogInfo('OnDropData: Moot operation with ', nodes) return if mergeToMe: containerItem = sm.GetService('invCache').GetInventoryFromId( self.rec.locationID).GetItem() if session.solarsystemid and containerItem.itemID == mergeToMe[ 0].locationID and containerItem.ownerID not in ( session.charid, session.corpid, session.allianceid): return shift = uicore.uilib.Key(uiconst.VK_SHIFT) mergeData = [] stateMgr = sm.StartService('godma').GetStateManager() dogmaLocation = sm.GetService('clientDogmaIM').GetDogmaLocation() singletons = [] for invItem in mergeToMe: if invItem.stacksize == 1: quantity = 1 elif shift: ret = uix.QtyPopup( invItem.stacksize, 1, 1, None, localization.GetByLabel( 'UI/Inventory/ItemActions/StackItems')) if ret is not None: quantity = ret['qty'] else: quantity = None else: quantity = invItem.stacksize if not quantity: continue if invItem.categoryID == const.categoryCharge and IsShipFittingFlag( invItem.flagID): if type(invItem.itemID) is tuple: flag = invItem.itemID[1] chargeIDs = dogmaLocation.GetSubLocationsInBank( invItem.locationID, invItem.itemID) if chargeIDs: for chargeID in chargeIDs: charge = dogmaLocation.dogmaItems[chargeID] mergeData.append( (charge.itemID, self.rec.itemID, dogmaLocation.GetAttributeValue( chargeID, const.attributeQuantity), charge)) else: mergeData.append((invItem.itemID, self.rec.itemID, quantity, invItem)) else: crystalIDs = dogmaLocation.GetCrystalsInBank( invItem.locationID, invItem.itemID) if crystalIDs: for crystalID in crystalIDs: crystal = dogmaLocation.GetItem(crystalID) if crystal.singleton: singletons.append(crystalID) else: mergeData.append( (crystal.itemID, self.rec.itemID, crystal.stacksize, crystal)) else: mergeData.append((invItem.itemID, self.rec.itemID, quantity, invItem)) else: mergeData.append( (invItem.itemID, self.rec.itemID, quantity, invItem)) if singletons and util.GetAttrs(self, 'sr', 'node', 'rec', 'flagID'): flag = self.sr.node.rec.flagID inv = sm.GetService('invCache').GetInventoryFromId( self.rec.locationID) if inv: inv.MultiAdd(singletons, sourceID, flag=flag, fromManyFlags=True) if mergeData and util.GetAttrs(self, 'sr', 'node', 'container', 'invController', 'MultiMerge'): invController = self.sr.node.container.invController sm.ScatterEvent('OnInvContDragExit', invController.GetInvID(), []) if invController.MultiMerge(mergeData, sourceID): sm.GetService('audio').SendUIEvent('ui_state_stack') self.Blink() if notUsed and util.GetAttrs(self, 'sr', 'node', 'container', 'OnDropData'): self.sr.node.container.OnDropData(dragObj, notUsed)