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)