sequencingInProgress.py (4034B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\ship\pages\homepage\sequencingInProgress.py 2 import logging 3 from carbonui import Align 4 from cosmetics.client.shipSkinDataSvc import get_ship_skin_data_svc 5 from cosmetics.client.ships.ship_skin_signals import on_skin_sequencing_job_updated, on_skin_sequencing_job_completed 6 from cosmetics.client.ships.skins.live_data import current_skin_design 7 from cosmetics.common.ships.skins.sequencing_util import get_maximum_concurrent_sequencing_jobs 8 from player_messaging.client.ui_message import message_player 9 from eve.client.script.ui.cosmetics.ship.controls.baseCardSectionContainer import BaseCardSectionContainer 10 from eve.client.script.ui.cosmetics.ship.pages.cards.sequencingJobCard import SequencingJobCard 11 from eve.client.script.ui.cosmetics.ship.pages.sequence.tooltipInfoIcons import MaxConcurrentJobsSkillsInfoIcon 12 from eve.client.script.ui.cosmetics.ship.pages.studio import studioSignals 13 from localization import GetByLabel 14 from publicGateway.grpc.exceptions import GenericException 15 from skills.client.util import get_skill_service 16 from stackless_response_router.exceptions import TimeoutException 17 log = logging.getLogger(__name__) 18 19 class SequencingInProgressSectionContainer(BaseCardSectionContainer): 20 __notifyevents__ = ['OnSkillsChanged'] 21 default_height = 366 22 default_minHeight = 366 23 24 def connect_signals(self): 25 super(SequencingInProgressSectionContainer, self).connect_signals() 26 on_skin_sequencing_job_updated.connect(self._on_skin_sequencing_job_updated) 27 on_skin_sequencing_job_completed.connect(self._on_sequencing_job_completed) 28 sm.RegisterNotify(self) 29 30 def disconnect_signals(self): 31 super(SequencingInProgressSectionContainer, self).disconnect_signals() 32 on_skin_sequencing_job_updated.disconnect(self._on_skin_sequencing_job_updated) 33 on_skin_sequencing_job_completed.disconnect(self._on_sequencing_job_completed) 34 sm.UnregisterNotify(self) 35 36 def OnSkillsChanged(self, *args): 37 self.update() 38 39 def _on_skin_sequencing_job_updated(self, *args): 40 self.update() 41 42 def _on_sequencing_job_completed(self, *args): 43 self.update() 44 45 def construct_header(self): 46 super(SequencingInProgressSectionContainer, self).construct_header() 47 self.header_layout_grid.columns = 3 48 MaxConcurrentJobsSkillsInfoIcon(parent=self.header_layout_grid, align=Align.CENTERLEFT) 49 50 def update_num_items_label(self): 51 num_jobs = self.section_controller.get_num_entries() 52 num_max = get_maximum_concurrent_sequencing_jobs(get_skill_service().GetMyLevel) 53 self.num_items_label.text = u'{}/{}'.format(num_jobs, num_max) 54 55 def construct_card(self, sequencing_job): 56 try: 57 skin_design = get_ship_skin_data_svc().get_skin_data(sequencing_job.skin_hex) 58 except (GenericException, TimeoutException): 59 message_player(GetByLabel('UI/Common/CannotConnectToServer')) 60 return None 61 62 card = SequencingJobCard(parent=self.content, sequencing_job=sequencing_job, skin_design=skin_design) 63 card.on_click.connect(self.on_card_clicked) 64 return card 65 66 def deselect_all_cards(self): 67 for card in self.cards: 68 card.is_selected = False 69 70 def verify_cards(self): 71 for card in self.cards: 72 if not card.finished_loading: 73 card.update_live_icon() 74 75 def on_card_clicked(self, clicked_card): 76 for card in self.cards: 77 if card != clicked_card: 78 card.is_selected = False 79 80 if clicked_card.is_selected: 81 studioSignals.on_sequencing_job_selected(clicked_card.sequencing_job) 82 else: 83 studioSignals.on_sequencing_job_selected(None) 84 current_skin_design.create_blank_design() 85 86 def construct_top_right_button(self): 87 pass 88 89 def _get_card_height(self): 90 return SequencingJobCard.default_height