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

toggleButtonGroupCircular.py (4763B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\toggleButtonGroupCircular.py
      2 from carbon.client.script.environment.AudioUtil import PlaySound
      3 from carbonui import uiconst
      4 from carbonui.primitives.sprite import Sprite
      5 from carbonui.uianimations import animations
      6 from carbonui.util.color import Color
      7 from eve.client.script.ui import eveColor
      8 from eve.client.script.ui.control.eveLabel import EveLabelLarge
      9 from eve.client.script.ui.control.toggleButtonGroup import ToggleButtonGroup
     10 from eve.client.script.ui.control.toggleButtonGroupButton import BaseToggleButtonGroupButton
     11 
     12 class ToggleButtonGroupButtonCircular(BaseToggleButtonGroupButton):
     13     default_iconSize = 32
     14     default_btnSize = 48
     15     default_label = None
     16 
     17     def ApplyAttributes(self, attributes):
     18         super(ToggleButtonGroupButtonCircular, self).ApplyAttributes(attributes)
     19         self.btnSize = attributes.Get('btnSize', self.default_btnSize)
     20         if self.iconPath:
     21             self.icon = Sprite(name='icon', parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, color=eveColor.WHITE, texturePath=self.iconPath, pos=(0,
     22              0,
     23              self.iconSize,
     24              self.iconSize))
     25         elif self.label:
     26             self.icon = EveLabelLarge(parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, text=self.label)
     27         selectedFrameSize = 2 * self.btnSize
     28         self.selectedFrame = Sprite(name='selectedFrame', parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, pos=(0,
     29          0,
     30          selectedFrameSize,
     31          selectedFrameSize), texturePath='res:/UI/Texture/Classes/SkillPlan/factionButtons/bgGlow.png', color=eveColor.WHITE, opacity=0.0)
     32         self.bgFill = Sprite(name='bg', parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, texturePath='res:/UI/Texture/Classes/SkillPlan/factionButtons/bgFill.png', color=eveColor.WHITE, pos=(0,
     33          0,
     34          self.btnSize,
     35          self.btnSize), opacity=0.0)
     36         self.bgStroke = Sprite(name='bgStroke', parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, texturePath='res:/UI/Texture/Classes/SkillPlan/factionButtons/bgStroke.png', pos=(0,
     37          0,
     38          self.btnSize,
     39          self.btnSize), opacity=0.1)
     40 
     41     def SetSelected(self, animate = True):
     42         super(ToggleButtonGroupButtonCircular, self).SetSelected(animate)
     43         if animate:
     44             duration = 0.15
     45             animations.FadeTo(self.selectedFrame, self.selectedFrame.opacity, 1.0, duration=duration)
     46             animations.FadeTo(self.bgFill, self.bgFill.opacity, 1.0, duration=duration)
     47             animations.SpColorMorphTo(self.icon, self.icon.GetRGBA(), Color.BLACK, duration=duration)
     48         else:
     49             self.bgFill.opacity = 1.0
     50             self.selectedFrame.opacity = 1.0
     51             self.icon.SetRGBA(*Color.BLACK)
     52         if self.label:
     53             self.icon.shadowOffset = (0, 0)
     54 
     55     def SetDeselected(self, animate = True):
     56         super(ToggleButtonGroupButtonCircular, self).SetDeselected(animate)
     57         if animate:
     58             duration = 0.15
     59             animations.FadeTo(self.selectedFrame, self.selectedFrame.opacity, 0.0, duration=duration)
     60             animations.FadeTo(self.bgFill, self.bgFill.opacity, 0.0, duration=duration)
     61             animations.SpColorMorphTo(self.icon, self.icon.GetRGBA(), eveColor.WHITE, duration=duration)
     62         else:
     63             self.selectedFrame.opacity = 0.0
     64             self.bgFill.opacity = 0.0
     65             self.icon.SetRGBA(*eveColor.WHITE)
     66         if self.label:
     67             self.icon.shadowOffset = EveLabelLarge.default_shadowOffset
     68 
     69     def OnMouseEnter(self, *args):
     70         if not self.isSelected:
     71             PlaySound(uiconst.SOUND_BUTTON_HOVER)
     72             animations.FadeTo(self.bgFill, self.bgFill.opacity, 0.5, duration=0.15)
     73 
     74     def OnMouseExit(self, *args):
     75         duration = 0.1
     76         if not self.isSelected:
     77             animations.FadeTo(self.bgFill, self.bgFill.opacity, 0.0, duration=duration)
     78 
     79 
     80 class ToggleButtonGroupCircular(ToggleButtonGroup):
     81     default_btnClass = ToggleButtonGroupButtonCircular
     82     default_height = ToggleButtonGroupButtonCircular.default_btnSize
     83 
     84     def AddButton(self, btnID, label = '', panel = None, iconPath = None, iconSize = None, hint = None, isDisabled = False, colorSelected = None, btnClass = None, **kw):
     85         button = super(ToggleButtonGroupCircular, self).AddButton(btnID, label, panel, iconPath, iconSize, hint, isDisabled, colorSelected, btnClass, **kw)
     86         self.SetWidthAutomatically()
     87         return button
     88 
     89     def SetWidthAutomatically(self):
     90         if self.align != uiconst.TOALL:
     91             self.width = sum([ btn.btnSize for btn in self.buttons ]) + 10 * len(self.buttons)