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()