fittingRadialMenu.py (5454B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fittingScreen\fittingRadialMenu.py 2 from carbonui.control.buttonIcon import ButtonIcon 3 from eve.client.script.ui.shared.radialMenu.radialMenu import RadialMenu 4 from eve.client.script.ui.shared.radialMenu.radialMenuUtils import SimpleRadialMenuAction, RadialMenuOptionsInfo, RadialMenuSizeInfo 5 from eve.client.script.ui.inflight.radialMenuShipUI import RadialMenuShipUI 6 import carbonui.const as uiconst 7 from carbonui.uicore import uicore 8 RMO_SizeInfo = RadialMenuSizeInfo(width=220, height=220, shadowSize=256, rangeSize=128, sliceCount=8, buttonWidth=100, buttonHeight=70, buttonPaddingTop=12, buttonPaddingBottom=6, actionDistance=110) 9 10 class RadialMenuFitting(RadialMenuShipUI): 11 default_width = RMO_SizeInfo.width 12 default_height = RMO_SizeInfo.height 13 sizeInfo = RMO_SizeInfo 14 shadowTexture = 'res:/UI/Texture/classes/RadialMenu/menuShadow2.png' 15 16 def ApplyAttributes(self, attributes): 17 self.slotList = attributes.slotList 18 self.isStructure = attributes.isStructure 19 RadialMenuShipUI.ApplyAttributes(self, attributes) 20 21 def GetMyActions(self, *args): 22 iconOffset = 1 23 ghostFittingSvc = sm.GetService('ghostFittingSvc') 24 allWantedMenuOptions = [SimpleRadialMenuAction(option1='UI/Fitting/FittingWindow/RadialMenu/Activate', func=ghostFittingSvc.ActivateAllHighSlots, funcArgs=(self.slotList,), iconPath='res:/UI/Texture/classes/RadialMenuActions/fitting/active.png', iconOffset=iconOffset), 25 SimpleRadialMenuAction(option1='UI/Fitting/FittingWindow/RadialMenu/Overheat', func=ghostFittingSvc.OverheatAllInRack, funcArgs=(self.slotList,), iconPath='res:/UI/Texture/classes/RadialMenuActions/fitting/heat.png', iconOffset=iconOffset), 26 SimpleRadialMenuAction(option1='', func=None, iconPath='', iconOffset=iconOffset), 27 SimpleRadialMenuAction(option1='UI/Fitting/FittingWindow/RadialMenu/UnloadModules', func=ghostFittingSvc.UnfitAllModulesInRack, funcArgs=(self.slotList,), iconPath='res:/UI/Texture/classes/RadialMenuActions/fitting/unload.png', iconOffset=iconOffset), 28 SimpleRadialMenuAction(option1='UI/Fitting/FittingWindow/RadialMenu/UnloadAmmo', func=ghostFittingSvc.UnfitAllAmmoInRack, funcArgs=(self.slotList,), iconPath='res:/UI/Texture/classes/RadialMenuActions/fitting/unloadAmmo.png', iconOffset=iconOffset), 29 SimpleRadialMenuAction(option1='UI/Fitting/FittingWindow/RadialMenu/Offline', func=ghostFittingSvc.OfflineAllInRack, funcArgs=(self.slotList,), iconPath='res:/UI/Texture/classes/RadialMenuActions/fitting/offline.png', iconOffset=iconOffset), 30 SimpleRadialMenuAction(option1='', func=None, iconPath='', iconOffset=iconOffset), 31 SimpleRadialMenuAction(option1='UI/Fitting/FittingWindow/RadialMenu/Online', func=ghostFittingSvc.OnlineAllInRack, funcArgs=(self.slotList,), iconPath='res:/UI/Texture/classes/RadialMenuActions/fitting/online.png', iconOffset=iconOffset)] 32 activeSingleOptions = {menuAction.option1Path:menuAction for menuAction in allWantedMenuOptions if menuAction.option1Path} 33 if self.isStructure: 34 activeSingleOptions.pop('UI/Fitting/FittingWindow/RadialMenu/Overheat', None) 35 optionsInfo = RadialMenuOptionsInfo(allWantedMenuOptions=allWantedMenuOptions, activeSingleOptions=activeSingleOptions) 36 return optionsInfo 37 38 def SetPosition(self): 39 left, top, width, height = self.anchorObject.GetAbsolute() 40 originalX = self.currentCenterX = left + width / 2 41 originalY = self.currentCenterY = top + height / 2 42 halfWidth = self.width / 2 43 halfHeight = self.height / 2 44 if originalX - halfWidth < 0: 45 return RadialMenu.SetPosition(self) 46 if originalX + halfWidth > uicore.desktop.width: 47 return RadialMenu.SetPosition(self) 48 if originalY - halfHeight < 0: 49 return RadialMenu.SetPosition(self) 50 if originalY + halfHeight > uicore.desktop.height: 51 return RadialMenu.SetPosition(self) 52 return RadialMenuShipUI.SetPosition(self) 53 54 def AddOptionText(self): 55 return RadialMenu.AddOptionText(self) 56 57 def AdjustTextShadow(self, *args): 58 return RadialMenu.AdjustTextShadow(self, *args) 59 60 def HiliteOneButton(self, btnCont, buttonLayer): 61 RadialMenu.HiliteOneButton(self, btnCont, buttonLayer) 62 self.AdjustTextShadow() 63 64 65 class RadialMenuIcon(ButtonIcon): 66 default_align = uiconst.TOPLEFT 67 default_state = uiconst.UI_NORMAL 68 69 def ApplyAttributes(self, attributes): 70 ButtonIcon.ApplyAttributes(self, attributes) 71 self.mouseUpCookie = None 72 self.flags = attributes.flags 73 self.originalHint = attributes.hint 74 self.hint = self.originalHint 75 self.mouseDownFunc = attributes.mouseDownFunc 76 77 def OnMouseDown(self, mouseButton): 78 self.SetHint('') 79 uicore.uilib.tooltipHandler.RefreshTooltipForOwner(self) 80 if self.mouseDownFunc: 81 self.mouseDownFunc(self, self.flags, mouseButton) 82 ButtonIcon.OnMouseDown(self, mouseButton) 83 self.mouseUpCookie = uicore.event.RegisterForTriuiEvents(uiconst.UI_MOUSEUP, self.OnGlobalClick) 84 85 def OnGlobalClick(self, *args): 86 if self.mouseUpCookie: 87 uicore.event.UnregisterForTriuiEvents(self.mouseUpCookie) 88 self.OnMouseExit() 89 self.hint = self.originalHint