statefulButtonController.py (3203B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\statefulButtonController.py 2 from eve.client.script.ui.const import buttonConst 3 from localization import GetByLabel 4 from signals.signal import Signal 5 6 class StatefulButtonController(object): 7 __notifyevents__ = ['OnDestinationSet', 8 'OnClientEvent_WarpStarted', 9 'OnClientEvent_WarpFinished', 10 'OnWarpActive', 11 'OnBallparkCall', 12 'OnDockingProgressChanged', 13 'OnClientEvent_UndockingAborted'] 14 15 def __init__(self, *args, **kwargs): 16 self.onNewState = Signal(signalName='onNewState') 17 self.onSetBusy = Signal(signalName='onSetBusy') 18 self.buttonState = buttonConst.STATE_NONE 19 super(StatefulButtonController, self).__init__(*args, **kwargs) 20 sm.RegisterNotify(self) 21 22 def OnDestinationSet(self, *args, **kwargs): 23 self.SendNewStateSignal() 24 25 def OnClientEvent_WarpStarted(self, *args): 26 if self.buttonState not in (buttonConst.STATE_WARPTO, buttonConst.STATE_DOCK): 27 return 28 self.SendNewStateSignal() 29 self.onSetBusy(buttonConst.STATE_PREPARING_WARP) 30 31 def OnWarpActive(self, *args): 32 if self.buttonState != buttonConst.STATE_PREPARING_WARP: 33 return 34 self.SendNewStateSignal() 35 36 def OnClientEvent_WarpFinished(self, *args): 37 if self.buttonState != buttonConst.STATE_WARPING: 38 return 39 self.SendNewStateSignal() 40 41 def SendNewStateSignal(self): 42 self.onNewState(self.GetButtonState()) 43 44 def OnBallparkCall(self, functionName, args): 45 relevantShipEvents = ('FollowBall', 'Stop', 'GotoDirection', 'GotoPoint', 'Orbit') 46 isBallMyShip = args[0] == session.shipid 47 if isBallMyShip and functionName in relevantShipEvents: 48 self.SendNewStateSignal() 49 50 def OnDockingProgressChanged(self, progressFloat): 51 if self.buttonState not in (buttonConst.STATE_UNDOCK, buttonConst.STATE_UNDOCKING): 52 return 53 self.SendNewStateSignal() 54 55 def OnClientEvent_UndockingAborted(self, itemID): 56 self.SendNewStateSignal() 57 58 def IsButtonEnabled(self): 59 return True 60 61 def GetButtonTexturePath(self): 62 return buttonConst.BUTTON_TEXTURE_PATH_BY_STATE.get(self.buttonState, None) 63 64 def GetButtonLabel(self): 65 buttonLabelPath = buttonConst.BUTTON_LABEL_PATH_BY_STATE.get(self.buttonState, None) 66 if not buttonLabelPath: 67 return 68 return GetByLabel(buttonLabelPath) 69 70 def GetButtonFunction(self): 71 if self.buttonState in (buttonConst.STATE_UNDOCK, buttonConst.STATE_UNDOCKING): 72 return lambda x: sm.GetService('undocking').UndockBtnClicked() 73 74 def GetButtonState(self): 75 self.buttonState = self._GetButtonState() 76 return self.buttonState 77 78 def _GetButtonState(self): 79 return buttonConst.STATE_NONE 80 81 def GetWarpingState(self): 82 michelle = sm.GetService('michelle') 83 if michelle.IsPreparingWarp(): 84 return buttonConst.STATE_PREPARING_WARP 85 if michelle.InWarp(): 86 return buttonConst.STATE_WARPING 87 88 def GetDisabledHint(self): 89 pass