skillPlanPanelWnd.py (3601B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\skillPlanPanelWnd.py 2 from carbonui.control.window import Window 3 from player_messaging.client.ui_message import message_player 4 from eve.client.script.ui.skillPlan.selectedPlan.selectedSkillPlanContainer import LinkedSkillPlanContainer 5 from eve.client.script.ui.skillPlan import skillPlanUISignals 6 from carbonui import uiconst 7 from eveexceptions import UserError 8 from localization import GetByLabel 9 from skills.skillplan import skillPlanService 10 from carbonui.uicore import uicore 11 DEFAULT_WINDOWID = 'SkillPlanPanelWnd' 12 13 def OpenSkillPlanWnd(skillPlanID, ownerID = None): 14 skillPlanSvc = skillPlanService.GetSkillPlanSvc() 15 if not sm.GetService('publicGatewaySvc').is_available(): 16 return message_player(GetByLabel('UI/SkillPlan/ConnectionError')) 17 try: 18 skillPlan = skillPlanSvc.Get(skillPlanID) 19 if not skillPlan: 20 skillPlan = skillPlanSvc.GetOwnedByOther(skillPlanID, ownerID) 21 if not skillPlan: 22 raise UserError('SkillPlanNotFound') 23 except UserError as e: 24 raise e 25 except Exception: 26 raise UserError('SkillPlanGenericError') 27 28 if uicore.uilib.Key(uiconst.VK_SHIFT): 29 windowInstanceID = '%s_%s' % (DEFAULT_WINDOWID, skillPlanID) 30 else: 31 windowInstanceID = None 32 wnd = SkillPlanPanelWnd.Open(windowInstanceID=windowInstanceID) 33 wnd.LoadSkillPlan(skillPlan) 34 35 36 class SkillPlanPanelWnd(Window): 37 default_minSize = [345, 650] 38 default_height = 750 39 default_width = 400 40 default_windowID = DEFAULT_WINDOWID 41 default_captionLabelPath = 'UI/SkillPlan/SkillPlan' 42 43 def ApplyAttributes(self, attributes): 44 self.selectedPlanCont = None 45 skillPlanUISignals.on_skill_collapse_changing.connect(self.OnSkillCollapseChanged) 46 super(SkillPlanPanelWnd, self).ApplyAttributes(attributes) 47 48 def LoadSkillPlan(self, skillPlan): 49 if self.selectedPlanCont and not self.selectedPlanCont.destroyed: 50 showSkills = self.selectedPlanCont.skillsVisible 51 else: 52 showSkills = settings.char.ui.Get(self._GetSettingName(), False) 53 overviewWidth = 0.5 if showSkills else 1.0 54 self.sr.main.Flush() 55 self.selectedPlanCont = LinkedSkillPlanContainer(parent=self.sr.main, align=uiconst.TOALL, skillPlan=skillPlan, showSkills=showSkills, overviewWidth=overviewWidth) 56 self._SetMinSize(showSkills) 57 captionText = '%s: %s' % (GetByLabel(self.default_captionLabelPath), skillPlan.GetName()) 58 self.SetCaption(captionText) 59 60 def OnSkillCollapseChanged(self, skillPlan, isSkillPlanVisible, skillPlanContainer): 61 if not self.selectedPlanCont or self.selectedPlanCont.destroyed or self.selectedPlanCont != skillPlanContainer: 62 return 63 mainWidth = self.selectedPlanCont.mainCont.GetAbsoluteSize()[0] 64 self._SetMinSize(isSkillPlanVisible) 65 if self.InStack(): 66 mainWidth = 0 67 elif isSkillPlanVisible: 68 mainWidth = max(2 * mainWidth, self.minsize[0]) 69 else: 70 mainWidth = max(0.5 * mainWidth, self.minsize[0]) 71 self.width = mainWidth 72 settings.char.ui.Set(self._GetSettingName(), isSkillPlanVisible) 73 74 def _SetMinSize(self, isSkillPlanVisible): 75 if isSkillPlanVisible: 76 self.SetMinSize([600, 650]) 77 else: 78 self.SetMinSize([345, 650]) 79 80 def _GetSettingName(self): 81 settingName = '%s_ShowingSkills' % (self.windowInstanceID or self.windowID) 82 return settingName