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

skillRequirementDialog.py (3667B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\skillRequirementDialog.py
      2 import evetypes
      3 import localization
      4 from carbonui import Align, ButtonVariant, uiconst, TextColor
      5 from carbonui.text.styles import TextHeader, TextBody
      6 from carbonui.button.group import ButtonGroup, ButtonSizeMode
      7 from carbonui.control.button import Button
      8 from carbonui.control.window import Window
      9 from carbonui.primitives.container import Container
     10 from carbonui.primitives.containerAutoSize import ContainerAutoSize
     11 from carbonui.primitives.layoutGrid import LayoutGrid
     12 from eve.client.script.ui.control.itemIcon import ItemIcon
     13 from eve.client.script.ui.shared.tooltip.skill_requirement import AddSkillRequirements, AddTrainingTimeForType, AddSkillAction, GetActivityTextForType
     14 
     15 def prompt_missing_skill_requirements(typeID):
     16     wnd = SkillRequirementDialog.Open(typeID=typeID)
     17     if wnd.ShowModal() == 1:
     18         return wnd.result
     19     else:
     20         return None
     21 
     22 
     23 class SkillRequirementDialog(Window):
     24     default_name = 'SkillRequirementDialog'
     25     default_windowID = 'skill_requirement_dialog'
     26     default_iconNum = 'res:/UI/Texture/WindowIcons/info.png'
     27     default_captionLabelPath = 'UI/Generic/Information'
     28     default_width = 300
     29     default_height = 300
     30     default_minSize = (default_width, default_height)
     31     default_isStackable = False
     32 
     33     def ApplyAttributes(self, attributes):
     34         super(SkillRequirementDialog, self).ApplyAttributes(attributes)
     35         self.show_window_controls = False
     36         self.MakeUnResizeable()
     37         itemTypeID = attributes.typeID
     38         skillSvc = sm.GetService('skills')
     39         requiredSkills = skillSvc.GetSkillsMissingToUseItemRecursive(itemTypeID)
     40         requiredSkillsList = [ (typeID, level) for typeID, level in requiredSkills.iteritems() ]
     41         missingSkillBooks = skillSvc.GetSkillBooksMissingFromList(requiredSkills)
     42         totalMissingSkillLevels = skillSvc.GetTotalMissingSkillLevelsToUseItem(itemTypeID)
     43         self.grid = None
     44         self._main_container = main = ContainerAutoSize(parent=self.content, align=Align.TOTOP, callback=self._on_content_size_changed)
     45         self.headerCont = Container(parent=main, align=Align.TOTOP, height=80)
     46         self.typeIcon = ItemIcon(name='icon', parent=self.headerCont, typeID=itemTypeID, pos=(0, 0, 64, 64))
     47         self.typeNameLabel = TextHeader(parent=self.headerCont, text=evetypes.GetName(itemTypeID), pos=(80, 10, 0, 0))
     48         TextBody(parent=main, align=Align.TOTOP, color=TextColor.SECONDARY, text=localization.GetByLabel('Tooltips/SkillPlanner/SkillsRequiredToPerformActivity', doActivity=GetActivityTextForType(itemTypeID)), padBottom=5)
     49         gridContainer = ContainerAutoSize(parent=main, align=Align.TOTOP)
     50         self.grid = LayoutGrid(columns=2, state=uiconst.UI_NORMAL, parent=gridContainer)
     51         AddSkillRequirements(self.grid, requiredSkillsList, missingSkillBooks, totalMissingSkillLevels)
     52         AddTrainingTimeForType(self.grid, itemTypeID, on_click=self.Close)
     53         AddSkillAction(self.grid, itemTypeID, on_click_callback=self._confirm)
     54         button_group = ButtonGroup(parent=main, align=Align.TOTOP, button_size_mode=ButtonSizeMode.STRETCH, padTop=8)
     55         Button(parent=button_group, label=localization.GetByLabel('Achievements/AuraText/laterButton'), func=self._confirm, variant=ButtonVariant.GHOST)
     56 
     57     def _confirm(self, *args, **kwargs):
     58         self.Close()
     59 
     60     def _on_content_size_changed(self):
     61         if not self.grid:
     62             return
     63         self.width, self.height = self.GetWindowSizeForContentSize(width=self.grid.width, height=self._main_container.height)