示例#1
0
    def OnClickAccept(self, *etc):
        self.acceptButton.Disable()
        currentState = [uiconst.UI_HIDDEN,
                        uiconst.UI_DISABLED].index(self.sr.myAccept.state)
        self.tradedShips = []
        tradeItems = self.tradeSession.List().items
        for item in tradeItems:
            if evetypes.GetCategoryIDByGroup(
                    item.groupID) == const.categoryShip:
                self.tradedShips.append(item.itemID)
                sm.GetService('gameui').KillCargoView(item.itemID)

        try:
            self.tradeSession.ToggleAccept(not currentState)
        except UserError as what:
            if not what.msg.startswith('TradeShipWarning'):
                raise
            msgName, msgDict = what.msg, what.dict
            if msgName is not None:
                if eve.Message('TradeShipWarning', {},
                               uiconst.OKCANCEL) == uiconst.ID_OK:
                    self.tradeSession.ToggleAccept(not currentState,
                                                   forceTrade=True)
                else:
                    self.acceptButton.Enable()
示例#2
0
 def PreviewType(self, typeID, **kwargs):
     if not IsPreviewable(typeID):
         raise InvalidPreviewType('%s (%s) is not previewable' %
                                  (evetypes.GetName(typeID), typeID))
     groupID = evetypes.GetGroupID(typeID)
     categoryID = evetypes.GetCategoryIDByGroup(groupID)
     if IsModularShip(typeID):
         return self.PreviewTech3Ship(typeID,
                                      subsystems=kwargs.get('subsystems'),
                                      scenePath=kwargs.get('scenePath'))
     if categoryID == invconst.categoryApparel:
         return self.PreviewApparel(typeID,
                                    gender=kwargs.get('gender'),
                                    background=kwargs.get('background'))
     if groupID in invconst.turretModuleGroups:
         return self.PreviewTurret(typeID,
                                   scenePath=kwargs.get('scenePath'))
     if groupID in invconst.turretAmmoGroups:
         return self.PreviewAmmo(typeID, scenePath=kwargs.get('scenePath'))
     if groupID == invconst.groupShipSkins or categoryID == invconst.categoryShip:
         controller = kwargs.get('controller')
         if controller is None:
             return self.PreviewSkin(typeID,
                                     scenePath=kwargs.get('scenePath'))
         else:
             return self.PreviewSkinnedEntity(
                 typeID,
                 controller=kwargs.get('controller'),
                 scenePath=kwargs.get('scenePath'))
     else:
         return self.PreviewSpaceEntity(typeID,
                                        itemID=kwargs.get('itemID'),
                                        scenePath=kwargs.get('scenePath'))
示例#3
0
    def DoFormSubmit(self, *args):
        for formField in [self.min,
         self.max,
         self.number,
         self.volume]:
            configFieldName = formField.name
            self.config[configFieldName] = formField.GetValue()

        loc = self.spawnlocation
        if isinstance(loc, types.TupleType):
            loc, flag = loc
        else:
            flag = None
        if self.config['categoryID'] == 'random':
            ids = set([ evetypes.GetCategoryIDByGroup(groupID) for groupID in evetypes.IterateGroups() ])
            want = list(ids)
            categories = True
            groups = False
        elif self.config['groupID'] == 'random':
            ids = evetypes.GetGroupIDsByCategory(self.config['categoryID'])
            want = list(ids)
            categories = False
            groups = True
        else:
            want = [self.config['groupID']]
            categories = False
            groups = True
        publishedFlags = {0: (False, True),
         1: (True, False),
         -1: (False, False)}
        onlyPublished, onlyUnpublished = publishedFlags[self.config['published']]
        if self.prepCorpHangar is True:
            sm.GetService('window').OpenCorpHangar(None, None, 1)
        sm.StartService('invtools').SpawnRandom(loc=loc, flag=flag, minQty=self.config['minQty'], maxQty=self.config['maxQty'], iterations=self.config['number'], categories=categories, groups=groups, want=want, onlyPublished=onlyPublished, onlyUnpublished=onlyUnpublished, useMultiMove=self.config['multimove'], volume=self.config['volume'])
示例#4
0
    def RepairItems(self, items):
        totalcost = 0
        hasModule = False
        for item in items:
            damage = math.ceil(item.damage)
            totalcost = totalcost + math.ceil(
                item.damage) * item.costToRepairOneUnitOfDamage
            categoryID = evetypes.GetCategoryIDByGroup(item.groupID)
            if IsFittingModule(categoryID):
                hasModule = True

        btnSetup = {
            self.sr.selBtn: uiconst.UI_HIDDEN,
            self.sr.pickBtn: uiconst.UI_NORMAL
        }
        if hasModule:
            if eve.Message('RepairNonPartialConfirmation',
                           {'isk': util.FmtISK(totalcost)},
                           uiconst.YESNO) != uiconst.ID_YES:
                amount = None
            else:
                amount = {'qty': totalcost}
        else:
            amount = uix.QtyPopup(totalcost,
                                  0,
                                  totalcost,
                                  hint=localization.GetByLabel(
                                      'UI/Station/Repair/FullRepair',
                                      isk=totalcost),
                                  label=localization.GetByLabel(
                                      'UI/Station/Repair/RepairCostLabel'),
                                  digits=2)
        if amount is not None:
            itemIDs = []
            try:
                for item in items:
                    if self.invCache.IsItemLocked(item.itemID):
                        raise UserError(
                            'ItemLocked',
                            {'item': evetypes.GetName(item.typeID)})
                    if not self.invCache.TryLockItem(
                            item.itemID, 'lockUnassemblingItem', {}, 1):
                        raise UserError(
                            'ItemLocked',
                            {'item': evetypes.GetName(item.typeID)})
                    itemIDs.append(item.itemID)

                if len(itemIDs):
                    self.repairSvc.RepairItems(itemIDs, amount['qty'])
            finally:
                for itemID in itemIDs:
                    self.invCache.UnlockItem(itemID)

                sm.ScatterEvent('OnRepairDone', itemIDs)
                uthread.new(self.DisplayRepairQuote, self.GetAll())

        else:
            btnSetup[self.sr.repairAllBtn] = uiconst.UI_NORMAL
        self.DisplayButtons(btnSetup)
示例#5
0
 def GetMenu(self, *args):
     if isinstance(self.sr.node.invtype, tuple):
         typeID = self.sr.node.invtype[0]
     else:
         typeID = self.sr.node.invtype
     groupID = evetypes.GetGroupID(typeID)
     catID = evetypes.GetCategoryIDByGroup(groupID)
     graphicID = evetypes.GetGraphicID(typeID)
     graphicFileMenu = []
     if evetypes.Exists(typeID) and evetypes.GetGraphicID(
             typeID) is not None:
         graphic = GetGraphic(evetypes.GetGraphicID(typeID))
         if graphic is not None:
             graphicFile = GetGraphicFile(graphic)
             graphicFileMenu = [
                 [
                     'Copy graphicID (%s)' % graphicID,
                     lambda *x: blue.pyos.SetClipboardData(str(graphicID)),
                     ()
                 ],
                 [
                     'Copy graphicFile (%s)' % graphicFile,
                     lambda *x: blue.pyos.SetClipboardData(graphicFile), ()
                 ]
             ]
     averagePrice = inventorycommon.typeHelpers.GetAveragePrice(typeID)
     if averagePrice is None:
         averagePrice = 'n/a'
     else:
         averagePrice = util.FmtISK(averagePrice)
     menu = [[
         'Preview', lambda *x: uthread.new(
             sm.StartService('preview').PreviewType, typeID), ()
     ]]
     menu += graphicFileMenu
     menu += [[
         'Copy typeID (%s)' % typeID,
         lambda *x: blue.pyos.SetClipboardData(str(typeID)), ()
     ],
              [
                  'Copy groupID (%s)' % groupID,
                  lambda *x: blue.pyos.SetClipboardData(str(groupID)), ()
              ],
              [
                  'Copy categoryID (%s)' % catID,
                  lambda *x: blue.pyos.SetClipboardData(str(catID)), ()
              ],
              [
                  'Average price: %s' % averagePrice,
                  lambda *x: blue.pyos.SetClipboardData(averagePrice), ()
              ],
              [
                  'View market details', lambda *x: uthread.new(
                      sm.StartService('marketutils').ShowMarketDetails,
                      typeID, None), ()
              ], None]
     menu += sm.GetService('menu').GetGMTypeMenu(typeID)
     return menu
示例#6
0
        def DroneMenu():
            m = []
            for groupID in chargesByChargeGroup:
                if evetypes.GetCategoryIDByGroup(
                        groupID) == const.categoryDrone:
                    m.append((self.FormattedName(
                        evetypes.GetGroupNameByGroup(groupID),
                        evetypes.IsGroupPublishedByGroup(groupID)),
                              ('isDynamic', DroneSubMenu, (groupID, ))))

            m.sort()
            return m
示例#7
0
    def GetGroupValueOptions(self):
        categoryID = self.categoryCombo.GetValue()
        options = []
        for groupID in evetypes.IterateGroups():
            if evetypes.IsGroupPublishedByGroup(
                    groupID) and evetypes.GetCategoryIDByGroup(
                        groupID) == categoryID:
                options.append(
                    (evetypes.GetGroupNameByGroup(groupID), groupID))

        options.sort(key=lambda x: x[0])
        options.insert(0, (localization.GetByLabel('UI/Common/All'), 0))
        return options
示例#8
0
 def GetTypeGroupCategoryID(self):
     resultData = self.resultData
     if resultData.certainty >= probeResultInformative:
         typeID = resultData.Get('typeID', None)
         groupID = resultData.groupID
         categoryID = None
     elif resultData.certainty >= probeResultGood:
         typeID = None
         groupID = resultData.Get('groupID', None)
         categoryID = evetypes.GetCategoryIDByGroup(resultData.groupID)
     else:
         typeID = None
         groupID = None
         categoryID = None
     return (typeID, groupID, categoryID)
示例#9
0
 def ApplyAttributes(self, attributes):
     CriteriaValueBase.ApplyAttributes(self, attributes)
     options = ((localization.GetByLabel('UI/Inventory/Filters/CritIs'),
                 CRIT_IS),
                (localization.GetByLabel('UI/Inventory/Filters/CritIsNot'),
                 CRIT_ISNOT))
     self.criteriaCombo = self.CreateCombo(options, width=0.2)
     self.criteriaCombo.SelectItemByValue(self.criteria)
     self.categoryCombo = self.CreateCombo(self.GetCategoryValueOptions(),
                                           width=0.4)
     self.categoryCombo.OnChange = self.OnCategoryComboChange
     self.groupCombo = self.CreateCombo(self.GetGroupValueOptions(),
                                        width=0.4)
     if self.value:
         if self.filterType == ITEM_CATEGORY:
             self.categoryCombo.SelectItemByValue(self.value)
             self.OnCategoryComboChange()
         elif self.filterType == ITEM_GROUP:
             categoryID = evetypes.GetCategoryIDByGroup(self.value)
             self.categoryCombo.SelectItemByValue(categoryID)
             self.OnCategoryComboChange()
             self.groupCombo.SelectItemByValue(self.value)
示例#10
0
 def DoCategoryChange(self, combo, text, value):
     self.config['categoryID'] = value
     if value == 'random':
         self.grps = [self.RANDOM_COMBO]
     else:
         self.grps = [ ('%s [%s]' % (evetypes.GetGroupNameByGroup(groupID), self.PUBLISHED_LIST[evetypes.IsGroupPublishedByGroup(groupID)]), groupID) for groupID in evetypes.IterateGroups() if evetypes.GetCategoryIDByGroup(groupID) == value ]
         self.grps.sort()
         self.grps.insert(0, self.RANDOM_COMBO)
     self.groups.SetValue('random')
     self.groups.entries = self.grps
示例#11
0
    const.groupMobileStorage, const.groupStealthEmitterArray,
    const.groupStructureRepairArray, const.groupTargetPaintingBattery
}
validCategories = (const.categoryStation, const.categoryShip,
                   const.categoryEntity, const.categoryCelestial,
                   const.categoryAsteroid, const.categoryDrone,
                   const.categoryDeployable, const.categoryStarbase,
                   const.categoryStructure, const.categoryCharge,
                   const.categorySovereigntyStructure, const.categoryOrbital,
                   const.categoryFighter)
bombGroups = (const.groupBomb, const.groupBombECM, const.groupBombEnergy,
              const.groupScannerProbe, const.groupWarpDisruptionProbe,
              const.groupSurveyProbe, const.groupStructureAreaMissile)
groups = []
for grpID in evetypes.IterateGroups():
    categoryID = evetypes.GetCategoryIDByGroup(grpID)
    if categoryID == const.categoryCharge and grpID not in bombGroups:
        continue
    if categoryID not in validCategories:
        continue
    if grpID in filterGroups:
        continue
    groupName = evetypes.GetGroupNameByGroup(grpID)
    groups.append((groupName.lower(), (grpID, groupName)))

groupList = SortListOfTuples(groups)
groupIDs = set((each[0] for each in groupList))


def IsInteractableEntity(groupID):
    return groupID in groupIDs