activityView.py (6325B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\careerPortal\circleView\activityView.py 2 import carbonui.const as uiconst 3 import eve.client.script.ui.shared.careerPortal.careerConst as careerConst 4 import careergoals.client.const as careerGoalsConst 5 import telemetry 6 from carbonui.uianimations import animations 7 from carbonui.util.dpi import ScaleDpi 8 from eve.client.script.ui.shared.careerPortal import cpSignals 9 from eve.client.script.ui.shared.careerPortal.circleView.activityNode import ActivityNodeObject, ActivityNode 10 from eve.client.script.ui.shared.careerPortal.circleView.circleView import CircleView, CircleViewContainer 11 OUTSIDE_SCALE = (1.3, 1.3) 12 MAXIMIZED_SCALE = (1.0, 1.0) 13 MINIMIZED_SCALE = (0.65, 0.65) 14 OPACITY_BY_STATE = {careerConst.ActivitiesViewState.IN_FOCUS: 1, 15 careerConst.ActivitiesViewState.ONE_DOWN: 0.5, 16 careerConst.ActivitiesViewState.HIDDEN: 0.0} 17 CIRCLE_HOVER_OPACITY = 1.0 18 NODE_SIZE = 48 19 20 class ActivityView(CircleViewContainer): 21 default_name = 'ActivityView' 22 currentState = None 23 24 def CreateCircleView(self, *args, **kwargs): 25 return ActivityCircleView(parent=self, *args, **kwargs) 26 27 def GetSignals(self): 28 signals = super(ActivityView, self).GetSignals() 29 signals.extend([(careerConst.CAREER_WINDOW_STATE_SETTING.on_change, self.OnCareerWindowStateChanged), (cpSignals.on_career_node_hover_on, self.OnCareerNodeHoverOn), (cpSignals.on_career_node_hover_off, self.OnCareerNodeHoverOff)]) 30 return signals 31 32 def OnCareerWindowStateChanged(self, state, animate = True): 33 if state == careerConst.CareerWindowState.CAREERS_VIEW: 34 self.AnimateOut() 35 self.circleView.innerCircles.ScaleUp() 36 elif state == careerConst.CareerWindowState.ACTIVITIES_VIEW: 37 self.LoadActivities() 38 if self.currentState == careerConst.CareerWindowState.GOALS_VIEW: 39 self.Maximize() 40 else: 41 self.AnimateIn() 42 elif state == careerConst.CareerWindowState.GOALS_VIEW: 43 self.LoadActivities() 44 self.Minimize() 45 animations.FadeOut(self.circleView.innerCircles, duration=0.4) 46 animations.FadeOut(self.circleView.fill, duration=0.4) 47 animations.FadeIn(self, duration=0.4) 48 self.currentState = state 49 50 def OnCareerNodeHoverOn(self, *args): 51 currentState = careerConst.CAREER_WINDOW_STATE_SETTING.get() 52 if currentState == careerConst.CareerWindowState.ACTIVITIES_VIEW: 53 self.circleView.innerCircles.ScaleDown() 54 animations.FadeOut(self.circleView.fill, duration=0.4) 55 animations.FadeTo(self, startVal=self.opacity, endVal=0.3, duration=0.4) 56 elif currentState == careerConst.CareerWindowState.GOALS_VIEW: 57 animations.FadeIn(self.circleView.innerCircles, duration=0.4) 58 animations.FadeIn(self.circleView.outerCircle, duration=0.4) 59 animations.FadeIn(self.circleView.fill, endVal=0.5, duration=0.4) 60 61 def OnCareerNodeHoverOff(self, *args): 62 currentState = careerConst.CAREER_WINDOW_STATE_SETTING.get() 63 if currentState == careerConst.CareerWindowState.ACTIVITIES_VIEW: 64 self.circleView.innerCircles.ScaleUp() 65 animations.FadeTo(self.circleView.fill, startVal=0, endVal=0.4, duration=0.4) 66 animations.FadeIn(self, duration=0.4) 67 elif currentState == careerConst.CareerWindowState.GOALS_VIEW: 68 animations.FadeOut(self.circleView.innerCircles, duration=0.4) 69 animations.FadeTo(self.circleView.outerCircle, startVal=self.circleView.outerCircle.opacity, endVal=0.25, duration=0.4) 70 animations.FadeOut(self.circleView.fill, duration=0.4) 71 72 def Minimize(self): 73 animations.Tr2DScaleTo(self.circleView, startScale=self.circleView.scale, endScale=MINIMIZED_SCALE) 74 self.circleView.outerCircle.outputMode = uiconst.OUTPUT_COLOR 75 animations.FadeTo(self.circleView.outerCircle, startVal=1, endVal=0.25, duration=0.5, curveType=uiconst.ANIM_SMOOTH) 76 77 def Maximize(self): 78 animations.Tr2DScaleTo(self.circleView, startScale=self.circleView.scale, endScale=MAXIMIZED_SCALE) 79 self.circleView.outerCircle.outputMode = uiconst.OUTPUT_COLOR_AND_GLOW 80 animations.FadeTo(self.circleView.outerCircle, startVal=0.25, endVal=1, duration=0.5, curveType=uiconst.ANIM_SMOOTH) 81 animations.FadeTo(self.circleView.fill, startVal=0, endVal=0.25, duration=1.5, timeOffset=0.4, curveType=uiconst.ANIM_OVERSHOT3) 82 83 def AnimateIn(self): 84 self.Show() 85 animations.FadeIn(self, duration=1) 86 animations.Tr2DScaleTo(self.circleView, startScale=(1.3, 1.3), endScale=MAXIMIZED_SCALE) 87 animations.FadeTo(self.circleView.outerCircle, startVal=0.5, endVal=1, duration=0.5, curveType=uiconst.ANIM_SMOOTH, timeOffset=0.6) 88 animations.FadeTo(self.circleView.fill, startVal=0, endVal=0.25, duration=1.5, timeOffset=0.4, curveType=uiconst.ANIM_OVERSHOT3) 89 self.circleView.outerCircle.outputMode = uiconst.OUTPUT_COLOR_AND_GLOW 90 91 def AnimateOut(self): 92 animations.FadeOut(self, callback=self.Hide) 93 animations.Tr2DScaleTo(self.circleView, startScale=MAXIMIZED_SCALE, endScale=OUTSIDE_SCALE) 94 95 @telemetry.ZONE_METHOD 96 def LoadActivities(self): 97 selectedPath = careerConst.SELECTED_CAREER_PATH_SETTING.get() 98 activities = careerGoalsConst.CAREER_PATH_GROUPS.get(selectedPath, []) 99 if not activities: 100 return 101 if set(activities.values()) == set(self.nodesByID.keys()): 102 return 103 self.circleView.Reset() 104 self.nodesByID.clear() 105 windowState = careerConst.CAREER_WINDOW_STATE_SETTING.get() 106 for idx, activityID in enumerate(activities.itervalues()): 107 nodeObject = ActivityNodeObject(selectedPath, activityID) 108 node = ActivityNode(name='activityNode_%s' % activityID, nodeObject=nodeObject, highlight=activityID in careerConst.HIGHLIGHTED_ACTIVITIES[selectedPath], initialState=windowState) 109 self.circleView.AddNode(node) 110 self.nodesByID[activityID] = node 111 112 self.circleView.UpdateCircle() 113 114 115 class ActivityCircleView(CircleView): 116 117 def GetNodeSize(self): 118 return ScaleDpi(NODE_SIZE)