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