Exemple #1
0
 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
Exemple #3
0
    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)