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()
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'))
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'])
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)
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
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
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
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)
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)
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
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