eveCommands.py (148318B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\eveCommands.py 2 from __future__ import print_function 3 import sys 4 import blue 5 import bluepy 6 import carbon.client.script.sys.appUtils as appUtils 7 import carbonui.const as uiconst 8 import carbonui.services.command as command 9 import destiny 10 import eve.client.script.parklife.fxSequencer as FxSequencer 11 import eve.client.script.ui.shared.agencyNew.contentGroups.contentGroupConst as agencyContentGroupConst 12 import eve.common.lib.appConst as appConst 13 import eve.common.script.sys.eveCfg as eveCfg 14 import evecamera 15 import evegraphics.settings as gfxsettings 16 import evespacemouse 17 import inventorycommon.const as invConst 18 import localization 19 import shipmode.data 20 import structures 21 import trinity 22 import urllib 23 import urlparse 24 import uthread 25 import uthread2 26 from UITree import UITree 27 from achievement_system.client.ui.window.window import AchievementsWindow 28 from auraguidance.client.repository import aura_guidance_intro 29 from auraguidance.client.ui.window import AuraGuidanceWindow 30 from carbon.client.script.environment.AudioUtil import PlaySound 31 from carbon.client.script.environment.audioService import GetAudioService 32 from carbon.common.script.sys.serviceConst import ROLE_CONTENT, ROLE_GML, ROLE_PROGRAMMER, ROLEMASK_ELEVATEDPLAYER 33 from auraguidance.client.feature_flags import aura_guidance_enabled 34 from carbon.common.script.sys.sessions import ThrottlePerMinute 35 from carbonui.control.contextMenu.menuUtil import ClearMenuLayer 36 from carbonui.control.tabGroup import TabGroup 37 from carbonui.control.window import Window 38 from carbonui.services.command import CommandService 39 from carbonui.uicore import uicore 40 from carbonui.util.bunch import Bunch 41 from charactercreator.client.characterCreationMetrics import check_for_character_creation_exit 42 from eve.client.script.parklife import bracketSettings 43 from eve.client.script.parklife.dungeonHelper import IsJessicaOpen 44 from eve.client.script.ui.camera.cameraUtil import IsAutoTrackingEnabled 45 from eve.client.script.ui.comparison.comparisonSettings import use_new_comparison_tool 46 from eve.client.script.ui.comparison.comparisonWindow import ComparisonWindow 47 from eve.client.script.ui.cosmetics.ship.shipSKINRWindow import ShipSKINRWindow 48 from eve.client.script.ui.cosmetics.structure.paintToolWnd import PaintToolWnd 49 from eve.client.script.ui.eveCommandsDescFunctions import GetCmdLogoffHint 50 from eve.client.script.ui.inflight.capitalnavigation import CapitalNav 51 from eve.client.script.ui.inflight.drones.droneGroupsController import GetDroneGroupsController 52 from eve.client.script.ui.inflight.drones.droneSettings import drones_aggressive_setting, drones_focus_fire_setting 53 from eve.client.script.ui.inflight.drones.dronesUtil import GetDronesInBay 54 from eve.client.script.ui.inflight.dungeoneditor import DungeonEditor, DungeonObjectProperties 55 from eve.client.script.ui.inflight.mining_scan_results_window import MiningScanResultsWindow 56 from eve.client.script.ui.inflight.moonmining import MoonMining 57 from eve.client.script.ui.inflight.overview import overviewWindowUtil 58 from eve.client.script.ui.inflight.overviewSettings.overviewSettingsWnd import OverviewSettingsWnd 59 from eve.client.script.ui.inflight.probeScannerWindow import ProbeScannerWindow 60 from eve.client.script.ui.inflight.scannerFiles.directionalScannerWindow import DirectionalScanner 61 from eve.client.script.ui.inflight.scannerFiles.moonScanner import MoonScanner 62 from eve.client.script.ui.inflight.scannerFiles.scannerUtil import IsProbeScanEmbeddedPanelOpen 63 from eve.client.script.ui.inflight.shipHud.action_indication.hud_action_indication_controller import HudActionIndicationController, IndicationData 64 from eve.client.script.ui.inflight.shipstance import set_stance 65 from eve.client.script.ui.mapCmdWindow import MapCmdWindow 66 from eve.client.script.ui.omega.upsell.omegaUpsellWindow import OmegaUpsellWindow 67 from eve.client.script.ui.services.bugReporting import BugReportingWindow 68 from eve.client.script.ui.services.menuSvcExtras import movementFunctions, droneFunctions 69 from eve.client.script.ui.services.menuSvcExtras.movementFunctions import DockOrJumpOrActivateGate, KeepAtRange, Orbit 70 from eve.client.script.ui.services.menuSvcExtras.movementFunctions import WarpToItem, GetSelectedShipAndFighters 71 from eve.client.script.ui.shared.addressBookWindow import AddressBookWindow 72 from eve.client.script.ui.shared.agencyNew.ui.agencyWnd import AgencyWndNew 73 from eve.client.script.ui.shared.assetsWindow import AssetsWindow 74 from eve.client.script.ui.shared.autopilotSettings import AutopilotSettings 75 from eve.client.script.ui.shared.bookmarks.standaloneBookmarkWnd import StandaloneBookmarkWnd 76 from eve.client.script.ui.shared.bountyWindow import BountyWindow 77 from eve.client.script.ui.shared.careerPortal.careerPortalWnd import CareerPortalDockablePanel 78 from eve.client.script.ui.shared.cloneGrade import open_omega_upgrade_window 79 from eve.client.script.ui.shared.ctrltab import CtrlTabWindow 80 from eve.client.script.ui.shared.eveCalendar import CalendarWnd 81 from eve.client.script.ui.shared.fittingMgmtWindow import FittingMgmt 82 from eve.client.script.ui.shared.fittingScreen.fittingWnd import FittingWindow 83 from eve.client.script.ui.shared.fleet.fleetWatchList import WatchListPanel 84 from eve.client.script.ui.shared.fleet.fleetwindow import FleetWindow 85 from eve.client.script.ui.shared.industry.industryWnd import Industry 86 from eve.client.script.ui.shared.inventory import invWindow 87 from eve.client.script.ui.shared.inventory.invConst import ContainerType 88 from eve.client.script.ui.shared.inventory.invWindow import Inventory 89 from eve.client.script.ui.shared.ledger.ledgerWnd import LedgerWindow 90 from eve.client.script.ui.shared.mapView.dockPanelUtil import GetDockPanelManager 91 from eve.client.script.ui.shared.mapView.mapViewUtil import IsDirectionalScannerOpen 92 from eve.client.script.ui.shared.mapView.settings import classic_map_enabled_setting 93 from eve.client.script.ui.shared.mapView.solarSystemViewPanel import SolarSystemViewPanel 94 from eve.client.script.ui.shared.maps.browserwindow import MapBrowserWnd 95 from eve.client.script.ui.shared.market.marketOrdersWnd import MarketOrdersWnd 96 from eve.client.script.ui.shared.market.marketbase import RegionalMarket 97 from eve.client.script.ui.shared.messagebox import MessageBox 98 from eve.client.script.ui.shared.neocom.calculator import Calculator 99 from eve.client.script.ui.shared.neocom.characterSheetWindow import CharacterSheetWindow 100 from eve.client.script.ui.shared.neocom.charsheet import PANEL_JUMPCLONES 101 from eve.client.script.ui.shared.neocom.compare import TypeCompare 102 from eve.client.script.ui.shared.neocom.contracts.contractsWnd import ContractsWindow 103 from eve.client.script.ui.shared.neocom.corporation.corpPanelConst import CorpPanel 104 from eve.client.script.ui.shared.neocom.corporation.corporationWindow import CorporationWindow 105 from eve.client.script.ui.shared.neocom.evemail import MailWindow 106 from eve.client.script.ui.shared.neocom.help import HelpWindow 107 from eve.client.script.ui.shared.neocom.journal import JournalWindow 108 from eve.client.script.ui.shared.neocom.locations.window import LocationsWindow 109 from eve.client.script.ui.shared.neocom.neocom.neocomUtil import ResetNeocomButtons 110 from eve.client.script.ui.shared.neocom.notepad import NotepadWindow 111 from eve.client.script.ui.shared.neocom.wallet.walletWnd import WalletWindow 112 from eve.client.script.ui.shared.planet.mecDen.mercDenWnd import MyMercDensWnd 113 from eve.client.script.ui.shared.planet.planetWindow import PlanetWindow 114 from eve.client.script.ui.shared.pointerTool.pointerWnd import PointerToolWnd 115 from eve.client.script.ui.shared.preview import PreviewCharacterWnd 116 from eve.client.script.ui.shared.shipTree.shipTreeDockablePanel import ShipTreeDockablePanel 117 from eve.client.script.ui.shared.shipconfig import ShipConfig 118 from eve.client.script.ui.shared.theatersOfWar.dashboard.dashboard import TheatersOfWarDashboardWnd 119 import eve.client.script.ui.shared.theatersOfWar.util as theatersOfWarUtil 120 from eve.client.script.ui.shared.uilog import LoggerWindow 121 from eve.client.script.ui.shared.videowindow import VideoPlayerWindow 122 from eve.client.script.ui.skillPlan.skillPlanDockablePanel import SkillPlanDockablePanel 123 from eve.client.script.ui.skillTree.skillTreeDockablePanel import SkillTreeDockablePanel 124 from eve.client.script.ui.station.insurance.base_insurance import InsuranceWindow 125 from eve.client.script.ui.station.loyaltyPointStore.lpStoreWindow import LPStoreWindow 126 from eve.client.script.ui.station.repairshop.base_repairshop import RepairShopWindow 127 from eve.client.script.ui.station.securityOfficeWindow import SecurityOfficeWindow 128 from eve.client.script.ui.structure.accessGroups.accesGroupsWnd import AccessGroupsWnd 129 from eve.client.script.ui.structure.structureBrowser.structureBrowserWnd import StructureBrowserWnd 130 from eve.client.script.ui.view.viewStateConst import ViewState 131 from eve.common.script.net import eveMoniker 132 from eve.common.script.sys import idCheckers 133 from eve.common.script.util.facwarCommon import IsPirateFWFaction 134 from eve.common.script.util.urlUtil import get_url_with_token_and_parameters, get_eve_store_url, get_eve_secure_url 135 from eve.devtools.script.enginetools import EngineToolsLauncher 136 from eveNewCommands.client.escapeCommand import EscapeCommand 137 from eveNewCommands.client.escapeCommandAdapter import EscapeCommandAdapter 138 from evecamera.locationalcamera import get_orbit_camera_by_solar_system 139 from eveexceptions import UserError 140 from eveservices.menu import GetMenuService 141 from eveuniverse.solar_systems import is_tactical_camera_suppressed, is_map_browser_suppressed, is_directional_scanner_suppressed, is_scanning_suppressed, is_solarsystem_map_suppressed 142 from fsdBuiltData.client.effects import GetEffectGuids 143 from globalConfig.getFunctions import IsContentComplianceControlSystemActive 144 from globalConfig.getFunctions import IsPlayerBountyHidden, ArePointerLinksActive, AllowCharacterLogoff 145 from inventorycommon.util import IsModularShip 146 from itemcompression.client.ui.compress_in_space_controller import CompressInSpaceController 147 from jobboard.client import get_job_board_service 148 from jobboard.client.feature_flag import is_job_board_available, are_missions_in_job_board_available 149 from localization import GetByLabel 150 from localization.util import AmOnChineseServer 151 from logmodule import LogException 152 from loyaltypoints.lpUtil import get_normal_lp_stores_in_station 153 from menucheckers import SessionChecker 154 from player_messaging.client.ui_message import message_player, prompt_player_fsd_dialog 155 from projectdiscovery.client.windowclass import get_project_discovery_window_class 156 from reprocessing.ui.reprocessingWnd import ReprocessingWnd 157 from seasons.client.util import OpenSeasonsWindow 158 from shipfitting.multiBuyUtil import BuyMultipleTypesWithQty 159 from uthread2.callthrottlers import CallCombiner 160 from xmppchatclient.xmppchatchannels import XmppChatChannels 161 contextFiS = 1 162 contextIncarna = 2 163 labelsByFuncName = {'CmdAccelerate': 'UI/Commands/CmdAccelerate', 164 'CmdActivateHighPowerSlot1': 'UI/Commands/CmdActivateHighPowerSlot1', 165 'CmdActivateHighPowerSlot2': 'UI/Commands/CmdActivateHighPowerSlot2', 166 'CmdActivateHighPowerSlot3': 'UI/Commands/CmdActivateHighPowerSlot3', 167 'CmdActivateHighPowerSlot4': 'UI/Commands/CmdActivateHighPowerSlot4', 168 'CmdActivateHighPowerSlot5': 'UI/Commands/CmdActivateHighPowerSlot5', 169 'CmdActivateHighPowerSlot6': 'UI/Commands/CmdActivateHighPowerSlot6', 170 'CmdActivateHighPowerSlot7': 'UI/Commands/CmdActivateHighPowerSlot7', 171 'CmdActivateHighPowerSlot8': 'UI/Commands/CmdActivateHighPowerSlot8', 172 'CmdActivateLowPowerSlot1': 'UI/Commands/CmdActivateLowPowerSlot1', 173 'CmdActivateLowPowerSlot2': 'UI/Commands/CmdActivateLowPowerSlot2', 174 'CmdActivateLowPowerSlot3': 'UI/Commands/CmdActivateLowPowerSlot3', 175 'CmdActivateLowPowerSlot4': 'UI/Commands/CmdActivateLowPowerSlot4', 176 'CmdActivateLowPowerSlot5': 'UI/Commands/CmdActivateLowPowerSlot5', 177 'CmdActivateLowPowerSlot6': 'UI/Commands/CmdActivateLowPowerSlot6', 178 'CmdActivateLowPowerSlot7': 'UI/Commands/CmdActivateLowPowerSlot7', 179 'CmdActivateLowPowerSlot8': 'UI/Commands/CmdActivateLowPowerSlot8', 180 'CmdActivateMediumPowerSlot1': 'UI/Commands/CmdActivateMediumPowerSlot1', 181 'CmdActivateMediumPowerSlot2': 'UI/Commands/CmdActivateMediumPowerSlot2', 182 'CmdActivateMediumPowerSlot3': 'UI/Commands/CmdActivateMediumPowerSlot3', 183 'CmdActivateMediumPowerSlot4': 'UI/Commands/CmdActivateMediumPowerSlot4', 184 'CmdActivateMediumPowerSlot5': 'UI/Commands/CmdActivateMediumPowerSlot5', 185 'CmdActivateMediumPowerSlot6': 'UI/Commands/CmdActivateMediumPowerSlot6', 186 'CmdActivateMediumPowerSlot7': 'UI/Commands/CmdActivateMediumPowerSlot7', 187 'CmdActivateMediumPowerSlot8': 'UI/Commands/CmdActivateMediumPowerSlot8', 188 'CmdAlignToItem': 'UI/Commands/CmdAlignToItem', 189 'CmdApproachItem': 'UI/Commands/CmdApproachItem', 190 'CmdCycleFleetBroadcastScope': 'UI/Commands/CmdCycleFleetBroadcastScope', 191 'CmdDecelerate': 'UI/Commands/CmdDecelerate', 192 'CmdDockOrJumpOrActivateGate': 'UI/Commands/CmdDockOrJumpOrActivateGate', 193 'CmdDronesEngage': 'UI/Commands/CmdDronesEngage', 194 'CmdDronesReturnAndOrbit': 'UI/Commands/CmdDronesReturnAndOrbit', 195 'CmdDronesReturnToBay': 'UI/Commands/CmdDronesReturnToBay', 196 'CmdLaunchFavoriteDrones': 'UI/Drones/LaunchDrones', 197 'CmdExitStation': 'UI/Commands/CmdExitStation', 198 'CmdEnterHangar': 'UI/Commands/EnterHangar', 199 'CmdEnterStructure': 'UI/Commands/EnterStructure', 200 'CmdFleetBroadcast_EnemySpotted': 'UI/Fleet/FleetBroadcast/Commands/EnemySpotted', 201 'CmdFleetBroadcast_HealArmor': 'UI/Fleet/FleetBroadcast/Commands/HealArmor', 202 'CmdFleetBroadcast_HealCapacitor': 'UI/Fleet/FleetBroadcast/Commands/HealCapacitor', 203 'CmdFleetBroadcast_HealShield': 'UI/Fleet/FleetBroadcast/Commands/HealShield', 204 'CmdFleetBroadcast_HoldPosition': 'UI/Fleet/FleetBroadcast/Commands/HoldPosition', 205 'CmdFleetBroadcast_InPosition': 'UI/Fleet/FleetBroadcast/Commands/InPosition', 206 'CmdFleetBroadcast_JumpBeacon': 'UI/Fleet/FleetBroadcast/Commands/JumpBeacon', 207 'CmdFleetBroadcast_Location': 'UI/Fleet/FleetBroadcast/Commands/Location', 208 'CmdFleetBroadcast_NeedBackup': 'UI/Fleet/FleetBroadcast/Commands/NeedBackup', 209 'CmdForceFadeFromBlack': 'UI/Commands/CmdForceFadeFromBlack', 210 'CmdHideCursor': 'UI/Commands/CmdHideCursor', 211 'CmdHideUI': 'UI/Commands/CmdHideUI', 212 'CmdKeepItemAtRange': 'UI/Commands/CmdKeepItemAtRange', 213 'CmdLockTargetItem': 'UI/Commands/CmdLockTargetItem', 214 'CmdSelectTargetItem': 'UI/Commands/CmdSelectTargetItem', 215 'CmdLogOff': 'UI/Commands/CmdLogOff', 216 'CmdMoveBackward': 'UI/Commands/CmdMoveBackward', 217 'CmdMoveForward': 'UI/Commands/CmdMoveForward', 218 'CmdMoveLeft': 'UI/Commands/CmdMoveLeft', 219 'CmdMoveRight': 'UI/Commands/CmdMoveRight', 220 'CmdNextStackedWindow': 'UI/Commands/CmdNextStackedWindow', 221 'CmdNextTab': 'UI/Commands/CmdNextTab', 222 'CmdOpenNewMessage': 'UI/Commands/CmdOpenNewMessage', 223 'CmdOrbitItem': 'UI/Commands/CmdOrbitItem', 224 'CmdOverloadHighPowerRack': 'UI/Commands/CmdOverloadHighPowerRack', 225 'CmdOverloadHighPowerSlot1': 'UI/Commands/CmdOverloadHighPowerSlot1', 226 'CmdOverloadHighPowerSlot2': 'UI/Commands/CmdOverloadHighPowerSlot2', 227 'CmdOverloadHighPowerSlot3': 'UI/Commands/CmdOverloadHighPowerSlot3', 228 'CmdOverloadHighPowerSlot4': 'UI/Commands/CmdOverloadHighPowerSlot4', 229 'CmdOverloadHighPowerSlot5': 'UI/Commands/CmdOverloadHighPowerSlot5', 230 'CmdOverloadHighPowerSlot6': 'UI/Commands/CmdOverloadHighPowerSlot6', 231 'CmdOverloadHighPowerSlot7': 'UI/Commands/CmdOverloadHighPowerSlot7', 232 'CmdOverloadHighPowerSlot8': 'UI/Commands/CmdOverloadHighPowerSlot8', 233 'CmdOverloadLowPowerRack': 'UI/Commands/CmdOverloadLowPowerRack', 234 'CmdOverloadLowPowerSlot1': 'UI/Commands/CmdOverloadLowPowerSlot1', 235 'CmdOverloadLowPowerSlot2': 'UI/Commands/CmdOverloadLowPowerSlot2', 236 'CmdOverloadLowPowerSlot3': 'UI/Commands/CmdOverloadLowPowerSlot3', 237 'CmdOverloadLowPowerSlot4': 'UI/Commands/CmdOverloadLowPowerSlot4', 238 'CmdOverloadLowPowerSlot5': 'UI/Commands/CmdOverloadLowPowerSlot5', 239 'CmdOverloadLowPowerSlot6': 'UI/Commands/CmdOverloadLowPowerSlot6', 240 'CmdOverloadLowPowerSlot7': 'UI/Commands/CmdOverloadLowPowerSlot7', 241 'CmdOverloadLowPowerSlot8': 'UI/Commands/CmdOverloadLowPowerSlot8', 242 'CmdOverloadMediumPowerRack': 'UI/Commands/CmdOverloadMediumPowerRack', 243 'CmdOverloadMediumPowerSlot1': 'UI/Commands/CmdOverloadMediumPowerSlot1', 244 'CmdOverloadMediumPowerSlot2': 'UI/Commands/CmdOverloadMediumPowerSlot2', 245 'CmdOverloadMediumPowerSlot3': 'UI/Commands/CmdOverloadMediumPowerSlot3', 246 'CmdOverloadMediumPowerSlot4': 'UI/Commands/CmdOverloadMediumPowerSlot4', 247 'CmdOverloadMediumPowerSlot5': 'UI/Commands/CmdOverloadMediumPowerSlot5', 248 'CmdOverloadMediumPowerSlot6': 'UI/Commands/CmdOverloadMediumPowerSlot6', 249 'CmdOverloadMediumPowerSlot7': 'UI/Commands/CmdOverloadMediumPowerSlot7', 250 'CmdOverloadMediumPowerSlot8': 'UI/Commands/CmdOverloadMediumPowerSlot8', 251 'CmdPickPortrait0': 'UI/Commands/PickPortrait0', 252 'CmdPickPortrait1': 'UI/Commands/PickPortrait1', 253 'CmdPickPortrait2': 'UI/Commands/PickPortrait2', 254 'CmdPickPortrait3': 'UI/Commands/PickPortrait3', 255 'CmdPrevStackedWindow': 'UI/Commands/CmdPrevStackedWindow', 256 'CmdPrevTab': 'UI/Commands/CmdPrevTab', 257 'CmdQuitGame': 'UI/Commands/CmdQuitGame', 258 'CmdReconnectToDrones': 'UI/Commands/ReconnectToLostDrones', 259 'CmdReloadAmmo': 'UI/Commands/CmdReloadAmmo', 260 'CmdResetMonitor': 'UI/Commands/CmdResetMonitor', 261 'CmdSelectNextTarget': 'UI/Commands/CmdSelectNextTarget', 262 'CmdSelectPrevTarget': 'UI/Commands/CmdSelectPrevTarget', 263 'CmdSendBroadcast_Target': 'UI/Commands/CmdSendBroadcast_Target', 264 'CmdSendBroadcast_HealTarget': 'UI/Commands/CmdSendBroadcast_HealTarget', 265 'CmdSendBroadcast_WarpToItemID': 'UI/Fleet/FleetBroadcast/Commands/BroadcastWarpTo', 266 'CmdSendBroadcast_AlignToItemID': 'UI/Fleet/FleetBroadcast/Commands/BroadcastAlignTo', 267 'CmdSendBroadcast_JumpToItemID': 'UI/Fleet/FleetBroadcast/Commands/BroadcastJumpTo', 268 'CmdSetChatChannelFocus': 'UI/Commands/CmdSetChatChannelFocus', 269 'CmdSetSearchBarFocus': 'UI/Commands/CmdSetSearchBarFocus', 270 'CmdSetOverviewFocus': 'UI/Commands/CmdSetOverviewFocus', 271 'CmdSetShipFullSpeed': 'UI/Commands/CmdSetShipFullSpeed', 272 'CmdShowItemInfo': 'UI/Commands/CmdShowItemInfo', 273 'CmdStopShip': 'UI/Commands/CmdStopShip', 274 'CmdToggleAggressivePassive': 'UI/Commands/CmdToggleAggressivePassive', 275 'CmdToggleAutopilot': 'UI/Commands/CmdToggleAutopilot', 276 'CmdToggleCombatView': 'UI/Commands/CmdToggleCombatView', 277 'CmdToggleDroneFocusFire': 'UI/Commands/CmdToggleDroneFocusFire', 278 'CmdToggleEffects': 'UI/Commands/CmdToggleEffects', 279 'CmdToggleEffectTurrets': 'UI/Commands/CmdToggleEffectTurrets', 280 'CmdToggleLookAtItem': 'UI/Commands/CmdToggleLookAtItem', 281 'CmdToggleCameraTracking': 'UI/Commands/CmdToggleCameraTracking', 282 'CmdToggleShowAllBrackets': 'UI/Commands/CmdToggleShowAllBrackets', 283 'CmdToggleShowNoBrackets': 'UI/Commands/CmdToggleShowNoBrackets', 284 'CmdToggleShowSpecialBrackets': 'UI/Commands/CmdToggleShowSpecialBrackets', 285 'CmdToggleTacticalOverlay': 'UI/Commands/CmdToggleTacticalOverlay', 286 'CmdToggleMiningOverlay': 'UI/Commands/CmdToggleMiningOverlay', 287 'CmdToggleTargetItem': 'UI/Commands/CmdToggleTargetItem', 288 'CmdUnlockTargetItem': 'UI/Commands/CmdUnlockTargetItem', 289 'CmdUnlockTargetItems': 'UI/Commands/CmdUnlockTargetItems', 290 'CmdWarpToItem': 'UI/Commands/CmdWarpToItem', 291 'CmdOpenRadialMenu': 'UI/Commands/CmdOpenRadialMenu', 292 'CmdOpenBroadcastRadialMenu': 'UI/Commands/CmdOpenBroadcastRadialMenu', 293 'CmdRefreshDirectionalScan': 'UI/Commands/CmdRefreshDirectionalScan', 294 'CmdToggleAutoTracking': 'UI/Commands/CmdToggleAutoTracking', 295 'WinCmdToggleWindowed': 'UI/Commands/WinCmdToggleWindowed', 296 'CmdSetCameraPOV': 'UI/Commands/CmdSetCameraPOV', 297 'CmdSetCameraOrbit': 'UI/Commands/CmdSetCameraOrbit', 298 'CmdSetCameraTactical': 'UI/Commands/CmdSetCameraTactical', 299 'CmdTagItem_1': 'UI/Commands/CmdTagItem_1', 300 'CmdTagItem_2': 'UI/Commands/CmdTagItem_2', 301 'CmdTagItem_3': 'UI/Commands/CmdTagItem_3', 302 'CmdTagItem_A': 'UI/Commands/CmdTagItem_A', 303 'CmdTagItem_B': 'UI/Commands/CmdTagItem_B', 304 'CmdTagItem_C': 'UI/Commands/CmdTagItem_C', 305 'CmdTagItem_X': 'UI/Commands/CmdTagItem_X', 306 'CmdTagItem_Y': 'UI/Commands/CmdTagItem_Y', 307 'CmdTagItem_Z': 'UI/Commands/CmdTagItem_Z', 308 'CmdTagItem_None': 'UI/Commands/CmdTagItem_None', 309 'CmdTagItem_123': 'UI/Commands/CmdTagItem_123', 310 'CmdTagItem_ABC': 'UI/Commands/CmdTagItem_ABC', 311 'CmdTagItem_XYZ': 'UI/Commands/CmdTagItem_XYZ', 312 'CmdTagItem_123456789': 'UI/Commands/CmdTagItem_123456789', 313 'CmdTagItem_ABCDEFGHI': 'UI/Commands/CmdTagItem_ABCDEFGHI', 314 'CmdToggleSensorOverlay': 'UI/Commands/CmdToggleSensorOverlay', 315 'CmdCreateBookmark': 'UI/Inflight/BookmarkLocation', 316 'ToggleAurumStore': 'UI/Commands/OpenStore', 317 'ToggleRedeemItems': 'UI/Commands/RedeemItems', 318 'ToggleActivities': 'UI/Commands/Activities', 319 'CmdFlightControlsUp': 'UI/Commands/CmdFlightControlsUp', 320 'CmdFlightControlsDown': 'UI/Commands/CmdFlightControlsDown', 321 'CmdFlightControlsLeft': 'UI/Commands/CmdFlightControlsLeft', 322 'CmdFlightControlsRight': 'UI/Commands/CmdFlightControlsRight', 323 'CmdToggleSystemMenu': 'UI/Commands/CmdToggleSystemMenu', 324 'CmdSetDefenceStance': 'UI/Commands/CmdSetDefenceStance', 325 'CmdSetSniperStance': 'UI/Commands/CmdSetSniperStance', 326 'CmdSetSpeedStance': 'UI/Commands/CmdSetSpeedStance', 327 'CmdToggleProjectDiscovery': 'UI/Commands/CmdToggleProjectDiscovery', 328 'CmdRefreshProbeScan': 'UI/Commands/CmdRefreshProbeScan', 329 'CmdLaunchAllFighters': 'UI/Fighters/ShortcutLaunchAllFighters', 330 'CmdRecallAllFightersToTubes': 'UI/Fighters/ShortcutRecallAllFighter', 331 'CmdLaunchSelectedFighters': 'UI/Fighters/ShortcutLaunchSelectedFighter', 332 'CmdRecallSelectedFightersToTubes': 'UI/Fighters/ShortcutRecallSelectedFighters', 333 'CmdSelectAllFighters': 'UI/Fighters/ShortcutSelectAllFighter', 334 'CmdDeselectAllFighters': 'UI/Fighters/ShortcutDeselectAllFighter', 335 'CmdToggleShipSelection': 'UI/Fighters/ShortcutToggleShipSelection', 336 'CmdToggleTubeSelection_0': 'UI/Fighters/ShortcutToggleTube1Selection', 337 'CmdToggleTubeSelection_1': 'UI/Fighters/ShortcutToggleTube2Selection', 338 'CmdToggleTubeSelection_2': 'UI/Fighters/ShortcutToggleTube3Selection', 339 'CmdToggleTubeSelection_3': 'UI/Fighters/ShortcutToggleTube4Selection', 340 'CmdToggleTubeSelection_4': 'UI/Fighters/ShortcutToggleTube5Selection', 341 'CmdToggle3DView': 'UI/Commands/CmdToggle3DView'} 342 CATEGORIES = {'window': 'UI/SystemMenu/Shortcuts/WindowTab', 343 'combat': 'UI/SystemMenu/Shortcuts/CombatTab', 344 'general': 'UI/SystemMenu/Shortcuts/GeneralTab', 345 'navigation': 'UI/SystemMenu/Shortcuts/NavigationTab', 346 'modules': 'UI/SystemMenu/Shortcuts/ModulesTab', 347 'drones': 'UI/SystemMenu/Shortcuts/DronesTab', 348 'fighters': 'UI/Common/Fighters', 349 'charactercreator': 'UI/CharacterCreation', 350 'movement': 'UI/SystemMenu/Shortcuts/CharacterMovementTab'} 351 RULE_NOT_ALLOWED_WITH_MODIFIERS = 'notAllowedWithModifiers' 352 353 class EveCommandService(CommandService): 354 __guid__ = 'svc.eveCmd' 355 __displayname__ = 'Command service' 356 __replaceservice__ = 'cmd' 357 __notifyevents__ = ['OnSessionChanged', 'OnGlobalConfigChanged', 'OnApplicationFocusChanged'] 358 __categoryToContext__ = {'general': (contextFiS, contextIncarna), 359 'window': (contextFiS, contextIncarna), 360 'combat': (contextFiS,), 361 'drones': (contextFiS,), 362 'fighters': (contextFiS,), 363 'modules': (contextFiS,), 364 'navigation': (contextFiS,), 365 'movement': (contextIncarna,), 366 'charactercreator': (contextIncarna,)} 367 __dependencies__ = CommandService.__dependencies__ + ['menu', 'machoNet'] 368 __startupdependencies__ = CommandService.__startupdependencies__ + ['command_blocker'] 369 extraShortcutRules = {'CmdOpenBroadcastRadialMenu': {RULE_NOT_ALLOWED_WITH_MODIFIERS: (uiconst.VK_MBUTTON, uiconst.VK_XBUTTON1, uiconst.VK_XBUTTON2)}} 370 371 def Run(self, memStream = None): 372 CommandService.Run(self, memStream) 373 self.combatFunctionLoaded = None 374 self.combatCmdLoaded = None 375 self.combatCmdCurrentHasExecuted = False 376 self.combatCmdUnloadFunc = None 377 self.contextToCommand = {} 378 self.disabledCommands = set() 379 self.labelsByFuncName.update(labelsByFuncName) 380 self._telemetrySessionActive = False 381 self.isCmdQuitPending = False 382 self.commandMemory = {} 383 self.openingWndsAutomatically = False 384 self.SetSpeedFractionThrottled = CallCombiner(self.SetSpeedFraction, 0.3) 385 386 def Reload(self, forceGenericOnly = False): 387 CommandService.Reload(self, forceGenericOnly) 388 self.contextToCommand = {} 389 self.LoadAllAccelerators() 390 self.commandMemory = {} 391 392 def OnSessionChanged(self, isRemote, sess, change): 393 CommandService.OnSessionChanged(self, isRemote, sess, change) 394 if 'locationid' in change: 395 self.LoadAllAccelerators() 396 397 def OnGlobalConfigChanged(self, config): 398 self.Reload() 399 400 def LoadAllAccelerators(self): 401 self.commandMap.UnloadAllAccelerators() 402 self.commandMap.LoadAcceleratorsByCategory('general') 403 self.commandMap.LoadAcceleratorsByCategory('window') 404 if getattr(session, 'locationid', None): 405 if idCheckers.IsStation(session.locationid): 406 self.commandMap.LoadAcceleratorsByCategory('movement') 407 else: 408 self.commandMap.LoadAcceleratorsByCategory('combat') 409 self.commandMap.LoadAcceleratorsByCategory('drones') 410 self.commandMap.LoadAcceleratorsByCategory('fighters') 411 self.commandMap.LoadAcceleratorsByCategory('modules') 412 self.commandMap.LoadAcceleratorsByCategory('navigation') 413 414 def OnApplicationFocusChanged(self, hasFocus): 415 if hasFocus: 416 uthread.new(self._CheckLoadCombatCommand) 417 418 def _CheckLoadCombatCommand(self): 419 if getattr(session, 'locationid', None) and idCheckers.IsSolarSystem(session.locationid): 420 cmds = self.commandMap.GetAllCommands() 421 combatCmds = [ cmd for cmd in cmds if cmd.category == 'combat' ] 422 for cmd in combatCmds: 423 allPressed = True 424 if not cmd.shortcut: 425 continue 426 for key in cmd.shortcut: 427 if not uicore.uilib.Key(key): 428 allPressed = False 429 430 if allPressed: 431 cmd.callback() 432 return 433 434 def GetExtraShortcutRulesForCmd(self, cmdName): 435 return self.extraShortcutRules.get(cmdName, None) 436 437 def GetCategoryContext(self, category): 438 return self.__categoryToContext__[category] 439 440 def CheckContextIntersection(self, context1, context2): 441 for context in context1: 442 if context in context2: 443 return True 444 445 return False 446 447 def CheckDuplicateShortcuts(self): 448 for cmd in self.defaultShortcutMapping: 449 for cmdCheck in self.defaultShortcutMapping: 450 if cmdCheck.shortcut: 451 sameName = cmdCheck.name == cmd.name 452 sameShortcut = cmdCheck.shortcut == cmd.shortcut 453 cmdCheckContext = self.__categoryToContext__[cmdCheck.category] 454 cmdContext = self.__categoryToContext__[cmd.category] 455 sameContext = self.CheckContextIntersection(cmdCheckContext, cmdContext) 456 if sameShortcut and sameContext and not sameName: 457 self.LogError('Same default shortcut used for multiple commands:', cmd) 458 459 def SetDefaultShortcutMappingGAME(self): 460 ret = [] 461 c = command.CommandMapping 462 CTRL = uiconst.VK_CONTROL 463 ALT = uiconst.VK_MENU 464 SHIFT = uiconst.VK_SHIFT 465 COMMAND = uiconst.VK_LWIN 466 467 def k(win, mac): 468 if sys.platform.startswith('darwin'): 469 return mac 470 return win 471 472 m = [c(self.CmdOverloadLowPowerRack, (CTRL, uiconst.VK_1)), 473 c(self.CmdOverloadMediumPowerRack, (CTRL, uiconst.VK_2)), 474 c(self.CmdOverloadHighPowerRack, (CTRL, uiconst.VK_3)), 475 c(self.CmdReloadAmmo, (CTRL, uiconst.VK_R)), 476 c(self.CmdMiningScan, None)] 477 for i in xrange(1, 9): 478 key = getattr(uiconst, 'VK_F%s' % i) 479 m.extend([c(getattr(self, 'CmdActivateHighPowerSlot%s' % i), key), 480 c(getattr(self, 'CmdActivateMediumPowerSlot%s' % i), (ALT, key)), 481 c(getattr(self, 'CmdActivateLowPowerSlot%s' % i), (k(win=CTRL, mac=COMMAND), key)), 482 c(getattr(self, 'CmdOverloadHighPowerSlot%s' % i), (SHIFT, key)), 483 c(getattr(self, 'CmdOverloadMediumPowerSlot%s' % i), (ALT, SHIFT, key)), 484 c(getattr(self, 'CmdOverloadLowPowerSlot%s' % i), (k(win=CTRL, mac=COMMAND), SHIFT, key))]) 485 486 for cm in m: 487 cm.category = 'modules' 488 ret.append(cm) 489 490 m = [c(self.CmdSelectPrevTarget, k(win=(ALT, uiconst.VK_LEFT), mac=(CTRL, uiconst.VK_OEM_PERIOD))), 491 c(self.CmdSelectNextTarget, k(win=(ALT, uiconst.VK_RIGHT), mac=(CTRL, uiconst.VK_OEM_COMMA))), 492 c(self.CmdToggleAutopilot, (CTRL, uiconst.VK_S)), 493 c(self.CmdToggleTacticalOverlay, (CTRL, uiconst.VK_D)), 494 c(self.CmdDecelerate, uiconst.VK_SUBTRACT, repeatable=True), 495 c(self.CmdAccelerate, uiconst.VK_ADD, repeatable=True), 496 c(self.CmdStopShip, (k(win=CTRL, mac=SHIFT), uiconst.VK_SPACE)), 497 c(self.CmdSetShipFullSpeed, (ALT, CTRL, uiconst.VK_SPACE)), 498 c(self.CmdFlightControlsUp, uiconst.VK_UP), 499 c(self.CmdFlightControlsDown, uiconst.VK_DOWN), 500 c(self.CmdFlightControlsLeft, uiconst.VK_LEFT), 501 c(self.CmdFlightControlsRight, uiconst.VK_RIGHT), 502 c(self.CmdToggleShowAllBrackets, (ALT, uiconst.VK_Z)), 503 c(self.CmdToggleShowNoBrackets, (ALT, SHIFT, uiconst.VK_Z)), 504 c(self.CmdToggleShowSpecialBrackets, (ALT, SHIFT, uiconst.VK_X)), 505 c(self.CmdFleetBroadcast_EnemySpotted, uiconst.VK_Z), 506 c(self.CmdFleetBroadcast_NeedBackup, None), 507 c(self.CmdFleetBroadcast_HealArmor, None), 508 c(self.CmdFleetBroadcast_HealShield, None), 509 c(self.CmdFleetBroadcast_HealCapacitor, None), 510 c(self.CmdFleetBroadcast_InPosition, None), 511 c(self.CmdFleetBroadcast_HoldPosition, None), 512 c(self.CmdFleetBroadcast_JumpBeacon, None), 513 c(self.CmdFleetBroadcast_Location, None), 514 c(self.CmdSendBroadcast_Target, uiconst.VK_X), 515 c(self.CmdSendBroadcast_HealTarget, None), 516 c(self.CmdSendBroadcast_WarpToItemID, None), 517 c(self.CmdSendBroadcast_AlignToItemID, None), 518 c(self.CmdSendBroadcast_JumpToItemID, None), 519 c(self.CmdCycleFleetBroadcastScope, None), 520 c(self.CmdSetCameraTactical, (ALT, uiconst.VK_1)), 521 c(self.CmdSetCameraOrbit, (ALT, uiconst.VK_2)), 522 c(self.CmdSetCameraPOV, (ALT, uiconst.VK_3)), 523 c(self.CmdToggleSensorOverlay, (CTRL, uiconst.VK_O)), 524 c(self.CmdCreateBookmark, (CTRL, uiconst.VK_B)), 525 c(self.CmdFleetGroup, None), 526 c(self.CmdClearFleetBroadcastIcons, None)] 527 if evespacemouse.IsEnabled(): 528 m += [c(self.CmdIncreaseSpaceMouseSpeed, None, repeatable=True), 529 c(self.CmdDecreaseSpaceMouseSpeed, None, repeatable=True), 530 c(self.CmdIncreaseSpaceMouseAcceleration, None, repeatable=True), 531 c(self.CmdDecreaseSpaceMouseAcceleration, None, repeatable=True)] 532 for cm in m: 533 cm.category = 'navigation' 534 ret.append(cm) 535 536 m = [c(self.CmdDronesEngage, (uiconst.VK_F,)), 537 c(self.CmdDronesReturnAndOrbit, (SHIFT, ALT, uiconst.VK_R)), 538 c(self.CmdDronesReturnToBay, (SHIFT, uiconst.VK_R)), 539 c(self.CmdReconnectToDrones, None), 540 c(self.CmdToggleAggressivePassive, None), 541 c(self.CmdToggleDroneFocusFire, None), 542 c(self.CmdLaunchFavoriteDrones, (SHIFT, uiconst.VK_F))] 543 for cm in m: 544 cm.category = 'drones' 545 ret.append(cm) 546 547 m = [c(self.CmdLaunchAllFighters, None), 548 c(self.CmdRecallAllFightersToTubes, None), 549 c(self.CmdLaunchSelectedFighters, None), 550 c(self.CmdRecallSelectedFightersToTubes, None), 551 c(self.CmdSelectAllFighters, None), 552 c(self.CmdDeselectAllFighters, None), 553 c(self.CmdToggleShipSelection, None), 554 c(self.CmdToggleTubeSelection_0, None), 555 c(self.CmdToggleTubeSelection_1, None), 556 c(self.CmdToggleTubeSelection_2, None), 557 c(self.CmdToggleTubeSelection_3, None), 558 c(self.CmdToggleTubeSelection_4, None)] 559 for cm in m: 560 cm.category = 'fighters' 561 ret.append(cm) 562 563 m = [c(self.CmdPrevStackedWindow, (CTRL, SHIFT, uiconst.VK_PRIOR)), 564 c(self.CmdNextStackedWindow, (CTRL, SHIFT, uiconst.VK_NEXT)), 565 c(self.CmdPrevTab, (CTRL, uiconst.VK_PRIOR)), 566 c(self.CmdNextTab, (CTRL, uiconst.VK_NEXT)), 567 c(self.CmdExitStation, None), 568 c(self.CmdAbortUndock, None), 569 c(self.CmdEnterHangar, None), 570 c(self.CmdEnterStructure, None), 571 c(self.CmdHideUI, (CTRL, uiconst.VK_F9)), 572 c(self.CmdHideCursor, (ALT, uiconst.VK_F9)), 573 c(self.CmdToggle3DView, (CTRL, SHIFT, uiconst.VK_F9)), 574 c(self.CmdToggleEffects, (CTRL, 575 ALT, 576 SHIFT, 577 uiconst.VK_E)), 578 c(self.CmdToggleEffectTurrets, (CTRL, 579 ALT, 580 SHIFT, 581 uiconst.VK_T)), 582 c(self.CmdOpenRadialMenu, None, hintPath='UI/SystemMenu/Shortcuts/RadialMenuHint'), 583 c(self.CmdOpenBroadcastRadialMenu, None, hintPath='UI/SystemMenu/Shortcuts/BroadcastRadialMenuHint'), 584 c(self.CmdZoomIn, (CTRL, SHIFT, uiconst.VK_A), repeatable=True), 585 c(self.CmdZoomOut, (CTRL, SHIFT, uiconst.VK_Z), repeatable=True), 586 c(self.CmdToggleSystemMenu, None, enabled=False), 587 c(self.CmdSetSearchBarFocus, (SHIFT, uiconst.VK_S)), 588 c(self.CmdCompressAllOreInCurrentship, None), 589 c(self.CmdOpenSelectedCargoContainer, None)] 590 ret.extend(m) 591 if bool(session.role & ROLE_CONTENT): 592 ret.append(c(self.OpenDungeonEditor, (CTRL, SHIFT, uiconst.VK_D))) 593 if bool(session.role & ROLEMASK_ELEVATEDPLAYER): 594 ret.append(c(self.CmdToggleCombatView, (CTRL, ALT, uiconst.VK_T))) 595 m = [c(self.CmdToggleTargetItem, None), 596 c(self.CmdLockTargetItem, CTRL), 597 c(self.CmdSelectTargetItem, SHIFT), 598 c(self.CmdUnlockTargetItem, (CTRL, SHIFT)), 599 c(self.CmdUnlockTargetItems, None), 600 c(self.CmdToggleLookAtItem, ALT), 601 c(self.CmdToggleCameraTracking, uiconst.VK_C), 602 c(self.CmdApproachItem, uiconst.VK_Q), 603 c(self.CmdAlignToItem, uiconst.VK_A), 604 c(self.CmdOrbitItem, uiconst.VK_W), 605 c(self.CmdKeepItemAtRange, uiconst.VK_E), 606 c(self.CmdShowItemInfo, uiconst.VK_T), 607 c(self.CmdDockOrJumpOrActivateGate, uiconst.VK_D), 608 c(self.CmdWarpToItem, uiconst.VK_S), 609 c(self.MakeCmdTagItem('1'), uiconst.VK_1), 610 c(self.MakeCmdTagItem('2'), uiconst.VK_2), 611 c(self.MakeCmdTagItem('3'), uiconst.VK_3), 612 c(self.MakeCmdTagItem('A'), uiconst.VK_4), 613 c(self.MakeCmdTagItem('B'), uiconst.VK_5), 614 c(self.MakeCmdTagItem('C'), uiconst.VK_6), 615 c(self.MakeCmdTagItem('X'), None), 616 c(self.MakeCmdTagItem('Y'), None), 617 c(self.MakeCmdTagItem('Z'), None), 618 c(self.MakeCmdTagItem(None), None), 619 c(self.MakeCmdTagItemFromSequence(['1', '2', '3']), uiconst.VK_7), 620 c(self.MakeCmdTagItemFromSequence(['A', 'B', 'C']), uiconst.VK_8), 621 c(self.MakeCmdTagItemFromSequence(['X', 'Y', 'Z']), uiconst.VK_9), 622 c(self.MakeCmdTagItemFromSequence(['1', 623 '2', 624 '3', 625 '4', 626 '5', 627 '6', 628 '7', 629 '8', 630 '9']), None), 631 c(self.MakeCmdTagItemFromSequence(['A', 632 'B', 633 'C', 634 'D', 635 'E', 636 'F', 637 'G', 638 'H', 639 'I']), None), 640 c(self.CmdSetDefenceStance, (SHIFT, uiconst.VK_1)), 641 c(self.CmdSetSniperStance, (SHIFT, uiconst.VK_2)), 642 c(self.CmdSetSpeedStance, (SHIFT, uiconst.VK_3)), 643 c(self.CmdIncreaseProbeScanRange, None), 644 c(self.CmdDecreaseProbeScanRange, None), 645 c(self.CmdRefreshProbeScan, uiconst.VK_B), 646 c(self.CmdRefreshDirectionalScan, uiconst.VK_V), 647 c(self.CmdToggleAutoTracking, (SHIFT, uiconst.VK_C)), 648 c(self.CmdGetLocationMenuForNavigation, None)] 649 for cm in m: 650 cm.category = 'combat' 651 ret.append(cm) 652 653 m = [c(self.CmdOpenNewMessage, None), 654 c(self.CmdSetChatChannelFocus, uiconst.VK_SPACE), 655 c(self.CmdSetOverviewFocus, (ALT, uiconst.VK_SPACE)), 656 c(self.CmdToggleMap, uiconst.VK_F10), 657 c(self.CmdToggleSolarSystemMap, uiconst.VK_F9), 658 c(self.CmdToggleShipTree, None), 659 c(self.OpenAssets, (ALT, uiconst.VK_T)), 660 c(self.OpenCalculator, None), 661 c(self.OpenCalendar, None), 662 c(self.OpenCapitalNavigation, None), 663 c(self.OpenCargoHoldOfActiveShip, None), 664 c(self.OpenGeneralMiningHoldOfActiveShip, None), 665 c(self.OpenMineralHoldOfActiveShip, None), 666 c(self.OpenPlanetaryCommoditiesHoldOfActiveShip, None), 667 c(self.OpenFuelBayOfActiveShip, None), 668 c(self.OpenFwEnlistment, None), 669 c(self.OpenInsurgencyDashboard, None), 670 c(self.OpenRelevantFWWindow, None), 671 c(self.ToggleTheatersOfWarWindow, None), 672 c(self.OpenAmmoHoldOfActiveShip, None), 673 c(self.OpenFleetHangarOfActiveShip, None), 674 c(self.OpenShipMaintenanceOfBayActiveShip, None), 675 c(self.OpenInfrastructureBayOfActiveShip, None), 676 c(self.OpenChannels, None), 677 c(self.OpenCharactersheet, (ALT, uiconst.VK_A)), 678 c(self.OpenConfigMenu, None), 679 c(self.OpenContracts, None), 680 c(self.OpenCorpDeliveries, None), 681 c(self.OpenCorporationItemDeliveries, None), 682 c(self.OpenCorpHangar, None), 683 c(self.OpenCorporationPanel, None), 684 c(self.OpenDroneBayOfActiveShip, None), 685 c(self.OpenFighterBayOfActiveShip, None), 686 c(self.OpenIndustry, (ALT, uiconst.VK_S)), 687 c(self.OpenFitting, (ALT, uiconst.VK_F)), 688 c(self.OpenFleet, None), 689 c(self.OpenFpsMonitor, (CTRL, uiconst.VK_F)), 690 c(self.OpenHangarFloor, (ALT, uiconst.VK_G)), 691 c(self.OpenPlexVault, None), 692 c(self.OpenHelp, uiconst.VK_F12), 693 c(self.OpenInsurance, None), 694 c(self.OpenAgencyNew, (ALT, uiconst.VK_M)), 695 c(self.OpenLoginRewardWindow, None), 696 c(self.OpenLog, None), 697 c(self.OpenLpstore, None), 698 c(self.OpenMail, (ALT, uiconst.VK_I)), 699 c(self.OpenMapBrowser, k(win=uiconst.VK_F11, mac=(ALT, uiconst.VK_B))), 700 c(self.OpenMarket, (ALT, uiconst.VK_R)), 701 c(self.OpenMarketOrders, (ALT, uiconst.VK_O)), 702 c(self.OpenMultibuy, None), 703 c(self.OpenMedical, None), 704 c(self.OpenMilitia, None), 705 c(self.OpenMiningScanResultsWindow, None), 706 c(self.OpenMoonMining, None), 707 c(self.OpenNotepad, None), 708 c(self.OpenOverviewSettings, None), 709 c(self.OpenPeopleAndPlaces, (ALT, uiconst.VK_E)), 710 c(self.OpenCharacterCustomization, None), 711 c(self.OpenRepairshop, None), 712 c(self.OpenReprocessingPlant, None), 713 c(self.ToggleProbeScanner, (ALT, uiconst.VK_P)), 714 c(self.OpenDirectionalScanner, (ALT, uiconst.VK_D)), 715 c(self.OpenMoonScan, None), 716 c(self.OpenSecurityOffice, None), 717 c(self.OpenShipConfig, None), 718 c(self.OpenShipHangar, (ALT, uiconst.VK_N)), 719 c(self.OpenInventory, (ALT, uiconst.VK_C)), 720 c(self.OpenSkillsWindow, (ALT, uiconst.VK_X)), 721 c(self.OpenWallet, (ALT, uiconst.VK_W)), 722 c(self.CmdForceFadeFromBlack, (SHIFT, uiconst.VK_BACK)), 723 c(self.OpenCompare, None), 724 c(self.OpenEveMenu, uiconst.VK_OEM_5), 725 c(self.OpenFittingMgmt, None), 726 c(self.ToggleAurumStore, (ALT, uiconst.VK_4)), 727 c(self.ToggleRedeemItems, (ALT, uiconst.VK_Y)), 728 c(self.OpenPlanets, None), 729 c(self.OpenMyMercenaryDens, None), 730 c(self.OpenStructureBrowser, None), 731 c(self.OpenAccessGroupsWindow, None), 732 c(self.OpenLedger, None), 733 c(self.OpenSeason, None), 734 c(self.OpenContextualOffersWindow, None), 735 c(self.OpenPVPFilamentEventWindow, None), 736 c(self.CmdGetUiPointer, None), 737 c(self.OpenCombatAnomaliesInAgency, None), 738 c(self.OpenEncounterSurveillanceSystemInAgency, None), 739 c(self.CmdToggleAirCareerProgram, None), 740 c(self.OpenFrigateEscapeBay, None), 741 c(self.OpenManageRoute, None), 742 c(self.OpenFleetWatchlist, None), 743 c(self.OpenPaintToolWindow, None), 744 c(self.OpenShipSKINRWindow, None), 745 c(self.OpenOmegaUpsellWindow, None)] 746 m.append(c(self.OpenAchievementsWindow, None)) 747 m.append(c(self.OpenLocations, uiconst.VK_L)) 748 m.append(c(self.ToggleCurrentSystemLocationWnd, None)) 749 if sm.GetService('raffleSvc').is_available: 750 m.append(c(self.OpenRaffleWindow, None)) 751 if is_job_board_available(): 752 m.append(c(self.OpenJobBoardWindow, (ALT, uiconst.VK_J))) 753 if not are_missions_in_job_board_available(): 754 m.append(c(self.OpenJournal, (ALT, None))) 755 else: 756 m.append(c(self.OpenJournal, (ALT, uiconst.VK_J))) 757 if aura_guidance_enabled(): 758 m.append(c(self.OpenAuraGuidance, None)) 759 if ArePointerLinksActive(sm.GetService('machoNet')): 760 m += [c(self.OpenPointerWnd, None)] 761 if not IsPlayerBountyHidden(sm.GetService('machoNet')): 762 m.append(c(self.OpenBountyOffice, None)) 763 if not AmOnChineseServer(): 764 m.append(c(self.ToggleProjectDiscovery, None)) 765 if bool(session.role & ROLE_PROGRAMMER): 766 m.append(c(self.OpenUIDebugger, None)) 767 m.append(c(self.ToggleTelemetryRecord, None)) 768 m.append(c(self.ToggleUILinearColor, None)) 769 m.append(c(self.ToggleGammaCorrectText, None)) 770 m.append(c(self.OpenSkillTreeWindow, None)) 771 m.append(c(self.OpenImageCacheDemo, None)) 772 if localization.util.AmOnChineseServer(): 773 m.append(c(self.ToggleActivities, None)) 774 for cm in m: 775 cm.category = 'window' 776 ret.append(cm) 777 778 m = [c(self.CmdPickPortrait0, uiconst.VK_F1), 779 c(self.CmdPickPortrait1, uiconst.VK_F2), 780 c(self.CmdPickPortrait2, uiconst.VK_F3), 781 c(self.CmdPickPortrait3, uiconst.VK_F4)] 782 for cm in m: 783 cm.category = 'charactercreator' 784 ret.append(cm) 785 786 return ret 787 788 def CmdActivateHighPowerSlot1(self, *args): 789 self._cmdshipui(0, 0) 790 791 def CmdActivateHighPowerSlot2(self, *args): 792 self._cmdshipui(1, 0) 793 794 def CmdActivateHighPowerSlot3(self, *args): 795 self._cmdshipui(2, 0) 796 797 def CmdActivateHighPowerSlot4(self, *args): 798 self._cmdshipui(3, 0) 799 800 def CmdActivateHighPowerSlot5(self, *args): 801 self._cmdshipui(4, 0) 802 803 def CmdActivateHighPowerSlot6(self, *args): 804 self._cmdshipui(5, 0) 805 806 def CmdActivateHighPowerSlot7(self, *args): 807 self._cmdshipui(6, 0) 808 809 def CmdActivateHighPowerSlot8(self, *args): 810 self._cmdshipui(7, 0) 811 812 def CmdActivateMediumPowerSlot1(self, *args): 813 self._cmdshipui(0, 1) 814 815 def CmdActivateMediumPowerSlot2(self, *args): 816 self._cmdshipui(1, 1) 817 818 def CmdActivateMediumPowerSlot3(self, *args): 819 self._cmdshipui(2, 1) 820 821 def CmdActivateMediumPowerSlot4(self, *args): 822 self._cmdshipui(3, 1) 823 824 def CmdActivateMediumPowerSlot5(self, *args): 825 self._cmdshipui(4, 1) 826 827 def CmdActivateMediumPowerSlot6(self, *args): 828 self._cmdshipui(5, 1) 829 830 def CmdActivateMediumPowerSlot7(self, *args): 831 self._cmdshipui(6, 1) 832 833 def CmdActivateMediumPowerSlot8(self, *args): 834 self._cmdshipui(7, 1) 835 836 def CmdActivateLowPowerSlot1(self, *args): 837 self._cmdshipui(0, 2) 838 839 def CmdActivateLowPowerSlot2(self, *args): 840 self._cmdshipui(1, 2) 841 842 def CmdActivateLowPowerSlot3(self, *args): 843 self._cmdshipui(2, 2) 844 845 def CmdActivateLowPowerSlot4(self, *args): 846 self._cmdshipui(3, 2) 847 848 def CmdActivateLowPowerSlot5(self, *args): 849 self._cmdshipui(4, 2) 850 851 def CmdActivateLowPowerSlot6(self, *args): 852 self._cmdshipui(5, 2) 853 854 def CmdActivateLowPowerSlot7(self, *args): 855 self._cmdshipui(6, 2) 856 857 def CmdActivateLowPowerSlot8(self, *args): 858 self._cmdshipui(7, 2) 859 860 def CmdOverloadHighPowerSlot1(self, *args): 861 self._cmdoverload(0, 0) 862 863 def CmdOverloadHighPowerSlot2(self, *args): 864 self._cmdoverload(1, 0) 865 866 def CmdOverloadHighPowerSlot3(self, *args): 867 self._cmdoverload(2, 0) 868 869 def CmdOverloadHighPowerSlot4(self, *args): 870 self._cmdoverload(3, 0) 871 872 def CmdOverloadHighPowerSlot5(self, *args): 873 self._cmdoverload(4, 0) 874 875 def CmdOverloadHighPowerSlot6(self, *args): 876 self._cmdoverload(5, 0) 877 878 def CmdOverloadHighPowerSlot7(self, *args): 879 self._cmdoverload(6, 0) 880 881 def CmdOverloadHighPowerSlot8(self, *args): 882 self._cmdoverload(7, 0) 883 884 def CmdOverloadMediumPowerSlot1(self, *args): 885 self._cmdoverload(0, 1) 886 887 def CmdOverloadMediumPowerSlot2(self, *args): 888 self._cmdoverload(1, 1) 889 890 def CmdOverloadMediumPowerSlot3(self, *args): 891 self._cmdoverload(2, 1) 892 893 def CmdOverloadMediumPowerSlot4(self, *args): 894 self._cmdoverload(3, 1) 895 896 def CmdOverloadMediumPowerSlot5(self, *args): 897 self._cmdoverload(4, 1) 898 899 def CmdOverloadMediumPowerSlot6(self, *args): 900 self._cmdoverload(5, 1) 901 902 def CmdOverloadMediumPowerSlot7(self, *args): 903 self._cmdoverload(6, 1) 904 905 def CmdOverloadMediumPowerSlot8(self, *args): 906 self._cmdoverload(7, 1) 907 908 def CmdOverloadLowPowerSlot1(self, *args): 909 self._cmdoverload(0, 2) 910 911 def CmdOverloadLowPowerSlot2(self, *args): 912 self._cmdoverload(1, 2) 913 914 def CmdOverloadLowPowerSlot3(self, *args): 915 self._cmdoverload(2, 2) 916 917 def CmdOverloadLowPowerSlot4(self, *args): 918 self._cmdoverload(3, 2) 919 920 def CmdOverloadLowPowerSlot5(self, *args): 921 self._cmdoverload(4, 2) 922 923 def CmdOverloadLowPowerSlot6(self, *args): 924 self._cmdoverload(5, 2) 925 926 def CmdOverloadLowPowerSlot7(self, *args): 927 self._cmdoverload(6, 2) 928 929 def CmdOverloadLowPowerSlot8(self, *args): 930 self._cmdoverload(7, 2) 931 932 def CmdOverloadHighPowerRack(self, *args): 933 self._cmdoverloadrack('Hi') 934 935 def CmdOverloadMediumPowerRack(self, *args): 936 self._cmdoverloadrack('Med') 937 938 def CmdOverloadLowPowerRack(self, *args): 939 self._cmdoverloadrack('Lo') 940 941 def CmdSelectPrevTarget(self, *args): 942 sm.GetService('target').SelectPrevTarget() 943 self.CmdSetOverviewFocus() 944 945 def CmdSelectNextTarget(self, *args): 946 sm.GetService('target').SelectNextTarget() 947 self.CmdSetOverviewFocus() 948 949 def CmdZoomIn(self, *args): 950 self._Zoom(direction=-1) 951 952 CmdZoomIn.nameLabelPath = 'UI/Inflight/ZoomIn' 953 954 def CmdZoomOut(self, *args): 955 self._Zoom(direction=1) 956 957 CmdZoomOut.nameLabelPath = 'UI/Inflight/ZoomOut' 958 959 def _Zoom(self, direction): 960 viewSvc = sm.GetService('viewState') 961 simulatedMouseScroll = direction * 120 962 activeWindow = uicore.registry.GetActiveStackOrWindow() 963 if activeWindow and hasattr(activeWindow, 'CmdZoomInOut'): 964 activeWindow.CmdZoomInOut(simulatedMouseScroll) 965 elif viewSvc.IsViewActive('planet', 'starmap', 'systemmap', 'shiptree', 'inflight', 'station', 'hangar'): 966 view = viewSvc.GetCurrentView() 967 view.ZoomBy(simulatedMouseScroll) 968 if eveCfg.InSpace(): 969 if simulatedMouseScroll < 0: 970 sm.ScatterEvent('OnClientMouseZoomInSpace', simulatedMouseScroll) 971 else: 972 sm.ScatterEvent('OnClientMouseZoomOutSpace', simulatedMouseScroll) 973 974 def CmdToggleAutopilot(self, *args): 975 if eveCfg.InSpace(): 976 if sm.GetService('autoPilot').GetState(): 977 sm.GetService('autoPilot').SetOff() 978 else: 979 sm.GetService('autoPilot').SetOn() 980 981 CmdToggleAutopilot.nameLabelPath = 'Tooltips/Hud/Autopilot' 982 CmdToggleAutopilot.descriptionLabelPath = 'Tooltips/Hud/Autopilot_description' 983 984 def CmdCompressAllOreInCurrentship(self, *args): 985 if not eveCfg.InSpace(): 986 return 987 CompressInSpaceController().CompressAllOreInCurrentship() 988 989 CmdCompressAllOreInCurrentship.nameLabelPath = 'UI/Inflight/CompressAllOreInCurrentShip' 990 991 def CmdToggleTacticalOverlay(self, *args): 992 if eveCfg.InSpace(): 993 sm.GetService('tactical').ToggleOnOff() 994 995 CmdToggleTacticalOverlay.nameLabelPath = 'Tooltips/Hud/Tactical' 996 CmdToggleTacticalOverlay.descriptionLabelPath = 'Tooltips/Hud/Tactical_description' 997 998 def CmdMiningScan(self, *args): 999 if eveCfg.InSpace(): 1000 from mining.client.mining_overlay_controller import MiningOverlayController 1001 MiningOverlayController.get_instance().perform_scan() 1002 1003 CmdMiningScan.nameLabelPath = 'Tooltips/Hud/MiningScan' 1004 CmdMiningScan.descriptionLabelPath = 'Tooltips/Hud/MiningScan_description' 1005 1006 def OpenMiningScanResultsWindow(self, *args): 1007 if eveCfg.InSpace(): 1008 MiningScanResultsWindow.ToggleOpenClose() 1009 1010 OpenMiningScanResultsWindow.nameLabelPath = 'UI/Inflight/Scanner/MiningScanResults' 1011 1012 def SetSpeedFraction(self, speed): 1013 remote = sm.GetService('michelle').GetRemotePark() 1014 if remote: 1015 remote.CmdSetSpeedFraction(speed) 1016 1017 def CmdDecelerate(self, *args): 1018 if eveCfg.InShipInSpace(): 1019 bp = sm.GetService('michelle').GetBallpark() 1020 ownBall = bp.GetBall(session.shipid) 1021 if ownBall is not None: 1022 self.SetSpeedFractionThrottled(min(1.0, ownBall.speedFraction - 0.1)) 1023 1024 def CmdAccelerate(self, *args): 1025 if eveCfg.InShipInSpace(): 1026 rp = sm.GetService('michelle').GetRemotePark() 1027 bp = sm.GetService('michelle').GetBallpark() 1028 ownBall = bp.GetBall(session.shipid) 1029 if rp is not None and ownBall is not None: 1030 if ownBall.mode == destiny.DSTBALL_STOP and not sm.GetService('autoPilot').GetState(): 1031 direction = trinity.TriVector(0.0, 0.0, 1.0) 1032 currentDirection = ownBall.GetQuaternionAt(blue.os.GetSimTime()) 1033 direction.TransformQuaternion(currentDirection) 1034 rp.CmdGotoDirection(direction.x, direction.y, direction.z) 1035 GetMenuService().ClearAlignTargets() 1036 self.SetSpeedFractionThrottled(min(1.0, ownBall.speedFraction + 0.1)) 1037 1038 def CmdStopShip(self, *args): 1039 if eveCfg.InShipInSpace(): 1040 autoPilot = sm.GetService('autoPilot') 1041 autoPilot.CancelSystemNavigation() 1042 if session.IsItSafe(): 1043 bp = sm.GetService('michelle').GetRemotePark() 1044 if bp and session.IsItSafe(): 1045 bp.CmdStop() 1046 sm.GetService('logger').AddText(GetByLabel('UI/Commands/ShipStopping'), 'notify') 1047 GetAudioService().SendUIEvent('ui_radial_select_play') 1048 HudActionIndicationController.get_instance().set_temporary_indication(IndicationData(GetByLabel('UI/Inflight/Messages/ShipStoppingHeader')), blink=True) 1049 if autoPilot.GetState(): 1050 autoPilot.SetOff() 1051 sm.ScatterEvent('OnClientEvent_StopShip') 1052 1053 def CmdSetShipFullSpeed(self, *args): 1054 bp = sm.GetService('michelle').GetBallpark() 1055 rbp = sm.GetService('michelle').GetRemotePark() 1056 if bp is None or rbp is None: 1057 return 1058 if eveCfg.IsControllingStructure(): 1059 return 1060 ownBall = bp.GetBall(session.shipid) 1061 if ownBall and rbp is not None and ownBall.mode == destiny.DSTBALL_STOP: 1062 if not sm.GetService('autoPilot').GetState(): 1063 direction = trinity.TriVector(0.0, 0.0, 1.0) 1064 currentDirection = ownBall.GetQuaternionAt(blue.os.GetSimTime()) 1065 direction.TransformQuaternion(currentDirection) 1066 rbp.CmdGotoDirection(direction.x, direction.y, direction.z) 1067 GetMenuService().ClearAlignTargets() 1068 if rbp is not None: 1069 rbp.CmdSetSpeedFraction(1.0) 1070 speedText = self._FormatSpeed(ownBall.maxVelocity) 1071 sm.GetService('logger').AddText(speedText, 'notify') 1072 GetAudioService().SendUIEvent('ui_radial_select_play') 1073 HudActionIndicationController.get_instance().set_temporary_indication(IndicationData(GetByLabel('UI/Inflight/Messages/ShipFullSpeedHeader'), speedText), blink=True) 1074 1075 def _FormatSpeed(self, speed): 1076 if speed >= 100: 1077 speed = long(speed) 1078 return localization.GetByLabel('UI/Commands/SpeedChangedTo', speed=speed) 1079 1080 def CmdToggleShowAllBrackets(self, *args): 1081 if eveCfg.InSpace(): 1082 bracketSettings.toggle_show_all_brackets() 1083 1084 def CmdToggleShowNoBrackets(self, *args): 1085 if eveCfg.InSpace(): 1086 bracketSettings.toggle_show_no_brackets() 1087 1088 def CmdToggleShowSpecialBrackets(self, *args): 1089 if eveCfg.InSpace(): 1090 bracketSettings.bracket_showing_specials_setting.toggle() 1091 1092 def CmdReloadAmmo(self, *args): 1093 if uicore.layer.shipui.isopen: 1094 uicore.layer.shipui.OnReloadAmmo() 1095 1096 def _cmdshipui(self, sidx, gidx): 1097 if uicore.layer.shipui.isopen: 1098 uicore.layer.shipui.OnF(sidx, gidx) 1099 1100 def _cmdoverload(self, sidx, gidx): 1101 if uicore.layer.shipui.isopen: 1102 uicore.layer.shipui.OnFKeyOverload(sidx, gidx) 1103 1104 def _cmdoverloadrack(self, what): 1105 if uicore.layer.shipui.isopen: 1106 uicore.layer.shipui.ToggleRackOverload(what) 1107 1108 def CmdQuitGame(self, *args): 1109 if self.isCmdQuitPending: 1110 return 1111 self.isCmdQuitPending = True 1112 try: 1113 if MessageBox.is_disconnect_dialog_open() or prompt_player_fsd_dialog('AskQuitGame', {}, uiconst.YESNO, suppress=uiconst.ID_YES) == uiconst.ID_YES: 1114 self.DoQuitGame() 1115 finally: 1116 self.isCmdQuitPending = False 1117 1118 CmdQuitGame.nameLabelPath = 'UI/Commands/CmdQuitGame' 1119 1120 def DoQuitGame(self): 1121 try: 1122 check_for_character_creation_exit() 1123 if session.charid: 1124 sm.GetService('skillqueue').OnCloseApp() 1125 self.settings.SaveSettings() 1126 sm.GetService('clientStatsSvc').OnProcessExit() 1127 except: 1128 self.LogException() 1129 finally: 1130 bluepy.Terminate(0, 'User requesting close') 1131 1132 def _CheckLogoffApplicable(self): 1133 viewStateSvc = sm.GetService('viewState') 1134 if eveCfg.IsControllingStructure(): 1135 raise UserError('CannotWhileControllingStructure') 1136 if viewStateSvc.IsViewActive('planet'): 1137 currentPlanet = sm.GetService('planetUI').GetCurrentPlanet() 1138 if currentPlanet and currentPlanet.IsInEditMode(): 1139 raise UserError('CannotWhileEditingPlanetaryProduction') 1140 return True 1141 1142 def CmdLogOff(self, *args): 1143 check_for_character_creation_exit() 1144 if AllowCharacterLogoff(sm.GetService('machoNet')): 1145 viewStateSvc = sm.GetService('viewState') 1146 if viewStateSvc.HasActiveTransition(): 1147 self.LogWarn("Denying logoff attempt as we're currently transitioning between viewStates.") 1148 return False 1149 if session.charid: 1150 if not self._CheckLogoffApplicable(): 1151 return 1152 if viewStateSvc.GetCurrentViewInfo().IsSecondary(): 1153 viewStateSvc.CloseSecondaryView() 1154 if SessionChecker(session, sm).IsPilotInShipInSpace(): 1155 ShipTreeDockablePanel.CloseIfOpen() 1156 self.LogNotice('Initiating safe logoff for character %s' % cfg.eveowners.Get(session.charid).name) 1157 GetMenuService().SafeLogoff() 1158 else: 1159 if not (viewStateSvc.IsViewActive('hangar') or viewStateSvc.IsViewActive('structure')): 1160 self.LogWarn('Cannot logoff with view %s active' % viewStateSvc.GetCurrentView()) 1161 return False 1162 if prompt_player_fsd_dialog('AskLogoffToCharacterSelection', {}, uiconst.YESNO, suppress=uiconst.ID_YES) == uiconst.ID_YES: 1163 sm.GetService('gameui').LogOffCharacter() 1164 else: 1165 modalWnd = uicore.registry.GetModalWindow() 1166 if modalWnd and modalWnd.__guid__ == 'form.MessageBox': 1167 return 1168 if prompt_player_fsd_dialog('AskLogoffGame', {}, uiconst.YESNO, suppress=uiconst.ID_YES) == uiconst.ID_YES: 1169 check_for_character_creation_exit() 1170 self.settings.SaveSettings() 1171 appUtils.Reboot('Generic Logoff') 1172 1173 CmdLogOff.nameLabelPath = 'UI/Commands/CmdLogOff' 1174 CmdLogOff.descriptionFunc = GetCmdLogoffHint 1175 1176 def CmdDronesEngage(self, *args): 1177 drones = sm.GetService('michelle').GetDrones() 1178 if drones is None: 1179 return 1180 entity = eveMoniker.GetEntityAccess() 1181 if not entity: 1182 return 1183 droneItemIDsAndTypeIDs = [ (droneID, drone.typeID) for droneID, drone in drones.iteritems() ] 1184 droneFunctions.PerformPrimaryAction(droneItemIDsAndTypeIDs) 1185 1186 CmdDronesEngage.nameLabelPath = 'UI/Commands/CmdDronesEngage' 1187 1188 def CmdDronesReturnAndOrbit(self, *args): 1189 drones = sm.GetService('michelle').GetDrones() 1190 if drones: 1191 droneIDs = drones.keys() 1192 targetID = sm.GetService('target').GetActiveTargetID() 1193 entity = eveMoniker.GetEntityAccess() 1194 if entity: 1195 ret = entity.CmdReturnHome(droneIDs) 1196 GetMenuService().HandleMultipleCallError(droneIDs, ret, 'MultiDroneCmdResult') 1197 if droneIDs and targetID: 1198 prompt_player_fsd_dialog('Command', {'command': localization.GetByLabel('UI/Commands/DronesReturningAndOrbiting')}) 1199 sm.GetService('fighters').RecallAllFightersAndOrbit() 1200 1201 CmdDronesReturnAndOrbit.nameLabelPath = 'UI/Commands/CmdDronesReturnAndOrbit' 1202 1203 def CmdDronesReturnToBay(self, *args): 1204 drones = sm.GetService('michelle').GetDrones() 1205 if drones: 1206 droneIDs = drones.keys() 1207 targetID = sm.GetService('target').GetActiveTargetID() 1208 entity = eveMoniker.GetEntityAccess() 1209 if entity: 1210 ret = entity.CmdReturnBay(droneIDs) 1211 GetMenuService().HandleMultipleCallError(droneIDs, ret, 'MultiDroneCmdResult') 1212 if droneIDs and targetID: 1213 prompt_player_fsd_dialog('Command', {'command': localization.GetByLabel('UI/Commands/DronesReturningToDroneBay')}) 1214 self.CmdRecallAllFightersToTubes() 1215 1216 CmdDronesReturnToBay.nameLabelPath = 'UI/Commands/CmdDronesReturnToBay' 1217 1218 def _GetDronesToLaunch(self): 1219 favoriteDroneIDsPresent = GetDroneGroupsController().GetFavoriteGroupDroneIDsInBayOrSpace() 1220 if favoriteDroneIDsPresent: 1221 return [ x for x in GetDronesInBay() if x.itemID in favoriteDroneIDsPresent ] 1222 return GetDronesInBay() 1223 1224 def CmdLaunchFavoriteDrones(self, *args): 1225 if not session.shipid or sm.GetService('michelle').GetBallpark() is None: 1226 return 1227 dronesToLaunch = self._GetDronesToLaunch() 1228 if dronesToLaunch: 1229 GetMenuService().LaunchDrones(dronesToLaunch) 1230 1231 CmdLaunchFavoriteDrones.nameLabelPath = 'UI/Drones/LaunchDrones' 1232 CmdLaunchFavoriteDrones.descriptionLabelPath = 'UI/Drones/HintOnFavoriteIcon' 1233 1234 def CmdReconnectToDrones(self, *args): 1235 GetMenuService().ReconnectToDrones() 1236 1237 def CmdLaunchAllFighters(self, *args): 1238 sm.GetService('fighters').LaunchAllFighters() 1239 1240 def CmdRecallAllFightersToTubes(self): 1241 sm.GetService('fighters').RecallAllFightersToTubes() 1242 1243 def CmdToggleTubeSelection_0(self, *args): 1244 self._DoToggleTubeSelection(appConst.flagFighterTube0) 1245 1246 def CmdToggleTubeSelection_1(self, *args): 1247 self._DoToggleTubeSelection(appConst.flagFighterTube1) 1248 1249 def CmdToggleTubeSelection_2(self, *args): 1250 self._DoToggleTubeSelection(appConst.flagFighterTube2) 1251 1252 def CmdToggleTubeSelection_3(self, *args): 1253 self._DoToggleTubeSelection(appConst.flagFighterTube3) 1254 1255 def CmdToggleTubeSelection_4(self, *args): 1256 self._DoToggleTubeSelection(appConst.flagFighterTube4) 1257 1258 def _DoToggleTubeSelection(self, tubeFlagID): 1259 sm.GetService('fighters').ToggleSelectionForFightersForTube(tubeFlagID) 1260 1261 def CmdLaunchSelectedFighters(self): 1262 sm.GetService('fighters').LaunchSelectedFighters() 1263 1264 def CmdRecallSelectedFightersToTubes(self): 1265 sm.GetService('fighters').RecallSelectedFightersToTubes() 1266 1267 def CmdSelectAllFighters(self): 1268 sm.GetService('fighters').SelectAllFighters() 1269 1270 def CmdDeselectAllFighters(self): 1271 sm.GetService('fighters').DeselectAllFighters() 1272 1273 def CmdToggleShipSelection(self): 1274 if session.shipid: 1275 movementFunctions.ToggleSelectForNavigation(session.shipid) 1276 1277 def CmdToggleAggressivePassive(self, *args): 1278 drones_aggressive_setting.toggle() 1279 1280 def CmdToggleDroneFocusFire(self, *args): 1281 drones_focus_fire_setting.toggle() 1282 1283 def WinCmdToggleWindowed(self, *args): 1284 lastTimeToggled = settings.user.ui.Get('LastTimeToggleWindowed', 0) 1285 if blue.os.GetWallclockTime() - lastTimeToggled > 2 * appConst.SEC: 1286 settings.user.ui.Set('LastTimeToggleWindowed', blue.os.GetWallclockTime()) 1287 sm.GetService('device').ToggleWindowed() 1288 1289 def CmdResetMonitor(self, *args): 1290 sm.GetService('device').ResetMonitor() 1291 1292 def CmdToggleSolarSystemMap(self, **kwargs): 1293 if session.charid: 1294 from eve.client.script.ui.shared.mapView.mapViewUtil import ToggleSolarSystemMap 1295 if is_solarsystem_map_suppressed(session.solarsystemid2): 1296 raise UserError('CannotProbeScanInSystem') 1297 ToggleSolarSystemMap(**kwargs) 1298 1299 CmdToggleSolarSystemMap.nameLabelPath = 'UI/Map/MapPallet/btnSolarsystemMap' 1300 CmdToggleSolarSystemMap.descriptionLabelPath = '' 1301 1302 def CmdToggleMap(self, *args): 1303 if session.charid is not None and not getattr(self, 'loadingCharacterCustomization', False): 1304 if not classic_map_enabled_setting.is_enabled(): 1305 self._CmdToggleMapBeta() 1306 else: 1307 uthread.new(sm.GetService('map').Toggle).context = 'svc.map.Toggle' 1308 sm.ScatterEvent('OnClientEvent_OpenMap') 1309 1310 CmdToggleMap.nameLabelPath = 'UI/Neocom/MapBtn' 1311 CmdToggleMap.descriptionLabelPath = 'Tooltips/Neocom/Map_description' 1312 1313 def _CmdToggleMapBeta(self, *args): 1314 from eve.client.script.ui.shared.mapView.mapViewPanel import MapViewPanel 1315 wnd = MapViewPanel.GetIfOpen() 1316 if not wnd: 1317 MapViewPanel.Open(parent=uicore.layer.main) 1318 elif wnd.IsMinimized(): 1319 wnd.Maximize() 1320 else: 1321 MapViewPanel.CloseIfOpen() 1322 1323 def CmdToggleShipTree(self): 1324 wnd = ShipTreeDockablePanel.GetIfOpen() 1325 if not wnd: 1326 if not sm.GetService('viewState').SafeLogoffInProgress(): 1327 ShipTreeDockablePanel.Open(parent=uicore.layer.main) 1328 elif wnd.IsMinimized(): 1329 wnd.Maximize() 1330 else: 1331 ShipTreeDockablePanel.CloseIfOpen() 1332 1333 CmdToggleShipTree.nameLabelPath = 'UI/Neocom/ShipTreeBtn' 1334 CmdToggleShipTree.descriptionLabelPath = 'Tooltips/Neocom/ISIS_description' 1335 1336 def CmdToggleAirCareerProgram(self, **kwargs): 1337 wnd = CareerPortalDockablePanel.GetIfOpen() 1338 if not wnd: 1339 CareerPortalDockablePanel.Open(parent=uicore.layer.main) 1340 elif wnd.IsMinimized(): 1341 wnd.Maximize() 1342 else: 1343 CareerPortalDockablePanel.ToggleMinimize(wnd) 1344 1345 CmdToggleAirCareerProgram.nameLabelPath = 'UI/CareerPortal/CareerPortalWnd' 1346 CmdToggleAirCareerProgram.descriptionLabelPath = 'UI/CareerPortal/CareerPortalWndDescription' 1347 1348 def CmdPrevStackedWindow(self, *args): 1349 wnd = uicore.registry.GetActive() 1350 if wnd is None or not wnd.stacked: 1351 return 1352 tabGroup = wnd.stack.GetTabGroup() 1353 tabGroup.SelectPrev() 1354 1355 def CmdNextStackedWindow(self, *args): 1356 wnd = uicore.registry.GetActive() 1357 if wnd is None or not isinstance(wnd, Window) or not wnd.stacked: 1358 return 1359 tabGroup = wnd.stack.GetTabGroup() 1360 tabGroup.SelectNext() 1361 1362 def CmdPrevTab(self, *args): 1363 tabGroup = self._GetTabgroup() 1364 if tabGroup: 1365 tabGroup.SelectPrev() 1366 1367 def CmdNextTab(self, *args): 1368 tabGroup = self._GetTabgroup() 1369 if tabGroup: 1370 tabGroup.SelectNext() 1371 1372 def _GetTabgroup(self): 1373 wnd = uicore.registry.GetActive() 1374 if not wnd: 1375 return 1376 MAXRECURS = 10 1377 tabGroup = self._FindTabGroup(wnd.sr.maincontainer, MAXRECURS) 1378 if not tabGroup and wnd.stacked: 1379 tabGroup = wnd.stack.GetTabGroup() 1380 return tabGroup 1381 1382 def _FindTabGroup(self, parent, maxLevel): 1383 if isinstance(parent, TabGroup) and not parent.destroyed: 1384 return parent 1385 if not hasattr(parent, 'children') or not parent.children or maxLevel == 0: 1386 return 1387 blue.pyos.BeNice() 1388 for c in parent.children: 1389 tabGroup = self._FindTabGroup(c, maxLevel - 1) 1390 if tabGroup: 1391 return tabGroup 1392 1393 def CmdExitStation(self, *args): 1394 if uicore.registry.GetModalWindow(): 1395 return 1396 ccLayer = uicore.layer.Get('charactercreation') 1397 if ccLayer and ccLayer.isopen: 1398 return 1399 if sm.GetService('viewState').HasActiveTransition(): 1400 return 1401 if eveCfg.IsControllingStructure(): 1402 return 1403 if session.stationid or session.structureid: 1404 sm.GetService('undocking').ExitDockableLocation() 1405 1406 def CmdAbortUndock(self, *args): 1407 if not eveCfg.IsDocked(): 1408 return 1409 sm.GetService('undocking').AbortUndock() 1410 1411 CmdAbortUndock.nameLabelPath = 'UI/Station/AbortUndock' 1412 1413 def CmdEnterHangar(self, *args): 1414 if session.stationid and not sm.GetService('viewState').IsViewActive('hangar'): 1415 change = {'stationid': (session.stationid, session.stationid)} 1416 uthread.pool('eveCommands::CmdEnterHangar', sm.GetService('viewState').ChangePrimaryView, 'hangar', change=change) 1417 elif eveCfg.IsDockedInStructure() and not sm.GetService('viewState').IsViewActive('hangar'): 1418 uthread.pool('eveCommands::CmdEnterHangar', sm.GetService('viewState').ChangePrimaryView, 'hangar') 1419 1420 def CmdEnterStructure(self, *args): 1421 if eveCfg.IsDockedInStructure() and not sm.GetService('viewState').IsViewActive('structure', 'charactercreation'): 1422 uthread.pool('eveCommands::CmdEnterStructure', sm.GetService('viewState').ChangePrimaryView, 'structure') 1423 1424 def CmdSetChatChannelFocus(self, *args): 1425 sm.GetService('focus').SetChannelFocus() 1426 1427 def CmdSetSearchBarFocus(self, *args): 1428 sm.ScatterEvent('OnSetSearchBarFocus') 1429 1430 def CmdSetOverviewFocus(self, *args): 1431 wnd = overviewWindowUtil.GetOverviewWndIfOpen() 1432 if wnd: 1433 uicore.registry.SetFocus(wnd) 1434 1435 def GetWndMenu(self, *args): 1436 if uicore.registry.GetModalWindow() or not session.charid: 1437 return None 1438 wnd = CtrlTabWindow.GetIfOpen() 1439 if not wnd: 1440 ClearMenuLayer() 1441 wnd = CtrlTabWindow.Open() 1442 return wnd 1443 1444 def CmdFleetBroadcast_EnemySpotted(self): 1445 sm.GetService('fleet').SendBroadcast_EnemySpotted() 1446 1447 def CmdFleetBroadcast_NeedBackup(self): 1448 sm.GetService('fleet').SendBroadcast_NeedBackup() 1449 1450 def CmdFleetBroadcast_HealArmor(self): 1451 sm.GetService('fleet').SendBroadcast_HealArmor() 1452 1453 def CmdFleetBroadcast_HealShield(self): 1454 sm.GetService('fleet').SendBroadcast_HealShield() 1455 1456 def CmdFleetBroadcast_HealCapacitor(self): 1457 sm.GetService('fleet').SendBroadcast_HealCapacitor() 1458 1459 def CmdFleetBroadcast_InPosition(self): 1460 sm.GetService('fleet').SendBroadcast_InPosition() 1461 1462 def CmdFleetBroadcast_HoldPosition(self): 1463 sm.GetService('fleet').SendBroadcast_HoldPosition() 1464 1465 def CmdFleetBroadcast_JumpBeacon(self): 1466 sm.GetService('fleet').SendBroadcast_JumpBeacon() 1467 1468 def CmdFleetBroadcast_Location(self): 1469 sm.GetService('fleet').SendBroadcast_Location() 1470 1471 def CmdSetCameraPOV(self): 1472 if not self._IsSpaceCameraSwitchAllowed(): 1473 return 1474 sm.GetService('sceneManager').SetPrimaryCamera(evecamera.CAM_SHIPPOV) 1475 1476 CmdSetCameraPOV.nameLabelPath = 'Tooltips/Hud/POVCamera' 1477 CmdSetCameraPOV.descriptionLabelPath = 'Tooltips/Hud/POVCamera_description' 1478 1479 def CmdSetCameraOrbit(self): 1480 if not self._IsSpaceCameraSwitchAllowed(): 1481 return 1482 cam = sm.GetService('sceneManager').GetActiveSpaceCamera() 1483 if cam.cameraID in (evecamera.CAM_SHIPORBIT, evecamera.CAM_SHIPORBIT_ABYSSAL_SPACE, evecamera.CAM_SHIPORBIT_HAZARD): 1484 if cam.GetItemID() != session.shipid: 1485 cam.LookAt(session.shipid) 1486 elif cam.isManualFovEnabled: 1487 cam.DisableManualFov() 1488 else: 1489 cam.Track(session.shipid) 1490 else: 1491 sm.GetService('sceneManager').SetPrimaryCamera(get_orbit_camera_by_solar_system(session.solarsystemid2)) 1492 1493 CmdSetCameraOrbit.nameLabelPath = 'Tooltips/Hud/OrbitCamera' 1494 CmdSetCameraOrbit.descriptionLabelPath = 'Tooltips/Hud/OrbitCamera_description' 1495 1496 def CmdSetCameraTactical(self): 1497 if is_tactical_camera_suppressed(session.solarsystemid): 1498 return 1499 if not self._IsSpaceCameraSwitchAllowed(): 1500 return 1501 cam = sm.GetService('sceneManager').GetActiveSpaceCamera() 1502 if cam.cameraID == evecamera.CAM_TACTICAL: 1503 cam.LookAt(session.shipid, allowSwitchCamera=False) 1504 else: 1505 sm.GetService('sceneManager').SetPrimaryCamera(evecamera.CAM_TACTICAL) 1506 1507 CmdSetCameraTactical.nameLabelPath = 'Tooltips/Hud/TacticalCamera' 1508 CmdSetCameraTactical.descriptionLabelPath = 'Tooltips/Hud/TacticalCamera_description' 1509 1510 def CmdIncreaseSpaceMouseSpeed(self): 1511 cam = sm.GetService('sceneManager').GetActiveSpaceCamera() 1512 if cam.cameraID in (evecamera.CAM_TACTICAL, evecamera.CAM_DEBUG): 1513 speed = min(1.0, gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_SPEED_COEFFICIENT) + 0.01) 1514 gfxsettings.Set(gfxsettings.UI_CAMERA_SPACEMOUSE_SPEED_COEFFICIENT, speed, pending=False) 1515 acceleration = gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_ACCELERATION_COEFFICIENT) 1516 sm.ScatterEvent('OnSpaceMouseSpeedCoefficientChanged') 1517 self._indicate_space_mouse_acceleration(acceleration, speed) 1518 1519 CmdIncreaseSpaceMouseSpeed.nameLabelPath = 'Tooltips/Hud/SpaceMouseSpeedIncrease' 1520 CmdIncreaseSpaceMouseSpeed.descriptionLabelPath = 'Tooltips/Hud/SpaceMouseSpeedIncrease_description' 1521 1522 def CmdDecreaseSpaceMouseSpeed(self): 1523 cam = sm.GetService('sceneManager').GetActiveSpaceCamera() 1524 if cam.cameraID in (evecamera.CAM_TACTICAL, evecamera.CAM_DEBUG): 1525 speed = max(0.01, gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_SPEED_COEFFICIENT) - 0.01) 1526 gfxsettings.Set(gfxsettings.UI_CAMERA_SPACEMOUSE_SPEED_COEFFICIENT, speed, pending=False) 1527 acceleration = gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_ACCELERATION_COEFFICIENT) 1528 sm.ScatterEvent('OnSpaceMouseSpeedCoefficientChanged') 1529 self._indicate_space_mouse_acceleration(acceleration, speed) 1530 1531 CmdDecreaseSpaceMouseSpeed.nameLabelPath = 'Tooltips/Hud/SpaceMouseSpeedDecrease' 1532 CmdDecreaseSpaceMouseSpeed.descriptionLabelPath = 'Tooltips/Hud/SpaceMouseSpeedDecrease_description' 1533 1534 def CmdIncreaseSpaceMouseAcceleration(self): 1535 cam = sm.GetService('sceneManager').GetActiveSpaceCamera() 1536 if cam.cameraID in (evecamera.CAM_TACTICAL, evecamera.CAM_DEBUG): 1537 acceleration = min(1.0, gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_ACCELERATION_COEFFICIENT) + 0.01) 1538 gfxsettings.Set(gfxsettings.UI_CAMERA_SPACEMOUSE_ACCELERATION_COEFFICIENT, acceleration, pending=False) 1539 speed = gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_SPEED_COEFFICIENT) 1540 sm.ScatterEvent('OnSpaceMouseAccelerationCoefficientChanged') 1541 self._indicate_space_mouse_acceleration(acceleration, speed) 1542 1543 CmdIncreaseSpaceMouseAcceleration.nameLabelPath = 'Tooltips/Hud/SpaceMouseAccelerationIncrease' 1544 CmdIncreaseSpaceMouseAcceleration.descriptionLabelPath = 'Tooltips/Hud/SpaceMouseAccelerationIncrease_description' 1545 1546 def CmdDecreaseSpaceMouseAcceleration(self): 1547 cam = sm.GetService('sceneManager').GetActiveSpaceCamera() 1548 if cam.cameraID in (evecamera.CAM_TACTICAL, evecamera.CAM_DEBUG): 1549 acceleration = max(0.01, gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_ACCELERATION_COEFFICIENT) - 0.01) 1550 gfxsettings.Set(gfxsettings.UI_CAMERA_SPACEMOUSE_ACCELERATION_COEFFICIENT, acceleration, pending=False) 1551 speed = gfxsettings.Get(gfxsettings.UI_CAMERA_SPACEMOUSE_SPEED_COEFFICIENT) 1552 sm.ScatterEvent('OnSpaceMouseAccelerationCoefficientChanged') 1553 self._indicate_space_mouse_acceleration(acceleration, speed) 1554 1555 def _indicate_space_mouse_acceleration(self, acceleration, speed): 1556 HudActionIndicationController.get_instance().set_shortcut_indication(IndicationData(GetByLabel('Tooltips/Hud/SpaceMouseCaption'), GetByLabel('Tooltips/Hud/SpaceMouseInfo', speed=speed * 100, acceleration=acceleration * 100)), delay=0.75) 1557 1558 CmdDecreaseSpaceMouseAcceleration.nameLabelPath = 'Tooltips/Hud/SpaceMouseAccelerationDecrease' 1559 CmdDecreaseSpaceMouseAcceleration.descriptionLabelPath = 'Tooltips/Hud/SpaceMouseAccelerationDecrease_description' 1560 1561 def _IsSpaceCameraSwitchAllowed(self): 1562 if not sm.GetService('viewState').IsViewActive(ViewState.Space): 1563 return 1564 cam = sm.GetService('sceneManager').GetActiveSpaceCamera() 1565 if not cam or cam.IsLocked(): 1566 return False 1567 return True 1568 1569 def OpenCapitalNavigation(self, *args): 1570 if eveCfg.GetActiveShip(): 1571 CapitalNav.ToggleOpenClose() 1572 1573 OpenCapitalNavigation.nameLabelPath = CapitalNav.default_captionLabelPath 1574 1575 def OpenMonitor(self, *args): 1576 EngineToolsLauncher.Open() 1577 1578 OpenMonitor.nameLabelPath = 'UI/Commands/OpenMonitor' 1579 1580 def OpenFpsMonitor(self, *args): 1581 from carbonui.modules.fpsmonitor import FpsMonitor 1582 FpsMonitor.ToggleOpenClose(parent=uicore.layer.alwaysvisible) 1583 1584 OpenFpsMonitor.nameLabelPath = 'UI/Commands/OpenFpsMonitor' 1585 1586 def OpenConfigMenu(self, *args): 1587 sysMenu = uicore.layer.systemmenu 1588 if sysMenu.isopen: 1589 uthread.new(sysMenu.CloseMenu) 1590 else: 1591 sysMenu.OpenView() 1592 1593 OpenConfigMenu.nameLabelPath = 'UI/Commands/OpenConfigMenu' 1594 1595 def OpenMail(self, *args): 1596 if session.charid: 1597 return MailWindow.ToggleOpenClose() 1598 1599 OpenMail.nameLabelPath = MailWindow.default_captionLabelPath 1600 OpenMail.descriptionLabelPath = MailWindow.default_descriptionLabelPath 1601 1602 def CmdOpenNewMessage(self, *args): 1603 if session.charid: 1604 sm.GetService('mailSvc').SendMsgDlg() 1605 1606 def OpenWallet(self, *args): 1607 if session.solarsystemid2: 1608 WalletWindow.ToggleOpenClose() 1609 1610 OpenWallet.nameLabelPath = WalletWindow.default_captionLabelPath 1611 1612 def OpenCorporationPanel(self, *args): 1613 if session.solarsystemid2: 1614 wnd = CorporationWindow.GetIfOpen() 1615 if wnd: 1616 CorporationWindow.ToggleOpenClose() 1617 elif idCheckers.IsNPC(session.corpid): 1618 panel_id = CorpPanel.MY_APPLICATIONS if sm.GetService('corp').GetMyOpenInvitations() else None 1619 sm.GetService('corpui').Show(panel_id=panel_id) 1620 else: 1621 sm.GetService('corpui').Show() 1622 1623 OpenCorporationPanel.nameLabelPath = CorporationWindow.default_captionLabelPath 1624 OpenCorporationPanel.descriptionLabelPath = CorporationWindow.default_descriptionLabelPath 1625 1626 def OpenAssets(self, *args): 1627 if session.solarsystemid2: 1628 AssetsWindow.ToggleOpenClose() 1629 1630 OpenAssets.nameLabelPath = AssetsWindow.default_captionLabelPath 1631 OpenAssets.descriptionLabelPath = AssetsWindow.default_descriptionLabelPath 1632 1633 def OpenChannels(self, *args): 1634 if session.solarsystemid2: 1635 XmppChatChannels.Open() 1636 1637 OpenChannels.nameLabelPath = XmppChatChannels.default_captionLabelPath 1638 OpenChannels.descriptionLabelPath = XmppChatChannels.default_descriptionLabelPath 1639 1640 def OpenJournal(self, *args): 1641 if session.solarsystemid2: 1642 JournalWindow.ToggleOpenClose() 1643 1644 OpenJournal.nameLabelPath = JournalWindow.default_captionLabelPath 1645 OpenJournal.descriptionLabelPath = JournalWindow.default_descriptionLabelPath 1646 1647 def OpenAgencyNew(self, *args): 1648 if not session.solarsystemid2: 1649 return 1650 AgencyWndNew.ToggleOpenClose() 1651 1652 OpenAgencyNew.nameLabelPath = 'UI/Agency/Caption' 1653 OpenAgencyNew.descriptionLabelPath = 'UI/Agency/Description' 1654 1655 def OpenCombatAnomaliesInAgency(self, *args): 1656 if not session.solarsystemid2: 1657 return 1658 AgencyWndNew.OpenAndShowContentGroup(contentGroupID=agencyContentGroupConst.contentGroupCombatAnomalies) 1659 1660 OpenCombatAnomaliesInAgency.nameLabelPath = 'UI/Agency/CaptionCombatAnomalies' 1661 OpenCombatAnomaliesInAgency.descriptionLabelPath = 'UI/Agency/Description' 1662 1663 def OpenFactionWarfareInAgency(self, *args): 1664 if not session.solarsystemid2: 1665 return 1666 AgencyWndNew.OpenAndShowContentGroup(contentGroupID=agencyContentGroupConst.contentGroupFactionalWarfareSystems) 1667 1668 OpenCombatAnomaliesInAgency.nameLabelPath = 'UI/Agency/Caption' 1669 OpenCombatAnomaliesInAgency.descriptionLabelPath = 'UI/Agency/Description' 1670 1671 def OpenSeason(self, *args): 1672 OpenSeasonsWindow() 1673 1674 OpenSeason.nameLabelPath = 'UI/Seasons/Title' 1675 OpenSeason.descriptionLabelPath = 'UI/Seasons/Subcaption' 1676 1677 def OpenEncounterSurveillanceSystemInAgency(self): 1678 if not session.solarsystemid2: 1679 return 1680 AgencyWndNew.OpenAndShowContentGroup(contentGroupID=agencyContentGroupConst.contentGroupESSSystems) 1681 1682 OpenEncounterSurveillanceSystemInAgency.nameLabelPath = 'UI/Agency/CaptionEncounterSurveillanceSystem' 1683 OpenEncounterSurveillanceSystemInAgency.descriptionLabelPath = 'UI/Agency/Description' 1684 1685 def OpenAgencyContentGroup(self, contentGroupID): 1686 if not session.solarsystemid2: 1687 return 1688 AgencyWndNew.OpenAndShowContentGroup(contentGroupID=contentGroupID) 1689 1690 def OpenLoginRewardWindow(self, *args): 1691 if not session.solarsystemid2: 1692 return 1693 inDailyCampaign = sm.GetService('loginCampaignService').is_user_enrolled_in_campaign() 1694 seasonActive = sm.GetService('seasonalLoginCampaignService').is_login_campaign_active() 1695 if inDailyCampaign or seasonActive: 1696 from eve.client.script.ui.shared.loginRewards.loginRewardsWnd import DailyLoginRewardsWnd 1697 DailyLoginRewardsWnd.ToggleOpenClose() 1698 1699 OpenLoginRewardWindow.nameLabelPath = 'UI/LoginRewards/WindowCaption' 1700 OpenLoginRewardWindow.descriptionLabelPath = 'UI/LoginRewards/WindowDescription' 1701 1702 def OpenSkillsWindow(self, forceClose = False, *args, **kwds): 1703 if session.charid: 1704 if forceClose: 1705 if SkillPlanDockablePanel.CloseIfOpen(): 1706 uthread2.sleep(0.1) 1707 SkillPlanDockablePanel.Open(*args, **kwds) 1708 else: 1709 SkillPlanDockablePanel.ToggleOpenClose(*args, **kwds) 1710 1711 OpenSkillsWindow.nameLabelPath = 'UI/SkillPlan/Skills' 1712 OpenSkillsWindow.descriptionLabelPath = 'Tooltips/Neocom/SkillPlans_description' 1713 1714 def OpenEveMenu(self, *args): 1715 sm.GetService('neocom').ToggleEveMenu() 1716 1717 OpenEveMenu.nameLabelPath = 'Tooltips/Neocom/NeocomMenu' 1718 OpenEveMenu.descriptionLabelPath = 'Tooltips/Neocom/NeocomMenu_description' 1719 1720 def ToggleAurumStore(self, *args): 1721 sm.GetService('vgsService').ToggleStore() 1722 1723 ToggleAurumStore.nameLabelPath = 'UI/VirtualGoodsStore/VgsName' 1724 ToggleAurumStore.descriptionLabelPath = 'Tooltips/Neocom/Vgs_description' 1725 1726 def ToggleProjectDiscovery(self, *args): 1727 get_project_discovery_window_class().ToggleOpenClose() 1728 1729 ToggleProjectDiscovery.nameLabelPath = 'UI/ProjectDiscovery/ProjectName' 1730 ToggleProjectDiscovery.descriptionLabelPath = 'Tooltips/Neocom/ProjectDiscoveryDescription' 1731 1732 def OpenProjectDiscovery(self): 1733 get_project_discovery_window_class().Open() 1734 1735 @ThrottlePerMinute(5) 1736 def CmdBuyPlex(self, logContext): 1737 sm.GetService('fastCheckoutClientService').buy_plex(log_context=logContext) 1738 1739 def ToggleRedeemItems(self, *args): 1740 if session.charid is not None: 1741 sm.StartService('redeem').ToggleRedeemWindow() 1742 1743 ToggleRedeemItems.nameLabelPath = 'UI/Commands/RedeemItems' 1744 ToggleRedeemItems.descriptionLabelPath = 'Tooltips/Neocom/RedeemItems_description' 1745 1746 def ToggleActivities(self, *args): 1747 if session.charid is not None: 1748 sm.StartService('activities').ToggleActivities() 1749 1750 ToggleActivities.nameLabelPath = 'UI/Commands/Activities' 1751 ToggleActivities.descriptionLabelPath = 'Tooltips/Neocom/Activities_description' 1752 1753 def OpenLog(self, *args): 1754 uthread.new(self.__OpenLog_thread).context = 'cmd.OpenLog' 1755 1756 OpenLog.nameLabelPath = LoggerWindow.default_captionLabelPath 1757 OpenLog.descriptionLabelPath = LoggerWindow.default_descriptionLabelPath 1758 1759 def OpenStructureBrowser(self, *args): 1760 StructureBrowserWnd.ToggleOpenClose() 1761 1762 OpenStructureBrowser.nameLabelPath = StructureBrowserWnd.default_captionLabelPath 1763 OpenStructureBrowser.descriptionLabelPath = 'Tooltips/Neocom/StructureBrowserDescription' 1764 1765 def OpenAccessGroupsWindow(self, *args): 1766 AccessGroupsWnd.ToggleOpenClose() 1767 1768 OpenAccessGroupsWindow.nameLabelPath = AccessGroupsWnd.default_captionLabelPath 1769 OpenAccessGroupsWindow.descriptionLabelPath = 'Tooltips/Neocom/AccessListsDescription' 1770 1771 def __OpenLog_thread(self, *args): 1772 LoggerWindow.ToggleOpenClose() 1773 1774 def OpenDroneBayOfActiveShip(self, *args): 1775 if eveCfg.GetActiveShip() is not None: 1776 uthread.new(self.__OpenDroneBayOfActiveShip_thread).context = 'cmd.OpenDroneBayOfActiveShip' 1777 1778 OpenDroneBayOfActiveShip.nameLabelPath = 'UI/Commands/OpenDroneBayOfActiveShip' 1779 1780 def __OpenDroneBayOfActiveShip_thread(self, *args): 1781 shipID = eveCfg.GetActiveShip() 1782 if shipID is None: 1783 return 1784 shipItem = sm.GetService('clientDogmaIM').GetDogmaLocation().GetDogmaItemWithWait(shipID) 1785 godmaType = sm.GetService('godma').GetType(shipItem.typeID) 1786 if godmaType.droneCapacity or IsModularShip(shipItem.typeID): 1787 invID = ('ShipDroneBay', shipID) 1788 Inventory.OpenOrShow(invID=invID, usePrimary=False, toggle=True) 1789 else: 1790 raise UserError('ShipHasNoDroneBay') 1791 1792 def OpenFighterBayOfActiveShip(self, *args): 1793 if eveCfg.GetActiveShip() is not None: 1794 uthread.new(self.__OpenFighterBayOfActiveShip_thread).context = 'cmd.OpenFighterBayOfActiveShip' 1795 1796 OpenFighterBayOfActiveShip.nameLabelPath = 'UI/Commands/OpenFighterBayOfActiveShip' 1797 1798 def __OpenFighterBayOfActiveShip_thread(self, *args): 1799 shipID = session.shipid 1800 if shipID is None: 1801 return 1802 shipItem = sm.GetService('clientDogmaIM').GetDogmaLocation().GetDogmaItemWithWait(shipID) 1803 godmaType = sm.GetService('godma').GetType(shipItem.typeID) 1804 if godmaType.fighterCapacity: 1805 if session.shipid == session.structureid: 1806 invID = ('StructureFighterBay', shipID) 1807 else: 1808 invID = ('ShipFighterBay', shipID) 1809 Inventory.OpenOrShow(invID=invID, usePrimary=False, toggle=True) 1810 else: 1811 raise UserError('ShipHasNoFighterBay') 1812 1813 def OpenCargoHoldOfActiveShip(self, *args): 1814 if eveCfg.GetActiveShip() is not None: 1815 uthread.new(self.__OpenCargoHoldOfActiveShip_thread).context = 'cmd.OpenCargoHoldOfActiveShip' 1816 1817 OpenCargoHoldOfActiveShip.nameLabelPath = 'Tooltips/Hud/CargoHold' 1818 OpenCargoHoldOfActiveShip.descriptionLabelPath = 'Tooltips/Hud/CargoHold_description' 1819 1820 def __OpenCargoHoldOfActiveShip_thread(self, *args): 1821 shipID = eveCfg.GetActiveShip() 1822 if eveCfg.IsControllingStructure(): 1823 return self.OpenStructureCargo() 1824 if shipID is None: 1825 return 1826 shipItem = sm.GetService('clientDogmaIM').GetDogmaLocation().GetDogmaItemWithWait(shipID) 1827 if shipItem is None: 1828 return 1829 invID = (invConst.INVENTORY_ID_SHIP_CARGO, shipID) 1830 Inventory.OpenOrShow(invID=invID, usePrimary=False, toggle=True) 1831 1832 def OpenStructureCargo(self): 1833 invID = ('Structure', session.structureid) 1834 Inventory.OpenOrShow(invID=invID, usePrimary=False, toggle=True) 1835 1836 def OpenPlexVault(self): 1837 invID = (invConst.INVENTORY_ID_PLEX_VAULT, None) 1838 Inventory.OpenOrShow(invID=invID, usePrimary=True, toggle=True) 1839 1840 OpenPlexVault.nameLabelPath = 'UI/Neocom/PlexVault' 1841 OpenPlexVault.descriptionLabelPath = 'Tooltips/Neocom/PlexVaultDescription' 1842 OpenStructureCargo.nameLabelPath = 'Tooltips/Hud/CargoHold' 1843 OpenStructureCargo.descriptionLabelPath = 'Tooltips/Hud/CargoHoldStructure_description' 1844 1845 def OpenRaffleWindow(self): 1846 sm.GetService('raffleSvc').toggle_window() 1847 1848 OpenRaffleWindow.nameLabelPath = 'UI/HyperNet/WindowTitle' 1849 OpenRaffleWindow.descriptionLabelPath = 'UI/HyperNet/WindowDescription' 1850 1851 def OpenJobBoardWindow(self): 1852 get_job_board_service().toggle_window() 1853 1854 OpenJobBoardWindow.nameLabelPath = 'UI/Opportunities/WindowTitle' 1855 OpenJobBoardWindow.descriptionLabelPath = 'UI/Opportunities/WindowDescription' 1856 1857 def OpenPVPFilamentEventWindow(self): 1858 sm.GetService('pvpFilamentSvc').OpenPVPFilamentEventWindow() 1859 1860 OpenPVPFilamentEventWindow.nameLabelPath = 'UI/PVPFilament/EventWindow/WindowTitle' 1861 OpenPVPFilamentEventWindow.descriptionLabelPath = 'UI/PVPFilament/EventWindow/WindowDescription' 1862 1863 def OpenFuelBayOfActiveShip(self): 1864 self._OpenSpecialHoldOfActiveship(appConst.attributeSpecialFuelBayCapacity, 'ShipFuelBay') 1865 1866 OpenFuelBayOfActiveShip.nameLabelPath = 'UI/Commands/OpenFuelBayOfActiveShip' 1867 1868 def OpenGeneralMiningHoldOfActiveShip(self): 1869 self._OpenSpecialHoldOfActiveship(appConst.attributeGeneralMiningHoldCapacity, 'ShipGeneralMiningHold') 1870 1871 OpenGeneralMiningHoldOfActiveShip.nameLabelPath = 'UI/Commands/OpenGeneralMiningHoldOfActiveShip' 1872 1873 def OpenMineralHoldOfActiveShip(self): 1874 self._OpenSpecialHoldOfActiveship(appConst.attributeSpecialMineralHoldCapacity, 'ShipMineralHold') 1875 1876 OpenMineralHoldOfActiveShip.nameLabelPath = 'UI/Commands/OpenMineralHoldOfActiveShip' 1877 1878 def OpenPlanetaryCommoditiesHoldOfActiveShip(self): 1879 self._OpenSpecialHoldOfActiveship(appConst.attributeSpecialPlanetaryCommoditiesHoldCapacity, 'ShipPlanetaryCommoditiesHold') 1880 1881 OpenPlanetaryCommoditiesHoldOfActiveShip.nameLabelPath = 'UI/Commands/OpenPlanetaryCommoditiesHoldOfActiveShip' 1882 1883 def OpenAmmoHoldOfActiveShip(self): 1884 self._OpenSpecialHoldOfActiveship(appConst.attributeSpecialAmmoHoldCapacity, 'ShipAmmoHold') 1885 1886 OpenAmmoHoldOfActiveShip.nameLabelPath = 'UI/Commands/OpenAmmoHold' 1887 1888 def OpenFleetHangarOfActiveShip(self): 1889 self._OpenSpecialHoldOfActiveship(appConst.attributeFleetHangarCapacity, 'ShipFleetHangar') 1890 1891 OpenFleetHangarOfActiveShip.nameLabelPath = 'UI/Commands/OpenFleetHangar' 1892 1893 def OpenShipMaintenanceOfBayActiveShip(self): 1894 self._OpenSpecialHoldOfActiveship(appConst.attributeShipMaintenanceBayCapacity, 'ShipMaintenanceBay') 1895 1896 OpenShipMaintenanceOfBayActiveShip.nameLabelPath = 'UI/Commands/OpenShipMaintenanceBay' 1897 1898 def OpenInfrastructureBayOfActiveShip(self): 1899 self._OpenSpecialHoldOfActiveship(appConst.attributeSpecialColonyResourcesHoldCapacity, ContainerType.SHIP_COLONY_RESOURCES_HOLD) 1900 1901 OpenInfrastructureBayOfActiveShip.nameLabelPath = 'UI/Commands/OpenInfrastructureHold' 1902 1903 def OpenFrigateEscapeBay(self): 1904 self._OpenSpecialHoldOfActiveship(appConst.attributeFrigateEscapeBayCapacity, 'ShipFrigateEscapeBay') 1905 1906 OpenFrigateEscapeBay.nameLabelPath = 'UI/Commands/OpenFrigateEscapeBay' 1907 1908 def _OpenSpecialHoldOfActiveship(self, attr, invCtrlName): 1909 itemID = eveCfg.GetActiveShip() 1910 if itemID is None: 1911 return 1912 ship = sm.GetService('clientDogmaIM').GetDogmaLocation().GetDogmaItemWithWait(itemID) 1913 if bool(sm.GetService('godma').GetTypeAttribute(ship.typeID, attr)): 1914 invID = (invCtrlName, itemID) 1915 Inventory.OpenOrShow(invID=invID, usePrimary=False, toggle=True) 1916 1917 def OpenCharactersheet(self, *args): 1918 if session.solarsystemid2: 1919 CharacterSheetWindow.ToggleOpenClose() 1920 1921 OpenCharactersheet.nameLabelPath = CharacterSheetWindow.default_captionLabelPath 1922 OpenCharactersheet.descriptionLabelPath = CharacterSheetWindow.default_descriptionLabelPath 1923 1924 def OpenFleet(self, *args): 1925 FleetWindow.ToggleOpenClose() 1926 1927 OpenFleet.nameLabelPath = FleetWindow.default_captionLabelPath 1928 OpenFleet.descriptionLabelPath = FleetWindow.default_descriptionLabelPath 1929 1930 def OpenFleetWatchlist(self): 1931 if not session.fleetid: 1932 return 1933 WatchListPanel.Open(showActions=False, panelName=localization.GetByLabel('UI/Fleet/WatchList')) 1934 1935 OpenFleetWatchlist.nameLabelPath = 'UI/Fleet/Watchlist/WatchListWindow' 1936 1937 def OpenPeopleAndPlaces(self, *args): 1938 if session.solarsystemid2: 1939 AddressBookWindow.ToggleOpenClose() 1940 1941 OpenPeopleAndPlaces.nameLabelPath = AddressBookWindow.default_captionLabelPath 1942 OpenPeopleAndPlaces.descriptionLabelPath = AddressBookWindow.default_descriptionLabelPath 1943 1944 def OpenAuraGuidance(self, *args): 1945 wnd = AuraGuidanceWindow.Open() 1946 if aura_guidance_intro.is_enabled(): 1947 wnd.display_first_time_intro() 1948 aura_guidance_intro.disable() 1949 1950 OpenAuraGuidance.nameLabelPath = AuraGuidanceWindow.neocom_titleLabelPath 1951 OpenAuraGuidance.descriptionLabelPath = AuraGuidanceWindow.default_descriptionLabelPath 1952 1953 def OpenLocations(self, *args): 1954 if session.solarsystemid2: 1955 LocationsWindow.ToggleOpenClose() 1956 1957 OpenLocations.nameLabelPath = LocationsWindow.default_captionLabelPath 1958 OpenLocations.descriptionLabelPath = LocationsWindow.default_descriptionLabelPath 1959 1960 def OpenHelp(self, *args): 1961 if not session.charid: 1962 return 1963 HelpWindow.ToggleOpenClose() 1964 1965 OpenHelp.nameLabelPath = HelpWindow.default_captionLabelPath 1966 OpenHelp.descriptionLabelPath = HelpWindow.default_descriptionLabelPath 1967 1968 def OpenReportBug(self, *args): 1969 BugReportingWindow.ToggleOpenClose() 1970 1971 def OpenManageRoute(self, *args): 1972 if not session.charid: 1973 return 1974 AutopilotSettings.ToggleOpenClose() 1975 1976 OpenManageRoute.nameLabelPath = AutopilotSettings.default_captionLabelPath 1977 1978 def OpenProbeScanner(self, *args): 1979 if eveCfg.InSpace(): 1980 if is_scanning_suppressed(session.solarsystemid2): 1981 raise UserError('CannotProbeScanInSystem') 1982 from eve.client.script.ui.inflight.probeScannerWindow import ProbeScannerWindow 1983 ProbeScannerWindow.OpenProbeScanner(*args) 1984 else: 1985 message_player(GetByLabel('UI/ErrorDialog/mustUndockToTakeAction')) 1986 1987 OpenProbeScanner.nameLabelPath = ProbeScannerWindow.default_captionLabelPath 1988 OpenProbeScanner.descriptionLabelPath = ProbeScannerWindow.default_descriptionLabelPath 1989 1990 def ToggleProbeScanner(self, *args): 1991 if eveCfg.InSpace(): 1992 if is_scanning_suppressed(session.solarsystemid2): 1993 raise UserError('CannotProbeScanInSystem') 1994 from eve.client.script.ui.inflight.probeScannerWindow import ProbeScannerWindow 1995 ProbeScannerWindow.ToggleOpenCloseProbeScanner() 1996 else: 1997 message_player(GetByLabel('UI/ErrorDialog/mustUndockToTakeAction')) 1998 1999 ToggleProbeScanner.nameLabelPath = ProbeScannerWindow.default_captionLabelPath 2000 ToggleProbeScanner.descriptionLabelPath = ProbeScannerWindow.default_descriptionLabelPath 2001 2002 def OpenDirectionalScanner(self, toggle = True, *args): 2003 if eveCfg.InSpace(): 2004 if is_directional_scanner_suppressed(session.solarsystemid2): 2005 message_player(GetByLabel('UI/InfoWindow/DscanDisabled')) 2006 return 2007 if toggle: 2008 DirectionalScanner.ToggleOpenCloseDirectionalScanner() 2009 else: 2010 DirectionalScanner.OpenDirectionalScanner() 2011 2012 OpenDirectionalScanner.nameLabelPath = DirectionalScanner.default_captionLabelPath 2013 OpenDirectionalScanner.descriptionLabelPath = DirectionalScanner.default_descriptionLabelPath 2014 2015 def OpenMoonScan(self, *args): 2016 if eveCfg.InShipInSpace(): 2017 MoonScanner.ToggleOpenClose() 2018 2019 OpenMoonScan.nameLabelPath = MoonScanner.default_captionLabelPath 2020 2021 def OpenMapBrowser(self, locationID = None): 2022 if session.solarsystemid2: 2023 if is_map_browser_suppressed(session.solarsystemid2): 2024 wnd = MapBrowserWnd.GetIfOpen() 2025 if wnd and not wnd.destroyed: 2026 wnd.Close() 2027 raise UserError('CannotOpenMapBrowserInAbyssSpace') 2028 wnd = MapBrowserWnd.GetIfOpen() 2029 if wnd and not wnd.destroyed: 2030 if locationID is None: 2031 wnd.ToggleOpenClose() 2032 else: 2033 if wnd.state == uiconst.UI_HIDDEN: 2034 wnd.Show() 2035 wnd.DoLoad(locationID) 2036 return 2037 MapBrowserWnd.Open(locationID=locationID) 2038 2039 OpenMapBrowser.nameLabelPath = MapBrowserWnd.default_captionLabelPath 2040 OpenMapBrowser.descriptionLabelPath = MapBrowserWnd.default_descriptionLabelPath 2041 2042 def OpenHangarFloor(self, *args): 2043 if session.stationid: 2044 invWindow.StationItems.ToggleOpenClose(windowInstanceID=session.stationid) 2045 if session.structureid: 2046 invWindow.StructureItems.ToggleOpenClose(windowInstanceID=session.structureid) 2047 2048 OpenHangarFloor.nameLabelPath = 'UI/Commands/OpenHangarFloor' 2049 2050 def OpenShipHangar(self, *args, **kwds): 2051 if session.stationid: 2052 invWindow.StationShips.ToggleOpenClose(windowInstanceID=session.stationid) 2053 if session.structureid: 2054 invWindow.StructureShips.ToggleOpenClose(windowInstanceID=session.structureid) 2055 2056 OpenShipHangar.nameLabelPath = 'UI/Commands/OpenShipHangar' 2057 2058 def OpenInventory(self, *args): 2059 if not session.charid: 2060 return 2061 invWindow.InventoryPrimary.ToggleOpenClose() 2062 2063 OpenInventory.nameLabelPath = 'UI/Neocom/InventoryBtn' 2064 OpenInventory.descriptionLabelPath = 'Tooltips/Neocom/Inventory_description' 2065 2066 def OpenCalculator(self, *args): 2067 Calculator.ToggleOpenClose() 2068 2069 OpenCalculator.nameLabelPath = Calculator.default_captionLabelPath 2070 OpenCalculator.descriptionLabelPath = Calculator.default_descriptionLabelPath 2071 2072 def OpenOverviewSettings(self, *args): 2073 OverviewSettingsWnd.Open() 2074 2075 OpenOverviewSettings.nameLabelPath = OverviewSettingsWnd.default_captionLabelPath 2076 OpenOverviewSettings.descriptionLabelPath = OverviewSettingsWnd.default_descriptionLabelPath 2077 2078 def OpenCorpHangar(self, *args): 2079 office = sm.GetService('officeManager').GetCorpOfficeAtLocation() 2080 if office: 2081 invClass = 'StationCorpHangars' if session.stationid else 'StructureCorpHangars' 2082 invID = (invClass, office.officeID) 2083 Inventory.OpenOrShow(invID=invID, usePrimary=False, toggle=True) 2084 2085 OpenCorpHangar.nameLabelPath = 'UI/Commands/OpenCorpHangar' 2086 2087 def OpenCorpDeliveries(self, *args): 2088 if session.stationid or session.structureid: 2089 uthread.new(self.__OpenCorpDeliveries_thread) 2090 2091 OpenCorpDeliveries.nameLabelPath = 'UI/Commands/OpenCorpDeliveries' 2092 2093 def __OpenCorpDeliveries_thread(self, *args): 2094 locationID = session.stationid or session.structureid 2095 if not locationID: 2096 return 2097 invWindow.StationCorpDeliveries.ToggleOpenClose(windowInstanceID=locationID) 2098 2099 def OpenCorporationItemDeliveries(self, *args): 2100 if session.stationid or session.structureid: 2101 uthread.new(self.__OpenCorporationItemDeliveries_thread) 2102 2103 OpenCorporationItemDeliveries.nameLabelPath = 'UI/Commands/OpenCapsuleerDeliveries' 2104 2105 def __OpenCorporationItemDeliveries_thread(self, *args): 2106 locationID = session.stationid or session.structureid 2107 if not locationID: 2108 return 2109 invWindow.CorporationItemDeliveries.ToggleOpenClose(windowInstanceID=locationID) 2110 2111 def OpenVideoPlayerWindow(self, videoPath): 2112 VideoPlayerWindow.Open().SetVideoPath(videoPath) 2113 2114 def OpenPaintToolWindow(self, *args): 2115 PaintToolWnd.ToggleOpenClose() 2116 2117 OpenPaintToolWindow.nameLabelPath = PaintToolWnd.default_captionLabelPath 2118 OpenPaintToolWindow.descriptionLabelPath = PaintToolWnd.default_descriptionLabelPath 2119 2120 def OpenShipSKINRWindow(self, *args): 2121 ShipSKINRWindow.ToggleOpenClose() 2122 2123 OpenShipSKINRWindow.nameLabelPath = ShipSKINRWindow.default_captionLabelPath 2124 OpenShipSKINRWindow.descriptionLabelPath = ShipSKINRWindow.default_descriptionLabelPath 2125 2126 def OpenOmegaUpsellWindow(self, *args): 2127 OmegaUpsellWindow.ToggleOpenClose() 2128 2129 OpenOmegaUpsellWindow.nameLabelPath = OmegaUpsellWindow.default_captionLabelPath 2130 OpenOmegaUpsellWindow.descriptionLabelPath = OmegaUpsellWindow.default_descriptionLabelPath 2131 2132 def OpenAchievementsWindow(self, *args): 2133 AchievementsWindow.ToggleOpenClose() 2134 2135 OpenAchievementsWindow.nameLabelPath = AchievementsWindow.default_captionLabelPath 2136 OpenAchievementsWindow.descriptionLabelPath = AchievementsWindow.default_descriptionLabelPath 2137 2138 def OpenAchievement(self, achievement_id): 2139 AchievementsWindow.open_achievement(achievement_id) 2140 2141 def OpenAchievementCategory(self, category_id): 2142 AchievementsWindow.open_category(category_id) 2143 2144 def BuyMultipleCharacterTrainingOnline(self, origin = None, reason = None): 2145 try: 2146 base_url = get_eve_store_url() 2147 plex_url = get_url_with_token_and_parameters(url=base_url, path='mct', origin=origin, reason=reason, utm_medium='app', utm_source='eveonline', utm_campaign='newedenstore', utm_content='cta_buymct') 2148 if 'secure' in base_url.lower(): 2149 plex_url = get_url_with_token_and_parameters(url=urlparse.urljoin(base_url, 'multiple-character-training'), origin=origin, reason=reason, utm_medium='app', utm_source='eveonline', utm_campaign='newedenstore', utm_content='cta_buymct') 2150 blue.os.ShellExecute(plex_url) 2151 except Exception: 2152 LogException('Failed to open URL to buy MCT online') 2153 raise UserError('FailedToOpenBuyPlexUrl') 2154 2155 def BuyContextualOfferOnline(self, url, offerID): 2156 try: 2157 baseurl = urllib.splitquery(url)[0] 2158 kwargs = self.UrlParamsToKwargDict(url) if '?' in url else {} 2159 contextualOfferUrl = get_url_with_token_and_parameters(url=baseurl, origin='contextualofferwindow', utm_medium='app', utm_source='eveonline', utm_campaign='contextualoffers', utm_content=str(offerID), **kwargs) 2160 blue.os.ShellExecute(contextualOfferUrl) 2161 except Exception: 2162 LogException('Failed to open URL for the offer (offerID: %s, URL: %s)' % (offerID, url)) 2163 raise 2164 2165 def ViewSpecialOffersOnline(self, origin = None, reason = None): 2166 try: 2167 specialOffersUrl = get_url_with_token_and_parameters(url=self.GetStoreServerURL(), origin=origin, reason=reason) 2168 blue.os.ShellExecute(specialOffersUrl) 2169 except Exception: 2170 LogException('Failed to open Special Offers URL') 2171 raise 2172 2173 def UrlParamsToKwargDict(self, url): 2174 kwargs = {} 2175 queryResults = urllib.splitquery(url) 2176 if len(queryResults) > 1: 2177 query = queryResults[1] 2178 splitquery = query.split('&') 2179 for keyvalueset in splitquery: 2180 key, value = urllib.splitvalue(keyvalueset) 2181 kwargs[key] = value 2182 2183 return kwargs 2184 2185 def OpenAccountManagement(self, origin = None, reason = None): 2186 try: 2187 accountUrl = get_url_with_token_and_parameters(get_eve_secure_url(), origin=origin, reason=reason) 2188 blue.os.ShellExecute(accountUrl) 2189 except Exception: 2190 LogException('Failed to open URL to access account management online') 2191 raise UserError('FailedToOpenAccountManagementUrl') 2192 2193 def OpenBrowser(self, url = None, windowName = 'virtualbrowser', args = {}, data = None, newTab = False): 2194 parsedUrl = urlparse.urlparse(url or '') 2195 if not session.charid: 2196 if url is not None and url != 'home' and parsedUrl.scheme in ('http', 'https'): 2197 blue.os.ShellExecute(url) 2198 return 2199 if parsedUrl.hostname and (parsedUrl.hostname.count('secure.eveonline.com') > 0 or parsedUrl.hostname.count('store.eveonline.com') > 0): 2200 if parsedUrl.path.lower().count('plex') > 0: 2201 sm.GetService('fastCheckoutClientService').buy_plex_online() 2202 else: 2203 self.OpenAccountManagement() 2204 return 2205 2206 OpenBrowser.nameLabelPath = 'UI/Neocom/BrowserBtn' 2207 2208 def OpenNotepad(self, *args): 2209 NotepadWindow.ToggleOpenClose() 2210 2211 OpenNotepad.nameLabelPath = NotepadWindow.default_captionLabelPath 2212 OpenNotepad.descriptionLabelPath = NotepadWindow.default_descriptionLabelPath 2213 2214 def OpenMoonMining(self, id = None): 2215 bp = sm.GetService('michelle').GetBallpark() 2216 if not id: 2217 for itemID in bp.slimItems: 2218 if bp.slimItems[itemID].groupID == appConst.groupControlTower: 2219 id = bp.slimItems[itemID] 2220 break 2221 2222 if not id: 2223 return 2224 MoonMining.ToggleOpenClose(slimItem=id) 2225 2226 OpenMoonMining.nameLabelPath = MoonMining.default_captionLabelPath 2227 OpenMoonMining.descriptionLabelPath = MoonMining.default_descriptionLabelPath 2228 2229 def OpenLedger(self, *args): 2230 LedgerWindow.ToggleOpenClose() 2231 2232 OpenLedger.nameLabelPath = LedgerWindow.default_captionLabelPath 2233 OpenLedger.descriptionLabelPath = LedgerWindow.default_descriptionLabelPath 2234 2235 def OpenCloneUpgradeWindow(self, origin = None, reason = None): 2236 open_omega_upgrade_window(origin=origin, reason=reason) 2237 2238 def OpenShipConfig(self, id = None): 2239 activeShipID = eveCfg.GetActiveShip() 2240 if activeShipID is not None: 2241 ship = sm.GetService('clientDogmaIM').GetDogmaLocation().GetShip() 2242 typeObj = sm.GetService('godma').GetType(ship.typeID) 2243 if bool(typeObj.canReceiveCloneJumps): 2244 ShipConfig.ToggleOpenClose() 2245 2246 OpenShipConfig.nameLabelPath = ShipConfig.default_captionLabelPath 2247 OpenShipConfig.descriptionLabelPath = ShipConfig.default_descriptionLabelPath 2248 2249 def HasServiceAccess(self, serviceName, onlyCheckFacWarSystems = False): 2250 if onlyCheckFacWarSystems and not sm.GetService('fwWarzoneSvc').IsWarzoneSolarSystem(session.solarsystemid2): 2251 return True 2252 from eve.client.script.ui.shared.dockedUI.lobbyWnd import LobbyWnd 2253 lobby = LobbyWnd.GetIfOpen() 2254 if lobby is None: 2255 return False 2256 lobby.CheckCanAccessService(serviceName) 2257 return True 2258 2259 def _IsRepairServiceAvailable(self): 2260 if session.stationid and sm.GetService('station').IsStationServiceAvailable(appConst.stationServiceRepairFacilities): 2261 if self.HasServiceAccess('repairshop'): 2262 return True 2263 if session.structureid: 2264 if sm.GetService('structureServices').IsServiceAvailableForCharacter(structures.SERVICE_REPAIR): 2265 return True 2266 return False 2267 2268 def _IsInsuranceServiceAvailable(self): 2269 if session.stationid and sm.GetService('station').IsStationServiceAvailable(appConst.stationServiceInsurance): 2270 if self.HasServiceAccess('insurance'): 2271 return True 2272 if session.structureid: 2273 if sm.GetService('structureServices').IsServiceAvailableForCharacter(structures.SERVICE_INSURANCE): 2274 return True 2275 return False 2276 2277 def _IsReprocessingServiceAvailable(self): 2278 if session.stationid and sm.GetService('station').IsStationServiceAvailable(appConst.stationServiceReprocessingPlant): 2279 if self.HasServiceAccess('reprocessingPlant'): 2280 return True 2281 if session.structureid: 2282 if sm.GetService('structureSettings').CharacterHasService(session.structureid, structures.SERVICE_REPROCESSING): 2283 return True 2284 return False 2285 2286 def OpenMarket(self, *args): 2287 if session.stationid is None or self.HasServiceAccess('market', True): 2288 RegionalMarket.ToggleOpenClose() 2289 2290 OpenMarket.nameLabelPath = RegionalMarket.default_captionLabelPath 2291 OpenMarket.descriptionLabelPath = RegionalMarket.default_descriptionLabelPath 2292 2293 def OpenMarketOrders(self, *args): 2294 MarketOrdersWnd.ToggleOpenClose() 2295 2296 OpenMarketOrders.nameLabelPath = MarketOrdersWnd.default_captionLabelPath 2297 OpenMarketOrders.descriptionLabelPath = MarketOrdersWnd.default_descriptionLabelPath 2298 2299 def OpenContracts(self, *args): 2300 wnd = ContractsWindow.ToggleOpenClose() 2301 2302 OpenContracts.nameLabelPath = ContractsWindow.default_captionLabelPath 2303 OpenContracts.descriptionLabelPath = ContractsWindow.default_descriptionLabelPath 2304 2305 def OpenIndustry(self, *args): 2306 if session.solarsystemid2: 2307 Industry.ToggleOpenClose() 2308 2309 OpenIndustry.nameLabelPath = Industry.default_captionLabelPath 2310 OpenIndustry.descriptionLabelPath = Industry.default_descriptionLabelPath 2311 2312 def OpenMultibuy(self, *args): 2313 BuyMultipleTypesWithQty({}) 2314 2315 OpenMultibuy.nameLabelPath = 'UI/Market/Multibuy' 2316 OpenMultibuy.descriptionLabelPath = 'UI/Market/Multibuy_description' 2317 2318 def OpenPlanets(self, *args): 2319 if session.solarsystemid2: 2320 PlanetWindow.ToggleOpenClose() 2321 2322 OpenPlanets.nameLabelPath = PlanetWindow.default_captionLabelPath 2323 OpenPlanets.descriptionLabelPath = PlanetWindow.default_descriptionLabelPath 2324 2325 def OpenMyMercenaryDens(self, *args): 2326 if session.solarsystemid2: 2327 MyMercDensWnd.ToggleOpenClose() 2328 2329 OpenMyMercenaryDens.nameLabelPath = MyMercDensWnd.default_captionLabelPath 2330 OpenMyMercenaryDens.descriptionLabelPath = MyMercDensWnd.default_descriptionLabelPath 2331 2332 def OpenFitting(self, *args): 2333 return self._OpenNewFittingWnd() 2334 2335 OpenFitting.nameLabelPath = FittingWindow.default_captionLabelPath 2336 OpenFitting.descriptionLabelPath = FittingWindow.default_descriptionLabelPath 2337 2338 def _OpenNewFittingWnd(self): 2339 fittingSvc = sm.GetService('fittingSvc') 2340 shipID = fittingSvc.GetShipIDForFittingWindow() 2341 if shipID is None: 2342 if fittingSvc.IsShipSimulated(): 2343 fittingSvc.SetSimulationState(False) 2344 else: 2345 prompt_player_fsd_dialog('CannotPerformActionWithoutShip') 2346 return 2347 if session.stationid is None or self.HasServiceAccess('fitting'): 2348 FittingWindow.ToggleOpenClose(shipID=shipID) 2349 2350 def OpenMedical(self, *args): 2351 CharacterSheetWindow.ToggleOpenWithPanel(PANEL_JUMPCLONES) 2352 2353 OpenMedical.nameLabelPath = 'Tooltips/StationServices/CloneBay' 2354 OpenMedical.descriptionLabelPath = 'Tooltips/StationServices/CloneBay_description' 2355 2356 def OpenRepairshop(self, *args): 2357 if self._IsRepairServiceAvailable(): 2358 RepairShopWindow.ToggleOpenClose() 2359 2360 OpenRepairshop.nameLabelPath = RepairShopWindow.default_captionLabelPath 2361 OpenRepairshop.descriptionLabelPath = RepairShopWindow.default_descriptionLabelPath 2362 2363 def OpenInsurance(self, *args): 2364 if self._IsInsuranceServiceAvailable(): 2365 InsuranceWindow.ToggleOpenClose() 2366 2367 OpenInsurance.nameLabelPath = InsuranceWindow.default_captionLabelPath 2368 OpenInsurance.descriptionLabelPath = InsuranceWindow.default_descriptionLabelPath 2369 2370 def OpenBountyOffice(self, *args): 2371 if not IsPlayerBountyHidden(sm.GetService('machoNet')): 2372 BountyWindow.ToggleOpenClose() 2373 2374 OpenBountyOffice.nameLabelPath = BountyWindow.default_captionLabelPath 2375 OpenBountyOffice.descriptionLabelPath = BountyWindow.default_descriptionLabelPath 2376 2377 def OpenSecurityOffice(self, *args): 2378 if session.stationid: 2379 if sm.GetService('securityOfficeSvc').CanAccessServiceInStation(session.stationid): 2380 SecurityOfficeWindow.ToggleOpenClose() 2381 2382 OpenSecurityOffice.nameLabelPath = SecurityOfficeWindow.default_captionLabelPath 2383 OpenSecurityOffice.descriptionLabelPath = SecurityOfficeWindow.default_descriptionLabelPath 2384 2385 def OpenFwEnlistment(self, *args, **kwargs): 2386 theatersOfWarUtil.open_enlistment_window(**kwargs) 2387 2388 OpenFwEnlistment.nameLabelPath = 'UI/FactionWarfare/FwEnlistmentWnd' 2389 2390 def OpenInsurgencyDashboard(self, *args, **kwargs): 2391 theatersOfWarUtil.open_insurgencies_window(**kwargs) 2392 2393 OpenInsurgencyDashboard.nameLabelPath = 'UI/PirateInsurgencies/dashboardCaption' 2394 OpenInsurgencyDashboard.descriptionLabelPath = 'UI/PirateInsurgencies/Insurgency_description' 2395 2396 def OpenMilitia(self, *args, **kwargs): 2397 theatersOfWarUtil.open_fw_window(**kwargs) 2398 2399 OpenMilitia.nameLabelPath = 'Tooltips/StationServices/FactionalWarfare' 2400 OpenMilitia.descriptionLabelPath = 'Tooltips/StationServices/FactionalWarfare_description' 2401 2402 def OpenRelevantFWWindow(self, *args, **kwargs): 2403 if session.warfactionid is None: 2404 self.OpenFwEnlistment(*args, **kwargs) 2405 elif IsPirateFWFaction(session.warfactionid): 2406 self.OpenInsurgencyDashboard(*args, **kwargs) 2407 else: 2408 self.OpenMilitia(*args, **kwargs) 2409 2410 OpenRelevantFWWindow.nameLabelPath = 'Tooltips/StationServices/FactionalWarfare' 2411 OpenRelevantFWWindow.descriptionLabelPath = 'Tooltips/StationServices/FactionalWarfare_description' 2412 2413 def OpenFWInfoTab(self, *args, **kwargs): 2414 wnd = self.OpenFwWindow(tab_id='Objectives') 2415 2416 def OpenFwWindow(self, *args, **kwargs): 2417 return theatersOfWarUtil.open_fw_window(*args, **kwargs) 2418 2419 def OpenReprocessingPlant(self, items = None): 2420 if self._IsReprocessingServiceAvailable(): 2421 if ReprocessingWnd.IsOpen() and items: 2422 wnd = ReprocessingWnd.GetIfOpen() 2423 wnd.AddPreselectedItems(items) 2424 if wnd.IsMinimized(): 2425 wnd.Maximize() 2426 else: 2427 ReprocessingWnd.ToggleOpenClose(selectedItems=items) 2428 2429 OpenReprocessingPlant.nameLabelPath = ReprocessingWnd.default_captionLabelPath 2430 OpenReprocessingPlant.descriptionLabelPath = ReprocessingWnd.default_descriptionLabelPath 2431 2432 def OpenLpstore(self, *args): 2433 lpstore = sm.GetService('lpstore') 2434 if session.stationid: 2435 stationOwnerCorpID = sm.GetService('station').stationItem.ownerID 2436 if idCheckers.IsNPC(stationOwnerCorpID) and self.HasServiceAccess('lpstore'): 2437 stores_to_open = [] 2438 normalStoresInStation = get_normal_lp_stores_in_station(session.stationid, stationOwnerCorpID) 2439 for corpID in normalStoresInStation: 2440 stores_to_open.append(corpID) 2441 2442 factionID = sm.GetService('map').GetItem(session.solarsystemid2).factionID 2443 rwCorpID = sm.GetService('rwService').get_rw_corp_for_faction_and_system(factionID) 2444 if rwCorpID is not None: 2445 stores_to_open.append(rwCorpID) 2446 lpstore.OpenLPStore(stores_to_open) 2447 elif session.structureid: 2448 structureInfo = sm.GetService('structureDirectory').GetStructureInfo(session.structureid) 2449 stationOwnerCorpID = structureInfo.ownerID 2450 if idCheckers.IsNPC(stationOwnerCorpID) and self.HasServiceAccess('lpstore'): 2451 stores_to_open = [stationOwnerCorpID] 2452 lpstore.OpenLPStore(stores_to_open) 2453 2454 OpenLpstore.nameLabelPath = LPStoreWindow.default_captionLabelPath 2455 OpenLpstore.descriptionLabelPath = LPStoreWindow.default_descriptionLabelPath 2456 2457 def OpenCharacterCustomization(self, *args): 2458 if IsContentComplianceControlSystemActive(sm.GetService('machoNet')): 2459 return 2460 if getattr(sm.GetService('map'), 'busy', False): 2461 return 2462 if sm.GetService('cc').NoExistingCustomization(): 2463 raise UserError('CantRecustomizeCharacterWithoutDoll') 2464 if session.stationid or session.structureid: 2465 try: 2466 self.loadingCharacterCustomization = True 2467 CharacterSheetWindow.CloseIfOpen() 2468 wnd = PreviewCharacterWnd.GetIfOpen() 2469 if wnd is not None: 2470 wnd.Close() 2471 if self.HasServiceAccess('charcustomization'): 2472 uicore.cmd.commandMap.UnloadAccelerator(uicore.cmd.commandMap.commandsByName['OpenCharactersheet']) 2473 sm.GetService('gameui').GoCharacterCreationCurrentCharacter() 2474 finally: 2475 self.loadingCharacterCustomization = False 2476 2477 OpenCharacterCustomization.nameLabelPath = 'Tooltips/StationServices/CharacterCustomization' 2478 OpenCharacterCustomization.descriptionLabelPath = 'Tooltips/StationServices/CharacterCustomization_description' 2479 2480 def OpenCalendar(self, *args): 2481 sm.GetService('neocom').BlinkOff('clock') 2482 if session.charid: 2483 CalendarWnd.ToggleOpenClose() 2484 2485 OpenCalendar.nameLabelPath = CalendarWnd.default_captionLabelPath 2486 OpenCalendar.descriptionLabelPath = CalendarWnd.default_descriptionLabelPath 2487 2488 def OpenAuraInteraction(self, *args): 2489 agentService = sm.GetService('agents') 2490 auraID = agentService.GetAuraAgentID() 2491 agentService.OpenDialogueWindow(auraID) 2492 2493 def CmdHideUI(self, force = 0): 2494 sys = uicore.layer.systemmenu 2495 if sys.isopen and not force: 2496 return 2497 sm.GetService('ui').ToggleUiVisible() 2498 2499 def CmdHideCursor(self, *args): 2500 uicore.uilib.SetCursor(uiconst.UICURSOR_NONE) 2501 2502 def CmdToggle3DView(self, *args): 2503 sm.GetService('sceneManager').ToggleEnable3DView() 2504 2505 def OpenDungeonEditor(self, *args): 2506 if eveCfg.InSpace() and session.role & ROLE_CONTENT: 2507 DungeonEditor.Open() 2508 if IsJessicaOpen(): 2509 DungeonObjectProperties.Open() 2510 2511 OpenDungeonEditor.nameLabelPath = 'UI/Commands/OpenDungeonEditor' 2512 2513 def OpenFittingMgmt(self): 2514 FittingMgmt.Open() 2515 2516 OpenFittingMgmt.nameLabelPath = FittingMgmt.default_captionLabelPath 2517 OpenFittingMgmt.descriptionLabelPath = 'Tooltips/Neocom/FittingManagementDescription' 2518 2519 def OpenCompare(self, *args): 2520 if use_new_comparison_tool.is_enabled(): 2521 ComparisonWindow.ToggleOpenClose() 2522 else: 2523 TypeCompare.ToggleOpenClose() 2524 2525 OpenCompare.nameLabelPath = ComparisonWindow.default_captionLabelPath 2526 OpenCompare.descriptionLabelPath = ComparisonWindow.default_descriptionLabelPath 2527 2528 def OpenUIDebugger(self, *args): 2529 if session.role & ROLE_GML: 2530 UITree.ToggleOpenClose() 2531 2532 def ToggleTheatersOfWarWindow(self, *args): 2533 TheatersOfWarDashboardWnd.ToggleOpenClose() 2534 2535 ToggleTheatersOfWarWindow.nameLabelPath = TheatersOfWarDashboardWnd.default_captionLabelPath 2536 2537 def OpenSkillTreeWindow(self): 2538 return SkillTreeDockablePanel.ToggleOpenClose() 2539 2540 def OpenImageCacheDemo(self, *args): 2541 from imagecaching.demo.image_cache_demo_window import ImageCacheDemoWindow 2542 ImageCacheDemoWindow.ToggleOpenClose() 2543 2544 def ToggleTelemetryRecord(self): 2545 if self._telemetrySessionActive: 2546 blue.statistics.StopTelemetry() 2547 self._telemetrySessionActive = False 2548 print('*** Telemetry session stopped ***') 2549 else: 2550 from pytelemetry import StartTelemetry 2551 StartTelemetry() 2552 self._telemetrySessionActive = True 2553 print('*** Telemetry session started ***') 2554 2555 def ToggleUILinearColor(self): 2556 uicore.desktop.renderObject.useLinearColorSpace = not uicore.desktop.renderObject.useLinearColorSpace 2557 2558 def ToggleGammaCorrectText(self): 2559 uicore.desktop.renderObject.gammaCorrectText = not uicore.desktop.renderObject.gammaCorrectText 2560 2561 def CmdToggleEffects(self, *args): 2562 candidateEffects = [] 2563 for guid in GetEffectGuids(): 2564 if guid not in FxSequencer.fxTurretGuids and guid not in FxSequencer.fxProtectedGuids: 2565 candidateEffects.append(guid) 2566 2567 disabledGuids = sm.GetService('FxSequencer').GetDisabledGuids() 2568 if len(candidateEffects) > 0: 2569 if candidateEffects[0] in disabledGuids: 2570 gfxsettings.Set(gfxsettings.UI_EFFECTS_ENABLED, 1, pending=False) 2571 sm.GetService('FxSequencer').EnableGuids(candidateEffects) 2572 prompt_player_fsd_dialog('CustomNotify', {'notify': 'All effects - On'}) 2573 else: 2574 gfxsettings.Set(gfxsettings.UI_EFFECTS_ENABLED, 0, pending=False) 2575 sm.GetService('FxSequencer').DisableGuids(candidateEffects) 2576 prompt_player_fsd_dialog('CustomNotify', {'notify': 'All effects - Off'}) 2577 2578 def CmdToggleEffectTurrets(self, *args): 2579 disabledGuids = sm.GetService('FxSequencer').GetDisabledGuids() 2580 if FxSequencer.fxTurretGuids[0] in disabledGuids: 2581 gfxsettings.Set(gfxsettings.UI_TURRETS_ENABLED, 1, pending=False) 2582 sm.GetService('FxSequencer').EnableGuids(FxSequencer.fxTurretGuids) 2583 prompt_player_fsd_dialog('CustomNotify', {'notify': 'All Turret effects - On'}) 2584 else: 2585 gfxsettings.Set(gfxsettings.UI_TURRETS_ENABLED, 0, pending=False) 2586 sm.GetService('FxSequencer').DisableGuids(FxSequencer.fxTurretGuids) 2587 prompt_player_fsd_dialog('CustomNotify', {'notify': 'All Turret effects - Off'}) 2588 2589 def CmdToggleCombatView(self, *args): 2590 if session.solarsystemid and session.role & ROLEMASK_ELEVATEDPLAYER: 2591 sm.GetService('target').ToggleViewMode() 2592 2593 def CmdCycleFleetBroadcastScope(self, *args): 2594 sm.GetService('fleet').CycleBroadcastScope() 2595 2596 def CmdToggleTargetItem(self): 2597 cmd = uicore.cmd.commandMap.GetCommandByName('CmdToggleTargetItem') 2598 self.LoadCombatCommand(sm.GetService('target').ToggleLockTarget, cmd) 2599 2600 def CmdLockTargetItem(self): 2601 cmd = uicore.cmd.commandMap.GetCommandByName('CmdLockTargetItem') 2602 self.LoadCombatCommand(sm.GetService('target').TryLockTarget, cmd) 2603 2604 def CmdSelectTargetItem(self): 2605 cmd = uicore.cmd.commandMap.GetCommandByName('CmdSelectTargetItem') 2606 self.LoadCombatCommand(GetMenuService().SelectTarget, cmd) 2607 2608 def CmdUnlockTargetItem(self): 2609 cmd = uicore.cmd.commandMap.GetCommandByName('CmdUnlockTargetItem') 2610 self.LoadCombatCommand(sm.GetService('target').UnlockTarget, cmd) 2611 2612 def CmdUnlockTargetItems(self): 2613 sm.GetService('target').UnlockTargets() 2614 2615 def CmdToggleLookAtItem(self): 2616 cmd = uicore.cmd.commandMap.GetCommandByName('CmdToggleLookAtItem') 2617 self.LoadCombatCommand(GetMenuService().ToggleLookAt, cmd) 2618 2619 def CmdToggleCameraTracking(self): 2620 cmd = uicore.cmd.commandMap.GetCommandByName('CmdToggleCameraTracking') 2621 self.LoadCombatCommand(GetMenuService().SetInterest, cmd) 2622 2623 def CmdApproachItem(self): 2624 cmd = uicore.cmd.commandMap.GetCommandByName('CmdApproachItem') 2625 if not self._IsCombatCmdAvailableToHull(): 2626 return 2627 uicore.layer.inflight.positionalControl.StartMoveCommand() 2628 self.LoadCombatCommand(movementFunctions.Approach, cmd) 2629 self.combatCmdUnloadFunc = self._CmdApproacItemUnloadCallback 2630 2631 def CmdGetLocationMenuForNavigation(self): 2632 cmd = uicore.cmd.commandMap.GetCommandByName('CmdGetLocationMenuForNavigation') 2633 self.LoadLightCombatCommand(cmd) 2634 2635 CmdGetLocationMenuForNavigation.nameLabelPath = 'UI/Commands/CmdGetLocationMenuForNavigation' 2636 CmdGetLocationMenuForNavigation.descriptionLabelPath = 'UI/Commands/CmdGetLocationMenuForNavigationDesc' 2637 2638 def CmdGetUiPointer(self): 2639 cmd = uicore.cmd.commandMap.GetCommandByName('CmdGetUiPointer') 2640 pointerHelper = sm.GetService('helpPointer').GetPointerOverlay(create=True) 2641 self.combatCmdUnloadFunc = self._CmdGetUiPointerUnloadCallback 2642 self.LogInfo('cmd:UI Pointer overlay: activate pointer') 2643 uthread.new(pointerHelper.ShowOverlay) 2644 self.LoadLightCombatCommand(cmd) 2645 2646 CmdGetUiPointer.nameLabelPath = 'UI/Commands/CmdGetUiPointer' 2647 CmdGetUiPointer.descriptionLabelPath = 'UI/Commands/CmdGetUiPointerDesc' 2648 2649 def _CmdGetUiPointerUnloadCallback(self, *args): 2650 sm.GetService('helpPointer').HidePointerOverlay() 2651 2652 def _IsCombatCmdAvailableToHull(self): 2653 if eveCfg.IsControllingStructure(): 2654 shipIsSelected, selectedFighterIDs = GetSelectedShipAndFighters() 2655 if not selectedFighterIDs: 2656 return False 2657 return True 2658 2659 def _CmdApproacItemUnloadCallback(self, *args): 2660 posCtrl = uicore.layer.inflight.positionalControl 2661 if not posCtrl.IsFirstPointSet(): 2662 posCtrl.AbortCommand() 2663 2664 def CmdAlignToItem(self): 2665 if not self._IsCombatCmdAvailableToHull(): 2666 return 2667 cmd = uicore.cmd.commandMap.GetCommandByName('CmdAlignToItem') 2668 self.LoadCombatCommand(GetMenuService().AlignTo, cmd) 2669 2670 def CmdOrbitItem(self): 2671 if not self._IsCombatCmdAvailableToHull(): 2672 return 2673 cmd = uicore.cmd.commandMap.GetCommandByName('CmdOrbitItem') 2674 self.LoadCombatCommand(Orbit, cmd) 2675 2676 def CmdKeepItemAtRange(self): 2677 if not self._IsCombatCmdAvailableToHull(): 2678 return 2679 cmd = uicore.cmd.commandMap.GetCommandByName('CmdKeepItemAtRange') 2680 self.LoadCombatCommand(KeepAtRange, cmd) 2681 2682 def CmdOpenSelectedCargoContainer(self): 2683 if not self._IsCombatCmdAvailableToHull(): 2684 return 2685 cmd = uicore.cmd.commandMap.GetCommandByName('CmdOpenSelectedCargoContainer') 2686 self.LoadCombatCommand(GetMenuService().OpenCargo, cmd) 2687 2688 CmdOpenSelectedCargoContainer.nameLabelPath = 'UI/Inflight/OpenSelectedCargoContainer' 2689 2690 def CmdShowItemInfo(self): 2691 cmd = uicore.cmd.commandMap.GetCommandByName('CmdShowItemInfo') 2692 self.LoadCombatCommand(GetMenuService().ShowInfoForItem, cmd) 2693 2694 def CmdDockOrJumpOrActivateGate(self): 2695 if eveCfg.IsControllingStructure(): 2696 return 2697 cmd = uicore.cmd.commandMap.GetCommandByName('CmdDockOrJumpOrActivateGate') 2698 self.LoadCombatCommand(DockOrJumpOrActivateGate, cmd) 2699 2700 def CmdWarpToItem(self): 2701 if not self._IsCombatCmdAvailableToHull(): 2702 return 2703 cmd = uicore.cmd.commandMap.GetCommandByName('CmdWarpToItem') 2704 self.LoadCombatCommand(WarpToItem, cmd) 2705 2706 def CmdOpenRadialMenu(self): 2707 cmd = uicore.cmd.commandMap.GetCommandByName('CmdOpenRadialMenu') 2708 self.LoadCombatCommand(None, cmd) 2709 2710 def CmdOpenBroadcastRadialMenu(self): 2711 if not session.fleetid: 2712 return 2713 cmd = uicore.cmd.commandMap.GetCommandByName('CmdOpenBroadcastRadialMenu') 2714 self.LoadCombatCommand(None, cmd) 2715 2716 def CmdSendBroadcast_Target(self): 2717 cmd = uicore.cmd.commandMap.GetCommandByName('CmdSendBroadcast_Target') 2718 self.LoadCombatCommand(sm.GetService('fleet').SendBroadcast_Target, cmd) 2719 2720 def CmdSendBroadcast_HealTarget(self): 2721 cmd = uicore.cmd.commandMap.GetCommandByName('CmdSendBroadcast_HealTarget') 2722 self.LoadCombatCommand(sm.GetService('fleet').SendBroadcast_Heal_Target, cmd) 2723 2724 def CmdSendBroadcast_WarpToItemID(self): 2725 cmd = uicore.cmd.commandMap.GetCommandByName('CmdSendBroadcast_WarpToItemID') 2726 self.LoadCombatCommand(sm.GetService('fleet').SendBroadcast_WarpToItemID, cmd) 2727 2728 def CmdSendBroadcast_AlignToItemID(self): 2729 cmd = uicore.cmd.commandMap.GetCommandByName('CmdSendBroadcast_AlignToItemID') 2730 self.LoadCombatCommand(sm.GetService('fleet').SendBroadcast_AlignToItemID, cmd) 2731 2732 def CmdSendBroadcast_JumpToItemID(self): 2733 cmd = uicore.cmd.commandMap.GetCommandByName('CmdSendBroadcast_JumpToItemID') 2734 self.LoadCombatCommand(sm.GetService('fleet').SendBroadcast_JumpToItemID, cmd) 2735 2736 def MakeCmdTagItem(self, tag): 2737 functionName = 'CmdTagItem_%s' % tag 2738 2739 def CmdTagItem(): 2740 if session.fleetid is None: 2741 return 2742 cmd = uicore.cmd.commandMap.GetCommandByName(functionName) 2743 2744 def DoTagItem(itemID): 2745 if session.fleetid is None: 2746 return 2747 self.menu.TagItem(itemID, tag) 2748 2749 self.LoadCombatCommand(DoTagItem, cmd) 2750 2751 CmdTagItem.__name__ = functionName 2752 return CmdTagItem 2753 2754 def MakeCmdTagItemFromSequence(self, tagSequence): 2755 functionName = 'CmdTagItem_%s' % ''.join(tagSequence) 2756 2757 def CmdTagItem(): 2758 if session.fleetid is None: 2759 return 2760 cmd = uicore.cmd.commandMap.GetCommandByName(functionName) 2761 2762 def DoTagItemFromSequence(itemID): 2763 if session.fleetid is None: 2764 return 2765 index = self.commandMemory.get(functionName, 0) 2766 tag = tagSequence[index] 2767 index = (index + 1) % len(tagSequence) 2768 self.commandMemory[functionName] = index 2769 self.menu.TagItem(itemID, tag) 2770 2771 self.LoadCombatCommand(DoTagItemFromSequence, cmd) 2772 2773 CmdTagItem.__name__ = functionName 2774 return CmdTagItem 2775 2776 def CmdToggleSensorOverlay(self): 2777 if eveCfg.InSpace(): 2778 sm.GetService('sensorSuite').ToggleOverlay() 2779 2780 CmdToggleSensorOverlay.nameLabelPath = 'UI/Inflight/Scanner/SensorOverlay' 2781 2782 def CmdCreateBookmark(self): 2783 if eveCfg.InSpace(): 2784 sm.GetService('addressbook').BookmarkCurrentLocation() 2785 2786 def CmdFleetGroup(self): 2787 if not session.fleetid: 2788 return 2789 if session.fleetrole in appConst.fleetCmdrRoles: 2790 sm.GetService('fleet').Regroup() 2791 2792 CmdFleetGroup.nameLabelPath = 'UI/Fleet/FleetRegroup' 2793 2794 def CmdClearFleetBroadcastIcons(self): 2795 if not session.fleetid: 2796 return 2797 sm.GetService('fleet').ClearWatchlistBroadcastHistory() 2798 2799 CmdClearFleetBroadcastIcons.nameLabelPath = 'UI/Fleet/ClearBroadcastIcons' 2800 2801 def CmdFlightControlsUp(self): 2802 pass 2803 2804 CmdFlightControlsUp.nameLabelPath = 'UI/Commands/CmdFlightControlsUp' 2805 2806 def CmdFlightControlsDown(self): 2807 pass 2808 2809 CmdFlightControlsDown.nameLabelPath = 'UI/Commands/CmdFlightControlsDown' 2810 2811 def CmdFlightControlsLeft(self): 2812 pass 2813 2814 CmdFlightControlsLeft.nameLabelPath = 'UI/Commands/CmdFlightControlsLeft' 2815 2816 def CmdFlightControlsRight(self): 2817 pass 2818 2819 CmdFlightControlsRight.nameLabelPath = 'UI/Commands/CmdFlightControlsRight' 2820 2821 def CmdAimFighterAbility(self, fighterID, abiltySlotID): 2822 self.CmdAimMultiSquadronFighterAbilities([fighterID], abiltySlotID) 2823 2824 def CmdAimMultiSquadronFighterAbilities(self, fighterIDs, abiltySlotID): 2825 uicore.layer.inflight.positionalControl.StartFighterAbilityTargeting(fighterIDs, abiltySlotID) 2826 2827 def CmdAimWeapon(self, moduleID, effect, targetPointCount): 2828 uicore.layer.inflight.positionalControl.StartEffectTargeting(session.shipid, moduleID, effect, targetPointCount) 2829 2830 def LoadCombatCommand(self, function, cmd): 2831 if not session.solarsystemid: 2832 return 2833 sm.ScatterEvent('OnFreezeOverviewWindows') 2834 self.combatFunctionLoaded = function 2835 self.combatCmdLoaded = cmd 2836 uicore.event.RegisterForTriuiEvents((uiconst.UI_KEYUP, 2837 uiconst.UI_KEYDOWN, 2838 uiconst.UI_ACTIVE, 2839 uiconst.UI_MOUSEUP), self.CombatKeyUnloadListener) 2840 delay = 0.3 2841 for key in cmd.shortcut: 2842 if key not in uiconst.MODKEYS: 2843 delay = 0 2844 break 2845 2846 HudActionIndicationController.get_instance().set_shortcut_indication(IndicationData(cmd.GetDescription(), localization.GetByLabel('UI/Commands/ClickTarget'), icon=cmd.GetIcon()), delay=delay) 2847 sm.GetService('flightPredictionSvc').CommandKeyDown(cmd.name) 2848 2849 def LoadLightCombatCommand(self, cmd): 2850 if not session.charid: 2851 return 2852 self.combatFunctionLoaded = None 2853 self.combatCmdLoaded = cmd 2854 uicore.event.RegisterForTriuiEvents((uiconst.UI_KEYUP, 2855 uiconst.UI_KEYDOWN, 2856 uiconst.UI_ACTIVE, 2857 uiconst.UI_MOUSEUP), self.CombatKeyUnloadListener) 2858 delay = 0.3 2859 for key in cmd.shortcut: 2860 if key not in uiconst.MODKEYS: 2861 delay = 0 2862 break 2863 2864 desc = cmd.GetDetailedDescription() 2865 HudActionIndicationController.get_instance().set_shortcut_indication(IndicationData(cmd.GetDescription(), desc), delay) 2866 2867 def UnloadCombatCommand(self): 2868 uthread.new(self._UnloadCombatCommand) 2869 2870 def _UnloadCombatCommand(self): 2871 sm.GetService('flightPredictionSvc').CommandKeyUp() 2872 HudActionIndicationController.get_instance().clear_shortcut_indication() 2873 sm.ScatterEvent('OnUnfreezeOverviewWindows') 2874 self.combatFunctionLoaded = None 2875 self.combatCmdLoaded = None 2876 if self.combatCmdUnloadFunc: 2877 self.combatCmdUnloadFunc(self.combatCmdCurrentHasExecuted) 2878 self.combatCmdUnloadFunc = None 2879 self.combatCmdCurrentHasExecuted = False 2880 2881 def CombatKeyUnloadListener(self, wnd, eventID, keyChange): 2882 vk = keyChange[0] if keyChange else None 2883 if eventID == uiconst.UI_MOUSEUP and vk in (uiconst.MOUSELEFT, uiconst.MOUSERIGHT): 2884 return True 2885 if eventID == uiconst.UI_ACTIVE: 2886 self.UnloadCombatCommand() 2887 return 2888 if self.combatCmdLoaded is None: 2889 return True 2890 if vk not in self.combatCmdLoaded.shortcut: 2891 self.UnloadCombatCommand() 2892 return 2893 for key in self.combatCmdLoaded.shortcut: 2894 if not uicore.uilib.Key(key): 2895 self.UnloadCombatCommand() 2896 return 2897 2898 return True 2899 2900 def ExecuteCombatCommand(self, itemID, eventID, **kwargs): 2901 if itemID is None or self.combatFunctionLoaded is None: 2902 return False 2903 if eventID == uiconst.UI_KEYUP and self.combatCmdCurrentHasExecuted: 2904 self.UnloadCombatCommand() 2905 return True 2906 self.combatCmdCurrentHasExecuted = True 2907 self.ExecuteActiveCombatCommand(itemID, **kwargs) 2908 return True 2909 2910 def ExecuteActiveCombatCommand(self, itemID, **kwargs): 2911 if not self.IsCombatCommandLoaded('CmdSelectTargetItem'): 2912 GetAudioService().SendUIEvent('ui_radial_select_play') 2913 uthread.new(self.combatFunctionLoaded, itemID, **kwargs) 2914 2915 def IsSomeCombatCommandLoaded(self): 2916 return self.combatFunctionLoaded is not None 2917 2918 def IsCombatCommandLoaded(self, cmdName): 2919 return self.combatCmdLoaded == self.commandMap.GetCommandByName(cmdName) 2920 2921 def GetCombatCmdLoadedName(self): 2922 return self.combatCmdLoaded 2923 2924 def CmdForceFadeFromBlack(self, *args): 2925 loadSvc = sm.GetService('loading') 2926 if loadSvc.IsLoading(): 2927 loadSvc.FadeOut(100) 2928 2929 def Reset(self, resetKey): 2930 if resetKey == 'windows': 2931 GetDockPanelManager().ResetAllPanelSettings() 2932 sm.GetService('window').ResetWindowSettings() 2933 elif resetKey == 'window color': 2934 sm.GetService('uiColor').ResetUIColors() 2935 elif resetKey == 'clear cache': 2936 sm.GetService('gameui').ClearCacheFiles() 2937 elif resetKey == 'clear iskspammers': 2938 sm.GetService('chat').clear_reported_spammers() 2939 elif resetKey == 'clear settings': 2940 sm.GetService('gameui').ClearSettings() 2941 elif resetKey == 'clear mail': 2942 sm.GetService('mailSvc').ClearMailCache() 2943 elif resetKey == 'reset neocom': 2944 ResetNeocomButtons() 2945 2946 def CmdToggleSystemMenu(self): 2947 systemMenu = uicore.layer.systemmenu 2948 if systemMenu.isopen: 2949 sm.GetService('uipointerSvc').RevealPointers() 2950 uthread.new(systemMenu.CloseMenu) 2951 else: 2952 sm.GetService('uipointerSvc').SuppressPointers() 2953 uthread.new(systemMenu.OpenView) 2954 2955 CmdToggleSystemMenu.nameLabelPath = 'UI/Login/Settings' 2956 2957 def OnEsc(self, *args): 2958 escapeAdaptor = EscapeCommandAdapter() 2959 escCommand = EscapeCommand(viewStateSrvc=sm.GetService('viewState'), adaptor=escapeAdaptor, dockPanelManager=GetDockPanelManager()) 2960 escCommand.Execute() 2961 2962 def OnTab(self): 2963 if uicore.uilib.Key(uiconst.VK_SHIFT): 2964 uicore.registry.FindFocus(-1) 2965 else: 2966 uicore.registry.FindFocus(1) 2967 2968 def MapCmd(self, cmdname, context): 2969 self.commandMap.UnloadAllAccelerators() 2970 wnd = MapCmdWindow.Open(cmdname=cmdname) 2971 modalResult = wnd.ShowModal() 2972 self.LoadAllAccelerators() 2973 if modalResult == 1: 2974 retval = wnd.result 2975 shortcut = retval['shortcut'] 2976 else: 2977 return 2978 errorMsg, canOverride = self.MapCmdErrorCheck(cmdname, shortcut, context) 2979 doOverride = False 2980 if errorMsg: 2981 if canOverride: 2982 questionText = localization.GetByLabel('UI/Commands/ShortcutAlreadyUsedReassign', usedText=errorMsg, cmd=self.GetStringFromShortcutKeys(shortcut), newFunc=uicore.cmd.FuncToDesc(cmdname)) 2983 questionHeader = localization.GetByLabel('UI/Commands/ShortcutAlreadyUsedReassignHeader') 2984 reassingID = -1 2985 buttons = [Bunch(id=reassingID, label=localization.GetByLabel('UI/Commands/ReassingCmd')), Bunch(id=uiconst.ID_CANCEL, label=localization.GetByLabel('UI/Common/Buttons/Cancel'))] 2986 ret = prompt_player_fsd_dialog('CustomQuestion', {'question': questionText, 2987 'header': questionHeader}, buttons=buttons) 2988 if ret == reassingID: 2989 doOverride = True 2990 else: 2991 return self.MapCmd(cmdname, context) 2992 else: 2993 prompt_player_fsd_dialog('CustomInfo', {'info': errorMsg}) 2994 return self.MapCmd(cmdname, context) 2995 alreadyUsing = self.commandMap.GetCommandByShortcut(shortcut) 2996 if alreadyUsing is not None: 2997 alreadyUsingContext = self.__categoryToContext__[alreadyUsing.category] 2998 if alreadyUsingContext not in self.contextToCommand: 2999 self.contextToCommand[alreadyUsingContext] = {} 3000 self.contextToCommand[alreadyUsingContext][shortcut] = alreadyUsing 3001 if alreadyUsing and doOverride: 3002 self.ClearMappedCmd(alreadyUsing.name) 3003 self.commandMap.RemapCommand(cmdname, shortcut) 3004 if context not in self.contextToCommand: 3005 self.contextToCommand[context] = {} 3006 self.ClearContextToCommandMapping(context, cmdname) 3007 self.contextToCommand[context][shortcut] = self.commandMap.GetCommandByName(cmdname) 3008 sm.ScatterEvent('OnMapShortcut', cmdname, shortcut) 3009 3010 def ClearContextToCommandMapping(self, context, cmdname): 3011 toDeleteShortcut = None 3012 for shortcutKey, command in self.contextToCommand[context].iteritems(): 3013 if command.name == cmdname: 3014 toDeleteShortcut = shortcutKey 3015 3016 if toDeleteShortcut is not None: 3017 del self.contextToCommand[context][toDeleteShortcut] 3018 3019 def MapCmdErrorCheck(self, cmdname, shortcut, context): 3020 if not shortcut: 3021 return (localization.GetByLabel('UI/Commands/ChooseAKeyPrompt'), False) 3022 for key in shortcut: 3023 keyName = self.GetKeyNameFromVK(key) 3024 if not getattr(uiconst, 'VK_%s' % keyName.upper(), None): 3025 prompt_player_fsd_dialog('UnknownKey', {'key': keyName}) 3026 return ('', False) 3027 3028 extraShortcutRulesForCmd = self.GetExtraShortcutRulesForCmd(cmdname) 3029 if extraShortcutRulesForCmd: 3030 notAllowedWithModifiers = extraShortcutRulesForCmd.get(RULE_NOT_ALLOWED_WITH_MODIFIERS, None) 3031 if notAllowedWithModifiers and len(shortcut) > 1 and set.intersection(set(shortcut), set(notAllowedWithModifiers)): 3032 cmd = labelsByFuncName.get(cmdname, None) 3033 cmdText = localization.GetByLabel(cmd) if cmd else cmdname 3034 listOfKeys = '<br>'.join([ command.GetKeyName(x) for x in notAllowedWithModifiers ]) 3035 return (localization.GetByLabel('UI/Commands/ShortcutKeyNotAllowedWithModifiers', cmd=cmdText, listOfKeys=listOfKeys), False) 3036 alreadyUsing = self.commandMap.GetCommandByShortcut(shortcut) 3037 if alreadyUsing: 3038 cmdEdit = self.commandMap.GetCommandByName(cmdname) 3039 alreadyUsingContext = self.__categoryToContext__[alreadyUsing.category] 3040 cmdEditContext = self.__categoryToContext__[cmdEdit.category] 3041 sameContext = self.CheckContextIntersection(alreadyUsingContext, cmdEditContext) 3042 if sameContext and alreadyUsing.name != cmdname: 3043 canOverride = not alreadyUsing.isLocked 3044 errorText = localization.GetByLabel('UI/Commands/ShortcutAlreadyUsedByCmd', cmd=alreadyUsing.GetShortcutAsString(), category=localization.GetByLabel(CATEGORIES[alreadyUsing.category]), func=alreadyUsing.GetDescription()) 3045 return (errorText, canOverride) 3046 if context in self.contextToCommand and shortcut in self.contextToCommand[context]: 3047 alreadyUsing = self.contextToCommand[context][shortcut] 3048 canOverride = not alreadyUsing.isLocked 3049 errorText = localization.GetByLabel('UI/Commands/ShortcutAlreadyUsedByCmd', cmd=alreadyUsing.GetShortcutAsString(), category=localization.GetByLabel(CATEGORIES[alreadyUsing.category]), func=alreadyUsing.GetDescription()) 3050 return (errorText, canOverride) 3051 return ('', False) 3052 3053 def ClearMappedCmd(self, cmdname, showMsg = 1): 3054 command = self.commandMap.GetCommandByName(cmdname) 3055 context = self.__categoryToContext__[command.category] 3056 if context in self.contextToCommand: 3057 self.ClearContextToCommandMapping(context, cmdname) 3058 CommandService.ClearMappedCmd(self, cmdname, showMsg) 3059 3060 def CmdPickPortrait0(self, *args): 3061 self.PickPortrait(0) 3062 3063 def CmdPickPortrait1(self, *args): 3064 self.PickPortrait(1) 3065 3066 def CmdPickPortrait2(self, *args): 3067 self.PickPortrait(2) 3068 3069 def CmdPickPortrait3(self, *args): 3070 self.PickPortrait(3) 3071 3072 def PickPortrait(self, portraitID): 3073 uicore.layer.charactercreation.controller.PickPortrait(portraitID) 3074 3075 def GetCommandToExecute(self, cmdName, *args, **kwargs): 3076 cmd = self.commandMap.GetCommandByName(cmdName) 3077 if cmd: 3078 return lambda : self.ExecuteCommand(cmd, *args, **kwargs) 3079 3080 def GetCommandAndExecute(self, cmdName, *args, **kwargs): 3081 cmd = self.commandMap.GetCommandByName(cmdName) 3082 self.ExecuteCommand(cmd, *args, **kwargs) 3083 3084 def ExecuteCommand(self, cmd, *args, **kwargs): 3085 if not self.IsCommandEnabled(cmd): 3086 return 3087 if cmd.category in ('window', 'modules', 'drones'): 3088 PlaySound(uiconst.SOUND_BUTTON_CLICK) 3089 return cmd.callback(*args, **kwargs) 3090 3091 def IsCommandEnabled(self, command): 3092 references = ['cmd', 'cmd.name.{}'.format(command.name), 'cmd.category.{}'.format(command.category)] 3093 if self.command_blocker.is_blocked(references): 3094 return False 3095 return command.name not in self.disabledCommands 3096 3097 def EnableCommand(self, commandName): 3098 self.disabledCommands.discard(commandName) 3099 3100 def DisableCommand(self, commandName): 3101 self.disabledCommands.add(commandName) 3102 3103 def EnableAllCommands(self): 3104 self.disabledCommands.clear() 3105 3106 def DisableAllCommands(self): 3107 for command in self.commandMap.GetAllCommands(): 3108 self.disabledCommands.add(command.name) 3109 3110 def CmdSetDefenceStance(self, *args): 3111 self._SetStance(shipmode.data.shipStanceDefense) 3112 3113 def CmdSetSniperStance(self, *args): 3114 self._SetStance(shipmode.data.shipStanceSniper) 3115 3116 def CmdSetSpeedStance(self, *args): 3117 self._SetStance(shipmode.data.shipStanceSpeed) 3118 3119 def _SetStance(self, stanceID): 3120 if eveCfg.InShip(): 3121 clientDL = sm.GetService('clientDogmaIM').GetDogmaLocation() 3122 ship = clientDL.SafeGetDogmaItem(clientDL.GetActiveShipID(session.charid)) 3123 set_stance(stanceID, ship.itemID, ship.typeID) 3124 3125 def CmdIncreaseProbeScanRange(self, *args): 3126 if eveCfg.InSpace(): 3127 if ProbeScannerWindow.GetIfOpen(): 3128 sm.GetService('scanSvc').ScaleFormation(2.0) 3129 elif IsProbeScanEmbeddedPanelOpen(): 3130 sm.GetService('scanSvc').ScaleFormation(2.0) 3131 return True 3132 3133 CmdIncreaseProbeScanRange.nameLabelPath = 'UI/Commands/CmdIncreaseProbeScanRange' 3134 3135 def CmdDecreaseProbeScanRange(self, *args): 3136 if eveCfg.InSpace(): 3137 if ProbeScannerWindow.GetIfOpen(): 3138 sm.GetService('scanSvc').ScaleFormation(0.5) 3139 elif IsProbeScanEmbeddedPanelOpen(): 3140 sm.GetService('scanSvc').ScaleFormation(0.5) 3141 return True 3142 3143 CmdDecreaseProbeScanRange.nameLabelPath = 'UI/Commands/CmdDecreaseProbeScanRange' 3144 3145 def CmdRefreshProbeScan(self, *args): 3146 if eveCfg.InSpace(): 3147 from eve.client.script.ui.inflight.probeScannerWindow import ProbeScannerWindow 3148 probeScanWindow = ProbeScannerWindow.GetIfOpen() 3149 if probeScanWindow: 3150 probeScanWindow.Confirm() 3151 else: 3152 scanWindow = SolarSystemViewPanel.GetIfOpen() 3153 if scanWindow and IsProbeScanEmbeddedPanelOpen(): 3154 scanWindow.mapView.probeScannerPalette.Confirm() 3155 return True 3156 3157 CmdRefreshProbeScan.nameLabelPath = 'UI/Commands/CmdRefreshProbeScan' 3158 3159 def CmdRefreshDirectionalScan(self, *args): 3160 if not eveCfg.InSpace(): 3161 return 3162 if not IsDirectionalScannerOpen(): 3163 self.OpenDirectionalScanner() 3164 else: 3165 cmd = uicore.cmd.commandMap.GetCommandByName('CmdRefreshDirectionalScan') 3166 scanSvc = sm.GetService('directionalScanSvc') 3167 self.LoadCombatCommand(scanSvc.ScanTowardsItem, cmd) 3168 self.combatCmdUnloadFunc = scanSvc.OnCmdDirectionalScanUnload 3169 scanSvc.OnCmdDirectionalScanLoad() 3170 3171 CmdRefreshDirectionalScan.nameLabelPath = 'UI/Commands/CmdRefreshDirectionalScan' 3172 3173 def CmdToggleAutoTracking(self, *args): 3174 if not session.solarsystemid: 3175 return 3176 settings.char.ui.Set('orbitCameraAutoTracking', not IsAutoTrackingEnabled()) 3177 3178 CmdToggleAutoTracking.nameLabelPath = 'UI/Commands/CmdToggleAutoTracking' 3179 3180 def OpenPointerWnd(self): 3181 if not ArePointerLinksActive(sm.GetService('machoNet')): 3182 return 3183 PointerToolWnd.Open() 3184 3185 OpenPointerWnd.nameLabelPath = PointerToolWnd.default_captionLabelPath 3186 OpenPointerWnd.descriptionLabelPath = PointerToolWnd.default_descriptionLabelPath 3187 3188 def OpenContextualOffersWindow(self): 3189 sm.GetService('contextualOfferSvc').OpenContextualOffersWindow() 3190 3191 OpenContextualOffersWindow.nameLabelPath = 'UI/ContextualOffers/OfferTitle' 3192 OpenContextualOffersWindow.descriptionLabelPath = 'UI/ContextualOffers/OfferSubcaption' 3193 3194 def ToggleCurrentSystemLocationWnd(self): 3195 if not session.solarsystemid2: 3196 return 3197 StandaloneBookmarkWnd.ToggleOpenClose() 3198 3199 ToggleCurrentSystemLocationWnd.nameLabelPath = 'UI/AclBookmarks/OpenBookmarkStandaloneWindow' 3200 3201 def IsCommandAllowed(self, cmdName): 3202 return True 3203 3204 def _IsZhGiftCodeAvailable(self): 3205 return AmOnChineseServer() 3206 3207 def GetCSMVotingURL(self): 3208 return self.machoNet.GetGlobalConfig().get('CSMVotingURL', 'https://community.eveonline.com/community/csm/vote/') 3209 3210 def OpenCSMVoting(self): 3211 try: 3212 CSMVoteURL = self.GetCSMVotingURL() 3213 blue.os.ShellExecute(CSMVoteURL) 3214 except Exception: 3215 LogException('Failed to open URL to access CSM voting') 3216 raise UserError('FailedToOpenCSMVotingURL') 3217 3218 def GetEVEPortalLandingURL(self): 3219 return self.machoNet.GetGlobalConfig().get('CSMVotingURL', 'https://www.eveonline.com/eve-portal') 3220 3221 def OpenEVEPortalLandingPage(self): 3222 try: 3223 EVEPortalLandingURL = self.GetEVEPortalLandingURL() 3224 blue.os.ShellExecute(EVEPortalLandingURL) 3225 except Exception: 3226 LogException('Failed to open URL to access EVE Portal landing page') 3227 raise UserError('FailedToOpenEVEPortalLandingURL') 3228 3229 def GetEVEAcademyLandingPageURL(self): 3230 return self.machoNet.GetGlobalConfig().get('AcademyLandingPageURL', 'https://www.eveonline.com/now/eve-academy') 3231 3232 def OpenEVEAcademyLandingPage(self): 3233 try: 3234 EVEAcademyLandingURL = self.GetEVEAcademyLandingPageURL() 3235 blue.os.ShellExecute(EVEAcademyLandingURL) 3236 except Exception: 3237 LogException('Failed to open URL to access EVE Academy landing page') 3238 raise UserError('FailedToOpenEVEAcademyLandingURL') 3239 3240 def GetCSMCandidateInfoURL(self): 3241 return self.machoNet.GetGlobalConfig().get('CSMCandidateInfoURL', 'https://www.eveonline.com/news/view/csm-17-meet-your-candidates') 3242 3243 def OpenCSMCandidateInfo(self): 3244 try: 3245 CSMCandidateInfoURL = self.GetCSMCandidateInfoURL() 3246 blue.os.ShellExecute(CSMCandidateInfoURL) 3247 except Exception: 3248 LogException('Failed to open URL to access CSM Candidate Info') 3249 raise UserError('FailedToOpenCSMVotingURL') 3250 3251 def GetUprisingPatchNotesURL(self): 3252 return self.machoNet.GetGlobalConfig().get('UprisingPatchNotesURL', 'https://www.eveonline.com/news/view/patch-notes-version-20-10') 3253 3254 def OpenUprisingPatchNotes(self): 3255 try: 3256 UprisingPatchNotesURL = self.GetUprisingPatchNotesURL() 3257 blue.os.ShellExecute(UprisingPatchNotesURL) 3258 except Exception: 3259 LogException('Failed to open URL to access Uprising Patch Notes') 3260 raise UserError('FailedToOpenUprisingPatchNotesURL')