storePage.py (6727B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\ship\pages\store\storePage.py 2 from carbonui import Align 3 from carbonui.control.tabGroup import TabGroup 4 from carbonui.primitives.container import Container 5 from cosmetics.client.ships.ship_skin_signals import on_component_listing_cache_invalidated, on_skin_listing_cache_invalidated 6 from cosmetics.client.ships.skins.live_data import current_skin_design 7 from cosmetics.client.ships.skins.static_data.store_section import StoreSection 8 from eve.client.script.ui.cosmetics.ship import shipUtil 9 from eve.client.script.ui.cosmetics.ship.const import SkinrPage 10 from eve.client.script.ui.cosmetics.ship.pages.store import storeSignals 11 from eve.client.script.ui.cosmetics.ship.pages.shipSKINRPageBase import ShipSKINRPageBase 12 from eve.client.script.ui.cosmetics.ship.pages.store.componentBrowser import ComponentBrowser 13 from eve.client.script.ui.cosmetics.ship.pages.store.componentListingDetailsContainer import ComponentListingDetailsContainer 14 from eve.client.script.ui.cosmetics.ship.pages.store.skinBrowser import SkinBrowser 15 from eve.client.script.ui.cosmetics.ship.pages.store.skinListingDetailsContainer import SkinListingDetailsContainer 16 from localization import GetByLabel 17 from eve.client.script.ui.cosmetics.ship.pages import current_page 18 19 class StorePage(ShipSKINRPageBase): 20 default_padding = (32, 96, 32, 32) 21 is_loaded = False 22 23 def load_panel(self, page_id = None, page_args = None): 24 if not self.is_loaded: 25 self.is_loaded = True 26 self.construct_layout() 27 self.connect_signals() 28 self.left_cont.Flush() 29 self.left_cont.FlagForceUpdateAlignment() 30 self.details_cont = None 31 self.selected_listing = None 32 if SkinrPage.STORE_SKINS in (page_id, page_args): 33 self.show_skins(page_args) 34 elif SkinrPage.STORE_COMPONENTS in (page_id, page_args): 35 self.show_components(page_args) 36 else: 37 self.tab_group.AutoSelect() 38 39 def Close(self): 40 try: 41 self.disconnect_signals() 42 finally: 43 super(StorePage, self).Close() 44 45 def connect_signals(self): 46 storeSignals.on_component_listing_selected.connect(self.on_component_listing_selected) 47 storeSignals.on_skin_listing_selected.connect(self.on_skin_listing_selected) 48 on_component_listing_cache_invalidated.connect(self._on_component_listing_cache_invalidated) 49 on_skin_listing_cache_invalidated.connect(self._on_skin_listing_cache_invalidated) 50 51 def disconnect_signals(self): 52 storeSignals.on_component_listing_selected.disconnect(self.on_component_listing_selected) 53 storeSignals.on_skin_listing_selected.disconnect(self.on_skin_listing_selected) 54 on_component_listing_cache_invalidated.disconnect(self._on_component_listing_cache_invalidated) 55 on_skin_listing_cache_invalidated.disconnect(self._on_skin_listing_cache_invalidated) 56 57 def on_skin_listing_selected(self, listing, *args): 58 self.show_skin_listing_details(listing) 59 60 def on_component_listing_selected(self, listing): 61 self.show_component_listing_details(listing) 62 63 def _on_component_listing_cache_invalidated(self, *args): 64 if isinstance(self.details_cont, ComponentListingDetailsContainer): 65 self.show_component_listing_details(listing=None) 66 67 def _on_skin_listing_cache_invalidated(self, *args): 68 if isinstance(self.details_cont, SkinListingDetailsContainer): 69 self.show_skin_listing_details(listing=None) 70 71 def show_component_listing_details(self, listing): 72 self.left_cont.Flush() 73 if listing: 74 self.details_cont = ComponentListingDetailsContainer(parent=self.left_cont, listing=listing, top=80) 75 self.details_cont.appear() 76 else: 77 self.hide_listing_details() 78 79 def show_skin_listing_details(self, listing): 80 if self.selected_listing == listing: 81 return 82 self.left_cont.Flush() 83 if listing: 84 self.details_cont = SkinListingDetailsContainer(parent=self.left_cont, listing=listing, top=80) 85 self.selected_listing = listing 86 self.details_cont.appear() 87 else: 88 self.hide_listing_details() 89 90 def hide_listing_details(self): 91 if self.details_cont: 92 current_skin_design.create_blank_design(shipUtil.get_active_ship_type_id()) 93 self.details_cont.disappear() 94 self.selected_listing = None 95 96 def show_skin(self, skin_listing): 97 self.show_skins(StoreSection.SKINS_LINKED_LISTING_AND_ALL, skin_listing) 98 storeSignals.on_skin_listing_selected(skin_listing, self) 99 100 def show_skins(self, section_id = None, linked_listing = None): 101 self.component_browser.display = False 102 self.skin_browser.display = True 103 self.skin_browser.LoadPanel(section_id, linked_listing) 104 self.tab_group.SelectByID(SkinrPage.STORE_SKINS, silent=True, useCallback=False) 105 if section_id is None: 106 current_page.set_sub_page(SkinrPage.STORE, SkinrPage.STORE_SKINS) 107 108 def show_components(self, category = None): 109 self.component_browser.display = True 110 self.component_browser.LoadPanel(category) 111 self.skin_browser.display = False 112 self.tab_group.SelectByID(SkinrPage.STORE_COMPONENTS, silent=True, useCallback=False) 113 if category is None: 114 current_page.set_sub_page(SkinrPage.STORE, SkinrPage.STORE_COMPONENTS) 115 116 def construct_layout(self): 117 self.right_cont = Container(name='right_cont', parent=self, align=Align.TORIGHT_PROP, width=0.55, maxWidth=752) 118 self.left_cont = Container(name='left_cont', parent=self, padding=(0, 0, 64, 16)) 119 self.construct_right_cont() 120 121 def construct_right_cont(self): 122 self.tab_group = TabGroup(parent=self.right_cont, align=Align.TOTOP, show_line=False, callback=self.on_tab_group, settingsID='SKINRStorePageTopLevel2') 123 self.skin_browser = SkinBrowser(parent=self.right_cont) 124 self.tab_group.AddTab(label=GetByLabel('UI/Personalization/ShipSkins/SKINR/Studio/SKINs'), tabID=SkinrPage.STORE_SKINS) 125 self.component_browser = ComponentBrowser(parent=self.right_cont) 126 self.tab_group.AddTab(label=GetByLabel('UI/Personalization/ShipSkins/SKINR/Studio/DesignElements'), tabID=SkinrPage.STORE_COMPONENTS) 127 128 def on_tab_group(self, page_id, old_page_id): 129 storeSignals.on_skin_listing_selected(None, None) 130 if page_id == SkinrPage.STORE_SKINS: 131 self.show_skins() 132 elif page_id == SkinrPage.STORE_COMPONENTS: 133 self.show_components()