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

baseSkinsSectionContainer.py (3932B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\ship\pages\store\sections\baseSkinsSectionContainer.py
      2 import eveicon
      3 from carbonui.button.menu import MenuButtonIcon
      4 from carbonui.control.contextMenu.menuData import MenuData
      5 from cosmetics.client.ships import ship_skin_signals
      6 from cosmetics.common.ships.skins.util import SkinListingOrder
      7 from eve.client.script.ui.cosmetics.ship.controls.baseCardSectionContainer import BaseCardSectionContainer
      8 from eve.client.script.ui.cosmetics.ship.pages.cards.skinListingCard import SkinListingCard
      9 from eve.client.script.ui.cosmetics.ship.pages.store import storeSignals
     10 from eve.client.script.ui.cosmetics.ship.pages.store.storeSettings import skins_sort_by_setting
     11 from localization import GetByLabel
     12 MAX_NUM_PER_PAGE = 12
     13 
     14 class BaseSkinsSectionContainer(BaseCardSectionContainer):
     15     default_height = 306
     16     default_minHeight = 306
     17 
     18     def connect_signals(self):
     19         super(BaseSkinsSectionContainer, self).connect_signals()
     20         storeSignals.on_skin_listing_selected.connect(self.on_skin_listing_selected)
     21         ship_skin_signals.on_skin_license_added.connect(self.on_skin_license_added)
     22         ship_skin_signals.on_skin_license_deleted.connect(self.on_skin_license_deleted)
     23         ship_skin_signals.on_skin_license_updated.connect(self.on_skin_license_updated)
     24         ship_skin_signals.on_skin_listing_cache_invalidated.connect(self._on_skin_listing_cache_invalidated)
     25         skins_sort_by_setting.on_change.connect(self.on_sort_by_setting)
     26 
     27     def disconnect_signals(self):
     28         super(BaseSkinsSectionContainer, self).disconnect_signals()
     29         storeSignals.on_skin_listing_selected.disconnect(self.on_skin_listing_selected)
     30         ship_skin_signals.on_skin_license_added.disconnect(self.on_skin_license_added)
     31         ship_skin_signals.on_skin_license_deleted.disconnect(self.on_skin_license_deleted)
     32         ship_skin_signals.on_skin_license_updated.disconnect(self.on_skin_license_updated)
     33         ship_skin_signals.on_skin_listing_cache_invalidated.disconnect(self._on_skin_listing_cache_invalidated)
     34         skins_sort_by_setting.on_change.disconnect(self.on_sort_by_setting)
     35 
     36     def on_skin_license_added(self, *args):
     37         self.update()
     38 
     39     def on_skin_license_deleted(self, *args):
     40         self.update()
     41 
     42     def on_skin_license_updated(self, *args):
     43         self.update()
     44 
     45     def on_skin_listing_selected(self, listing, selected_card):
     46         for card in self.cards:
     47             if card.listing != listing:
     48                 card.is_selected = False
     49             else:
     50                 card.is_selected = card == selected_card
     51 
     52     def _on_skin_listing_cache_invalidated(self, *args):
     53         self.update()
     54 
     55     def on_sort_by_setting(self, *args):
     56         self.update()
     57 
     58     def construct_card(self, listing):
     59         return SkinListingCard(parent=self.content, listing=listing)
     60 
     61 
     62 class SortByMenuButtonIcon(MenuButtonIcon):
     63     hint = GetByLabel('UI/Common/SortBy')
     64     default_texturePath = eveicon.bars_sort_ascending
     65 
     66     def __init__(self, show_name_option = True, **kw):
     67         super(SortByMenuButtonIcon, self).__init__(**kw)
     68         self.show_name_option = show_name_option
     69 
     70     def GetMenu(self):
     71         m = MenuData()
     72         m.AddCaption(self.hint)
     73         m.AddRadioButton(GetByLabel('UI/Personalization/ShipSkins/SKINR/Store/TimeLeft'), (SkinListingOrder.EXPIRES_AT, True), skins_sort_by_setting)
     74         m.AddRadioButton(GetByLabel('UI/Personalization/ShipSkins/SKINR/Store/TimeLeftReversed'), (SkinListingOrder.EXPIRES_AT, False), skins_sort_by_setting)
     75         if self.show_name_option:
     76             m.AddSeparator()
     77             m.AddRadioButton(GetByLabel('UI/Common/Name'), (SkinListingOrder.NAME, True), skins_sort_by_setting)
     78             m.AddRadioButton(GetByLabel('UI/Inventory/NameReversed'), (SkinListingOrder.NAME, False), skins_sort_by_setting)
     79         return m