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

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()