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)