header.py (3839B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\window\card\components\header.py 2 import threadutils 3 from achievement_system.client.ui.window.card.components.archived import AchievementArchived 4 from achievement_system.client.ui.window.card.components.expiry import AchievementExpiryTimer 5 from achievement_system.client.ui.window.card.components.icon import AchievementIcon 6 from carbonui import Align, TextColor 7 from carbonui.primitives.container import Container 8 from carbonui.primitives.containerAutoSize import ContainerAutoSize 9 from carbonui.primitives.stretchspritehorizontal import StretchSpriteHorizontal 10 from carbonui.text.styles import TextBody, TextCustom 11 from eve.client.script.ui import eveThemeColor 12 CIRCLE_SIZE = 164 13 14 class AchievementHeader(Container): 15 default_height = CIRCLE_SIZE 16 17 def __init__(self, controller, *args, **kwargs): 18 super(AchievementHeader, self).__init__(*args, **kwargs) 19 self.controller = controller 20 self.construct_layout() 21 self.update() 22 23 def construct_layout(self): 24 left_container = Container(name='left_container', parent=self, align=Align.TOLEFT, width=CIRCLE_SIZE, height=CIRCLE_SIZE) 25 self.icon = AchievementIcon(name='icon', parent=left_container, align=Align.CENTER, controller=self.controller) 26 right_container = ContainerAutoSize(name='right_container', parent=self, align=Align.TOTOP, alignMode=Align.TOTOP) 27 right_container.on_size_changed.connect(self.on_right_container_size_changed) 28 if self.controller.is_time_limited: 29 expiry_container = Container(name='expiry_container', parent=right_container, align=Align.TOTOP_NOPUSH, height=16, top=32, padLeft=16) 30 AchievementExpiryTimer(name='expiry_timer', parent=expiry_container, align=Align.CENTERLEFT, controller=self.controller) 31 elif self.controller.is_historic: 32 archived_container = Container(name='archived_container', parent=right_container, align=Align.TOTOP, height=16, top=12) 33 AchievementArchived(name='archived', parent=archived_container, align=Align.CENTERLEFT) 34 self.name_plate = NamePlate(name='name_plate', parent=right_container, align=Align.TOTOP, controller=self.controller) 35 self.description_label = TextBody(name='description_label', parent=right_container, align=Align.TOTOP, padding=(16, -50, 16, 0)) 36 37 def on_right_container_size_changed(self, width, height): 38 self.height = max(self.default_height, height) 39 40 @threadutils.highlander_threaded 41 def update(self): 42 self.icon.update() 43 self.name_plate.update() 44 self.description_label.text = self.controller.description_for_selected_milestone 45 46 47 class NamePlate(Container): 48 default_height = CIRCLE_SIZE 49 50 def __init__(self, controller, *args, **kwargs): 51 super(NamePlate, self).__init__(*args, **kwargs) 52 self.controller = controller 53 self.construct_layout() 54 self.update() 55 56 def construct_layout(self): 57 self.decoration = StretchSpriteHorizontal(name='decoration', parent=self, texturePath='res:/UI/Texture/classes/Achievements/card/expanded_header_ring.png', leftEdgeSize=164, rightEdgeSize=4, width=542 - CIRCLE_SIZE, height=self.default_height, padLeft=-CIRCLE_SIZE) 58 self.label = TextCustom(name='label', parent=self, align=Align.CENTERLEFT, color=TextColor.HIGHLIGHT, fontsize=18, padLeft=16) 59 60 @threadutils.highlander_threaded 61 def update(self): 62 self.label.text = self.controller.name 63 self.update_color() 64 65 def update_color(self): 66 self.decoration.color = eveThemeColor.THEME_FOCUS 67 self.decoration.opacity = 0.2 68 69 def OnColorThemeChanged(self): 70 super(NamePlate, self).OnColorThemeChanged() 71 self.update_color()