NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

openFunctions.py (11495B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\menuSvcExtras\openFunctions.py
      2 import eveicon
      3 from carbonui.control.contextMenu.menuEntryData import MenuEntryData
      4 from carbonui.uicore import uicore
      5 from eve.client.script.environment import invControllers as invCtrl
      6 from eve.client.script.ui.shared.AuditLogSecureContainerLogViewer import AuditLogSecureContainerLogViewer
      7 from eve.client.script.ui.shared.bountyWindow import BountyWindow
      8 from eve.client.script.ui.shared.factionalWarfare.infrastructureHub import FWInfrastructureHub
      9 from eve.client.script.ui.shared.inventory.invWindow import Inventory
     10 from eve.client.script.ui.shared.sov.reagentBay.reagentBayWnd import OpenReagnetBay
     11 from eve.client.script.ui.station.repairshop.base_repairshop import RepairShopWindow
     12 from eve.client.script.ui.structure.dropbox.dropboxWnd import DropboxWnd
     13 from eve.common.lib import appConst as const
     14 from eve.common.script.sys import eveCfg
     15 from globalConfig.getFunctions import IsPlayerBountyHidden
     16 from inventorycommon.const import INVENTORY_ID_SHIP_CARGO
     17 from localization import GetByLabel
     18 from menu import MenuLabel, MenuList
     19 from player_messaging.client.ui_message import prompt_player_fsd_dialog
     20 
     21 def GetOpenShipHoldMenus(checker):
     22     entries = MenuList()
     23     itemID = checker.item.itemID
     24     if checker.OfferOpenCargoHold():
     25         entries.append(MenuEntryData(MenuLabel('UI/Commands/OpenCargoHold'), lambda : OpenShipHangarCargo([itemID]), texturePath=eveicon.inventory))
     26     if checker.OfferOpenDroneBay():
     27         entries += [[MenuLabel('UI/Commands/OpenDroneBay'), OpenDroneBay, [itemID]]]
     28     if checker.OfferOpenFighterBay():
     29         entries += [[MenuLabel('UI/Commands/OpenFighterBay'), OpenFighterBay, [itemID]]]
     30     if checker.OfferOpenFrigateEscapeBay():
     31         entries += [[MenuLabel('UI/Commands/OpenFrigateEscapeBay'), OpenFrigateEscapeBay, [itemID]]]
     32     if checker.OfferOpenShipMaintenanceBay():
     33         entries += [[MenuLabel('UI/Commands/OpenShipMaintenanceBay'), OpenShipMaintenanceBayShip, (itemID, GetByLabel('UI/Commands/OpenShipMaintenanceBayError'))]]
     34     if checker.OfferOpenFleetHangar():
     35         entries += [[MenuLabel('UI/Commands/OpenFleetHangar'), OpenFleetHangar, (itemID,)]]
     36     if checker.OfferOpenFuelBay():
     37         entries += [[MenuLabel('UI/Commands/OpenFuelBay'), OpenShipBay, [('ShipFuelBay', itemID)]]]
     38     if checker.OfferOpenGeneralMiningHold():
     39         entries += [[MenuLabel('UI/Commands/OpenGeneralMiningHold'), OpenShipBay, [('ShipGeneralMiningHold', itemID)]]]
     40     if checker.OfferOpenGasHold():
     41         entries += [[MenuLabel('UI/Commands/OpenGasHold'), OpenShipBay, [('ShipGasHold', itemID)]]]
     42     if checker.OfferOpenMineralHold():
     43         entries += [[MenuLabel('UI/Commands/OpenMineralHold'), OpenShipBay, [('ShipMineralHold', itemID)]]]
     44     if checker.OfferOpenSalvageHold():
     45         entries += [[MenuLabel('UI/Commands/OpenSalvageHold'), OpenShipBay, [('ShipSalvageHold', itemID)]]]
     46     if checker.OfferOpenShipHold():
     47         entries += [[MenuLabel('UI/Commands/OpenShipHold'), OpenShipBay, [('ShipShipHold', itemID)]]]
     48     if checker.OfferOpenSmallShipHold():
     49         entries += [[MenuLabel('UI/Commands/OpenSmallShipHold'), OpenShipBay, [('ShipSmallShipHold', itemID)]]]
     50     if checker.OfferOpenMediumShipHold():
     51         entries += [[MenuLabel('UI/Commands/OpenMediumShipHold'), OpenShipBay, [('ShipMediumShipHold', itemID)]]]
     52     if checker.OfferOpenLargeShipHold():
     53         entries += [[MenuLabel('UI/Commands/OpenLargeShipHold'), OpenShipBay, [('ShipLargeShipHold', itemID)]]]
     54     if checker.OfferOpenIndustrialShipHold():
     55         entries += [[MenuLabel('UI/Commands/OpenIndustrialShipHold'), OpenShipBay, [('ShipIndustrialShipHold', itemID)]]]
     56     if checker.OfferOpenAmmoHold():
     57         entries += [[MenuLabel('UI/Commands/OpenAmmoHold'), OpenShipBay, [('ShipAmmoHold', itemID)]]]
     58     if checker.OfferOpenCommandCenterHold():
     59         entries += [[MenuLabel('UI/Commands/OpenCommandCenterHold'), OpenShipBay, [('ShipCommandCenterHold', itemID)]]]
     60     if checker.OfferOpenPlanetaryCommoditiesHold():
     61         entries += [[MenuLabel('UI/PI/Common/OpenPlanetaryCommoditiesHold'), OpenShipBay, [('ShipPlanetaryCommoditiesHold', itemID)]]]
     62     if checker.OfferOpenQuafeBay():
     63         entries += [[MenuLabel('UI/Commands/OpenQuafeBay'), OpenShipBay, [('ShipQuafeHold', itemID)]]]
     64     if checker.OfferOpenCorpseBay():
     65         entries += [[MenuLabel('UI/Commands/OpenCorpseBay'), OpenShipBay, [('ShipCorpseHold', itemID)]]]
     66     if checker.OfferOpenBoosterBay():
     67         entries += [[MenuLabel('UI/Commands/OpenBoosterBay'), OpenShipBay, [('ShipBoosterHold', itemID)]]]
     68     if checker.OfferOpenSubsystemBay():
     69         entries += [[MenuLabel('UI/Commands/OpenSubsystemBay'), OpenShipBay, [('ShipSubsystemHold', itemID)]]]
     70     if checker.OfferOpenMobileDepotHold():
     71         entries += [[MenuLabel('UI/Commands/OpenMobileDepotHold'), OpenShipBay, [('ShipMobileDepotHold', itemID)]]]
     72     if checker.OfferOpenColonyResourcesHold():
     73         entries += [[MenuLabel('UI/Commands/OpenInfrastructureHold'), OpenShipBay, [('ShipColonyResourcesHold', itemID)]]]
     74     if checker.OfferOpenExpeditionHold():
     75         entries += [[MenuLabel('UI/Commands/OpenExpeditionHold'), OpenShipBay, [('ShipExpeditionHold', itemID)]]]
     76     return entries
     77 
     78 
     79 def OpenShipBay(invID):
     80     Inventory.OpenOrShow(invID=invID, openFromWnd=uicore.registry.GetActive())
     81 
     82 
     83 def OpenShipHangarCargo(itemIDs):
     84     usePrimary = len(itemIDs) == 1
     85     openFromWnd = uicore.registry.GetActive() if usePrimary else None
     86     for itemID in itemIDs:
     87         invID = (INVENTORY_ID_SHIP_CARGO, itemID)
     88         Inventory.OpenOrShow(invID=invID, usePrimary=usePrimary, openFromWnd=openFromWnd)
     89 
     90 
     91 def OpenDroneBay(itemIDs):
     92     usePrimary = len(itemIDs) == 1
     93     openFromWnd = uicore.registry.GetActive() if usePrimary else None
     94     for itemID in itemIDs:
     95         invID = ('ShipDroneBay', itemID)
     96         invCtrl.ShipDroneBay(itemID).GetItems()
     97         Inventory.OpenOrShow(invID=invID, usePrimary=usePrimary, openFromWnd=openFromWnd)
     98 
     99 
    100 def OpenFighterBay(itemIDs):
    101     usePrimary = len(itemIDs) == 1
    102     openFromWnd = uicore.registry.GetActive() if usePrimary else None
    103     for itemID in itemIDs:
    104         invID = ('ShipFighterBay', itemID)
    105         invCtrl.ShipFighterBay(itemID).GetItems()
    106         Inventory.OpenOrShow(invID=invID, usePrimary=usePrimary, openFromWnd=openFromWnd)
    107 
    108 
    109 def OpenFrigateEscapeBay(itemIDs):
    110     itemIDs = [itemIDs]
    111     usePrimary = len(itemIDs) == 1
    112     openFromWnd = uicore.registry.GetActive() if usePrimary else None
    113     for itemID in itemIDs:
    114         invID = ('ShipFrigateEscapeBay', itemID)
    115         invCtrl.ShipFrigateEscapeBay(itemID).GetItems()
    116         Inventory.OpenOrShow(invID=invID, usePrimary=usePrimary, openFromWnd=openFromWnd)
    117 
    118 
    119 def OpenShipMaintenanceBayShip(itemID, name):
    120     invID = ('ShipMaintenanceBay', itemID)
    121     if itemID != eveCfg.GetActiveShip() and not session.stationid:
    122         invCtrl.ShipMaintenanceBay(itemID).GetItems()
    123         sm.GetService('inv').AddTemporaryInvLocation(invID)
    124     Inventory.OpenOrShow(invID=invID)
    125 
    126 
    127 def OpenFleetHangar(itemID):
    128     invID = ('ShipFleetHangar', itemID)
    129     if itemID != eveCfg.GetActiveShip() and not session.stationid:
    130         invCtrl.ShipFleetHangar(itemID).GetItems()
    131         sm.GetService('inv').AddTemporaryInvLocation(invID)
    132     Inventory.OpenOrShow(invID=invID)
    133 
    134 
    135 def OpenInfrastructureHubPanel(itemID):
    136     occupierID = sm.GetService('facwar').GetSystemOccupier(session.solarsystemid)
    137     if occupierID == session.warfactionid:
    138         bp = sm.GetService('michelle').GetBallpark()
    139         distance = bp.GetSurfaceDist(session.shipid, itemID)
    140         if distance < const.facwarIHubInteractDist:
    141             FWInfrastructureHub.Open(itemID=itemID)
    142         else:
    143             prompt_player_fsd_dialog('InfrastructureHubCannotOpenDistance')
    144     else:
    145         prompt_player_fsd_dialog('InfrastructureHubCannotOpenFaction', {'factionName': cfg.eveowners.Get(occupierID).name})
    146 
    147 
    148 def OpenSovFuelDepositWindow(itemID, slimItem):
    149     ownerID = slimItem and slimItem.ownerID
    150     isOwner = ownerID == session.corpid
    151     isStationMgr = isOwner and bool(session.corprole & const.corpRoleStationManager)
    152     if not isStationMgr and not sm.GetService('sov').IsOnLocalSovHubFuelAccessGroup():
    153         raise UserError('NotOnLocalSovHubFuelAccessGroup')
    154     OpenReagnetBay(itemID, session.solarsystemid, isStationMgr)
    155 
    156 
    157 def OpenSovHubWindow(itemID):
    158     from eve.client.script.ui.shared.sov.sovHub.sovHubWnd import OpenSovHubWnd
    159     OpenSovHubWnd(itemID, session.solarsystemid)
    160 
    161 
    162 def OpenMercenaryDenWindow(itemID, typeID):
    163     from sovereignty.mercenaryden.client.ui.configuration_window import open_mercenary_den_window
    164     open_mercenary_den_window(itemID, typeID)
    165 
    166 
    167 def OpenCargoContainer(invItems):
    168     usePrimary = len(invItems) == 1
    169     openFromWnd = uicore.registry.GetActive() if usePrimary else None
    170     for item in invItems:
    171         if item.ownerID not in (session.charid, session.corpid):
    172             prompt_player_fsd_dialog('CantDoThatWithSomeoneElsesStuff')
    173             return
    174         invID = ('StationContainer', item.itemID)
    175         Inventory.OpenOrShow(invID=invID, usePrimary=usePrimary, openFromWnd=openFromWnd)
    176 
    177 
    178 def OpenBountyOffice(charID):
    179     if IsPlayerBountyHidden(sm.GetService('machoNet')):
    180         return
    181     wnd = BountyWindow.GetIfOpen()
    182     if not wnd:
    183         wnd = BountyWindow.Open()
    184     wnd.ownerID = charID
    185     wnd.ShowResult(charID)
    186 
    187 
    188 def ViewAuditLogForALSC(itemID):
    189     AuditLogSecureContainerLogViewer.CloseIfOpen()
    190     AuditLogSecureContainerLogViewer.Open(itemID=itemID)
    191 
    192 
    193 def RepairItems(items):
    194     if items is None or len(items) < 1:
    195         return
    196     wnd = RepairShopWindow.Open()
    197     if wnd and not wnd.destroyed:
    198         wnd.DisplayRepairQuote(items)
    199 
    200 
    201 def OpenProfileSettingsForStructure(itemID):
    202     corpStructures = sm.GetService('structureDirectory').GetCorporationStructures()
    203     structureInfo = corpStructures.get(itemID, None)
    204     if not structureInfo:
    205         return
    206     profileID = structureInfo['profileID']
    207     browserController = sm.GetService('structureControllers').GetStructureBrowserController()
    208     from eve.client.script.ui.structure.structureBrowser.structureBrowserWnd import StructureBrowserWnd
    209     settingID = 'TabNavigationWindowHeader%s' % StructureBrowserWnd.default_windowID
    210     browserController.SetProfileSettingsSelected(settingID)
    211     browserController.SelectProfile(profileID)
    212     wnd = StructureBrowserWnd.GetIfOpen()
    213     if wnd:
    214         wnd.ForceProfileSettingsSelected()
    215     else:
    216         StructureBrowserWnd.Open()
    217 
    218 
    219 def SimulateFitting(fitting, chargesToLoad = None):
    220     from eve.client.script.ui.shared.fittingScreen.fittingWnd import FittingWindow
    221     wnd = FittingWindow.GetIfOpen()
    222     if wnd:
    223         wnd.Maximize()
    224     else:
    225         uicore.cmd.GetCommandAndExecute('OpenFitting')
    226     sm.GetService('ghostFittingSvc').SimulateFitting(fitting, chargesToLoad=chargesToLoad)
    227 
    228 
    229 def OpenDropbox(structureID, structureTypeID, items = None):
    230     wnd = DropboxWnd.GetIfOpen()
    231     if wnd and not wnd.destroyed:
    232         if wnd.dropBoxController.structureID == structureID and wnd.dropBoxController.forShipID == session.shipid:
    233             wnd.Maximize()
    234             if items:
    235                 wnd.dropBoxController.AddManyItems(items)
    236             return
    237         wnd.Close()
    238     DropboxWnd.Open(structureID=structureID, structureTypeID=structureTypeID, itemsToTransfer=items)