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

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