milestoneProgressIndicator.py (5214B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\milestone\milestoneProgressIndicator.py 2 from __future__ import absolute_import 3 import blue 4 from . import milestoneTooltips 5 from carbon.client.script.environment.AudioUtil import PlaySound 6 from carbon.common.script.sys.serviceConst import ROLE_PROGRAMMER 7 from carbonui import uiconst 8 from carbonui.primitives.container import Container 9 from carbonui.primitives.sprite import Sprite 10 from carbonui.uianimations import animations 11 from carbonui.uicore import uicore 12 from eve.client.script.ui.control.glowSprite import GlowSprite 13 from eve.client.script.ui.skillPlan import skillPlanUtil 14 from eve.client.script.ui.skillPlan.milestone.milestoneProgressGauge import MilestoneProgressGauge 15 from localization import GetByLabel 16 from signals import Signal 17 from skills.skillplan.milestone.const import MilestoneSubType 18 from skills.skillplan.milestone.milestonesUtil import GetMilestoneSubType 19 lineWidth = 4 20 21 class MilestoneProgressIndicator(Container): 22 default_state = uiconst.UI_NORMAL 23 24 def ApplyAttributes(self, attributes): 25 super(MilestoneProgressIndicator, self).ApplyAttributes(attributes) 26 self.milestone = attributes.milestone 27 self.skillPlan = attributes.skillPlan 28 self.isEditable = attributes.isEditable 29 highlightNotInTraining = attributes.highlightNotInTraining 30 self.on_data_dropped = Signal('on_data_dropped') 31 self.checkmark = Sprite(parent=self, name='checkmark', align=uiconst.CENTER, state=uiconst.UI_DISABLED, texturePath='res:/UI/Texture/classes/SkillPlan/lockButtonCheckmark.png', width=20, height=20, top=0) 32 radius = self.height / 2 33 self.progressGauge = MilestoneProgressGauge(parent=self, radius=radius, state=uiconst.UI_NORMAL, highlightNotInTraining=highlightNotInTraining, controller=self.milestone) 34 self.progressGauge.ConstructTooltipPanel = self.ConstructTooltipPanel 35 self.progressGauge.OnClick = self.OnClick 36 self.progressGauge.GetMenu = self.GetMenu 37 self.icon = GlowSprite(name='icon', parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, texturePath=skillPlanUtil.GetMilestoneTexturePath(self.milestone.GetTypeID())) 38 self.UpdateProgress(animate=False) 39 40 def OnClick(self, *args): 41 typeID = self.milestone.GetTypeID() 42 if typeID: 43 sm.GetService('info').ShowInfo(typeID) 44 45 def OnMouseEnter(self, *args): 46 self.icon.OnMouseEnter() 47 48 def OnMouseExit(self, *args): 49 self.icon.OnMouseExit() 50 51 def UpdateProgress(self, animate = True): 52 self.progressGauge.UpdateProgress(animate) 53 self.checkmark.display = self.milestone.IsCompleted() 54 55 def SetRadius(self, radius): 56 self.width = self.height = radius * 2 57 self.progressGauge.SetRadius(radius) 58 self.icon.width = self.icon.height = radius * 0.8 59 self.checkmark.top = radius * 0.8 60 61 def GetMenu(self): 62 if self.milestone.GetID() is not None: 63 menu = sm.GetService('menu').GetMenuFromItemIDTypeID(None, self.milestone.GetTypeID(), includeMarketDetails=True) 64 if self.isEditable: 65 menu.append(None) 66 menu.append((GetByLabel('UI/SkillPlan/RemoveMilestone'), self.Remove)) 67 if session.role & ROLE_PROGRAMMER: 68 menu.append(None) 69 menu.append((u'GM: Copy Milestone ID', blue.pyos.SetClipboardData, (str(self.milestone.GetID()),))) 70 return menu 71 72 def Remove(self): 73 if self.milestone.GetID() is not None: 74 PlaySound('skills_planner_skill_remove_play') 75 self.skillPlan.RemoveMilestone(self.milestone.GetID()) 76 77 def OnDropData(self, dragSource, dragData): 78 if self.isEditable: 79 self.on_data_dropped(dragSource, dragData, self.milestone.GetID()) 80 animations.FadeTo(self.progressGauge, self.progressGauge.opacity, 1.0, duration=uiconst.TIME_EXIT) 81 82 def OnDragEnter(self, dragSource, dragData): 83 if self.isEditable: 84 animations.FadeTo(self.progressGauge, self.progressGauge.opacity, 0.5, duration=0.3) 85 86 def OnDragExit(self, *args): 87 if self.isEditable: 88 animations.FadeTo(self.progressGauge, self.progressGauge.opacity, 1.0, duration=uiconst.TIME_EXIT) 89 90 def _GetTooltipClass(self): 91 typeID = self.milestone.GetTypeID() 92 if GetMilestoneSubType(typeID) in (MilestoneSubType.SHIP_MILESTONE, MilestoneSubType.MODULE_MILESTONE, MilestoneSubType.OTHER_MILESTONE): 93 return milestoneTooltips.TypeIDMilestoneInfoTooltip 94 if GetMilestoneSubType(typeID) == MilestoneSubType.SKILL_MILESTONE: 95 return milestoneTooltips.SkillMilestoneInfoTooltip 96 97 def ConstructTooltipPanel(self): 98 if self.milestone.GetTypeID() is None: 99 return 100 if uicore.IsDragging(): 101 return 102 tooltipClass = self._GetTooltipClass() 103 isShip = GetMilestoneSubType(self.milestone.GetTypeID()) == MilestoneSubType.SHIP_MILESTONE 104 return tooltipClass(skillPlan=self.skillPlan, milestone=self.milestone, isEditable=self.isEditable, iconSize=128 if isShip else 64)