Beispiel #1
0
 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]
Beispiel #2
0
    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
Beispiel #3
0
 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
     ]
Beispiel #4
0
    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??')
Beispiel #5
0
    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
Beispiel #6
0
    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
Beispiel #7
0
    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
Beispiel #8
0
    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
Beispiel #9
0
 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]
Beispiel #10
0
    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
Beispiel #11
0
    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)
Beispiel #12
0
    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)
Beispiel #13
0
    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()
Beispiel #14
0
    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')
Beispiel #15
0
    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)