savedDesignsCounter.py (2504B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\ship\pages\homepage\savedDesignsCounter.py 2 import uthread2 3 from carbonui import Align, TextColor 4 from carbonui.text.styles import TextBody 5 from carbonui.primitives.containerAutoSize import ContainerAutoSize 6 from cosmetics.client.ships import ship_skin_signals 7 from cosmetics.client.shipSkinDesignSvc import get_ship_skin_design_svc 8 from player_messaging.client.ui_message import message_player 9 10 class SavedDesignsCounter(ContainerAutoSize): 11 default_height = 18 12 13 def __init__(self, *args, **kwargs): 14 super(SavedDesignsCounter, self).__init__(*args, **kwargs) 15 self.update_thread = None 16 self.construct_layout() 17 self.connect_signals() 18 19 def Close(self): 20 try: 21 self.kill_threads() 22 self.disconnect_signals() 23 finally: 24 super(SavedDesignsCounter, self).Close() 25 26 def kill_threads(self): 27 if self.update_thread is not None: 28 self.update_thread.kill() 29 self.update_thread = None 30 31 def connect_signals(self): 32 ship_skin_signals.on_skin_design_saved.connect(self.on_skin_design_saved) 33 ship_skin_signals.on_skin_design_deleted.connect(self.on_skin_design_deleted) 34 35 def disconnect_signals(self): 36 ship_skin_signals.on_skin_design_saved.disconnect(self.on_skin_design_saved) 37 ship_skin_signals.on_skin_design_deleted.disconnect(self.on_skin_design_deleted) 38 39 def construct_layout(self): 40 self.label = TextBody(name='label', parent=self, align=Align.TOLEFT, color=TextColor.SECONDARY) 41 self.update() 42 43 def update(self): 44 self.update_thread = uthread2.StartTasklet(self.update_async) 45 46 def update_async(self): 47 try: 48 self.update_label() 49 except Exception as e: 50 message_player(e.message) 51 raise 52 finally: 53 self.update_thread = None 54 55 def update_label(self): 56 try: 57 count = len(get_ship_skin_design_svc().get_all_owned_designs()) 58 except Exception as e: 59 count = 0 60 61 try: 62 limit = get_ship_skin_design_svc().get_saved_designs_capacity() 63 except Exception as e: 64 limit = 0 65 66 self.label.text = '{count}/{limit}'.format(count=count, limit=limit) 67 68 def on_skin_design_saved(self, *args): 69 self.update() 70 71 def on_skin_design_deleted(self, *args): 72 self.update()