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

campaign_main_panel.py (3130B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\theatersOfWar\campaigns\campaign_main_panel.py
      2 import uthread2
      3 from carbonui import Align
      4 from carbonui.control.button import Button
      5 from carbonui.primitives.container import Container
      6 from eve.client.script.ui.control.loadingContainer import LoadingContainer
      7 from eve.client.script.ui.shared.theatersOfWar.campaigns.panels.set_panel import CampaignSetPanel
      8 from eve.client.script.ui.shared.theatersOfWar.campaigns.panels.single_campaign_panel import SingleCampaignPanel
      9 from eveexceptions import ExceptionEater
     10 from localization import GetByLabel
     11 
     12 class CampaignMainPanel(Container):
     13     default_name = 'campaignMainPanel'
     14 
     15     def ApplyAttributes(self, attributes):
     16         self.content_panel = None
     17         self.campaign_panel_controller = attributes.campaign_panel_controller
     18         super(CampaignMainPanel, self).ApplyAttributes(attributes)
     19         self.main_panel_cont = LoadingContainer(name='main_panel_cont', parent=self, failureStateMessage=GetByLabel('UI/Sovereignty/SovHub/HubWnd/FailedToFetchData'), retryBtnLabel=GetByLabel('UI/Personalization/PaintTool/ErrorRetry'), align=Align.TOALL)
     20         self._construct_ui()
     21         self.connect_signals()
     22 
     23     def _construct_ui_and_load(self):
     24         self._construct_ui()
     25         self._load_content()
     26 
     27     def _construct_ui(self):
     28         self.main_panel_cont.Flush()
     29         self.content_panel = None
     30 
     31     def _load_content(self):
     32         self.main_panel_cont.LoadContent(loadCallback=self._load_async)
     33 
     34     def _load_async(self):
     35         selected_campaign_controller = self.campaign_panel_controller.selected_campaign_controller
     36         if selected_campaign_controller is None:
     37             self.main_panel_cont.Flush()
     38             self.content_panel = CampaignSetPanel(parent=self.main_panel_cont, campaignPanelController=self.campaign_panel_controller)
     39         else:
     40             if isinstance(self.content_panel, SingleCampaignPanel) and self.content_panel.is_selected_campaign_loaded():
     41                 return
     42             self.main_panel_cont.Flush()
     43             self.content_panel = SingleCampaignPanel(parent=self.main_panel_cont, campaignPanelController=self.campaign_panel_controller)
     44 
     45     def LoadPanel(self, was_panel_selected = False, **kwargs):
     46         if was_panel_selected:
     47             self.campaign_panel_controller.selected_campaign_id = None
     48         extra_args = kwargs.get('extra_args', {})
     49         if 'campaign_id' in extra_args:
     50             self.campaign_panel_controller.selected_campaign_id = extra_args['campaign_id']
     51         self._load_content()
     52 
     53     def connect_signals(self):
     54         self.campaign_panel_controller.on_campaign_selected.connect(self.on_campaign_selected)
     55 
     56     def disconnect_signals(self):
     57         self.campaign_panel_controller.on_campaign_selected.disconnect(self.on_campaign_selected)
     58 
     59     def on_campaign_selected(self, *args):
     60         self._load_content()
     61 
     62     def Close(self):
     63         with ExceptionEater('Closing CampaignMainPanel'):
     64             self.disconnect_signals()
     65         super(CampaignMainPanel, self).Close()