info_container.py (3633B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\window\page\rewards\info_container.py 2 import threadutils 3 from carbonui import Align, Density, uiconst 4 from carbonui.control.button import Button 5 from carbonui.primitives.container import Container 6 from carbonui.primitives.containerAutoSize import ContainerAutoSize 7 from carbonui.primitives.frame import Frame 8 from carbonui.primitives.sprite import Sprite 9 from carbonui.text.styles import TextBody 10 from eve.client.script.ui import eveThemeColor, eveColor 11 from eve.client.script.ui.shared.neocom.characterSheetWindow import CharacterSheetWindow 12 from localization import GetByLabel 13 14 class InfoContainer(Container): 15 16 def __init__(self, text, *args, **kwargs): 17 super(InfoContainer, self).__init__(*args, **kwargs) 18 self.text = text 19 self.construct_layout() 20 self.update() 21 22 def construct_layout(self): 23 content_container = Container(name='content_container', parent=self, align=Align.VERTICALLY_CENTERED, height=16) 24 icon_container = Container(name='icon_container', parent=content_container, align=Align.TOLEFT, pos=(0, 0, 16, 16), padLeft=8) 25 self.icon_circle = Sprite(name='icon_circle', parent=icon_container, align=Align.CENTER, texturePath='res:/UI/Texture/classes/Achievements/info_container/info_icon_circle.png', outputMode=uiconst.OUTPUT_COLOR_AND_GLOW, pos=(0, 0, 16, 16)) 26 Sprite(name='icon_symbol', parent=icon_container, align=Align.CENTER, texturePath='res:/UI/Texture/classes/Achievements/info_container/info_icon_symbol.png', pos=(0, 0, 2, 6)) 27 button_container = ContainerAutoSize(name='button_container', parent=content_container, align=Align.TORIGHT, height=24, padding=(8, 0, 8, 0)) 28 Button(name='character_sheet_button', parent=button_container, align=Align.VERTICALLY_CENTERED, label=GetByLabel('UI/Achievements/Window/Rewards/OpenCharacterSheet'), density=Density.COMPACT, func=self.open_character_sheet) 29 self.label_container = Container(name='label_container', parent=content_container, align=Align.VERTICALLY_CENTERED, padLeft=8) 30 self.label = TextBody(name='label', parent=self.label_container, align=Align.TOLEFT, shadowColor=eveColor.BLACK, maxLines=1, autoFadeSides=16) 31 self.corner = Sprite(name='corner', parent=self, align=Align.TOPLEFT, texturePath='res:/UI/Texture/classes/Achievements/info_container/info_corner.png', pos=(0, 0, 8, 8)) 32 self.frame = Frame(name='frame', parent=self, texturePath='res:/UI/Texture/classes/Achievements/info_container/info_frame.png', cornerSize=13) 33 34 @threadutils.highlander_threaded 35 def update(self): 36 self.update_background() 37 self.update_icon() 38 self.update_label() 39 40 def update_background(self): 41 self.corner.color = eveThemeColor.THEME_FOCUS 42 self.frame.color = eveThemeColor.THEME_FOCUSDARK 43 self.frame.opacity = 0.6 44 45 def update_icon(self): 46 self.icon_circle.color = eveThemeColor.THEME_FOCUS 47 self.icon_circle.glowBrightness = 0.5 48 49 def update_label(self): 50 self.label.text = self.text 51 _, h = TextBody.MeasureTextSize(self.text, maxLines=1) 52 self.label_container.height = h 53 54 @threadutils.highlander_threaded 55 def open_character_sheet(self, *args): 56 CharacterSheetWindow.OpenDecorationsToTitles() 57 58 def OnColorThemeChanged(self): 59 super(InfoContainer, self).OnColorThemeChanged() 60 self.update() 61 62 def OnGlobalFontSizeChanged(self): 63 super(InfoContainer, self).OnGlobalFontSizeChanged() 64 self.update()