expanded_card.py (8803B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\window\card\expanded_card.py 2 import threadutils 3 from achievement_system.client.api.signal import on_achievement_completed, on_achievement_progressed, on_admin_achievement_reset, on_admin_achievement_reset_all 4 from achievement_system.client.qa import is_qa 5 from achievement_system.client.qa.actions import qa_complete_achievement, qa_progress_achievement, qa_reset_achievement 6 from achievement_system.client.ui.controller.achievement_entry import AchievementEntryController 7 from achievement_system.client.ui.window.card.components.contribution import AchievementContribution, ChecklistContribution 8 from achievement_system.client.ui.window.card.components.header import AchievementHeader 9 from achievement_system.client.ui.window.card.components.milestones import AchievementMilestonesExpanded 10 from achievement_system.client.ui.window.card.components.pin_button import PinButton 11 from achievement_system.client.ui.window.card.components.progress import AchievementProgressExpanded 12 from achievement_system.client.ui.window.card.components.rewards import AchievementRewardsExpanded 13 from achievement_system.client.ui.window.card.components.track_button import TrackButton 14 from carbonui import Align, uiconst, TextAlign, TextColor 15 from carbonui.button.group import ButtonGroup, ButtonSizeMode 16 from carbonui.control.contextMenu.menuData import MenuData 17 from carbonui.primitives.container import Container 18 from carbonui.primitives.containerAutoSize import ContainerAutoSize 19 from carbonui.primitives.frame import Frame 20 from carbonui.primitives.stretchspritehorizontal import StretchSpriteHorizontal 21 from carbonui.text.styles import TextDetail 22 from eve.client.script.ui import eveColor 23 from signals import Signal 24 CONTENT_LEFT_INSET = 54 25 26 class ExpandedAchievementCard(ContainerAutoSize): 27 default_state = uiconst.UI_NORMAL 28 default_width = 567 29 30 def __init__(self, controller, *args, **kwargs): 31 super(ExpandedAchievementCard, self).__init__(*args, **kwargs) 32 self.track_button = None 33 self.controller = controller 34 self.on_update_complete = Signal('on_update_complete') 35 self.construct_layout() 36 self.update() 37 self.connect_signals() 38 self.on_size_changed_signal(*self.GetAbsoluteSize()) 39 40 def Close(self): 41 try: 42 self.disconnect_signals() 43 finally: 44 super(ExpandedAchievementCard, self).Close() 45 46 def connect_signals(self): 47 on_achievement_completed.connect(self.on_achievement_completed) 48 on_achievement_progressed.connect(self.on_achievement_progressed) 49 on_admin_achievement_reset.connect(self.on_achievement_reset) 50 on_admin_achievement_reset_all.connect(self.on_achievement_reset_all) 51 self.controller.on_selected_milestone_changed.connect(self.on_selected_milestone_changed) 52 self.on_size_changed.connect(self.on_size_changed_signal) 53 54 def disconnect_signals(self): 55 on_achievement_completed.disconnect(self.on_achievement_completed) 56 on_achievement_progressed.disconnect(self.on_achievement_progressed) 57 on_admin_achievement_reset.disconnect(self.on_achievement_reset) 58 on_admin_achievement_reset_all.disconnect(self.on_achievement_reset_all) 59 self.controller.on_selected_milestone_changed.disconnect(self.on_selected_milestone_changed) 60 self.on_size_changed.disconnect(self.on_size_changed_signal) 61 62 def construct_layout(self): 63 self.construct_background() 64 self.construct_header() 65 self.construct_content_container() 66 self.construct_milestones() 67 self.construct_progress() 68 self.construct_contribution() 69 self.construct_rewards() 70 self.construct_buttons() 71 self.construct_flavor_text() 72 73 def construct_background(self): 74 background_container = Container(name='background_container', bgParent=self) 75 self.background_frame = Frame(name='background_frame', parent=background_container, texturePath='res:/UI/Texture/classes/Achievements/card/expanded_bg_frame.png', cornerSize=176, uiScaleVertices=True) 76 self.background_fill = Frame(name='background_fill', parent=background_container, texturePath='res:/UI/Texture/classes/Achievements/card/expanded_bg_fill.png', cornerSize=176, uiScaleVertices=True) 77 78 def construct_header(self): 79 self.header = AchievementHeader(name='header', parent=self, align=Align.TOTOP, controller=self.controller, padding=(8, 8, 1, 0)) 80 81 def construct_content_container(self): 82 self.content_container = ContainerAutoSize(name='content_container', parent=self, align=Align.TOTOP, padding=(CONTENT_LEFT_INSET + 24, 83 0, 84 24, 85 24)) 86 87 def construct_milestones(self): 88 if not self.controller.has_multiple_milestones: 89 return 90 self.milestones = AchievementMilestonesExpanded(name='milestones', parent=self.content_container, align=Align.TOTOP, controller=self.controller, padTop=20) 91 92 def construct_progress(self): 93 self.progress = AchievementProgressExpanded(name='progress', parent=self.content_container, align=Align.TOTOP, controller=self.controller, padTop=16) 94 95 def construct_contribution(self): 96 self.contribution_class(name='contribution', parent=self.content_container, align=Align.TOTOP, controller=self.controller, padTop=16) 97 98 def construct_rewards(self): 99 self.rewards = AchievementRewardsExpanded(name='rewards', parent=self.content_container, align=Align.TOTOP, controller=self.controller, padTop=16) 100 101 def construct_buttons(self): 102 button_group = ButtonGroup(name='button_group', parent=self.content_container, align=Align.TOTOP, button_size_mode=ButtonSizeMode.STRETCH, padTop=16) 103 self.track_button = TrackButton(name='track_button', parent=button_group, align=Align.TOTOP, controller=self.controller) 104 PinButton(name='pin_button', parent=button_group, align=Align.TOTOP, controller=self.controller) 105 106 def add_divider(self): 107 StretchSpriteHorizontal(name='divider', parent=self.content_container, align=Align.TOTOP, texturePath='res:/UI/Texture/classes/Achievements/card/expanded_card_divider.png', leftEdgeSize=52, rightEdgeSize=52, opacity=0.1, height=1, padTop=16) 108 109 def construct_flavor_text(self): 110 if not self.controller.has_flavor_text: 111 return 112 self.add_divider() 113 self.flavor_label = TextDetail(name='flavor_label', parent=self.content_container, align=Align.TOTOP, textAlign=TextAlign.CENTER, color=TextColor.SECONDARY, italic=True, padTop=14) 114 115 @threadutils.highlander_threaded 116 def update(self): 117 self.update_background() 118 self.header.update() 119 self.progress.update() 120 self.rewards.update() 121 self.update_flavor_text() 122 self.on_update_complete() 123 124 def update_background(self): 125 self.background_frame.color = eveColor.WHITE 126 self.background_frame.opacity = 0.2 127 128 def update_flavor_text(self): 129 if not self.controller.has_flavor_text: 130 return 131 self.flavor_label.text = self.controller.flavor_text 132 133 @property 134 def contribution_class(self): 135 if self.controller.is_checklist: 136 return ChecklistContribution 137 return AchievementContribution 138 139 def on_achievement_completed(self, achievement_id): 140 if achievement_id == self.controller.achievement_entry.identifier: 141 self.update() 142 143 def on_achievement_progressed(self, achievement_id, achievement_state): 144 if achievement_id == self.controller.achievement_entry.identifier: 145 self.update() 146 147 def on_achievement_reset(self, achievement_id): 148 if achievement_id == self.controller.achievement_entry.identifier: 149 self.update() 150 151 def on_achievement_reset_all(self): 152 self.update() 153 154 def on_selected_milestone_changed(self): 155 self.update() 156 157 def on_size_changed_signal(self, *args): 158 self.background_frame.displayWidth = self.displayWidth 159 self.background_frame.displayHeight = self.displayHeight 160 self.background_fill.displayWidth = self.displayWidth 161 self.background_fill.displayHeight = self.displayHeight 162 163 def GetMenu(self): 164 menu_data = MenuData() 165 if is_qa(): 166 menu_data.AddEntry('QA: Complete Achievement', lambda : qa_complete_achievement(self.controller.achievement_entry.identifier)) 167 menu_data.AddEntry('QA: Progress Achievement', lambda : qa_progress_achievement(self.controller.achievement_entry.identifier)) 168 menu_data.AddEntry('QA: Reset Achievement', lambda : qa_reset_achievement(self.controller.achievement_entry.identifier)) 169 return menu_data