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

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