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

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