NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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