def GetMyActions(self, *args): """ returns either None (if something failed) or a KeyVal with the menu option info for the The menu option info consists of: allWantedMenuOptions = a list of all options we that should be in the radial menu activeSingleOptions = a dictionary with all the avaible clickable options. The key is the labelpath and the value is the menu option keyval which contains the callback and arguments among other things inactiveSingleOptions = a set of menu options(labelpath) that we want in our radial menu but are not available (and are therefore greyed out) activeRangeOptions = a dictionary with all the available range options. The key is the labelpath and the value is the menu option keyval which contains the callback, rangeOptions and default distance among other things inactiveRangeOptions = a set with all the range options(labelpath) we want, but are not available SimpleRadialMenuAction in activeSingleOptions need to have at least "option1" textpath, and a function it should call. (for the RadialMenuSpace class, this is built from the info from the menu service, and the func depends on which option is available. For simple case, just give the function you want to use. ) """ iconOffset = 1 allWantedMenuOptions = [SimpleRadialMenuAction(option1='UI/Inflight/Scanner/MoonAnalysis', func=OpenMoonScanner, iconPath='res:/UI/Texture/Icons/moonscan.png', iconOffset=iconOffset), SimpleRadialMenuAction(option1='UI/Inflight/Scanner/DirectionalScan', func=OpenDirectionalScanner, iconPath='res:/UI/Texture/Icons/d-scan.png', iconOffset=iconOffset, commandName='OpenDirectionalScanner'), SimpleRadialMenuAction(option1='', func=None, iconPath='', iconOffset=iconOffset), SimpleRadialMenuAction(option1='UI/Inflight/Scanner/ProbeScanner', func=OpenProbeScanner, iconPath='res:/UI/Texture/Icons/probe_scan.png', iconOffset=iconOffset, commandName='OpenScanner')] activeSingleOptions = {menuAction.option1Path:menuAction for menuAction in allWantedMenuOptions if menuAction.option1Path} optionsInfo = RadialMenuOptionsInfo(allWantedMenuOptions=allWantedMenuOptions, activeSingleOptions=activeSingleOptions) return optionsInfo
def GetSecondaryActions(self): return [ bookMarkOption, SimpleRadialMenuAction(option1='UI/Inflight/Scanner/IngoreResult'), SimpleRadialMenuAction( option1='UI/Inflight/Scanner/IgnoreOtherResults') ]
def GetMyActions(self, *args): iconOffset = 1 allWantedMenuOptions = [ SimpleRadialMenuAction( option1='UI/Inflight/Scanner/MoonAnalysis', func=OpenMoonScanner, iconPath='res:/UI/Texture/Icons/moonscan.png', iconOffset=iconOffset), SimpleRadialMenuAction( option1='UI/Inflight/Scanner/DirectionalScan', func=OpenDirectionalScanner, iconPath='res:/UI/Texture/Icons/d-scan.png', iconOffset=iconOffset, commandName='OpenDirectionalScanner'), SimpleRadialMenuAction(option1='', func=None, iconPath='', iconOffset=iconOffset), SimpleRadialMenuAction( option1='UI/Inflight/Scanner/ProbeScanner', func=OpenProbeScanner, iconPath='res:/UI/Texture/Icons/probe_scan.png', iconOffset=iconOffset, commandName='OpenScanner') ] activeSingleOptions = { menuAction.option1Path: menuAction for menuAction in allWantedMenuOptions if menuAction.option1Path } optionsInfo = RadialMenuOptionsInfo( allWantedMenuOptions=allWantedMenuOptions, activeSingleOptions=activeSingleOptions) return optionsInfo
def GetSpaceComponentSecondaryActions(typeID): componentNames = cfg.spaceComponentStaticData.GetComponentNamesForType( typeID) actions = [] if SCOOP_CLASS in componentNames: actions.append( SimpleRadialMenuAction(option1='UI/Inflight/ScoopToCargoHold')) if FITTING_CLASS in componentNames: actions.append( SimpleRadialMenuAction(option1='UI/Fitting/UseFittingService')) return actions
def GetMyActions(self, *args): iconOffset = 1 allWantedMenuOptions = [] if sm.GetService('targetTrackingService').GetActiveTrackingState() is not False: allWantedMenuOptions.append(SimpleRadialMenuAction(option1='UI/Inflight/Camera/TurnTrackingOff', func=self.DisableTracking, iconPath='res:/UI/Texture/classes/CameraRadialMenu/trackingOff_ButtonIcon.png', commandName='CmdToggleTrackSelectedItem')) else: allWantedMenuOptions.append(SimpleRadialMenuAction(option1='UI/Inflight/Camera/TurnTrackingOn', func=self.EnableTracking, iconPath='res:/UI/Texture/classes/CameraRadialMenu/trackingOn_ButtonIcon.png', iconOffset=iconOffset, commandName='CmdToggleTrackSelectedItem')) allWantedMenuOptions.extend([SimpleRadialMenuAction(option1='UI/Inflight/Camera/CustomTrackingPosition', func=self.UseCustomPosition, iconPath='res:/UI/Texture/classes/CameraRadialMenu/customTracking_ButtonIcon.png', iconOffset=iconOffset, commandName='CmdTrackingCameraCustomPosition')]) allWantedMenuOptions.append(SimpleRadialMenuAction(option1='UI/Inflight/Camera/ResetCamera', func=self.ResetCamera, iconPath='res:/UI/Texture/classes/CameraRadialMenu/resetCamera_ButtonIcon.png', iconOffset=iconOffset)) allWantedMenuOptions.append(SimpleRadialMenuAction(option1='UI/Inflight/Camera/CenterOnscreenPosition', func=self.UseCenterPosition, iconPath='res:/UI/Texture/classes/CameraRadialMenu/centerTracking_ButtonIcon.png', iconOffset=iconOffset, commandName='CmdTrackingCameraCenterPosition')) activeSingleOptions = {menuAction.option1Path:menuAction for menuAction in allWantedMenuOptions} optionsInfo = RadialMenuOptionsInfo(allWantedMenuOptions=allWantedMenuOptions, activeSingleOptions=activeSingleOptions) return optionsInfo
def GetSpaceComponentPrimaryActionsForTypeID(typeID): componentNames = cfg.spaceComponentStaticData.GetComponentNamesForType( typeID) if CARGO_BAY in componentNames: return [SimpleRadialMenuAction(option1='UI/Commands/OpenCargo')] if HasBountyEscrowComponent(typeID): return [ SimpleRadialMenuAction(option1='UI/Commands/AccessBountyEscrow') ] if HasMicroJumpDriverComponent(typeID): return [ SimpleRadialMenuAction( option1= 'UI/Inflight/SpaceComponents/MicroJumpDriver/ActivateMicroJumpDrive' ) ]
def GetObjectsActions(categoryID, groupID, typeID=None, itemID=None, bookmarkInfo=None, siteData=None, *args): secondaryActions = GetObjectsSecondaryActions(categoryID, groupID, typeID=typeID, itemID=itemID, bookmarkInfo=bookmarkInfo, siteData=siteData) generalActions = GetGeneralActions(hasExtraOptions=bool(secondaryActions), itemID=itemID, bookmarkInfo=bookmarkInfo, siteData=siteData) myActions = generalActions[:] if itemID == GetActiveShip(): return myActions primaryComponentActions = GetSpaceComponentPrimaryActionsForTypeID(typeID) groupActions = primaryGroupActions.get(groupID, None) categoryActions = primaryCategoryActions.get(categoryID, None) siteActions = siteData.GetSiteActions() if siteData else None if primaryComponentActions: primaryActions = primaryComponentActions elif siteActions: primaryActions = siteActions elif groupActions: primaryActions = groupActions elif categoryActions: primaryActions = categoryActions else: primaryActions = [SimpleRadialMenuAction()] return primaryActions + myActions
def GetApproachOption(bookmarkInfo, siteData, *args): if bookmarkInfo or siteData: option1 = 'UI/Inflight/AlignTo' option2 = 'UI/Inflight/ApproachLocationActionGroup' else: option1 = 'UI/Inflight/AlignTo' option2 = 'UI/Inflight/ApproachObject' return SimpleRadialMenuAction(option1=option1, option2=option2)
def GetMyShipSpecialCaseSecondLevel(typeID=None, itemID=None, *args): secondLevelOptions = [] if session.solarsystemid and not session.structureid: func = sm.GetService('menu').Bookmark funcArgs = (itemID, typeID, session.solarsystemid) secondLevelOptions += [ SimpleRadialMenuAction(option1='UI/Inflight/BookmarkLocation', alwaysAvailable=True, func=func, funcArgs=funcArgs) ] return secondLevelOptions
def GetGeneralActions(hasExtraOptions=True, itemID=None, bookmarkInfo=None, siteData=None): """ defaults, and range could have changed since this was generated, so we always make this list again This returns actions for slots 2-8 (the first one is base don group/category/type) """ if itemID == GetActiveShip(): generalActions = [ SimpleRadialMenuAction(option1='UI/Inflight/StopMyShip', option2='UI/Inflight/StopMyCapsule'), GetOrbitOption(itemID, isMyShip=True), SecondLevelRadialMenuAction(hasExtraOptions=hasExtraOptions), GetKeepAtRangeOption(itemID, isMyShip=True), SimpleRadialMenuAction(option1='UI/Commands/OpenCargoHold'), SimpleRadialMenuAction(), SimpleRadialMenuAction(option1='UI/Commands/ShowInfo'), GetWarpToOption(itemID, bookmarkInfo=None, isMyShip=True) ] else: if siteData is not None: itemID = siteData.siteID generalActions = [ GetOrbitOption(itemID), SecondLevelRadialMenuAction(hasExtraOptions=hasExtraOptions), GetKeepAtRangeOption(itemID), SimpleRadialMenuAction(option1='UI/Inflight/LockTarget', option2='UI/Inflight/UnlockTarget'), GetApproachOption(bookmarkInfo, siteData), SimpleRadialMenuAction(option1='UI/Commands/ShowInfo'), GetWarpToOption(itemID, bookmarkInfo, siteData=siteData) ] return generalActions
def GetGeneralActions(hasExtraOptions=True, itemID=None, bookmarkInfo=None, siteData=None): if itemID == GetActiveShip(): generalActions = [ SimpleRadialMenuAction(option1='UI/Inflight/StopMyShip', option2='UI/Inflight/StopMyCapsule'), GetOrbitOption(itemID, isMyShip=True), SecondLevelRadialMenuAction(hasExtraOptions=hasExtraOptions), GetKeepAtRangeOption(itemID, isMyShip=True), SimpleRadialMenuAction(option1='UI/Commands/OpenCargoHold'), SimpleRadialMenuAction(), SimpleRadialMenuAction(option1='UI/Commands/ShowInfo'), GetWarpToOption(itemID, bookmarkInfo=None, isMyShip=True) ] else: if siteData is not None: itemID = siteData.siteID generalActions = [ GetOrbitOption(itemID), SecondLevelRadialMenuAction(hasExtraOptions=hasExtraOptions), GetKeepAtRangeOption(itemID), SimpleRadialMenuAction(option1='UI/Inflight/LockTarget', option2='UI/Inflight/UnlockTarget'), GetApproachOption(bookmarkInfo, siteData), SimpleRadialMenuAction(option1='UI/Commands/ShowInfo'), GetWarpToOption(itemID, bookmarkInfo, siteData=siteData) ] return generalActions
def LoadButtons(self, parentLayer, optionsInfo, alternate=False, startingDegree=0, animate=False, doReset=False): if getattr(self, 'busyReloading', False): return self.busyReloading = True try: filteredOptions = [] for each in optionsInfo.allWantedMenuOptions: if each.option1Path in ('UI/Inflight/LockTarget', 'UI/Inflight/UnlockTarget'): dScanAction = SimpleRadialMenuAction( option1='UI/Inflight/Scanner/DirectionalScan', alwaysAvailable=True, func=self.DirectionalScan, funcArgs=(self.itemID, )) filteredOptions.append(dScanAction) optionsInfo.activeSingleOptions[ 'UI/Inflight/Scanner/DirectionalScan'] = dScanAction elif each.option1Path in ('UI/Inflight/OrbitObject', 'UI/Inflight/Submenus/KeepAtRange', 'UI/Inflight/LookAtObject', 'UI/Inflight/ResetCamera'): filteredOptions.append(SimpleRadialMenuAction()) else: filteredOptions.append(each) optionsInfo.allWantedMenuOptions = filteredOptions parentLayer.LoadButtons(self.itemID, self.stepSize, alternate, animate, doReset, optionsInfo, startingDegree, self.GetIconTexturePath) self.OnGlobalMove() finally: self.busyReloading = False
def GetMyActions(self, *args): inactiveRangeOptions = set() allWantedMenuOptions = [ RangeRadialMenuAction( optionPath='UI/Inflight/OrbitObject', rangeList=[1, 2, 3], defaultRange=2, callback=self.Orbit, iconPath='res:/UI/Texture/Icons/44_32_27.png'), SimpleRadialMenuAction( option1='a', func=self.TestA, iconPath='res:/UI/Texture/Icons/44_32_24.png'), SimpleRadialMenuAction( option1='b', func=self.TestB, iconPath='res:/UI/Texture/Icons/44_32_25.png'), SimpleRadialMenuAction( option1='c', func=self.TestC, iconPath='res:/UI/Texture/Icons/44_32_26.png') ] activeSingleOptions = { 'b': allWantedMenuOptions[1], 'c': allWantedMenuOptions[2] } activeRangeOptions = { 'UI/Inflight/OrbitObject': allWantedMenuOptions[0] } inactiveSingleOptions = set(('a', 'd')) optionsInfo = RadialMenuOptionsInfo( allWantedMenuOptions=allWantedMenuOptions, activeSingleOptions=activeSingleOptions, inactiveSingleOptions=inactiveSingleOptions, activeRangeOptions=activeRangeOptions, inactiveRangeOptions=inactiveRangeOptions) return optionsInfo
def GetMyShipSpecialCaseSecondLevel(typeID=None, itemID=None, *args): """ your ship is special, and therefore it does have some extra options in the second level """ secondLevelOptions = [] if session.solarsystemid: func = sm.GetService('menu').Bookmark funcArgs = (itemID, typeID, session.solarsystemid) secondLevelOptions += [ SimpleRadialMenuAction(option1='UI/Inflight/BookmarkLocation', alwaysAvailable=True, func=func, funcArgs=funcArgs) ] return secondLevelOptions
def PrepareRadialMenuOptions(allMenuOptions, allWantedMenuOptions, filterList, *args): oneClickMenuOptions = {} otherMenuOptions = set() for eachMenuEntry in allMenuOptions: if eachMenuEntry is None: continue menuLabel = eachMenuEntry[0] if isinstance(menuLabel, (MenuLabel, list)): actionName = menuLabel[0] labelArgs = menuLabel[1] else: actionName = menuLabel labelArgs = {} if actionName in filterList: continue if isinstance(eachMenuEntry[1], (types.MethodType, types.LambdaType)): oneClickMenuOptions[actionName] = KeyVal( callbackInfo=eachMenuEntry[1:], labelArgs=labelArgs) else: otherMenuOptions.add(actionName) activeSingleOptions = {} inactiveSingleOptions = set() activeRangeOptions = {} inactiveRangeOptions = set() for menuOption in allWantedMenuOptions[:]: option1 = menuOption.option1Path option2 = menuOption.Get('option2Path', None) if isinstance(menuOption, SimpleRadialMenuAction): option2 = menuOption.option2Path if option1 in oneClickMenuOptions: AddOption(option1, menuOption, oneClickMenuOptions, activeSingleOptions) elif option2 is not None and option2 in oneClickMenuOptions: AddOption(option2, menuOption, oneClickMenuOptions, activeSingleOptions) elif menuOption.get('alwaysAvailable', False): menuOption.activeOption = option1 activeSingleOptions[option1] = menuOption else: inactiveSingleOptions.add(option1) elif isinstance(menuOption, RangeRadialMenuAction): if option1 in otherMenuOptions or menuOption.get( 'alwaysAvailable', False): activeRangeOptions[option1] = menuOption elif option2 in otherMenuOptions: menuOption.activeOption = option2 activeRangeOptions[option2] = menuOption elif option2 in oneClickMenuOptions: newMenuOption = SimpleRadialMenuAction(option1=option1, option2=option2) AddOption(option2, newMenuOption, oneClickMenuOptions, activeSingleOptions) idx = allWantedMenuOptions.index(menuOption) allWantedMenuOptions[idx] = newMenuOption else: inactiveRangeOptions.add(option1) optionsInfo = RadialMenuOptionsInfo( allWantedMenuOptions=allWantedMenuOptions, activeSingleOptions=activeSingleOptions, inactiveSingleOptions=inactiveSingleOptions, activeRangeOptions=activeRangeOptions, inactiveRangeOptions=inactiveRangeOptions) return optionsInfo
def GetBookmarkSiteActions(bookmark): groupID = evetypes.GetGroupID(bookmark.typeID) if groupID == groupStation: return [SimpleRadialMenuAction(option1='UI/Inflight/DockInStation')] else: return None
from eve.client.script.ui.services.menuSvcExtras.movementFunctions import KeepAtRange as movementFunctions__KeepAtRange from eve.client.script.ui.services.menuSvcExtras.movementFunctions import Orbit as movementFunctions__Orbit from eve.client.script.ui.services.menuSvcExtras.movementFunctions import GetWarpToRanges as movementFunctions__GetWarpToRanges from eve.client.script.ui.services.menuSvcExtras.movementFunctions import WarpToBookmark as movementFunctions__WarpToBookmark from eve.client.script.ui.services.menuSvcExtras.movementFunctions import WarpToItem as movementFunctions__WarpToItem from eve.client.script.ui.shared.radialMenu.radialMenuUtils import RadialMenuOptionsInfo from eve.client.script.ui.shared.radialMenu.radialMenuUtils import RangeRadialMenuAction from eve.client.script.ui.shared.radialMenu.radialMenuUtils import SecondLevelRadialMenuAction from eve.client.script.ui.shared.radialMenu.radialMenuUtils import SimpleRadialMenuAction from eve.client.script.ui.services.menuSvcExtras.menuConsts import MOUSEBUTTONS from spacecomponents.common.componentConst import FITTING_CLASS, SCOOP_CLASS, CARGO_BAY from spacecomponents.common.helper import HasBountyEscrowComponent, HasMicroJumpDriverComponent from utillib import KeyVal primaryCategoryActions = { invConst.categoryDrone: [ SimpleRadialMenuAction(option1='UI/Drones/EngageTarget', option2='UI/Drones/LaunchDrones') ], invConst.categoryShip: [SimpleRadialMenuAction(option1='UI/Inflight/BoardShip')], invConst.categoryStation: [ SimpleRadialMenuAction(option1='UI/Inflight/DockInStation', option2='UI/Inflight/SetDestination') ], invConst.categoryAsteroid: [SimpleRadialMenuAction(option1='UI/Inflight/SetDestination')] } primaryGroupActions = { invConst.groupAgentsinSpace: [SimpleRadialMenuAction(option1='UI/Chat/StartConversation')], invConst.groupAuditLogSecureContainer: [SimpleRadialMenuAction(option1='UI/Commands/OpenCargo')],
'UI/Inventory/ItemActions/SellThisItem': 'res:/UI/Texture/classes/RadialMenuActions/sellItem.png', 'UI/Inventory/ItemActions/FitToActiveShip': 'res:/UI/Texture/classes/RadialMenuActions/fitToShip.png', 'UI/Commands/Repair': 'res:/UI/Texture/classes/RadialMenuActions/repair.png', 'UI/Inventory/ItemActions/GetRepairQuote': 'res:/UI/Texture/classes/RadialMenuActions/repair.png', 'UI/Inventory/ItemActions/BuyThisType': 'res:/UI/Texture/classes/RadialMenuActions/buyThisType.png', 'UI/Inventory/ItemActions/ViewTypesMarketDetails': 'res:/UI/Texture/classes/RadialMenuActions/viewMarketDetails.png' } baseActionMapping = { 1: SimpleRadialMenuAction(), 2: SimpleRadialMenuAction(), 3: SimpleRadialMenuAction(), 4: SimpleRadialMenuAction(), 5: SimpleRadialMenuAction(), 6: SecondLevelRadialMenuAction( hasExtraOptions=True, levelType='market', texturePath='res:/UI/Texture/classes/RadialMenuActions/market.png'), 7: SimpleRadialMenuAction(option1='UI/Commands/ShowInfo'),
def GetMyActions(self, *args): iconOffset = 1 allWantedMenuOptions = [ SimpleRadialMenuAction( option1='UI/Fitting/FittingWindow/RadialMenu/Activate', func=sm.GetService('ghostFittingSvc').ActivateAllHighSlots, funcArgs=(self.slotList, ), iconPath= 'res:/UI/Texture/classes/RadialMenuActions/fitting/active.png', iconOffset=iconOffset), SimpleRadialMenuAction( option1='UI/Fitting/FittingWindow/RadialMenu/Overheat', func=sm.GetService('ghostFittingSvc').OverheatAllInRack, funcArgs=(self.slotList, ), iconPath= 'res:/UI/Texture/classes/RadialMenuActions/fitting/heat.png', iconOffset=iconOffset), SimpleRadialMenuAction(option1='', func=None, iconPath='', iconOffset=iconOffset), SimpleRadialMenuAction( option1='UI/Fitting/FittingWindow/RadialMenu/UnloadModules', func=sm.GetService('ghostFittingSvc').UnfitAllModulesInRack, funcArgs=(self.slotList, ), iconPath= 'res:/UI/Texture/classes/RadialMenuActions/fitting/unload.png', iconOffset=iconOffset), SimpleRadialMenuAction( option1='UI/Fitting/FittingWindow/RadialMenu/Offline', func=sm.GetService('ghostFittingSvc').OfflineAllInRack, funcArgs=(self.slotList, ), iconPath= 'res:/UI/Texture/classes/RadialMenuActions/fitting/offline.png', iconOffset=iconOffset), SimpleRadialMenuAction( option1='UI/Fitting/FittingWindow/RadialMenu/UnloadAmmo', func=sm.GetService('ghostFittingSvc').UnfitAllAmmoInRack, funcArgs=(self.slotList, ), iconPath= 'res:/UI/Texture/classes/RadialMenuActions/fitting/unloadAmmo.png', iconOffset=iconOffset), SimpleRadialMenuAction(option1='', func=None, iconPath='', iconOffset=iconOffset), SimpleRadialMenuAction( option1='UI/Fitting/FittingWindow/RadialMenu/Online', func=sm.GetService('ghostFittingSvc').OnlineAllInRack, funcArgs=(self.slotList, ), iconPath= 'res:/UI/Texture/classes/RadialMenuActions/fitting/online.png', iconOffset=iconOffset) ] activeSingleOptions = { menuAction.option1Path: menuAction for menuAction in allWantedMenuOptions if menuAction.option1Path } optionsInfo = RadialMenuOptionsInfo( allWantedMenuOptions=allWantedMenuOptions, activeSingleOptions=activeSingleOptions) return optionsInfo
def GetSecondaryActions(self): return [SimpleRadialMenuAction(option1='UI/Inflight/EditBookmark')]
def GetSiteActions(self): return [SimpleRadialMenuAction(option1=uicore.cmd.OpenScanner.nameLabelPath)]