track_button.py (2376B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\window\card\components\track_button.py 2 import eveicon 3 import threadutils 4 from achievement_system.client.api.signal import on_achievements_tracked_changed 5 from carbonui import ButtonFrameType, ButtonVariant, Density 6 from carbonui.control.button import Button 7 from localization import GetByLabel 8 9 class TrackButton(Button): 10 default_texturePath = eveicon.look_at 11 default_density = Density.EXPANDED 12 default_variant = ButtonVariant.PRIMARY 13 default_frame_type = ButtonFrameType.CUT_BOTTOM_LEFT_RIGHT 14 15 def __init__(self, controller, *args, **kwargs): 16 super(TrackButton, self).__init__(*args, **kwargs) 17 self.controller = controller 18 self.func = self._on_click 19 self.update() 20 self.connect_signals() 21 22 def Close(self): 23 try: 24 self.disconnect_signals() 25 finally: 26 super(TrackButton, self).Close() 27 28 def connect_signals(self): 29 on_achievements_tracked_changed.connect(self._on_tracked_achievements_changed) 30 31 def disconnect_signals(self): 32 on_achievements_tracked_changed.disconnect(self._on_tracked_achievements_changed) 33 34 @threadutils.highlander_threaded 35 def update(self, animate = True): 36 if not self.controller.is_tracked and (self.controller.is_completed or self.controller.is_historic): 37 self.disable(animate) 38 self.label = GetByLabel('UI/Achievements/Window/Card/TrackButtonLabel') 39 self.hint = GetByLabel('UI/Achievements/Window/Card/TrackButtonHint') 40 return 41 if self.controller.is_tracked: 42 self.label = GetByLabel('UI/Achievements/Window/Card/UntrackButtonLabel') 43 self.hint = GetByLabel('UI/Achievements/Window/Card/UntrackButtonHint') 44 self.texturePath = eveicon.camera_untrack 45 else: 46 self.label = GetByLabel('UI/Achievements/Window/Card/TrackButtonLabel') 47 self.hint = GetByLabel('UI/Achievements/Window/Card/TrackButtonHint') 48 self.texturePath = eveicon.look_at 49 50 def _on_tracked_achievements_changed(self, achievement_ids): 51 self.update() 52 53 def _on_click(self, *args): 54 self.controller.toggle_tracked() 55 56 57 class CompactTrackButton(TrackButton): 58 default_density = Density.COMPACT