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

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)