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)