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

componentLicenseInfo.py (4724B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\ship\pages\collection\componentLicenseInfo.py
      2 from carbonui import Align, AxisAlignment, Density, uiconst
      3 from carbonui.button.group import ButtonGroup, ButtonSizeMode
      4 from carbonui.control.button import Button
      5 from carbonui.primitives.container import Container
      6 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      7 from carbonui.uianimations import animations
      8 from cosmetics.common.ships.skins.live_data.component_license_type import ComponentLicenseType
      9 from eve.client.script.ui.cosmetics.ship.const import SkinrPage
     10 from eve.client.script.ui.cosmetics.ship.controls.componentInfo import ComponentInfo
     11 from eve.client.script.ui.cosmetics.ship.pages.collection.baseLicenseInfo import LicenseInfo
     12 from eve.client.script.ui.cosmetics.ship.pages.studio import studioSignals
     13 from localization import GetByLabel
     14 
     15 class ComponentLicenseInfo(LicenseInfo):
     16 
     17     def __init__(self, *args, **kwargs):
     18         self.component_license = None
     19         super(ComponentLicenseInfo, self).__init__(*args, **kwargs)
     20 
     21     def Close(self):
     22         try:
     23             self.disconnect_signals()
     24         finally:
     25             super(ComponentLicenseInfo, self).Close()
     26 
     27     def connect_signals(self):
     28         super(ComponentLicenseInfo, self).connect_signals()
     29         studioSignals.on_page_opened.connect(self.on_page_opened)
     30 
     31     def disconnect_signals(self):
     32         super(ComponentLicenseInfo, self).disconnect_signals()
     33         studioSignals.on_page_opened.disconnect(self.on_page_opened)
     34 
     35     def construct_layout(self):
     36         self.right_cont = ContainerAutoSize(name='right_cont', parent=self, align=Align.TORIGHT)
     37         self.left_cont = Container(name='component_info_container', parent=self, clipChildren=True, align=Align.TOALL)
     38         self.construct_button_group()
     39 
     40     def construct_button_group(self):
     41         self.button_group = ButtonGroup(parent=self.right_cont, align=Align.BOTTOMRIGHT, button_alignment=AxisAlignment.END, density=Density.EXPANDED, button_size_mode=ButtonSizeMode.DYNAMIC, padTop=64)
     42 
     43     def update(self):
     44         self.update_component_info()
     45         self.update_buttons()
     46 
     47     def update_component_info(self):
     48         self.left_cont.Flush()
     49         if not self.component_license:
     50             return
     51         ComponentInfo(name='component_info', parent=self.left_cont, align=Align.TOBOTTOM, component_data=self.component_license.get_component_data(), license_type=self.component_license.license_type, runs_remaining=self.component_license.remaining_license_uses)
     52 
     53     def update_buttons(self):
     54         self.button_group.Flush()
     55         if not self.component_license:
     56             return
     57         if self.component_license.license_type == ComponentLicenseType.UNLIMITED:
     58             return
     59         if not self.get_market_type_id():
     60             return
     61         self.button_group.add_button(Button(label=GetByLabel('UI/Inventory/ItemActions/ViewTypesMarketDetails'), func=self.on_market_button))
     62 
     63     def on_market_button(self, *args):
     64         sm.GetService('marketutils').ShowMarketDetails(self.get_market_type_id())
     65 
     66     def get_market_type_id(self):
     67         if not self.component_license:
     68             return None
     69         for item_data in self.component_license.get_component_data().component_item_data_by_type_id.values():
     70             if item_data.license_type != self.component_license.license_type:
     71                 continue
     72             if item_data.type_id:
     73                 return item_data.type_id
     74 
     75     def on_first_party_skin_selected(self, *args):
     76         self.fade_out()
     77 
     78     def on_unactivated_skin_license_selected(self, skin_license):
     79         self.fade_out()
     80 
     81     def on_activated_skin_license_selected(self, skin_license):
     82         self.fade_out()
     83 
     84     def on_page_opened(self, page_id, page_args, last_page_id, animate = True):
     85         any_collection_page = [SkinrPage.COLLECTION, SkinrPage.COLLECTION_COMPONENTS, SkinrPage.COLLECTION_SKINS]
     86         if page_id in any_collection_page and last_page_id in any_collection_page:
     87             self.fade_out()
     88 
     89     def on_component_license_selected(self, component_license):
     90         self.component_license = component_license
     91         if component_license:
     92             self.fade_out(callback=self.on_fade_out_complete)
     93         else:
     94             self.fade_out()
     95 
     96     def fade_out(self, callback = None):
     97         self.state = uiconst.UI_DISABLED
     98         animations.FadeTo(self, self.opacity, 0.0, uiconst.TIME_EXIT, callback=callback)
     99 
    100     def on_fade_out_complete(self):
    101         self.update()
    102         self.fade_in()
    103 
    104     def fade_in(self):
    105         self.state = uiconst.UI_PICKCHILDREN
    106         animations.FadeTo(self, self.opacity, 1.0, 0.5)