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

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