campaign_cont.py (4774B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\theatersOfWar\landingPage\campaign_cont.py 2 import logging 3 from campaigns.client.errors import CampaignStatsRequestError 4 from campaigns.client.v1.signals import on_campaign_completed 5 from carbonui import Align, PickState 6 from carbonui.primitives.container import Container 7 from carbonui.primitives.containerAutoSize import ContainerAutoSize 8 from carbonui.primitives.layoutGrid import LayoutGrid 9 from carbonui.primitives.sprite import Sprite 10 from eve.client.script.ui.control.loadingContainer import LoadingContainer 11 from eve.client.script.ui.shared.theatersOfWar.campaigns.campaign_progress import CampaignProgress 12 from eve.client.script.ui.shared.theatersOfWar.landingPage.landingPageWidgets import WidgetContWithContent 13 from eveexceptions import ExceptionEater 14 from localization import GetByLabel 15 logger = logging.getLogger(__name__) 16 BG_WIDTH = 552 17 BG_HEIGHT = 712 18 TOP_PADDING = 48 19 20 class LandingPageCampaignCont(WidgetContWithContent): 21 22 def ApplyAttributes(self, attributes): 23 self.progress_cont_by_campaign_id = {} 24 super(LandingPageCampaignCont, self).ApplyAttributes(attributes) 25 self.window_controller = attributes.window_controller 26 self.campaign_panel_controller = attributes.campaign_panel_controller 27 self.background_cont = Container(parent=self, padding=(-24, 28 -TOP_PADDING, 29 -24, 30 -TOP_PADDING)) 31 self.campaign_bg = Sprite(parent=self.background_cont, align=Align.CENTERTOP, pos=(0, 32 0, 33 BG_WIDTH, 34 BG_HEIGHT), pickState=PickState.OFF, texturePath=self.campaign_panel_controller.campaign_landing_page_bg_path) 35 self.set_header(self.campaign_panel_controller.campaign_landing_page_title) 36 self.set_sub_header(GetByLabel('UI/Campaigns/GoalProgress')) 37 self._construct_ui() 38 self.connect_signals() 39 40 def connect_signals(self): 41 on_campaign_completed.connect(self.on_campaign_competed) 42 self.campaign_panel_controller.on_contribution_completed_objective.connect(self.on_objective_completed_by_contribution) 43 44 def disconnect_signals(self): 45 on_campaign_completed.disconnect(self.on_campaign_competed) 46 self.campaign_panel_controller.on_contribution_completed_objective.disconnect(self.on_objective_completed_by_contribution) 47 48 def _construct_ui(self): 49 self.loadingCont = LoadingContainer(parent=self.content_cont, failureStateMessage=GetByLabel('UI/Sovereignty/SovHub/HubWnd/FailedToFetchData'), retryBtnLabel=GetByLabel('UI/Personalization/PaintTool/ErrorRetry'), align=Align.TOTOP, height=120) 50 grid_parent = ContainerAutoSize(parent=self.loadingCont, align=Align.TOTOP) 51 self.grid = LayoutGrid(parent=grid_parent, align=Align.CENTER, columns=4) 52 self.content_cont.SetAlign(Align.TOBOTTOM) 53 54 def load_ui(self): 55 self.grid.Flush() 56 self.loadingCont.LoadContent(loadCallback=self._load_ui) 57 58 def _load_ui(self): 59 self.grid.Flush() 60 all_campaigns_in_set = self.campaign_panel_controller.get_campaigns() 61 self.grid.columns = len(all_campaigns_in_set) 62 self.progress_cont_by_campaign_id.clear() 63 for campaign in all_campaigns_in_set: 64 p = CampaignProgress(parent=self.grid, icon_texture_path=campaign.textures.icon_path, pickState=PickState.ON, window_controller=self.window_controller, campaign_controller=campaign) 65 self.progress_cont_by_campaign_id[campaign.campaign_id] = p 66 67 self._update_campaigns() 68 69 def _update_campaigns(self): 70 all_campaigns_in_set = self.campaign_panel_controller.get_campaigns() 71 for campaign in all_campaigns_in_set: 72 cont = self.progress_cont_by_campaign_id.get(campaign.campaign_id, None) 73 if cont: 74 try: 75 cont.load_progess_values() 76 except CampaignStatsRequestError: 77 logger.exception('Failed to get campaign stats') 78 cont.set_values('-', '-', 0) 79 80 def _OnSizeChange_NoBlock(self, width, height): 81 height += 2 * TOP_PADDING 82 percentage = height / float(BG_HEIGHT) 83 newHeight = int(percentage * BG_HEIGHT) 84 newWidth = int(percentage * BG_WIDTH) 85 self.campaign_bg.height = newHeight 86 self.campaign_bg.width = newWidth 87 88 def on_campaign_competed(self, campaign_id): 89 self._update_campaigns() 90 91 def on_objective_completed_by_contribution(self, objective_id, campaign_id): 92 self._update_campaigns() 93 94 def Close(self): 95 super(LandingPageCampaignCont, self).Close() 96 with ExceptionEater('Closing LandingPageCampaignCont'): 97 self.disconnect_signals()